mirror of
https://github.com/meshcore-dev/MeshCore.git
synced 2026-04-20 22:13:47 +00:00
fix radio type, update to dev branch. added lr1121 radiolib helper. fixed reset pin and rfswitch table.
This commit is contained in:
parent
164abd62e3
commit
996c95bfef
6 changed files with 86 additions and 15 deletions
39
src/helpers/radiolib/CustomLR1121.h
Normal file
39
src/helpers/radiolib/CustomLR1121.h
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <RadioLib.h>
|
||||||
|
#include "MeshCore.h"
|
||||||
|
|
||||||
|
class CustomLR1121 : public LR1121 {
|
||||||
|
bool _rx_boosted = false;
|
||||||
|
|
||||||
|
public:
|
||||||
|
CustomLR1121(Module *mod) : LR1121(mod) { }
|
||||||
|
|
||||||
|
size_t getPacketLength(bool update) override {
|
||||||
|
size_t len = LR1121::getPacketLength(update);
|
||||||
|
if (len == 0 && getIrqStatus() & RADIOLIB_LR11X0_IRQ_HEADER_ERR) {
|
||||||
|
// we've just received a corrupted packet
|
||||||
|
// this may have triggered a bug causing subsequent packets to be shifted
|
||||||
|
// call standby() to return radio to known-good state
|
||||||
|
// recvRaw will call startReceive() to restart rx
|
||||||
|
MESH_DEBUG_PRINTLN("LR1121: got header err, calling standby()");
|
||||||
|
standby();
|
||||||
|
}
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
float getFreqMHz() const { return freqMHz; }
|
||||||
|
|
||||||
|
int16_t setRxBoostedGainMode(bool en) {
|
||||||
|
_rx_boosted = en;
|
||||||
|
return LR1121::setRxBoostedGainMode(en);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool getRxBoostedGainMode() const { return _rx_boosted; }
|
||||||
|
|
||||||
|
bool isReceiving() {
|
||||||
|
uint16_t irq = getIrqStatus();
|
||||||
|
bool detected = ((irq & RADIOLIB_LR11X0_IRQ_SYNC_WORD_HEADER_VALID) || (irq & RADIOLIB_LR11X0_IRQ_PREAMBLE_DETECTED));
|
||||||
|
return detected;
|
||||||
|
}
|
||||||
|
};
|
||||||
34
src/helpers/radiolib/CustomLR1121Wrapper.h
Normal file
34
src/helpers/radiolib/CustomLR1121Wrapper.h
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CustomLR1121.h"
|
||||||
|
#include "RadioLibWrappers.h"
|
||||||
|
#include "LR11x0Reset.h"
|
||||||
|
|
||||||
|
class CustomLR1121Wrapper : public RadioLibWrapper {
|
||||||
|
public:
|
||||||
|
CustomLR1121Wrapper(CustomLR1121& radio, mesh::MainBoard& board) : RadioLibWrapper(radio, board) { }
|
||||||
|
void doResetAGC() override { lr11x0ResetAGC((LR11x0 *)_radio, ((CustomLR1121 *)_radio)->getFreqMHz()); }
|
||||||
|
bool isReceivingPacket() override {
|
||||||
|
return ((CustomLR1121 *)_radio)->isReceiving();
|
||||||
|
}
|
||||||
|
float getCurrentRSSI() override {
|
||||||
|
float rssi = -110;
|
||||||
|
((CustomLR1121 *)_radio)->getRssiInst(&rssi);
|
||||||
|
return rssi;
|
||||||
|
}
|
||||||
|
|
||||||
|
void onSendFinished() override {
|
||||||
|
RadioLibWrapper::onSendFinished();
|
||||||
|
_radio->setPreambleLength(16); // overcomes weird issues with small and big pkts
|
||||||
|
}
|
||||||
|
|
||||||
|
float getLastRSSI() const override { return ((CustomLR1121 *)_radio)->getRSSI(); }
|
||||||
|
float getLastSNR() const override { return ((CustomLR1121 *)_radio)->getSNR(); }
|
||||||
|
|
||||||
|
void setRxBoostedGainMode(bool en) override {
|
||||||
|
((CustomLR1121 *)_radio)->setRxBoostedGainMode(en);
|
||||||
|
}
|
||||||
|
bool getRxBoostedGainMode() const override {
|
||||||
|
return ((CustomLR1121 *)_radio)->getRxBoostedGainMode();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -13,8 +13,8 @@ build_flags = ${nrf52_base.build_flags}
|
||||||
-D PIN_USER_BTN=PIN_BUTTON1
|
-D PIN_USER_BTN=PIN_BUTTON1
|
||||||
-D USER_BTN_PRESSED=LOW
|
-D USER_BTN_PRESSED=LOW
|
||||||
-D PIN_STATUS_LED=35
|
-D PIN_STATUS_LED=35
|
||||||
-D RADIO_CLASS=CustomLR1110
|
-D RADIO_CLASS=CustomLR1121
|
||||||
-D WRAPPER_CLASS=CustomLR1110Wrapper
|
-D WRAPPER_CLASS=CustomLR1121Wrapper
|
||||||
-D LORA_TX_POWER=22
|
-D LORA_TX_POWER=22
|
||||||
-D RF_SWITCH_TABLE
|
-D RF_SWITCH_TABLE
|
||||||
-D RX_BOOSTED_GAIN=true
|
-D RX_BOOSTED_GAIN=true
|
||||||
|
|
|
||||||
|
|
@ -25,20 +25,18 @@ EnvironmentSensorManager sensors; // only enable environment sensors. GPS is di
|
||||||
static const uint32_t rfswitch_dios[Module::RFSWITCH_MAX_PINS] = {
|
static const uint32_t rfswitch_dios[Module::RFSWITCH_MAX_PINS] = {
|
||||||
RADIOLIB_LR11X0_DIO5,
|
RADIOLIB_LR11X0_DIO5,
|
||||||
RADIOLIB_LR11X0_DIO6,
|
RADIOLIB_LR11X0_DIO6,
|
||||||
RADIOLIB_LR11X0_DIO7,
|
|
||||||
RADIOLIB_LR11X0_DIO8,
|
|
||||||
RADIOLIB_NC
|
RADIOLIB_NC
|
||||||
};
|
};
|
||||||
|
|
||||||
static const Module::RfSwitchMode_t rfswitch_table[] = {
|
static const Module::RfSwitchMode_t rfswitch_table[] = {
|
||||||
// mode DIO5 DIO6 DIO7 DIO8
|
// mode DIO5 DIO6
|
||||||
{ LR11x0::MODE_STBY, {LOW, LOW, LOW, LOW }},
|
{ LR11x0::MODE_STBY, {LOW, LOW}},
|
||||||
{ LR11x0::MODE_RX, {HIGH, LOW, LOW, HIGH }},
|
{ LR11x0::MODE_RX, {HIGH, LOW}},
|
||||||
{ LR11x0::MODE_TX, {HIGH, HIGH, LOW, HIGH }},
|
{ LR11x0::MODE_TX, {LOW, HIGH}},
|
||||||
{ LR11x0::MODE_TX_HP, {LOW, HIGH, LOW, HIGH }},
|
{ LR11x0::MODE_TX_HP, {LOW, HIGH}},
|
||||||
{ LR11x0::MODE_TX_HF, {LOW, LOW, LOW, LOW }},
|
{ LR11x0::MODE_TX_HF, {LOW, LOW}},
|
||||||
{ LR11x0::MODE_GNSS, {LOW, LOW, HIGH, LOW }},
|
{ LR11x0::MODE_GNSS, {LOW, LOW}},
|
||||||
{ LR11x0::MODE_WIFI, {LOW, LOW, LOW, LOW }},
|
{ LR11x0::MODE_WIFI, {LOW, LOW}},
|
||||||
END_OF_MODE_TABLE,
|
END_OF_MODE_TABLE,
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
#include <RadioLib.h>
|
#include <RadioLib.h>
|
||||||
#include <helpers/radiolib/RadioLibWrappers.h>
|
#include <helpers/radiolib/RadioLibWrappers.h>
|
||||||
#include "muzi_base_duoBoard.h"
|
#include "muzi_base_duoBoard.h"
|
||||||
#include <helpers/radiolib/CustomLR1110Wrapper.h>
|
#include <helpers/radiolib/CustomLR1121Wrapper.h>
|
||||||
#include <helpers/ArduinoHelpers.h>
|
#include <helpers/ArduinoHelpers.h>
|
||||||
#include <helpers/SensorManager.h>
|
#include <helpers/SensorManager.h>
|
||||||
#include <helpers/sensors/LocationProvider.h>
|
#include <helpers/sensors/LocationProvider.h>
|
||||||
|
|
|
||||||
|
|
@ -107,11 +107,11 @@ static const uint8_t AREF = (PIN_AREF); // not used
|
||||||
#define PIN_BACK_BTN PIN_BUTTON6
|
#define PIN_BACK_BTN PIN_BUTTON6
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// LR1110
|
// LR1121
|
||||||
|
|
||||||
#define LORA_DIO_1 (32+8) // P1.08
|
#define LORA_DIO_1 (32+8) // P1.08
|
||||||
#define LORA_NSS (PIN_SPI_NSS) // P1.12
|
#define LORA_NSS (PIN_SPI_NSS) // P1.12
|
||||||
#define LORA_RESET (32+12) // P1.12
|
#define LORA_RESET (32+10) // P1.10
|
||||||
#define LORA_BUSY (32+11) // P1.11
|
#define LORA_BUSY (32+11) // P1.11
|
||||||
#define LORA_SCLK (PIN_SPI_SCK)
|
#define LORA_SCLK (PIN_SPI_SCK)
|
||||||
#define LORA_MISO (PIN_SPI_MISO)
|
#define LORA_MISO (PIN_SPI_MISO)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue