kopia lustrzana https://github.com/jgromes/RadioLib
[SX127x] Added finishTransmit (#571)
rodzic
0ae6eae4d9
commit
0d72dd2ac3
|
@ -114,10 +114,10 @@ void loop() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: in FSK mode, SX127x will not automatically
|
// clean up after transmission is finished
|
||||||
// turn transmitter off after sending a packet
|
// this will ensure transmitter is disabled,
|
||||||
// set mode to standby to ensure we don't jam others
|
// RF switch is powered down etc.
|
||||||
//radio.standby()
|
radio.finishTransmit();
|
||||||
|
|
||||||
// wait a second before transmitting again
|
// wait a second before transmitting again
|
||||||
delay(1000);
|
delay(1000);
|
||||||
|
|
|
@ -159,7 +159,7 @@ int16_t SX127x::transmit(uint8_t* data, size_t len, uint8_t addr) {
|
||||||
while(!_mod->digitalRead(_mod->getIrq())) {
|
while(!_mod->digitalRead(_mod->getIrq())) {
|
||||||
_mod->yield();
|
_mod->yield();
|
||||||
if(_mod->micros() - start > timeout) {
|
if(_mod->micros() - start > timeout) {
|
||||||
clearIRQFlags();
|
finishTransmit();
|
||||||
return(RADIOLIB_ERR_TX_TIMEOUT);
|
return(RADIOLIB_ERR_TX_TIMEOUT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -177,8 +177,7 @@ int16_t SX127x::transmit(uint8_t* data, size_t len, uint8_t addr) {
|
||||||
while(!_mod->digitalRead(_mod->getIrq())) {
|
while(!_mod->digitalRead(_mod->getIrq())) {
|
||||||
_mod->yield();
|
_mod->yield();
|
||||||
if(_mod->micros() - start > timeout) {
|
if(_mod->micros() - start > timeout) {
|
||||||
clearIRQFlags();
|
finishTransmit();
|
||||||
standby();
|
|
||||||
return(RADIOLIB_ERR_TX_TIMEOUT);
|
return(RADIOLIB_ERR_TX_TIMEOUT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -189,12 +188,8 @@ int16_t SX127x::transmit(uint8_t* data, size_t len, uint8_t addr) {
|
||||||
// update data rate
|
// update data rate
|
||||||
uint32_t elapsed = _mod->micros() - start;
|
uint32_t elapsed = _mod->micros() - start;
|
||||||
_dataRate = (len*8.0)/((float)elapsed/1000000.0);
|
_dataRate = (len*8.0)/((float)elapsed/1000000.0);
|
||||||
|
|
||||||
// clear interrupt flags
|
return(finishTransmit());
|
||||||
clearIRQFlags();
|
|
||||||
|
|
||||||
// set mode to standby to disable transmitter
|
|
||||||
return(standby());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t SX127x::receive(uint8_t* data, size_t len) {
|
int16_t SX127x::receive(uint8_t* data, size_t len) {
|
||||||
|
@ -607,6 +602,14 @@ int16_t SX127x::startTransmit(uint8_t* data, size_t len, uint8_t addr) {
|
||||||
return(RADIOLIB_ERR_NONE);
|
return(RADIOLIB_ERR_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int16_t SX127x::finishTransmit() {
|
||||||
|
// clear interrupt flags
|
||||||
|
clearIRQFlags();
|
||||||
|
|
||||||
|
// set mode to standby to disable transmitter/RF switch
|
||||||
|
return(standby());
|
||||||
|
}
|
||||||
|
|
||||||
int16_t SX127x::readData(uint8_t* data, size_t len) {
|
int16_t SX127x::readData(uint8_t* data, size_t len) {
|
||||||
int16_t modem = getActiveModem();
|
int16_t modem = getActiveModem();
|
||||||
|
|
||||||
|
|
|
@ -800,6 +800,13 @@ class SX127x: public PhysicalLayer {
|
||||||
*/
|
*/
|
||||||
int16_t startTransmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
|
int16_t startTransmit(uint8_t* data, size_t len, uint8_t addr = 0) override;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\brief Clean up after transmission is done.
|
||||||
|
|
||||||
|
\returns \ref status_codes
|
||||||
|
*/
|
||||||
|
int16_t finishTransmit() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief Interrupt-driven receive method. DIO0 will be activated when full valid packet is received.
|
\brief Interrupt-driven receive method. DIO0 will be activated when full valid packet is received.
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue