From 35053daa908bc9eedd7ddc3af84a8bed433bac54 Mon Sep 17 00:00:00 2001 From: "Pawel Spychalski (DzikuVx)" Date: Wed, 16 May 2018 17:06:03 +0200 Subject: [PATCH] bugfixes --- .vscode/arduino.json | 2 +- crossbow/crossbow.ino | 28 ++++++++++++++-------------- crossbow/radio_node.cpp | 9 +++++---- crossbow/radio_node.h | 2 +- 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/.vscode/arduino.json b/.vscode/arduino.json index 09e7173..e8e6b14 100644 --- a/.vscode/arduino.json +++ b/.vscode/arduino.json @@ -1,6 +1,6 @@ { "board": "bsfrance:avr:lora32u4", "sketch": "crossbow/crossbow.ino", - "port": "COM11", + "port": "COM7", "output": "../build" } \ No newline at end of file diff --git a/crossbow/crossbow.ino b/crossbow/crossbow.ino index a7fd2b4..4b53ad0 100644 --- a/crossbow/crossbow.ino +++ b/crossbow/crossbow.ino @@ -285,7 +285,18 @@ void loop(void) uint32_t currentMillis = millis(); -#ifdef DEVICE_MODE_TX +#ifdef DEVICE_MODE_RX + /* + * This routine handles resync of TX/RX while hoppping frequencies + */ + radioNode.handleChannelDwell(); + + /* + * Detect the moment when radio module stopped transmittig and put it + * back in to receive state + */ + radioNode.handleTxDoneState(false); +#else //Process buttons button0.loop(); @@ -314,21 +325,10 @@ void loop(void) txInput.restart(); serialRestartMillis = currentMillis; } -#endif - /* - * This routine handles resync of TX/RX while hoppping frequencies - */ -#ifdef DEVICE_MODE_RX - radioNode.handleChannelDwell(); + radioNode.handleTxDoneState(true); #endif - /* - * Detect the moment when radio module stopped transmittig and put it - * back in to receive state - */ - radioNode.handleTxDoneState(); - radioNode.readAndDecode( &qsp, &rxDeviceState, @@ -356,7 +356,7 @@ void loop(void) qsp.protocolState == QSP_STATE_IDLE && qsp.lastTxSlotTimestamp + TX_TRANSMIT_SLOT_RATE < currentMillis ) { - + int8_t frameToSend = getFrameToTransmit(&qsp); #ifndef FORCE_TX_WITHOUT_INPUT diff --git a/crossbow/radio_node.cpp b/crossbow/radio_node.cpp index 0e7110e..772dec8 100644 --- a/crossbow/radio_node.cpp +++ b/crossbow/radio_node.cpp @@ -119,8 +119,9 @@ void RadioNode::handleChannelDwell(void) { } } -void RadioNode::handleTxDoneState(void) { +void RadioNode::handleTxDoneState(bool hop) { uint32_t currentMillis = millis(); + if ( currentMillis > nextTxCheckMillis && deviceState == RADIO_STATE_TX && @@ -130,9 +131,9 @@ void RadioNode::handleTxDoneState(void) { /* * In case of TX module, hop right now */ -#ifdef DEVICE_MODE_TX - hopFrequency(true, getChannel(), currentMillis); -#endif + if (hop) { + hopFrequency(true, getChannel(), currentMillis); + } LoRa.receive(); deviceState = RADIO_STATE_RX; diff --git a/crossbow/radio_node.h b/crossbow/radio_node.h index 43b1dd6..e720c5c 100644 --- a/crossbow/radio_node.h +++ b/crossbow/radio_node.h @@ -33,7 +33,7 @@ class RadioNode { uint8_t getChannel(void); uint32_t getChannelEntryMillis(void); void handleChannelDwell(void); - void handleTxDoneState(); + void handleTxDoneState(bool hop); void handleTx(QspConfiguration_t *qsp); volatile int8_t bytesToRead = -1; volatile uint8_t deviceState = RADIO_STATE_RX;