Merge pull request #96 from geeksville/removeradiohead

Removeradiohead
This commit is contained in:
Kevin Hester 2020-04-17 18:55:23 -07:00 committed by GitHub
commit 598abb0d23
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 39 additions and 53 deletions

View File

@ -1,3 +1,3 @@
export VERSION=0.4.1 export VERSION=0.4.2

View File

@ -69,9 +69,6 @@ void MeshService::init()
gpsObserver.observe(&gps); gpsObserver.observe(&gps);
packetReceivedObserver.observe(&router.notifyPacketReceived); packetReceivedObserver.observe(&router.notifyPacketReceived);
// No need to call this here, our periodic task will fire quite soon
// sendOwnerPeriod();
} }
void MeshService::sendOurOwner(NodeNum dest, bool wantReplies) void MeshService::sendOurOwner(NodeNum dest, bool wantReplies)

View File

@ -83,6 +83,7 @@ void NodeDB::resetRadioConfig()
/* /*
radioConfig.preferences.screen_on_secs = 30; radioConfig.preferences.screen_on_secs = 30;
radioConfig.preferences.wait_bluetooth_secs = 30; radioConfig.preferences.wait_bluetooth_secs = 30;
radioConfig.preferences.position_broadcast_secs = 15;
*/ */
} }

View File

