Skip to content
Snippets Groups Projects
Commit f0635ac8 authored by burneykb's avatar burneykb
Browse files

Adding cmToString function

parent dc97117b
No related branches found
No related tags found
No related merge requests found
......@@ -627,16 +627,14 @@ static void client_recv(int fd) {
}
static void quad_recv() {
/* Check to see which command we are receiving. If it is one that needs to be passed on
onto the clients, do so.
*/
static unsigned char respBuf[2048];
static size_t respBufLen;
struct metadata m;
uint8_t data[256];
uint8_t data[1024];
size_t respLen;
size_t datalen;
size_t packetlen;
respLen = readQuad((char *) respBuf + respBufLen,
CMD_MAX_LENGTH- respBufLen);
......@@ -646,22 +644,51 @@ static void quad_recv() {
}
respBufLen += respLen;
if (DecodePacket(&m, data, 256, respBuf, respBufLen) < 0) {
if ((datalen = DecodePacket(&m, data, 1024, respBuf, respBufLen)) < 0) {
warnx("Packet format error");
respBufLen = 0;
return;
}
memmove(respBuf, respBuf + datalen + 8, respBufLen - (datalen + 8));
respBufLen -= PacketSize(&m);
packetlen = PacketSize(&m);
memmove(respBuf, respBuf + packetlen, respBufLen - packetlen);
respBufLen -= packetlen;
/*
DEBUG_ID, // 00
PACKETLOG_ID, // 01
GETPACKETLOGS_ID, // 02
UPDATE_ID, // 03
BEGINUPDATE_ID, // 04
LOG_ID, // 05
RESPONSE_ID, // 06
SETCONTROL_ID, // 07 - Setting controller values. Example: PID constants
GETCONTROL_ID, // 08 - Getting controller values. Example: PID constants
RESPCONTROL_ID, // 09 - Responding with controller values. Example: PID constants
MAX_TYPE_ID
*/
switch (m.msg_type) {
case RESPCONTROL_ID:
handleRespcontrol;
case DEBUG_ID :
case PACKETLOG_ID :
case GETPACKETLOGS_ID :
case UPDATE_ID :
case BEGINUPDATE_ID :
printf("(Backend): Command '%s' ignored\n", MessageTypes[m.msg_type].cmdText);
break;
case LOG_ID:
/* something like this */
log_write((char *) data, m.data_len);
break;
case RESPONSE_ID:
case SETCONTROL_ID:
case GETCONTROL_ID:
printf("(Backend): Command '%s' ignored\n", MessageTypes[m.msg_type].cmdText);
break;
case RESPCONTROL_ID:
handleRespcontrol(&m, data);
break;
default:
printf("(Backend): message type %d unrecognized\n", m.msg_type);
}
}
......@@ -669,13 +696,13 @@ static void handleRespcontrol(struct metadata *m, uint8_t * data)
{
struct controller_message cm;
if (DecodeRespcontrol(&cm, m, data) < 0) {
warnx("Respcontrol error")
warnx("DecodeRespcontrol error")
return;
}
char buffer[128];
char * message = cmToString(RESPCONTROL_ID, cm.id, cm.value_id);
char * message = cmToString(RESPCONTROL_ID, &cm);
size_t len = snprintf(buffer, 128, "%s %f\n", message, cm.value);
......
#include "cmHandler.h"
\ No newline at end of file
#include "cmHandler.h"
/*enum respContIndices {
GET_PITCH_P ,
GET_PITCH_I ,
GET_PITCH_D ,
GET_PITCH ,
GET_PITCH_RATE,
GET_ROLL_P ,
GET_ROLL_I ,
GET_ROLL_D ,
GET_ROLL ,
GET_ROLL_RATE,
GET_YAW_P ,
GET_YAW_I ,
GET_YAW_D ,
GET_YAW ,
GET_YAW_RATE,
GET_HEIGHT_P,
GET_HEIGHT_I,
GET_HEIGHT_D,
GET_HEIGHT ,
GET_HEIGHT_RATE,
GET_LAT_P ,
GET_LAT_I ,
GET_LAT_D ,
GET_LAT ,
GET_LONG_RATE,
GET_LONG_P ,
GET_LONG_I ,
GET_LONG_D ,
GET_LONG ,
GET_LONG_RATE,
MAX_COMMANDS
};*/
const char * respContStrings[MAX_COMMANDS] {
"getrollp",
"getrolli",
"getrolld",
"getroll",
"getpitchp",
"getpitchi",
"getpitchd",
"getpitch",
"getyawp",
"getyawi",
"getyawd",
"getyaw",
"getrollratep",
"getrollratei",
"getrollrated",
"getrollrate",
"getpitchratep",
"getpitchratei",
"getpitchrated",
"getpitchrate",
"getyawratep",
"getyawratei",
"getyawrated",
"getyawrate",
"getlatp",
"getlati",
"getlatd",
"getlat",
"getlongp",
"getlongi",
"getlongd",
"getlong",
"getheightp",
"getheighti",
"getheightd",
"getheight",
}
const char * cmToString(int msgType, const struct controller_message *cm)
{
switch (msgType) {
case DEBUG_ID :
case PACKETLOG_ID :
case GETPACKETLOGS_ID :
case UPDATE_ID :
case BEGINUPDATE_ID :
case LOG_ID:
case RESPONSE_ID:
case SETCONTROL_ID:
case GETCONTROL_ID:
return NULL;
break;
case RESPCONTROL_ID:
return respContStrings[cm->id + cm->value_id];
break;
default:
return NULL;
break;
}
}
#ifndef _CMHANDLER_H
#define _CMHANDLER_H
#include "controller.h"
const char * cmToString(int msgType, const struct controller_message *cm);
#endif /* _CMHANDLER_H */
\ No newline at end of file
......@@ -167,7 +167,6 @@ struct MessageType MessageTypes[MAX_TYPE_ID] =
};
int findCommand(char * str)
{
for (int i = 0; i < MAX_TYPE_ID; i++) {
......@@ -176,4 +175,4 @@ int findCommand(char * str)
}
}
return -1;
}
}
\ No newline at end of file
......@@ -55,7 +55,6 @@ int DecodeRespcontrol(
return -1;
}
cm->id = data[CTRL_ID];
cm->value_id = data[CTRLVAL_ID];
cm->value = BytesToFloat(data[VAL_1], data[VAL_2],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment