From adbdea1cb57d82569bad84fa991628e3d94919da Mon Sep 17 00:00:00 2001 From: burneykb <burneykb@iastate.edu> Date: Sat, 18 Feb 2017 21:01:08 -0600 Subject: [PATCH] ready to test --- groundStation/src/backend/backend.c | 16 ++--- groundStation/src/backend/cmHandler.c | 71 +++++++++---------- groundStation/src/backend/cmHandler.h | 4 +- groundStation/src/cli/cli_getsetpoint.c | 3 + .../src/frontend/frontend_getsetpoint.c | 42 +++++++++++ 5 files changed, 89 insertions(+), 47 deletions(-) diff --git a/groundStation/src/backend/backend.c b/groundStation/src/backend/backend.c index 0c3ddf4b1..109b463af 100644 --- a/groundStation/src/backend/backend.c +++ b/groundStation/src/backend/backend.c @@ -694,11 +694,11 @@ static void client_recv(int fd) { } } - printf("packet = '"); - for(int i = 0; i < (int)psize; ++i) { - printf(" %.2x ", packet[i]); - } - printf("'\n"); + // printf("packet = '"); + // for(int i = 0; i < (int)psize; ++i) { + // printf(" %.2x ", packet[i]); + // } + // printf("'\n"); writeQuad(packet, psize); @@ -733,7 +733,7 @@ static void quad_recv() { // printf("packet = '"); // for(int i = 0; i < (int)respBufLen; ++i) { - // printf(" 0x%.2x ", respBuf[i]); + // printf(" %.2x ", respBuf[i]); // } // printf("'\n"); @@ -760,7 +760,6 @@ static void quad_recv() { respBufLen -=i; return; } - } respBufLen = 0; return; @@ -777,7 +776,6 @@ static void quad_recv() { switch (m.msg_type) { case DEBUG_ID : - printf(); case PACKETLOG_ID : case GETPACKETLOGS_ID : case UPDATE_ID : @@ -814,12 +812,12 @@ static void handleResponseParam(struct metadata *m, uint8_t * data) warnx("DecodeResponse error"); return; } - char buffer[128]; const char * message = cmToString(RESPPARAM_ID, &cm); size_t len = snprintf(buffer, 128, "%s %f\n", message, cm.value); + printf("response = %s\n", buffer); for(int fd = 0; fd <= max_fd; ++fd) { if (get_client_index(fd) > -1) { diff --git a/groundStation/src/backend/cmHandler.c b/groundStation/src/backend/cmHandler.c index 54a1be157..15a34f7ae 100644 --- a/groundStation/src/backend/cmHandler.c +++ b/groundStation/src/backend/cmHandler.c @@ -57,21 +57,30 @@ const char * setParamStrings[MAX_PARAM_COMMANDS] = { "setlatp", "setlati", "setlatd", - "setlat", "setlongp", "setlongi", "setlongd", - "setlong", "setheightp", "setheighti", "setheightd", + "setlat", + "setlong", "setheight", }; - const char * cmToString(int msgType, const struct controller_message *cm) { - size_t index = (cm->id * MAX_CONTROL_PARAM_ID) + cm->value_id; + size_t index; + if (cm->id == X_SETPOINT_ID) { + index = PARAM_LOCAL_X; // This will change when we make node structure changes + } else if (cm->id == X_SETPOINT_ID) { + index = PARAM_LOCAL_Y; // This will change when we make node structure changes + } else if (cm->id == X_SETPOINT_ID) { + index = PARMA_ALT; // This will change when we make node structure changes + } else { + index = (cm->id * MAX_CONTROL_PARAM_ID) + cm->value_id; + printf("index = %lu\n", index); + } switch (msgType) { case DEBUG_ID : case PACKETLOG_ID : @@ -148,39 +157,29 @@ struct controller_message * stringToCm(const char * string, struct controller_me } else if (i <= PARAM_YAW_RATE_D) { cm->id = YAW_RATE_ID; - } else if (i <= PARAM_LOCAL_X) { - // If setpoint command, change the cm->valueid and cm - if (i == PARAM_LOCAL_X) { - cm->id = X_SETPOINT_ID; - cm->value_id = 0; - } else { - // these have a slightly different value id offset - cm->id = LOCAL_X_ID; - cm->value_id = MAX_CONTROL_PARAM_ID - (PARAM_LOCAL_X - i); - } - } else if (i <= PARAM_LOCAL_Y) { - // If setpoint command, change the cm->valueid and cm - if (i == PARAM_LOCAL_Y) { - cm->id = Y_SETPOINT_ID; - cm->value_id = 0; - } else { - // these have a slightly different value id offset - cm->id = LOCAL_Y_ID; - cm->value_id = MAX_CONTROL_PARAM_ID - (PARAM_LOCAL_Y - i); - - } - } else if (i <= PARAM_ALT) { - // If setpoint command, change the cm->valueid and cm - if (i == PARAM_ALT) { - cm->id = ALT_SETPOINT_ID; - cm->value_id = 0; - } else { - // these have a slightly different value id offset - cm->id = ALT_ID; - cm->value_id = MAX_CONTROL_PARAM_ID - (PARAM_ALT - i); - - } + } else if (i <= PARAM_LOCAL_X_D) { + + cm->id = LOCAL_X_ID; + } else if (i <= PARAM_LOCAL_Y_D) { + + cm->id = LOCAL_Y_ID; + } else if (i <= PARAM_ALT_D) { + + cm->id = ALT_ID; + } else if ( i == PARAM_LOCAL_X) { + + cm->id = X_SETPOINT_ID; + cm->value_id = 0; + } else if ( i == PARAM_LOCAL_Y) { + + cm->id = Y_SETPOINT_ID; + cm->value_id = 0; + } else if ( i == PARAM_ALT) { + + cm->id = ALT_SETPOINT_ID; + cm->value_id = 0; } } + // printf("cm->id = %d\ncm->value_id = %d\n", cm->id, cm->value_id); return cm; } \ No newline at end of file diff --git a/groundStation/src/backend/cmHandler.h b/groundStation/src/backend/cmHandler.h index ff749328e..f2761aa9b 100644 --- a/groundStation/src/backend/cmHandler.h +++ b/groundStation/src/backend/cmHandler.h @@ -25,14 +25,14 @@ enum paramIndices { PARAM_LOCAL_X_P , PARAM_LOCAL_X_I , PARAM_LOCAL_X_D , - PARAM_LOCAL_X , PARAM_LOCAL_Y_P , PARAM_LOCAL_Y_I , PARAM_LOCAL_Y_D , - PARAM_LOCAL_Y , PARAM_ALT_P, PARAM_ALT_I, PARAM_ALT_D, + PARAM_LOCAL_X , + PARAM_LOCAL_Y , PARAM_ALT , MAX_PARAM_COMMANDS }; diff --git a/groundStation/src/cli/cli_getsetpoint.c b/groundStation/src/cli/cli_getsetpoint.c index be9766139..8cb30bb15 100644 --- a/groundStation/src/cli/cli_getsetpoint.c +++ b/groundStation/src/cli/cli_getsetpoint.c @@ -114,6 +114,7 @@ int getSetPointValues(struct backend_conn * conn, struct frontend_setpoint_data case LONGG : printf("Longitude: %f\n", setpoint_data->longg); + break; case PITCH : printf("Pitch: %f\n", setpoint_data->pitch); @@ -121,9 +122,11 @@ int getSetPointValues(struct backend_conn * conn, struct frontend_setpoint_data case ROLL : printf("Roll: %f\n", setpoint_data->roll); + break; case YAW : printf("Yaw: %f\n", setpoint_data->yaw); + break; default : break; } diff --git a/groundStation/src/frontend/frontend_getsetpoint.c b/groundStation/src/frontend/frontend_getsetpoint.c index 1268416f5..b23a5dda4 100644 --- a/groundStation/src/frontend/frontend_getsetpoint.c +++ b/groundStation/src/frontend/frontend_getsetpoint.c @@ -1,6 +1,7 @@ #include <stdio.h> #include <string.h> #include <stdlib.h> +#include <err.h> #include "frontend_getsetpoint.h" #include "setpoint_common.h" @@ -48,5 +49,46 @@ int frontend_getsetpoint( return 1; } + char * response; + char tmpresponse[64]; + char * cmdString; + size_t pendingResponses = 1; + float value; + while (pendingResponses) { + response = ucart_backendGetline(conn); + if (response == NULL) { + warnx("Line not returned from backend"); + return 1; + } + strncpy(tmpresponse, response, 64); + if (strncmp(tmpresponse, "get", 3) == 0) { + cmdString = strtok(tmpresponse, " "); + value = strtof(&response[strlen(cmdString)],NULL); + + switch (type) { + case HEIGHT : + setpoint_data->height = value; + break; + case LAT : + setpoint_data->lat = value; + break; + case LONGG : + setpoint_data->longg = value; + break; + case PITCH : + setpoint_data->pitch = value; + break; + case ROLL : + setpoint_data->roll = value; + break; + case YAW : + setpoint_data->yaw = value; + break; + } + + pendingResponses--; + } + } + return 0; } -- GitLab