_spiSettings(8E6, MSBFIRST, SPI_MODE0),
_spiModem(spi),
_ss(ss), _sclk(sclk), _mosi(mosi), _miso(miso), _reset(reset), _dio0(dio0),
- _busy(busy), _frequency(0), _packetIndex(0), _preinit_done(false), _bw(0)
+ _busy(busy), _frequency(0), _packetIndex(0), _preinit_done(false), _bw(7800)
{ setTimeout(0); }
void sx127x::setSPIFrequency(uint32_t frequency) { _spiSettings = SPISettings(frequency, MSBFIRST, SPI_MODE0); }
return response;
}
-int sx127x::begin() {
+void sx127x::reset() {
if (_reset != -1) {
pinMode(_reset, OUTPUT);
digitalWrite(_reset, HIGH);
delay(10);
}
+}
+
+int sx127x::begin() {
+ reset();
sleep();
_last_preamble = target_preamble;
}
-int sx128x::begin()
+void sx128x::reset()
{
if (_reset != -1) {
pinMode(_reset, OUTPUT);
digitalWrite(_reset, HIGH);
delay(10);
}
+}
+
+int sx128x::begin()
+{
+ reset();
if (_rxen != -1) {
pinMode(_rxen, OUTPUT);
_lora_preamble_time_ms(0), _lora_header_time_ms(0), _lora_symbol_rate(0.0), _lora_us_per_byte(0.0), _bitrate(0),
_packet{0}, _onReceive(NULL), _txp(0), _ldro(false), _limit_rate(false), _interference_detected(false), _avoid_interference(true), _difs_ms(CSMA_SIFS_MS + 2 * _csma_slot_ms), _difs_wait_start(0), _cw_wait_start(0), _cw_wait_target(0), _cw_wait_passed(0), _csma_cw(-1), _cw_band(1), _cw_min(0), _cw_max(CSMA_CW_PER_BAND_WINDOWS), _noise_floor_sampled(false), _noise_floor_sample(0), _noise_floor_buffer({0}), _noise_floor(-292), _led_id_filter(0), _preamble_detected_at(0) {};
+ virtual void reset() = 0;
+
virtual int begin() = 0;
virtual void end() = 0;
void updateBitrate() {
if (!_radio_online) { _bitrate = 0; }
else {
-
_lora_symbol_rate = (float)getSignalBandwidth()/(float)(pow(2, _sf));
_lora_symbol_time_ms = (1.0/_lora_symbol_rate)*1000.0;
_bitrate = (uint32_t)(_sf * ( (4.0/(float)getCodingRate4()) / ((float)(pow(2, _sf))/((float)getSignalBandwidth()/1000.0)) ) * 1000.0);
sx126x(uint8_t index, SPIClass* spi, bool tcxo, bool dio2_as_rf_switch, int ss, int sclk, int mosi, int miso, int reset, int
dio0, int busy, int rxen);
+ void reset();
+
int begin();
void end();
void handleLowDataRate();
void optimizeModemSensitivity();
- void reset(void);
void calibrate(void);
void calibrate_image(uint32_t frequency);
bool getPacketValidity();
public:
sx127x(uint8_t index, SPIClass* spi, int ss, int sclk, int mosi, int miso, int reset, int dio0, int busy);
+ void reset();
+
int begin();
void end();
public:
sx128x(uint8_t index, SPIClass* spi, bool tcxo, int ss, int sclk, int mosi, int miso, int reset, int dio0, int busy, int rxen, int txen);
+ void reset();
+
int begin();
void end();