diff --git a/groundStation/src/backend/backend.c b/groundStation/src/backend/backend.c index 572f8f3ab8aadf8f1f38059b76c8e4a7edd9981a..836a99fedd98cb6bd73062825537a4d3392e6ead 100644 --- a/groundStation/src/backend/backend.c +++ b/groundStation/src/backend/backend.c @@ -35,6 +35,7 @@ #include "type_def.h" #include "packet.h" #include "respcontrol.h" +#include "update.h" #include "config.h" #include "cmHandler.h" @@ -317,13 +318,22 @@ void sendVrpnPacket(struct ucart_vrpn_TrackerData *info) { struct metadata m; uint8_t data[128]; - if (EncodeUpdate(&m, data, 128, info)) { + struct position_update u; + u.id = currMessageID; + u.x = info->x; + u.y = info->y; + u.z = info->z; + u.pitch = info->pitch; + u.roll = info->roll; + u.yaw = info->yaw; + + if (EncodeUpdate(&m, data, 128, &u)) { warnx("Big problems"); return; } m.msg_id = currMessageID++; - size_t psize; + ssize_t psize; if ((psize = EncodePacket(packet, 64, &m, data)) < 0) { warnx("Big problems"); return; @@ -650,7 +660,7 @@ static void client_recv(int fd) { printf(" 0x%.2x", (signed) packet[i]); } printf("'\n"); - writeQuad((char *) packet, packetSize); + writeQuad(packet, packetSize); } char * rest = &buffer[newline] + 1; diff --git a/groundStation/src/backend/bitwise.h b/groundStation/src/backend/bitwise.h index b82b71f111e3dd6e8b504aac508df7440a0e5e57..3d37af8e04a6ed082cd2234c6fc89f6f99360189 100644 --- a/groundStation/src/backend/bitwise.h +++ b/groundStation/src/backend/bitwise.h @@ -11,6 +11,15 @@ /* Build a 16-bit integer out of two bytes */ #define BytesTo16(lsb, msb) (((lsb) & 0xff) | (((msb) << 8) & 0xff)) +/* Same for 32bit */ +#define IntByte1(x) ((x) & 0xff) +#define IntByte2(x) (((x) >> 8) & 0xff) +#define IntByte3(x) (((x) >> 16) & 0xff) +#define IntByte4(x) (((x) >> 24) & 0xff) + +#define BytesToInt(b1, b2, b3, b4) (((b1) & 0xff) | (((b2) << 8) & 0xff) \ + | (((b3) << 16) & 0xff) | (((b4) & 0xff))) + /* Break apart a float. Sadly this is UB, but the "correct" way * to do this involves actually implementing * IEEE 754 in software to do so diff --git a/groundStation/src/backend/cmHandler.c b/groundStation/src/backend/cmHandler.c index 2b486a6a82323ba47f9584bb8423e40a57c6638f..27ded957c46cece2725442eabd1763b252158981 100644 --- a/groundStation/src/backend/cmHandler.c +++ b/groundStation/src/backend/cmHandler.c @@ -1,6 +1,7 @@ #include "cmHandler.h" -/*enum respContIndices { +/* +enum respContIndices { GET_PITCH_P , GET_PITCH_I , GET_PITCH_D , @@ -30,11 +31,10 @@ GET_LONG_I , GET_LONG_D , GET_LONG , - GET_LONG_RATE, MAX_COMMANDS -};*/ +}; -const char * respContStrings[MAX_COMMANDS] { +const char * respContStrings[MAX_COMMANDS] = { "getrollp", "getrolli", "getrolld", @@ -71,7 +71,8 @@ const char * respContStrings[MAX_COMMANDS] { "getheighti", "getheightd", "getheight" -} +}; +*/ const char * cmToString(int msgType, const struct controller_message *cm) { @@ -88,7 +89,8 @@ const char * cmToString(int msgType, const struct controller_message *cm) return NULL; break; case RESPCONTROL_ID: - return respContStrings[cm->id + cm->value_id]; + return "FOOBAR"; +// return respContStrings[cm->id + cm->value_id]; break; default: return NULL;