diff --git a/master/master/lib/aprs.c b/master/master/lib/aprs.c --- a/master/master/lib/aprs.c +++ b/master/master/lib/aprs.c @@ -76,7 +76,11 @@ void aprs_send() */ ax25_send_byte(' '); - ax25_send_string(slavesensors_getAPRScomment()); + + #define COMMENTBUFFER_SIZE 128 + char commentBuffer[COMMENTBUFFER_SIZE]; + ax25_send_string(slavesensors_getAPRScomment(commentBuffer, COMMENTBUFFER_SIZE)); + ax25_send_footer(); ax25_flush_frame(); // Tell the modem to go } diff --git a/master/master/lib/sensordata.c b/master/master/lib/sensordata.c --- a/master/master/lib/sensordata.c +++ b/master/master/lib/sensordata.c @@ -62,11 +62,10 @@ bool isEven = false; // Generate APRS comment // TODO: Can we move this buffer to a local scope of this function? -#define COMMENTBUFFER_SIZE 128 -char commentBuffer[COMMENTBUFFER_SIZE]; -char* slavesensors_getAPRScomment() + +char* slavesensors_getAPRScomment(char* commentBuffer, uint16_t bufferSize) { - snprintf(commentBuffer,COMMENTBUFFER_SIZE, "t9%d~s%s~v%s~h%s~_%s~|%s", sensors_getBoardTemp(), get_sv(), get_speedKnots(), get_hdop(), get_latitudeLSBs(), get_longitudeLSBs()); + snprintf(commentBuffer,bufferSize, "t9%d~s%s~v%s~h%s~_%s~|%s", sensors_getBoardTemp(), get_sv(), get_speedKnots(), get_hdop(), get_latitudeLSBs(), get_longitudeLSBs()); if(isEven) { @@ -77,42 +76,42 @@ char* slavesensors_getAPRScomment() uint32_t val = sensordata_get(i, SENSOR_BOARDTEMP); if(val != -2111111111) { uint16_t len = strlen(commentBuffer); - snprintf(commentBuffer + len, COMMENTBUFFER_SIZE-len, "~t%u%li",i,val); + snprintf(commentBuffer + len, bufferSize-len, "~t%u%li",i,val); } // Battery voltages (all slaves) val = sensordata_get(i, SENSOR_BATTERYLEVEL); if(val != -2111111111) { uint16_t len = strlen(commentBuffer); - snprintf(commentBuffer + len, COMMENTBUFFER_SIZE-len, "~l%u%li",i,val); + snprintf(commentBuffer + len, bufferSize-len, "~l%u%li",i,val); } // Pressure val = sensordata_get(i, SENSOR_PRESSURE); if(val != -2111111111) { uint16_t len = strlen(commentBuffer); - snprintf(commentBuffer + len, COMMENTBUFFER_SIZE-len, "~P%li",val); + snprintf(commentBuffer + len, bufferSize-len, "~P%li",val); } // Air Temperature val = sensordata_get(i, SENSOR_AIRTEMP); if(val != -2111111111) { uint16_t len = strlen(commentBuffer); - snprintf(commentBuffer + len, COMMENTBUFFER_SIZE-len, "~C%li",val); + snprintf(commentBuffer + len, bufferSize-len, "~C%li",val); } // Altitude val = sensordata_get(i, SENSOR_ALTITUDE); if(val != -2111111111) { uint16_t len = strlen(commentBuffer); - snprintf(commentBuffer + len, COMMENTBUFFER_SIZE-len, "~A%li",val); + snprintf(commentBuffer + len, bufferSize-len, "~A%li",val); } // Radiation val = sensordata_get(i, SENSOR_CPM_RADIATION); if(val != -2111111111) { uint16_t len = strlen(commentBuffer); - snprintf(commentBuffer + len, COMMENTBUFFER_SIZE-len, "~R%li",val); + snprintf(commentBuffer + len, bufferSize-len, "~R%li",val); } } @@ -126,7 +125,7 @@ char* slavesensors_getAPRScomment() if(logger_aprsInfoTextAvailable()) { uint16_t len = strlen(commentBuffer); - snprintf(commentBuffer + len, COMMENTBUFFER_SIZE-len, "~%s",logger_getAprsInfoText()); + snprintf(commentBuffer + len, bufferSize-len, "~%s",logger_getAprsInfoText()); logger_aprsInfoTextConsumed(); } diff --git a/master/master/lib/sensordata.h b/master/master/lib/sensordata.h --- a/master/master/lib/sensordata.h +++ b/master/master/lib/sensordata.h @@ -19,7 +19,7 @@ void sensordata_setup(); void sensordata_set(uint8_t nodeID, uint8_t type, int32_t value); int32_t sensordata_get(uint8_t nodeID, uint8_t type); -char* slavesensors_getAPRScomment(); +char* slavesensors_getAPRScomment(char* commentBuffer, uint16_t bufferSize); void sensordata_logvalues(); bool sensordata_isTouchdown(); void sensordata_checkTouchdown(); diff --git a/master/master/lib/slavesensors.c b/master/master/lib/slavesensors.c --- a/master/master/lib/slavesensors.c +++ b/master/master/lib/slavesensors.c @@ -424,7 +424,7 @@ void slavesensors_startprocess() slavesensors_request(); } -// TODO: inline. static. + uint32_t beginRequest = 0; void slavesensors_request() { @@ -531,7 +531,7 @@ void slavesensors_process(uint8_t parseR { #ifdef DEBUG_GETSLAVEDATA - serial0_sendString("Got an awesome count!\r\n"); + serial0_sendString("Got count!\r\n"); serial0_sendChar(parsedVal + 0x30); serial0_sendString("\r\n"); #endif @@ -547,7 +547,7 @@ void slavesensors_process(uint8_t parseR sensordata_set(currentSlave,type,parsedVal); #ifdef DEBUG_GETSLAVEDATA - serial0_sendString("Stored some sexy data!\r\n"); + serial0_sendString("Stored data!\r\n"); #endif gotoNextSlaveOrSensor(false); @@ -578,7 +578,7 @@ void slavesensors_process(uint8_t parseR } else { - error_log_msg(ERROR_FATAL, true, "parseResult is invalid!"); + error_log_msg(ERROR_FATAL, true, "parseResult invalid!"); return; } } \ No newline at end of file