timesync fixes
This commit is contained in:
parent
cc13a38e56
commit
3b3b2810cb
@ -239,9 +239,9 @@ void onEvent(ev_t ev) {
|
|||||||
sprintf(display_line6, " "); // clear previous lmic status
|
sprintf(display_line6, " "); // clear previous lmic status
|
||||||
|
|
||||||
if (LMIC.dataLen) { // did we receive data -> display info
|
if (LMIC.dataLen) { // did we receive data -> display info
|
||||||
ESP_LOGI(TAG, "Received %d bytes of payload, RSSI -%d SNR %d",
|
ESP_LOGI(TAG, "Received %d bytes of payload, RSSI %d SNR %d",
|
||||||
LMIC.dataLen, LMIC.rssi, LMIC.snr / 4);
|
LMIC.dataLen, LMIC.rssi, LMIC.snr / 4);
|
||||||
sprintf(display_line6, "RSSI -%d SNR %d", LMIC.rssi, LMIC.snr / 4);
|
sprintf(display_line6, "RSSI %d SNR %d", LMIC.rssi, LMIC.snr / 4);
|
||||||
|
|
||||||
if (LMIC.txrxFlags & TXRX_PORT) { // FPort -> use to switch
|
if (LMIC.txrxFlags & TXRX_PORT) { // FPort -> use to switch
|
||||||
switch (LMIC.frame[LMIC.dataBeg - 1]) {
|
switch (LMIC.frame[LMIC.dataBeg - 1]) {
|
||||||
|
@ -25,7 +25,7 @@ typedef std::chrono::system_clock myClock;
|
|||||||
typedef myClock::time_point myClock_timepoint;
|
typedef myClock::time_point myClock_timepoint;
|
||||||
typedef std::chrono::duration<long long int, std::ratio<1, 1000>>
|
typedef std::chrono::duration<long long int, std::ratio<1, 1000>>
|
||||||
myClock_msecTick;
|
myClock_msecTick;
|
||||||
// 32bit millisec resolution from epoch until year 2038
|
|
||||||
myClock_timepoint time_sync_tx[TIME_SYNC_SAMPLES];
|
myClock_timepoint time_sync_tx[TIME_SYNC_SAMPLES];
|
||||||
myClock_timepoint time_sync_rx[TIME_SYNC_SAMPLES];
|
myClock_timepoint time_sync_rx[TIME_SYNC_SAMPLES];
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ void recv_timesync_ans(uint8_t buf[], uint8_t buf_len) {
|
|||||||
time_sync_rx[k] += std::chrono::seconds(timestamp_sec) +
|
time_sync_rx[k] += std::chrono::seconds(timestamp_sec) +
|
||||||
std::chrono::milliseconds(timestamp_msec);
|
std::chrono::milliseconds(timestamp_msec);
|
||||||
|
|
||||||
ESP_LOGD(TAG, "Timesync answer #%d rcvd at %d", seq_no,
|
ESP_LOGD(TAG, "Timesync request #%d rcvd at %d", seq_no,
|
||||||
myClock::to_time_t(time_sync_rx[k]));
|
myClock::to_time_t(time_sync_rx[k]));
|
||||||
|
|
||||||
// inform processing task
|
// inform processing task
|
||||||
@ -116,13 +116,13 @@ void process_timesync_req(void *taskparameter) {
|
|||||||
k = seq_no % TIME_SYNC_SAMPLES;
|
k = seq_no % TIME_SYNC_SAMPLES;
|
||||||
|
|
||||||
auto t_tx = std::chrono::time_point_cast<std::chrono::milliseconds>(
|
auto t_tx = std::chrono::time_point_cast<std::chrono::milliseconds>(
|
||||||
time_sync_tx[k]); // timepoint node after TX_completed
|
time_sync_tx[k]); // timepoint when node TX_completed
|
||||||
auto t_rx = std::chrono::time_point_cast<std::chrono::milliseconds>(
|
auto t_rx = std::chrono::time_point_cast<std::chrono::milliseconds>(
|
||||||
time_sync_rx[k]); // timepoint when message was seen on gateway
|
time_sync_rx[k]); // timepoint when message was seen on gateway
|
||||||
|
|
||||||
time_offset += t_rx - t_tx;
|
time_offset += t_rx - t_tx; // cumulate timepoint diffs
|
||||||
|
|
||||||
if (i < TIME_SYNC_SAMPLES - 1)
|
if (i < TIME_SYNC_SAMPLES - 1) // wait until next cycle
|
||||||
vTaskDelay(pdMS_TO_TICKS(TIME_SYNC_CYCLE * 1000));
|
vTaskDelay(pdMS_TO_TICKS(TIME_SYNC_CYCLE * 1000));
|
||||||
}
|
}
|
||||||
} // for
|
} // for
|
||||||
|
Loading…
Reference in New Issue
Block a user