diff --git a/sx126x.cpp b/sx126x.cpp index 223b4f9..ad1fca1 100644 --- a/sx126x.cpp +++ b/sx126x.cpp @@ -102,7 +102,7 @@ extern SPIClass SPI; sx126x::sx126x() : _spiSettings(16E6, MSBFIRST, SPI_MODE0), - _ss(LORA_DEFAULT_SS_PIN), _reset(LORA_DEFAULT_RESET_PIN), _dio0(LORA_DEFAULT_DIO0_PIN), _busy(LORA_DEFAULT_BUSY_PIN), _rxen(LORA_DEFAULT_RXEN_PIN), + _ss(LORA_DEFAULT_SS_PIN), _reset(LORA_DEFAULT_RESET_PIN), _dio0(LORA_DEFAULT_DIO0_PIN), _busy(LORA_DEFAULT_BUSY_PIN), _rxen(LORA_DEFAULT_RXEN_PIN), _txen(LORA_DEFAULT_TXEN_PIN), _frequency(0), _txp(0), _sf(0x07), @@ -183,6 +183,7 @@ uint8_t ISR_VECT sx126x::singleTransfer(uint8_t opcode, uint16_t address, uint8_ void sx126x::rxAntEnable() { if (_rxen != -1) { digitalWrite(_rxen, HIGH); } + if (_txen != -1) { digitalWrite(_txen, LOW); } } void sx126x::loraMode() { @@ -331,6 +332,7 @@ int sx126x::begin(long frequency) { if (_busy != -1) { pinMode(_busy, INPUT); } if (!_preinit_done) { if (!preInit()) { return false; } } if (_rxen != -1) { pinMode(_rxen, OUTPUT); } + if (_txen != -1) { pinMode(_txen, OUTPUT); } //TODO: if it works, make it optional //#ifdef SX1262_USE_DCDC_REGULATOR @@ -413,6 +415,8 @@ int sx126x::beginPacket(int implicitHeader) { #endif #endif + if (_txen != -1) { digitalWrite(_txen, HIGH); } //Set TXen high when transmitting + standby(); if (implicitHeader) { implicitHeaderMode(); } else { explicitHeaderMode(); } @@ -810,12 +814,13 @@ void sx126x::setSyncWord(uint16_t sw) { writeRegister(REG_SYNC_WORD_LSB_6X, 0x24); } -void sx126x::setPins(int ss, int reset, int dio0, int busy, int rxen) { +void sx126x::setPins(int ss, int reset, int dio0, int busy, int rxen, int txen) { _ss = ss; _reset = reset; _dio0 = dio0; _busy = busy; _rxen = rxen; + _txen = txen; } void sx126x::dumpRegisters(Stream& out) { diff --git a/sx126x.h b/sx126x.h index 52b3ed8..d3237d0 100644 --- a/sx126x.h +++ b/sx126x.h @@ -93,7 +93,7 @@ public: byte random(); - void setPins(int ss = LORA_DEFAULT_SS_PIN, int reset = LORA_DEFAULT_RESET_PIN, int dio0 = LORA_DEFAULT_DIO0_PIN, int busy = LORA_DEFAULT_BUSY_PIN, int rxen = LORA_DEFAULT_RXEN_PIN); + void setPins(int ss = LORA_DEFAULT_SS_PIN, int reset = LORA_DEFAULT_RESET_PIN, int dio0 = LORA_DEFAULT_DIO0_PIN, int busy = LORA_DEFAULT_BUSY_PIN, int rxen = LORA_DEFAULT_RXEN_PIN, int txen = LORA_DEFAULT_TXEN_PIN); void setSPIFrequency(uint32_t frequency); void dumpRegisters(Stream& out); @@ -122,6 +122,7 @@ private: int _reset; int _dio0; int _rxen; + int _txen; int _busy; long _frequency; int _txp;