Add LoRa TX timing diagnostics
- Log idle/begin/write/end timing for LoRa TX under SERIAL_DEBUG_MODE - Document TX timing logs in README
This commit is contained in:
@@ -188,6 +188,7 @@ Packet layout:
|
|||||||
LoRa radio settings:
|
LoRa radio settings:
|
||||||
- Frequency: **433 MHz** or **868 MHz** (set by build env via `LORA_FREQUENCY_HZ`)
|
- Frequency: **433 MHz** or **868 MHz** (set by build env via `LORA_FREQUENCY_HZ`)
|
||||||
- SF12, BW 125 kHz, CR 4/5, CRC on, Sync Word 0x34
|
- SF12, BW 125 kHz, CR 4/5, CRC on, Sync Word 0x34
|
||||||
|
- When `SERIAL_DEBUG_MODE` is enabled, LoRa TX logs include timing breakdowns for `idle/begin/write/end` to diagnose long transmit times.
|
||||||
|
|
||||||
## Data Format
|
## Data Format
|
||||||
MeterData JSON (sender + MQTT):
|
MeterData JSON (sender + MQTT):
|
||||||
|
|||||||
@@ -33,6 +33,18 @@ bool lora_send(const LoraPacket &pkt) {
|
|||||||
if (LORA_SEND_BYPASS) {
|
if (LORA_SEND_BYPASS) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
uint32_t t0 = 0;
|
||||||
|
uint32_t t1 = 0;
|
||||||
|
uint32_t t2 = 0;
|
||||||
|
uint32_t t3 = 0;
|
||||||
|
uint32_t t4 = 0;
|
||||||
|
if (SERIAL_DEBUG_MODE) {
|
||||||
|
t0 = millis();
|
||||||
|
}
|
||||||
|
LoRa.idle();
|
||||||
|
if (SERIAL_DEBUG_MODE) {
|
||||||
|
t1 = millis();
|
||||||
|
}
|
||||||
uint8_t buffer[5 + LORA_MAX_PAYLOAD + 2];
|
uint8_t buffer[5 + LORA_MAX_PAYLOAD + 2];
|
||||||
size_t idx = 0;
|
size_t idx = 0;
|
||||||
buffer[idx++] = pkt.protocol_version;
|
buffer[idx++] = pkt.protocol_version;
|
||||||
@@ -53,8 +65,24 @@ bool lora_send(const LoraPacket &pkt) {
|
|||||||
buffer[idx++] = static_cast<uint8_t>(crc & 0xFF);
|
buffer[idx++] = static_cast<uint8_t>(crc & 0xFF);
|
||||||
|
|
||||||
LoRa.beginPacket();
|
LoRa.beginPacket();
|
||||||
|
if (SERIAL_DEBUG_MODE) {
|
||||||
|
t2 = millis();
|
||||||
|
}
|
||||||
LoRa.write(buffer, idx);
|
LoRa.write(buffer, idx);
|
||||||
int result = LoRa.endPacket();
|
if (SERIAL_DEBUG_MODE) {
|
||||||
|
t3 = millis();
|
||||||
|
}
|
||||||
|
int result = LoRa.endPacket(false);
|
||||||
|
if (SERIAL_DEBUG_MODE) {
|
||||||
|
t4 = millis();
|
||||||
|
Serial.printf("lora_tx: idle=%lums begin=%lums write=%lums end=%lums total=%lums len=%u\n",
|
||||||
|
static_cast<unsigned long>(t1 - t0),
|
||||||
|
static_cast<unsigned long>(t2 - t1),
|
||||||
|
static_cast<unsigned long>(t3 - t2),
|
||||||
|
static_cast<unsigned long>(t4 - t3),
|
||||||
|
static_cast<unsigned long>(t4 - t0),
|
||||||
|
static_cast<unsigned>(idx));
|
||||||
|
}
|
||||||
return result == 1;
|
return result == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user