kopia lustrzana https://github.com/pjalocha/esp32-ogn-tracker
Adjust stack sizes for tasks, trying to gain RAM. fix some compile faults with particular options
rodzic
d7e3e08110
commit
c7845b9c72
|
@ -192,6 +192,7 @@ int BT_SPP_Init(void)
|
||||||
Err = esp_bt_controller_init(&BTconf); if(Err!=ESP_OK) return Err;
|
Err = esp_bt_controller_init(&BTconf); if(Err!=ESP_OK) return Err;
|
||||||
Err = esp_bt_controller_enable((esp_bt_mode_t)BTconf.mode); if(Err!=ESP_OK) return Err; // mode must be same as in BTconf
|
Err = esp_bt_controller_enable((esp_bt_mode_t)BTconf.mode); if(Err!=ESP_OK) return Err; // mode must be same as in BTconf
|
||||||
// Err = esp_bt_controller_enable(ESP_BT_MODE_CLASSIC_BT); if(Err!=ESP_OK) return Err;
|
// Err = esp_bt_controller_enable(ESP_BT_MODE_CLASSIC_BT); if(Err!=ESP_OK) return Err;
|
||||||
|
Err = esp_bt_controller_mem_release(ESP_BT_MODE_BTDM); // this is supposed to release 30kB of RAM
|
||||||
Err = esp_bluedroid_init(); if(Err!=ESP_OK) return Err; // init the BT stack
|
Err = esp_bluedroid_init(); if(Err!=ESP_OK) return Err; // init the BT stack
|
||||||
Err = esp_bluedroid_enable(); if(Err!=ESP_OK) return Err; // enable the BT stack
|
Err = esp_bluedroid_enable(); if(Err!=ESP_OK) return Err; // enable the BT stack
|
||||||
Err = esp_bt_gap_register_callback(esp_bt_gap_cb); if(Err!=ESP_OK) return Err;
|
Err = esp_bt_gap_register_callback(esp_bt_gap_cb); if(Err!=ESP_OK) return Err;
|
||||||
|
|
|
@ -190,10 +190,12 @@ void vTaskDISP(void* pvParameters)
|
||||||
case 5: OLED_DrawBattery (&U8G2_OLED, GPS); break;
|
case 5: OLED_DrawBattery (&U8G2_OLED, GPS); break;
|
||||||
case 6: OLED_DrawAltitudeAndSpeed (&U8G2_OLED, GPS); break;
|
case 6: OLED_DrawAltitudeAndSpeed (&U8G2_OLED, GPS); break;
|
||||||
case 7: OLED_DrawRelay (&U8G2_OLED, GPS); break;
|
case 7: OLED_DrawRelay (&U8G2_OLED, GPS); break;
|
||||||
case 8: OLED_DrawLookout (&U8G2_OLED, GPS); break;
|
case 8: OLED_DrawFlight (&U8G2_OLED, GPS); break;
|
||||||
case 9: OLED_DrawTrafWarn (&U8G2_OLED, GPS); break;
|
case 9: OLED_DrawLoRaWAN (&U8G2_OLED, GPS); break;
|
||||||
case 10: OLED_DrawFlight (&U8G2_OLED, GPS); break;
|
#ifdef WITH_LOOKOUT
|
||||||
case 11: OLED_DrawLoRaWAN (&U8G2_OLED, GPS); break;
|
case 10: OLED_DrawLookout (&U8G2_OLED, GPS); break;
|
||||||
|
case 11: OLED_DrawTrafWarn (&U8G2_OLED, GPS); break;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//if ( DISP_Page != 6 )
|
//if ( DISP_Page != 6 )
|
||||||
|
|
|
@ -365,6 +365,7 @@ void OLED_DrawRelay(u8g2_t *OLED, GPS_Position *GPS)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef WITH_LOOKOUT
|
||||||
void OLED_DrawLookout(u8g2_t *OLED, GPS_Position *GPS)
|
void OLED_DrawLookout(u8g2_t *OLED, GPS_Position *GPS)
|
||||||
{ u8g2_SetFont(OLED, u8g2_font_amstrad_cpc_extended_8r);
|
{ u8g2_SetFont(OLED, u8g2_font_amstrad_cpc_extended_8r);
|
||||||
uint8_t Len=Format_String(Line, "=> ");
|
uint8_t Len=Format_String(Line, "=> ");
|
||||||
|
@ -429,6 +430,7 @@ void OLED_DrawTrafWarn(u8g2_t *OLED, GPS_Position *GPS)
|
||||||
Line[Len]=0;
|
Line[Len]=0;
|
||||||
u8g2_DrawStr(OLED, 0, 60, Line);
|
u8g2_DrawStr(OLED, 0, 60, Line);
|
||||||
}
|
}
|
||||||
|
#endif // WITH_LOOKOUT
|
||||||
|
|
||||||
void OLED_DrawBaro(u8g2_t *OLED, GPS_Position *GPS)
|
void OLED_DrawBaro(u8g2_t *OLED, GPS_Position *GPS)
|
||||||
{ u8g2_SetFont(OLED, u8g2_font_7x13_tf); // 5 lines, 12 pixels/line
|
{ u8g2_SetFont(OLED, u8g2_font_7x13_tf); // 5 lines, 12 pixels/line
|
||||||
|
|
|
@ -21,11 +21,12 @@ class SHA256
|
||||||
mbedtls_sha256_context Context;
|
mbedtls_sha256_context Context;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Init(void) { mbedtls_sha256_init(&Context); }
|
void Init(void) { mbedtls_sha256_init(&Context); }
|
||||||
void Free(void) { mbedtls_sha256_free(&Context); }
|
void Free(void) { mbedtls_sha256_free(&Context); }
|
||||||
int Start(void) { return mbedtls_sha256_starts_ret(&Context, 0); }
|
int Start(void) { return mbedtls_sha256_starts_ret(&Context, 0); }
|
||||||
int Update(const uint8_t *Input, size_t Len) { return mbedtls_sha256_update_ret(&Context, Input, Len); }
|
int Update(const uint8_t *Input, size_t Len) { return mbedtls_sha256_update_ret(&Context, Input, Len); }
|
||||||
int Finish(uint8_t CheckSum[32]) { return mbedtls_sha256_finish_ret(&Context, CheckSum); }
|
void Clone(const SHA256 &Src) { mbedtls_sha256_clone(&Context, &Src.Context); }
|
||||||
|
int Finish(uint8_t CheckSum[32]) { return mbedtls_sha256_finish_ret(&Context, CheckSum); }
|
||||||
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
|
@ -234,7 +234,7 @@ class LookOut
|
||||||
NMEA[Len++]=',';
|
NMEA[Len++]=',';
|
||||||
if(Tgt) // ID
|
if(Tgt) // ID
|
||||||
#ifdef WITH_SKYDEMON
|
#ifdef WITH_SKYDEMON
|
||||||
{ Len+=Format_Hex(NMEA+Len, Tgt->ID & 0x00FFFFFF); }
|
{ Len+=Format_Hex(NMEA+Len, Tgt->ID & 0x00FFFFFF); } // maybe just 6 digits should be produced ?
|
||||||
#else
|
#else
|
||||||
{ Len+=Format_Hex(NMEA+Len, Tgt->ID); }
|
{ Len+=Format_Hex(NMEA+Len, Tgt->ID); }
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -101,11 +101,11 @@ void app_main(void)
|
||||||
|
|
||||||
#ifdef WITH_SDLOG
|
#ifdef WITH_SDLOG
|
||||||
Log_Mutex = xSemaphoreCreateMutex();
|
Log_Mutex = xSemaphoreCreateMutex();
|
||||||
xTaskCreate(vTaskSDLOG, "SDLOG", 4000, 0, tskIDLE_PRIORITY+1, 0);
|
xTaskCreate(vTaskSDLOG, "SDLOG", 3000, 0, tskIDLE_PRIORITY+1, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef WITH_LOG
|
#ifdef WITH_LOG
|
||||||
xTaskCreate(vTaskLOG , "LOG", 5000, 0, tskIDLE_PRIORITY+1, 0);
|
xTaskCreate(vTaskLOG , "LOG", 4500, 0, tskIDLE_PRIORITY+1, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
xTaskCreate(vTaskRF, "RF", 2000, 0, tskIDLE_PRIORITY+5, 0);
|
xTaskCreate(vTaskRF, "RF", 2000, 0, tskIDLE_PRIORITY+5, 0);
|
||||||
|
@ -136,7 +136,7 @@ void app_main(void)
|
||||||
bool StartAP = Parameters.APname[0]; // start WiFi AP when APname non-empty
|
bool StartAP = Parameters.APname[0]; // start WiFi AP when APname non-empty
|
||||||
#endif
|
#endif
|
||||||
if(StartAP)
|
if(StartAP)
|
||||||
xTaskCreate(vTaskAP, "AP", 4000, 0, tskIDLE_PRIORITY+3, 0);
|
xTaskCreate(vTaskAP, "AP", 3000, 0, tskIDLE_PRIORITY+3, 0);
|
||||||
#else // WITH_AP
|
#else // WITH_AP
|
||||||
const bool StartAP=0;
|
const bool StartAP=0;
|
||||||
#endif // WITH_AP
|
#endif // WITH_AP
|
||||||
|
@ -145,7 +145,7 @@ void app_main(void)
|
||||||
xTaskCreate(vTaskAPRS, "APRS", 4000, 0, tskIDLE_PRIORITY+2, 0);
|
xTaskCreate(vTaskAPRS, "APRS", 4000, 0, tskIDLE_PRIORITY+2, 0);
|
||||||
#endif
|
#endif
|
||||||
#if defined(WITH_OLED) || defined(WITH_U8G2_OLED) || defined(WITH_ST7789) || defined(WITH_ILI9341)
|
#if defined(WITH_OLED) || defined(WITH_U8G2_OLED) || defined(WITH_ST7789) || defined(WITH_ILI9341)
|
||||||
xTaskCreate(vTaskDISP, "DISP", 3000, 0, tskIDLE_PRIORITY+2, 0);
|
xTaskCreate(vTaskDISP, "DISP", 2000, 0, tskIDLE_PRIORITY+2, 0);
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_SOUND
|
#ifdef WITH_SOUND
|
||||||
xTaskCreate(vTaskSOUND, "SOUND", 2000, 0, tskIDLE_PRIORITY+3, 0);
|
xTaskCreate(vTaskSOUND, "SOUND", 2000, 0, tskIDLE_PRIORITY+3, 0);
|
||||||
|
|
|
@ -582,7 +582,7 @@ void vTaskPROC(void* pvParameters)
|
||||||
Format_UnsDec(CONS_UART_Write, TimeSync_msTime(), 3);
|
Format_UnsDec(CONS_UART_Write, TimeSync_msTime(), 3);
|
||||||
Format_String(CONS_UART_Write, " -> Sent\n");
|
Format_String(CONS_UART_Write, " -> Sent\n");
|
||||||
xSemaphoreGive(CONS_Mutex);
|
xSemaphoreGive(CONS_Mutex);
|
||||||
#endif
|
#endif // DEBUG_PRINT
|
||||||
PosTime=Position->getUnixTime();
|
PosTime=Position->getUnixTime();
|
||||||
PosPacket.Packet.HeaderWord=0;
|
PosPacket.Packet.HeaderWord=0;
|
||||||
PosPacket.Packet.Header.Address = Parameters.Address; // set address
|
PosPacket.Packet.Header.Address = Parameters.Address; // set address
|
||||||
|
@ -590,7 +590,7 @@ void vTaskPROC(void* pvParameters)
|
||||||
#ifdef WITH_ENCRYPT
|
#ifdef WITH_ENCRYPT
|
||||||
if(Parameters.Encrypt) // if position encryption is requested
|
if(Parameters.Encrypt) // if position encryption is requested
|
||||||
{ PosPacket.Packet.Header.Encrypted = 1; } // then set the flg in the header
|
{ PosPacket.Packet.Header.Encrypted = 1; } // then set the flg in the header
|
||||||
#endif
|
#endif // WITH_ENCRYPT
|
||||||
PosPacket.Packet.calcAddrParity(); // parity of (part of) the header
|
PosPacket.Packet.calcAddrParity(); // parity of (part of) the header
|
||||||
if(BestResid==0) Position->Encode(PosPacket.Packet); // encode position/altitude/speed/etc. from GPS position
|
if(BestResid==0) Position->Encode(PosPacket.Packet); // encode position/altitude/speed/etc. from GPS position
|
||||||
else // extrapolate the position when if not at an exact UTC second
|
else // extrapolate the position when if not at an exact UTC second
|
||||||
|
@ -603,16 +603,16 @@ void vTaskPROC(void* pvParameters)
|
||||||
xSemaphoreTake(CONS_Mutex, portMAX_DELAY);
|
xSemaphoreTake(CONS_Mutex, portMAX_DELAY);
|
||||||
Format_String(CONS_UART_Write, Line, 0, Len);
|
Format_String(CONS_UART_Write, Line, 0, Len);
|
||||||
xSemaphoreGive(CONS_Mutex); }
|
xSemaphoreGive(CONS_Mutex); }
|
||||||
#endif
|
#endif // DEBUG_PRINT
|
||||||
OGN_TxPacket<OGN_Packet> *TxPacket = RF_TxFIFO.getWrite();
|
OGN_TxPacket<OGN_Packet> *TxPacket = RF_TxFIFO.getWrite();
|
||||||
TxPacket->Packet = PosPacket.Packet; // copy the position packet to the TxFIFO
|
TxPacket->Packet = PosPacket.Packet; // copy the position packet to the TxFIFO
|
||||||
|
|
||||||
#ifdef WITH_ENCRYPT
|
#ifdef WITH_ENCRYPT
|
||||||
if(Parameters.Encrypt) TxPacket->Packet.Encrypt(Parameters.EncryptKey); // if encryption is requested then encrypt
|
if(Parameters.Encrypt) TxPacket->Packet.Encrypt(Parameters.EncryptKey); // if encryption is requested then encrypt
|
||||||
else TxPacket->Packet.Whiten(); // otherwise only whiten
|
else TxPacket->Packet.Whiten(); // otherwise only whiten
|
||||||
#else
|
#else // WITH_ENCRYPT
|
||||||
TxPacket->Packet.Whiten(); // just whiten if there is no encryption
|
TxPacket->Packet.Whiten(); // just whiten if there is no encryption
|
||||||
#endif
|
#endif // WITH_ENCRYPT
|
||||||
TxPacket->calcFEC(); // calculate FEC code
|
TxPacket->calcFEC(); // calculate FEC code
|
||||||
#ifdef DEBUG_PRINT
|
#ifdef DEBUG_PRINT
|
||||||
xSemaphoreTake(CONS_Mutex, portMAX_DELAY);
|
xSemaphoreTake(CONS_Mutex, portMAX_DELAY);
|
||||||
|
@ -624,7 +624,7 @@ void vTaskPROC(void* pvParameters)
|
||||||
Format_Hex(CONS_UART_Write, TxPacket->Packet.HeaderWord);
|
Format_Hex(CONS_UART_Write, TxPacket->Packet.HeaderWord);
|
||||||
CONS_UART_Write('\r'); CONS_UART_Write('\n');
|
CONS_UART_Write('\r'); CONS_UART_Write('\n');
|
||||||
xSemaphoreGive(CONS_Mutex);
|
xSemaphoreGive(CONS_Mutex);
|
||||||
#endif
|
#endif // WITH_ENCRYPT
|
||||||
XorShift32(RX_Random);
|
XorShift32(RX_Random);
|
||||||
static uint8_t TxBackOff=0;
|
static uint8_t TxBackOff=0;
|
||||||
if(TxBackOff) TxBackOff--;
|
if(TxBackOff) TxBackOff--;
|
||||||
|
@ -645,33 +645,33 @@ void vTaskPROC(void* pvParameters)
|
||||||
XorShift32(RX_Random);
|
XorShift32(RX_Random);
|
||||||
FNT_TxFIFO.Write();
|
FNT_TxFIFO.Write();
|
||||||
FNTbackOff = 8+(RX_Random&0x1); } // every 9 or 10sec
|
FNTbackOff = 8+(RX_Random&0x1); } // every 9 or 10sec
|
||||||
#endif
|
#endif // WITH_FANET
|
||||||
#ifdef WITH_LOOKOUT
|
#ifdef WITH_LOOKOUT
|
||||||
const LookOut_Target *Tgt=Look.ProcessOwn(PosPacket.Packet); // process own position, get the most dangerous target
|
const LookOut_Target *Tgt=Look.ProcessOwn(PosPacket.Packet); // process own position, get the most dangerous target
|
||||||
#ifdef WITH_PFLAA
|
#ifdef WITH_PFLAA
|
||||||
if(Parameters.Verbose)
|
if(Parameters.Verbose)
|
||||||
{ xSemaphoreTake(CONS_Mutex, portMAX_DELAY);
|
{ xSemaphoreTake(CONS_Mutex, portMAX_DELAY);
|
||||||
Look.WritePFLA(CONS_UART_Write); // produce PFLAU and PFLAA for all tracked targets
|
Look.WritePFLA(CONS_UART_Write); // produce PFLAU and PFLAA for all tracked targets
|
||||||
xSemaphoreGive(CONS_Mutex);
|
xSemaphoreGive(CONS_Mutex);
|
||||||
#ifdef WITH_SDLOG
|
#ifdef WITH_SDLOG
|
||||||
if(Log_Free()>=512)
|
if(Log_Free()>=512)
|
||||||
{ xSemaphoreTake(Log_Mutex, portMAX_DELAY);
|
{ xSemaphoreTake(Log_Mutex, portMAX_DELAY);
|
||||||
Look.WritePFLA(Log_Write);
|
Look.WritePFLA(Log_Write);
|
||||||
xSemaphoreGive(Log_Mutex); }
|
xSemaphoreGive(Log_Mutex); }
|
||||||
#endif
|
#endif // WITH_SDLOG
|
||||||
}
|
}
|
||||||
#else
|
#else // WITH_PFLAA
|
||||||
if(Parameters.Verbose)
|
if(Parameters.Verbose)
|
||||||
{ uint8_t Len=Look.WritePFLAU(Line); // $PFLAU, overall status
|
{ uint8_t Len=Look.WritePFLAU(Line); // $PFLAU, overall status
|
||||||
xSemaphoreTake(CONS_Mutex, portMAX_DELAY);
|
xSemaphoreTake(CONS_Mutex, portMAX_DELAY);
|
||||||
Format_String(CONS_UART_Write, Line, 0, Len);
|
Format_String(CONS_UART_Write, Line, 0, Len);
|
||||||
xSemaphoreGive(CONS_Mutex);
|
xSemaphoreGive(CONS_Mutex);
|
||||||
#ifdef WITH_SDLOG
|
#ifdef WITH_SDLOG
|
||||||
if(Log_Free()>=128)
|
if(Log_Free()>=128)
|
||||||
{ xSemaphoreTake(Log_Mutex, portMAX_DELAY);
|
{ xSemaphoreTake(Log_Mutex, portMAX_DELAY);
|
||||||
Format_String(Log_Write, Line, 0, Len); // send the NMEA out to the log file
|
Format_String(Log_Write, Line, 0, Len); // send the NMEA out to the log file
|
||||||
xSemaphoreGive(Log_Mutex); }
|
xSemaphoreGive(Log_Mutex); }
|
||||||
#endif
|
#endif // WITH_SDLOG
|
||||||
}
|
}
|
||||||
#endif // WITH_PFLAA
|
#endif // WITH_PFLAA
|
||||||
uint8_t Warn = 0;
|
uint8_t Warn = 0;
|
||||||
|
@ -699,9 +699,10 @@ void vTaskPROC(void* pvParameters)
|
||||||
#endif // WITH_BEEPER
|
#endif // WITH_BEEPER
|
||||||
#ifdef WITH_SOUND
|
#ifdef WITH_SOUND
|
||||||
Sound_TrafficWarn(Tgt);
|
Sound_TrafficWarn(Tgt);
|
||||||
#endif
|
#endif // WITH_SOUND
|
||||||
}
|
}
|
||||||
#else // WITH_LOOKOUT
|
#else // WITH_LOOKOUT
|
||||||
|
#ifdef WITH_PFLAA
|
||||||
if(Parameters.Verbose)
|
if(Parameters.Verbose)
|
||||||
{ uint8_t Len=Look.WritePFLAU(Line); // $PFLAU, overall status
|
{ uint8_t Len=Look.WritePFLAU(Line); // $PFLAU, overall status
|
||||||
xSemaphoreTake(CONS_Mutex, portMAX_DELAY);
|
xSemaphoreTake(CONS_Mutex, portMAX_DELAY);
|
||||||
|
@ -712,8 +713,9 @@ void vTaskPROC(void* pvParameters)
|
||||||
{ xSemaphoreTake(Log_Mutex, portMAX_DELAY);
|
{ xSemaphoreTake(Log_Mutex, portMAX_DELAY);
|
||||||
Format_String(Log_Write, Line, 0, Len); // send the NMEA out to the log file
|
Format_String(Log_Write, Line, 0, Len); // send the NMEA out to the log file
|
||||||
xSemaphoreGive(Log_Mutex); }
|
xSemaphoreGive(Log_Mutex); }
|
||||||
#endif
|
#endif // WITH_SDLOG
|
||||||
}
|
}
|
||||||
|
#endif // WITH_PFLAA
|
||||||
#endif // WITH_LOOKOUT
|
#endif // WITH_LOOKOUT
|
||||||
#ifdef WITH_FLASHLOG
|
#ifdef WITH_FLASHLOG
|
||||||
bool Written=FlashLog_Process(PosPacket.Packet, PosTime);
|
bool Written=FlashLog_Process(PosPacket.Packet, PosTime);
|
||||||
|
@ -729,10 +731,10 @@ void vTaskPROC(void* pvParameters)
|
||||||
{
|
{
|
||||||
#ifdef WITH_APRS
|
#ifdef WITH_APRS
|
||||||
APRStx_FIFO.Write(PosPacket);
|
APRStx_FIFO.Write(PosPacket);
|
||||||
#endif
|
#endif // WITH_APRS
|
||||||
#ifdef WITH_LOG
|
#ifdef WITH_LOG
|
||||||
FlashLog(&PosPacket, PosTime);
|
FlashLog(&PosPacket, PosTime);
|
||||||
#endif
|
#endif // WITH_APRS
|
||||||
PrevLoggedPacket = PosPacket.Packet;
|
PrevLoggedPacket = PosPacket.Packet;
|
||||||
}
|
}
|
||||||
} else // if GPS position is not complete, contains no valid position, etc.
|
} else // if GPS position is not complete, contains no valid position, etc.
|
||||||
|
@ -747,7 +749,7 @@ void vTaskPROC(void* pvParameters)
|
||||||
Format_Hex(CONS_UART_Write, TxPacket->Packet.HeaderWord);
|
Format_Hex(CONS_UART_Write, TxPacket->Packet.HeaderWord);
|
||||||
CONS_UART_Write('\r'); CONS_UART_Write('\n');
|
CONS_UART_Write('\r'); CONS_UART_Write('\n');
|
||||||
xSemaphoreGive(CONS_Mutex);
|
xSemaphoreGive(CONS_Mutex);
|
||||||
#endif
|
#endif // DEBUG_PRINT
|
||||||
XorShift32(RX_Random);
|
XorShift32(RX_Random);
|
||||||
if(PosTime && ((RX_Random&0x7)==0) ) // send if some position in the packet and at 1/8 normal rate
|
if(PosTime && ((RX_Random&0x7)==0) ) // send if some position in the packet and at 1/8 normal rate
|
||||||
RF_TxFIFO.Write(); // complete the write into the TxFIFO
|
RF_TxFIFO.Write(); // complete the write into the TxFIFO
|
||||||
|
@ -760,7 +762,7 @@ void vTaskPROC(void* pvParameters)
|
||||||
xSemaphoreTake(CONS_Mutex, portMAX_DELAY);
|
xSemaphoreTake(CONS_Mutex, portMAX_DELAY);
|
||||||
Format_String(CONS_UART_Write, Line);
|
Format_String(CONS_UART_Write, Line);
|
||||||
xSemaphoreGive(CONS_Mutex);
|
xSemaphoreGive(CONS_Mutex);
|
||||||
#endif
|
#endif // DEBUG_PRINT
|
||||||
|
|
||||||
#ifdef WITH_FANET
|
#ifdef WITH_FANET
|
||||||
if(Parameters.Pilot[0] && (SlotTime&0xFF)==(RX_Random&0xFF) ) // every 256sec
|
if(Parameters.Pilot[0] && (SlotTime&0xFF)==(RX_Random&0xFF) ) // every 256sec
|
||||||
|
@ -769,7 +771,7 @@ void vTaskPROC(void* pvParameters)
|
||||||
FNTpkt->setName(Parameters.Pilot);
|
FNTpkt->setName(Parameters.Pilot);
|
||||||
XorShift32(RX_Random);
|
XorShift32(RX_Random);
|
||||||
FNT_TxFIFO.Write(); }
|
FNT_TxFIFO.Write(); }
|
||||||
#endif
|
#endif // WITH_FANET
|
||||||
|
|
||||||
StatPacket.Packet.HeaderWord=0;
|
StatPacket.Packet.HeaderWord=0;
|
||||||
StatPacket.Packet.Header.Address = Parameters.Address; // set address
|
StatPacket.Packet.Header.Address = Parameters.Address; // set address
|
||||||
|
@ -791,10 +793,10 @@ void vTaskPROC(void* pvParameters)
|
||||||
{ StatTxBackOff=16+(RX_Random%15);
|
{ StatTxBackOff=16+(RX_Random%15);
|
||||||
#ifdef WITH_APRS
|
#ifdef WITH_APRS
|
||||||
APRStx_FIFO.Write(StatPacket);
|
APRStx_FIFO.Write(StatPacket);
|
||||||
#endif
|
#endif // WITH_APRS
|
||||||
#ifdef WITH_LOG
|
#ifdef WITH_LOG
|
||||||
FlashLog(&StatPacket, PosTime); // log the status packet
|
FlashLog(&StatPacket, PosTime); // log the status packet
|
||||||
#endif
|
#endif // WITH_LOG
|
||||||
*StatusPacket = StatPacket; // copy status packet into the Tx queue
|
*StatusPacket = StatPacket; // copy status packet into the Tx queue
|
||||||
StatusPacket->Packet.Whiten(); // whiten for transmission
|
StatusPacket->Packet.Whiten(); // whiten for transmission
|
||||||
StatusPacket->calcFEC(); // calc. the FEC code
|
StatusPacket->calcFEC(); // calc. the FEC code
|
||||||
|
@ -817,7 +819,7 @@ void vTaskPROC(void* pvParameters)
|
||||||
Format_Hex(CONS_UART_Write, RelayPacket->Packet.HeaderWord);
|
Format_Hex(CONS_UART_Write, RelayPacket->Packet.HeaderWord);
|
||||||
CONS_UART_Write('\r'); CONS_UART_Write('\n');
|
CONS_UART_Write('\r'); CONS_UART_Write('\n');
|
||||||
xSemaphoreGive(CONS_Mutex);
|
xSemaphoreGive(CONS_Mutex);
|
||||||
#endif
|
#endif // DEBUG_PRINT
|
||||||
RF_TxFIFO.Write();
|
RF_TxFIFO.Write();
|
||||||
}
|
}
|
||||||
CleanRelayQueue(SlotTime);
|
CleanRelayQueue(SlotTime);
|
||||||
|
|
Ładowanie…
Reference in New Issue