[SX127x] Sync with LoRaLib v6.0.0

This commit is contained in:
Jan Gromeš 2018-09-04 19:52:27 +02:00
parent f6bca77b8a
commit 8165f8107b
5 changed files with 39 additions and 13 deletions

View file

@ -54,7 +54,8 @@ setOutputPower KEYWORD2
listen KEYWORD2 listen KEYWORD2
onReceive KEYWORD2 onReceive KEYWORD2
readData KEYWORD2 readData KEYWORD2
directMode KEYWORD2 transmitDirect KEYWORD2
receiveDirect KEYWORD2
packetMode KEYWORD2 packetMode KEYWORD2
# RF69-specific # RF69-specific

View file

@ -409,7 +409,7 @@ int16_t SX127x::standby() {
return(setMode(SX127X_STANDBY)); return(setMode(SX127X_STANDBY));
} }
int16_t SX127x::directMode(uint32_t FRF) { int16_t SX127x::transmitDirect(uint32_t FRF) {
// check modem // check modem
if(getActiveModem() != SX127X_FSK_OOK) { if(getActiveModem() != SX127X_FSK_OOK) {
return(ERR_WRONG_MODEM); return(ERR_WRONG_MODEM);
@ -424,6 +424,33 @@ int16_t SX127x::directMode(uint32_t FRF) {
return(setMode(SX127X_TX)); return(setMode(SX127X_TX));
} }
// activate direct mode
int16_t state = directMode();
if(state != ERR_NONE) {
return(state);
}
// start transmitting
return(setMode(SX127X_TX));
}
int16_t SX127x::receiveDirect() {
// check modem
if(getActiveModem() != SX127X_FSK_OOK) {
return(ERR_WRONG_MODEM);
}
// activate direct mode
int16_t state = directMode();
if(state != ERR_NONE) {
return(state);
}
// start receiving
return(setMode(SX127X_RX));
}
int16_t SX127x::directMode() {
// set mode to standby // set mode to standby
int16_t state = setMode(SX127X_STANDBY); int16_t state = setMode(SX127X_STANDBY);
if(state != ERR_NONE) { if(state != ERR_NONE) {
@ -435,12 +462,7 @@ int16_t SX127x::directMode(uint32_t FRF) {
// set continuous mode // set continuous mode
state |= _mod->SPIsetRegValue(SX127X_REG_PACKET_CONFIG_2, SX127X_DATA_MODE_CONTINUOUS, 6, 6); state |= _mod->SPIsetRegValue(SX127X_REG_PACKET_CONFIG_2, SX127X_DATA_MODE_CONTINUOUS, 6, 6);
if(state != ERR_NONE) {
return(state); return(state);
}
// start transmitting
return(setMode(SX127X_TX));
} }
int16_t SX127x::packetMode() { int16_t SX127x::packetMode() {

View file

@ -538,7 +538,8 @@ class SX127x: public PhysicalLayer {
int16_t scanChannel(); int16_t scanChannel();
int16_t sleep(); int16_t sleep();
int16_t standby(); int16_t standby();
int16_t directMode(uint32_t FRF = 0); int16_t transmitDirect(uint32_t FRF = 0);
int16_t receiveDirect();
int16_t packetMode(); int16_t packetMode();
// interrupt methods // interrupt methods
@ -583,6 +584,7 @@ class SX127x: public PhysicalLayer {
int16_t config(); int16_t config();
int16_t configFSK(); int16_t configFSK();
int16_t getActiveModem(); int16_t getActiveModem();
int16_t directMode();
private: private:
bool findChip(uint8_t ver); bool findChip(uint8_t ver);

View file

@ -9,7 +9,8 @@ class PhysicalLayer {
// this class is purely virtual and does not require explicit constructor // this class is purely virtual and does not require explicit constructor
// basic methods // basic methods
virtual int16_t directMode(uint32_t FRF = 0) = 0; virtual int16_t transmitDirect(uint32_t FRF = 0) = 0;
virtual int16_t receiveDirect() = 0;
virtual int16_t transmit(const char* data, uint8_t addr = 0) = 0; virtual int16_t transmit(const char* data, uint8_t addr = 0) = 0;
virtual int16_t transmit(uint8_t* data, size_t len, uint8_t addr = 0) = 0; virtual int16_t transmit(uint8_t* data, size_t len, uint8_t addr = 0) = 0;
virtual int16_t receive(uint8_t* data, size_t len) = 0; virtual int16_t receive(uint8_t* data, size_t len) = 0;

View file

@ -29,7 +29,7 @@ int16_t RTTYClient::begin(float base, uint16_t shift, uint16_t rate, uint8_t dat
} }
void RTTYClient::idle() { void RTTYClient::idle() {
_phy->directMode(); _phy->transmitDirect();
mark(); mark();
} }
@ -178,13 +178,13 @@ size_t RTTYClient::println(double d, int digits) {
void RTTYClient::mark() { void RTTYClient::mark() {
uint32_t start = micros(); uint32_t start = micros();
_phy->directMode(_base + _shift); _phy->transmitDirect(_base + _shift);
while(micros() - start < _bitDuration); while(micros() - start < _bitDuration);
} }
void RTTYClient::space() { void RTTYClient::space() {
uint32_t start = micros(); uint32_t start = micros();
_phy->directMode(_base); _phy->transmitDirect(_base);
while(micros() - start < _bitDuration); while(micros() - start < _bitDuration);
} }