temp sync broken

This commit is contained in:
2025-12-30 08:04:26 +01:00
parent 31dda62474
commit 3b2ec32532
27 changed files with 1339 additions and 589 deletions

View File

@@ -29,6 +29,67 @@ void LoRaError (int error) {
}
}
// Convert bandwidth constant to float in kHz
float loraBwToFloat(uint8_t bw) {
switch (bw) {
case SX126X_LORA_BW_7_8: return 7.8f;
case SX126X_LORA_BW_10_4: return 10.4f;
case SX126X_LORA_BW_15_6: return 15.6f;
case SX126X_LORA_BW_20_8: return 20.8f;
case SX126X_LORA_BW_31_25: return 31.25f;
case SX126X_LORA_BW_41_7: return 41.7f;
case SX126X_LORA_BW_62_5: return 62.5f;
case SX126X_LORA_BW_125_0: return 125.0f;
case SX126X_LORA_BW_250_0: return 250.0f;
case SX126X_LORA_BW_500_0: return 500.0f;
default: return 0.0f; // unknown
}
}
// Convert float bandwidth (kHz) to constant
uint8_t floatToLoraBw(float bw) {
if (bw == 7.8f) return SX126X_LORA_BW_7_8;
if (bw == 10.4f) return SX126X_LORA_BW_10_4;
if (bw == 15.6f) return SX126X_LORA_BW_15_6;
if (bw == 20.8f) return SX126X_LORA_BW_20_8;
if (bw == 31.25f) return SX126X_LORA_BW_31_25;
if (bw == 41.7f) return SX126X_LORA_BW_41_7;
if (bw == 62.5f) return SX126X_LORA_BW_62_5;
if (bw == 125.0f) return SX126X_LORA_BW_125_0;
if (bw == 250.0f) return SX126X_LORA_BW_250_0;
if (bw == 500.0f) return SX126X_LORA_BW_500_0;
return 0xFF; // invalid
}
// Convert coding rate constant to float
float loraCrToFloat(uint8_t cr) {
switch (cr) {
case SX126X_LORA_CR_4_5: return 4.0f / 5.0f;
case SX126X_LORA_CR_4_6: return 4.0f / 6.0f;
case SX126X_LORA_CR_4_7: return 4.0f / 7.0f;
case SX126X_LORA_CR_4_8: return 4.0f / 8.0f;
default: return 0.0f;
}
}
// Convert float coding rate to constant
uint8_t floatToLoraCr(float cr) {
if (cr == 4.0f / 5.0f) return SX126X_LORA_CR_4_5;
if (cr == 4.0f / 6.0f) return SX126X_LORA_CR_4_6;
if (cr == 4.0f / 7.0f) return SX126X_LORA_CR_4_7;
if (cr == 4.0f / 8.0f) return SX126X_LORA_CR_4_8;
return 0xFF;
}
// Convert MHz to Hz with limit check
uint32_t mhzToHzLimited(double freqMHz) {
double freqHz = freqMHz * 1000000.0;
if (freqHz > 860000000.0 && freqHz < 880000000.0) {
return (uint32_t)freqHz;
}
return 0; // out of range
}
void LoRaInit (void) {
txActive = 0;
@@ -637,8 +698,8 @@ void SetTx (uint32_t timeoutInMs) {
}
if (debugPrint) {
MESH_LOGI (TAG, "SetTx timeoutInMs=%d"
" tout=%d",
timeoutInMs, tout);
" tout=%d",
timeoutInMs, tout);
}
buf[0] = (uint8_t)((tout >> 16) & 0xFF);
buf[1] = (uint8_t)((tout >> 8) & 0xFF);