Hello all, I want to thank you guys for helping out so far. as of now I'm stuck on an issue when I don't know how to call a function in a different function. I am trying to call the "void app(uint8_t data)" function inside of my "static void prepareTxFrame( uint8_t port )" function in order to set up a type of sensitivity setting. The case switch part of the app function works properly and displays the different "Command" setting when data is sent. Also when I change the readingMin and readingMax global variables, the if statements in my "prepareTxFrame" function also perform how I want them to. I am just SUPER lost on how to call that "app" function in order to change the value of "Command". Does anyone have any suggestions that could point me in the right direction?
void app(uint8_t data)
{
//lora_printf("data:%d\r\n", data);
switch (data)
{
case 49:
{
Command = 1;
Serial.println("Command 1");
break;
}
case 50:
{
Command = 2;
Serial.println("Command 2");
break;
}
case 51:
{
Command = 3;
Serial.println("Command 3");
break;
}
case 52:
{
Command = 4;
Serial.println("Command 4");
//Serial.println(data);
break;
}
default:
{
break;
}
}
}
void downLinkDataHandle(McpsIndication_t *mcpsIndication)
{
LoRa_data = "";
lora_printf("+REV DATA:%s,RXSIZE %d,PORT %d\r\n", mcpsIndication->RxSlot ? "RXWIN2" : "RXWIN1", mcpsIndication->BufferSize, mcpsIndication->Port);
lora_printf("+REV DATA:");
app(mcpsIndication->Buffer[0]);
for (uint8_t i = 0; i < mcpsIndication->BufferSize; i++)
{
lora_printf("%02X", mcpsIndication->Buffer[i]);
LoRa_data = LoRa_data + (String)(char)mcpsIndication->Buffer[i];
}
lora_printf("\r\n");
Serial.println(LoRa_data);
}
static void prepareTxFrame( uint8_t port )
{
pinMode(Vext, OUTPUT);
digitalWrite(Vext, LOW);
float Voltage = value * 5.0 / 1023;
float Percentage = map(Voltage, 3.6, 4.2, 0, 100);
float Perc = ((Percentage * -1) / 3);
int16_t Battery = (Perc + 0);
float LatRead = gps.location.lat();
float LonRead = gps.location.lng();
float AltRead = gps.altitude.feet();
uint16_t HourRead = gps.time.hour();
uint16_t MinRead = gps.time.minute();
uint16_t SecRead = gps.time.second();
int16_t SensorRead = ads.getLastConversionResults();
Serial.print(LoRa_data);
//if LoRa_data =
app((int)(&data));
if (Command = 1) {
readingMax = 25;
readingMin = -25;
}
else if (Command = 2) {
readingMax = 70;
readingMin = -70;
}
else if (Command = 3) {
readingMax = 150;
readingMin = -150;
}
else if (Command = 4) {
Serial.println("Success");
}
if (SensorRead > readingMax or SensorRead < readingMin )
{
digitalWrite(Vext, HIGH);
unsigned char *puc;
appDataSize = 22;
appData[0] = (int8_t)(SensorRead >> 8);
appData[1] = (int8_t)SensorRead;
appData[2] = (int8_t)(Battery >> 8);
appData[3] = (int8_t)Battery;
appData[4] = (uint8_t)(HourRead >> 8);
appData[5] = (uint8_t)HourRead;
appData[6] = (uint8_t)(MinRead >> 8);
appData[7] = (uint8_t)MinRead;
appData[8] = (uint8_t)(SecRead >> 8);
appData[9] = (uint8_t)SecRead;
puc = (unsigned char *)(&LatRead);
appData[10] = puc[0];
appData[11] = puc[1];
appData[12] = puc[2];
appData[13] = puc[3];
puc = (unsigned char *)(&LonRead);
appData[14] = puc[0];
appData[15] = puc[1];
appData[16] = puc[2];
appData[17] = puc[3];
puc = (unsigned char *)(&AltRead);
appData[18] = puc[0];
appData[19] = puc[1];
appData[20] = puc[2];
appData[21] = puc[3];
Serial.print("Lat=");
Serial.print(LatRead);
Serial.print(", Lon=");
Serial.print(LonRead);
Serial.print(", Alt=");
Serial.println(AltRead);
Serial.print("Time: ");
Serial.print(HourRead);
Serial.print(":");
Serial.print(MinRead);
Serial.print(":");
Serial.println(SecRead);
Serial.print("Voltage: ");
Serial.print(Voltage);
Serial.print(", Percentage: ");
Serial.println(Perc);
Serial.print("Sensor Reading: ");
Serial.println(SensorRead);
}
else {
digitalWrite(Vext, HIGH);
unsigned char *puc;
appDataSize = 2;
appData[0] = (int8_t)(Battery >> 8);
appData[1] = (int8_t)Battery;
}
}