@ -54,6 +54,11 @@ ErrorCode CustomRF95::send(MeshPacket *p)
DEBUG_MSG("immediate send on mesh fr=0x%x,to=0x%x,id=%d\n (txGood=%d,rxGood=%d,rxBad=%d)\n", p->from, p->to, p->id, DEBUG_MSG("immediate send on mesh fr=0x%x,to=0x%x,id=%d\n (txGood=%d,rxGood=%d,rxBad=%d)\n", p->from, p->to, p->id,
txGood(), rxGood(), rxBad()); txGood(), rxGood(), rxBad());
waitPacketSent(); // Make sure we dont interrupt an outgoing message
if (!waitCAD())
return false; // Check channel activity
startSend(p); startSend(p);
return ERRNO_OK; return ERRNO_OK;
} else { } else {

View File

@ -6,17 +6,8 @@
#include <RHGenericDriver.h> #include <RHGenericDriver.h>
RHGenericDriver::RHGenericDriver() RHGenericDriver::RHGenericDriver()
: : _mode(RHModeInitialising), _thisAddress(RH_BROADCAST_ADDRESS), _txHeaderTo(RH_BROADCAST_ADDRESS),
_mode(RHModeInitialising), _txHeaderFrom(RH_BROADCAST_ADDRESS), _txHeaderId(0), _txHeaderFlags(0), _rxBad(0), _rxGood(0), _txGood(0), _cad_timeout(0)
_thisAddress(RH_BROADCAST_ADDRESS),
_txHeaderTo(RH_BROADCAST_ADDRESS),
_txHeaderFrom(RH_BROADCAST_ADDRESS),
_txHeaderId(0),
_txHeaderFlags(0),
_rxBad(0),
_rxGood(0),
_txGood(0),
_cad_timeout(0)
{ {
} }
@ -29,7 +20,7 @@ bool RHGenericDriver::init()
void RHGenericDriver::waitAvailable() void RHGenericDriver::waitAvailable()
{ {
while (!available()) while (!available())
YIELD; YIELD;
} }
// Blocks until a valid message is received or timeout expires // Blocks until a valid message is received or timeout expires
@ -38,13 +29,11 @@ void RHGenericDriver::waitAvailable()
bool RHGenericDriver::waitAvailableTimeout(uint16_t timeout) bool RHGenericDriver::waitAvailableTimeout(uint16_t timeout)
{ {
unsigned long starttime = millis(); unsigned long starttime = millis();
while ((millis() - starttime) < timeout) while ((millis() - starttime) < timeout) {
{ if (available()) {
if (available()) return true;
{ }
return true; YIELD;
}
YIELD;
} }
return false; return false;
} }
@ -52,18 +41,17 @@ bool RHGenericDriver::waitAvailableTimeout(uint16_t timeout)
bool RHGenericDriver::waitPacketSent() bool RHGenericDriver::waitPacketSent()
{ {
while (_mode == RHModeTx) while (_mode == RHModeTx)
YIELD; // Wait for any previous transmit to finish YIELD; // Wait for any previous transmit to finish
return true; return true;
} }
bool RHGenericDriver::waitPacketSent(uint16_t timeout) bool RHGenericDriver::waitPacketSent(uint16_t timeout)
{ {
unsigned long starttime = millis(); unsigned long starttime = millis();
while ((millis() - starttime) < timeout) while ((millis() - starttime) < timeout) {
{
if (_mode != RHModeTx) // Any previous transmit finished? if (_mode != RHModeTx) // Any previous transmit finished?
return true; return true;
YIELD; YIELD;
} }
return false; return false;
} }
@ -72,7 +60,7 @@ bool RHGenericDriver::waitPacketSent(uint16_t timeout)
bool RHGenericDriver::waitCAD() bool RHGenericDriver::waitCAD()
{ {
if (!_cad_timeout) if (!_cad_timeout)
return true; return true;
// Wait for any channel activity to finish or timeout // Wait for any channel activity to finish or timeout
// Sophisticated DCF function... // Sophisticated DCF function...
@ -80,14 +68,13 @@ bool RHGenericDriver::waitCAD()
// 100 - 1000 ms // 100 - 1000 ms
// 10 sec timeout // 10 sec timeout
unsigned long t = millis(); unsigned long t = millis();
while (isChannelActive()) while (isChannelActive()) {
{ if (millis() - t > _cad_timeout)
if (millis() - t > _cad_timeout) return false;
return false;
#if (RH_PLATFORM == RH_PLATFORM_STM32) // stdlib on STMF103 gets confused if random is redefined #if (RH_PLATFORM == RH_PLATFORM_STM32) // stdlib on STMF103 gets confused if random is redefined
delay(_random(1, 10) * 100); delay(_random(1, 10) * 100);
#else #else
delay(random(1, 10) * 100); // Should these values be configurable? Macros? delay(random(1, 10) * 100); // Should these values be configurable? Macros?
#endif #endif
} }
@ -156,36 +143,34 @@ int16_t RHGenericDriver::lastRssi()
return _lastRssi; return _lastRssi;
} }
RHGenericDriver::RHMode RHGenericDriver::mode() RHGenericDriver::RHMode RHGenericDriver::mode()
{ {
return _mode; return _mode;
} }
void RHGenericDriver::setMode(RHMode mode) void RHGenericDriver::setMode(RHMode mode)
{ {
_mode = mode; _mode = mode;
} }
bool RHGenericDriver::sleep() bool RHGenericDriver::sleep()
{ {
return false; return false;
} }
// Diagnostic help // Diagnostic help
void RHGenericDriver::printBuffer(const char* prompt, const uint8_t* buf, uint8_t len) void RHGenericDriver::printBuffer(const char *prompt, const uint8_t *buf, uint8_t len)
{ {
#ifdef RH_HAVE_SERIAL #ifdef RH_HAVE_SERIAL
Serial.println(prompt); Serial.println(prompt);
uint8_t i; uint8_t i;
for (i = 0; i < len; i++) for (i = 0; i < len; i++) {
{ if (i % 16 == 15)
if (i % 16 == 15) Serial.println(buf[i], HEX);
Serial.println(buf[i], HEX); else {
else Serial.print(buf[i], HEX);
{ Serial.print(' ');
Serial.print(buf[i], HEX); }
Serial.print(' ');
}
} }
Serial.println(""); Serial.println("");
#endif #endif
@ -216,6 +201,7 @@ void RHGenericDriver::setCADTimeout(unsigned long cad_timeout)
// get linking complaints from the default code generated for pure virtual functions // get linking complaints from the default code generated for pure virtual functions
extern "C" void __cxa_pure_virtual() extern "C" void __cxa_pure_virtual()
{ {
while (1); while (1)
;
} }
#endif #endif

View File

@ -280,17 +280,14 @@ void RH_RF95::clearRxBuf()
ATOMIC_BLOCK_END; ATOMIC_BLOCK_END;
} }
/// Note: This routine might be called from inside the RF95 ISR
bool RH_RF95::send(const uint8_t *data, uint8_t len) bool RH_RF95::send(const uint8_t *data, uint8_t len)
{ {
if (len > RH_RF95_MAX_MESSAGE_LEN) if (len > RH_RF95_MAX_MESSAGE_LEN)
return false; return false;
waitPacketSent(); // Make sure we dont interrupt an outgoing message
setModeIdle(); setModeIdle();
if (!waitCAD())
return false; // Check channel activity
// Position at the beginning of the FIFO // Position at the beginning of the FIFO
spiWrite(RH_RF95_REG_0D_FIFO_ADDR_PTR, 0); spiWrite(RH_RF95_REG_0D_FIFO_ADDR_PTR, 0);
// The headers // The headers