fixed RSSI and rearranged payload read order

pull/74/head
alanbjohnston 5 years ago committed by GitHub
parent 3a6397db66
commit 68eb69776e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1193,6 +1193,101 @@ if (firstTime != ON)
}
fclose(cpuTempSensor);
char sensor_payload[500];
if (payload == ON)
{
STEMBoardFailure = 0;
char c;
int charss = serialDataAvail (uart_fd);
if (charss != 0)
printf("Clearing buffer of %d chars \n", charss);
while ((charss-- > 0))
c = serialGetchar (uart_fd); // clear buffer
unsigned int waitTime;
int i = 0;
serialPutchar (uart_fd, '?');
printf("Querying payload with ?\n");
waitTime = millis() + 500;
int end = FALSE;
// int retry = FALSE;
while ((millis() < waitTime) && !end)
{
int chars = serialDataAvail (uart_fd);
while ((chars-- > 0) && !end)
{
c = serialGetchar (uart_fd);
// printf ("%c", c);
// fflush(stdout);
if (c != '\n')
{
sensor_payload[i++] = c;
}
else
{
end = TRUE;
}
}
}
sensor_payload[i++] = ' ';
// sensor_payload[i++] = '\n';
sensor_payload[i] = '\0';
printf("Payload string: %s \n", sensor_payload);
if ((sensor_payload[0] == 'O') && (sensor_payload[1] == 'K')) // only process if valid payload response
{
int count1;
char *token;
// char cmdbuffer[1000];
// FILE *file = popen("python3 /home/pi/CubeSatSim/python/voltcurrent.py 1 11", "r");
// fgets(cmdbuffer, 1000, file);
// printf("result: %s\n", cmdbuffer);
// pclose(file);
const char space[2] = " ";
token = strtok(sensor_payload, space);
for (count1 = 0; count1 < 17; count1++)
{
if (token != NULL)
{
sensor[count1] = atof(token);
#ifdef DEBUG_LOGGING
printf("sensor: %f ", sensor[count1]);
#endif
token = strtok(NULL, space);
}
}
printf("\n");
for (count1 = 0; count1 < 17; count1++)
{
if (sensor[count1] < sensor_min[count1])
sensor_min[count1] = sensor[count1];
if (sensor[count1] > sensor_max[count1])
sensor_max[count1] = sensor[count1];
printf("Smin %f Smax %f \n", sensor_min[count1], sensor_max[count1]);
}
for (count1 = 0; count1 < 3; count1++)
{
if (other[count1] < other_min[count1])
other_min[count1] = other[count1];
if (other[count1] > other_max[count1])
other_max[count1] = other[count1];
printf("Other min %f max %f \n", other_min[count1], other_max[count1]);
}
}
}
if (sim_mode)
{
// simulated telemetry
@ -1358,211 +1453,7 @@ if (sim_mode)
// read payload sensor if available
char sensor_payload[500];
if (payload == ON)
{
STEMBoardFailure = 0;
char c;
int charss = serialDataAvail (uart_fd);
if (charss != 0)
printf("Clearing buffer of %d chars \n", charss);
while ((charss-- > 0))
c = serialGetchar (uart_fd); // clear buffer
unsigned int waitTime;
int i = 0;
serialPutchar (uart_fd, '?');
printf("Querying payload with ?\n");
waitTime = millis() + 500;
int end = FALSE;
// int retry = FALSE;
while ((millis() < waitTime) && !end)
{
int chars = serialDataAvail (uart_fd);
while ((chars-- > 0) && !end)
{
c = serialGetchar (uart_fd);
// printf ("%c", c);
// fflush(stdout);
if (c != '\n')
{
sensor_payload[i++] = c;
}
else
{
end = TRUE;
}
}
}
sensor_payload[i++] = ' ';
// sensor_payload[i++] = '\n';
sensor_payload[i] = '\0';
printf("Payload string: %s \n", sensor_payload);
if ((sensor_payload[0] == 'O') && (sensor_payload[1] == 'K')) // only process if valid payload response
{
int count1;
char *token;
// char cmdbuffer[1000];
// FILE *file = popen("python3 /home/pi/CubeSatSim/python/voltcurrent.py 1 11", "r");
// fgets(cmdbuffer, 1000, file);
// printf("result: %s\n", cmdbuffer);
// pclose(file);
const char space[2] = " ";
token = strtok(sensor_payload, space);
// float gyroX, gyroY, gyroZ;
/*
for (count1 = 0; count1 < 7; count1++) // skipping over BME280 data
{
if (token != NULL)
if (count1 == 2)
RXTemperature = (int)((atof(token) * 10.0) + 0.5);
token = strtok(NULL, space);
}
printf("RXTemperature: %d \n", RXTemperature);
*/
/*
count1 = 0;
if (token != NULL)
{
token = strtok(NULL, space); // OK token
}
if (token != NULL)
{
token = strtok(NULL, space); // BME280 token
}
if (token != NULL)
{
BME280temperature = atof(token);
printf("temperature %f ", BME280temperature);
token = strtok(NULL, space); // get next token
}
if (token != NULL)
{
BME280pressure = atof(token);
printf("pressure %f ",BME280pressure);
token = strtok(NULL, space); // get next token
}
if (token != NULL)
{
BME280altitude = atof(token);
printf("altitude %f ",BME280altitude);
token = strtok(NULL, space); // get next token
}
if (token != NULL)
{
BME280humidity = atof(token);
printf("humidity %f ",BME280humidity);
token = strtok(NULL, space); // get next token
}
if (token != NULL)
{
token = strtok(NULL, space); // start of MPU6050 data
}
if (token != NULL)
{
gyroX = atof(token);
printf("gyroX %f ", gyroX);
token = strtok(NULL, space);
}
if (token != NULL)
{
gyroY = atof(token);
printf("gyroY %f ", gyroY);
token = strtok(NULL, space);
}
if (token != NULL)
{
gyroZ = atof(token);
printf("gyroZ %f \n", gyroZ);
token = strtok(NULL, space);
}
if (token != NULL)
{
xAccel = atof(token);
printf("accelX %f ", xAccel);
token = strtok(NULL, space);
}
if (token != NULL)
{
yAccel = atof(token);
printf("accelY %f ", yAccel);
token = strtok(NULL, space);
}
if (token != NULL)
{
zAccel = atof(token);
printf("accelZ %f ", zAccel);
token = strtok(NULL, space);
}
if (token != NULL)
{
token = strtok(NULL, space); // start of XS extra sensor data
}
if (token != NULL)
{
XSsensor1 = atof(token);
printf("Sensor1%f ", XSsensor1);
token = strtok(NULL, space);
}
if (token != NULL)
{
XSsensor2 = atof(token);
printf("Sensor2 %f ", XSsensor2);
token = strtok(NULL, space);
}
if (token != NULL)
{
XSsensor3 = atof(token);
printf("Sensor3 %f \n", XSsensor3);
}
*/
for (count1 = 0; count1 < 17; count1++)
{
if (token != NULL)
{
sensor[count1] = atof(token);
#ifdef DEBUG_LOGGING
printf("sensor: %f ", sensor[count1]);
#endif
token = strtok(NULL, space);
}
}
printf("\n");
for (count1 = 0; count1 < 17; count1++)
{
if (sensor[count1] < sensor_min[count1])
sensor_min[count1] = sensor[count1];
if (sensor[count1] > sensor_max[count1])
sensor_max[count1] = sensor[count1];
printf("Smin %f Smax %f \n", sensor_min[count1], sensor_max[count1]);
}
for (count1 = 0; count1 < 3; count1++)
{
if (other[count1] < other_min[count1])
other_min[count1] = other[count1];
if (other[count1] > other_max[count1])
other_max[count1] = other[count1];
printf("Other min %f max %f \n", other_min[count1], other_max[count1]);
}
}
// xAngularVelocity = (int)(gyroX + 0.5) + 2048;
// yAngularVelocity = (int)(gyroY + 0.5) + 2048;
// zAngularVelocity = (int)(gyroZ + 0.5) + 2048;
}
encodeA(b, 0 + head_offset, batt_a_v);
encodeB(b, 1 + head_offset, batt_b_v);
@ -1626,7 +1517,7 @@ if (payload == ON)
encodeA(b, 36 + head_offset, Resets);
// encodeB(b, 37 + head_offset, Rssi);
encodeB(b, 37 + head_offset, (int)(other[RSSI] + 0.5));
encodeB(b, 37 + head_offset, (int)(other[RSSI] + 0.5) + 2048);
// encodeA(b, 39 + head_offset, IHUcpuTemp);
encodeA(b, 39 + head_offset, (int)(other[IHU_TEMP] * 10 + 0.5));

Loading…
Cancel
Save

Powered by TurnKey Linux.