mirror of https://github.com/meshcore-dev/MeshCore
2 changed files with 37 additions and 0 deletions
@ -0,0 +1,16 @@ |
|||
#pragma once |
|||
|
|||
#include <RadioLib.h> |
|||
|
|||
#define SX126X_IRQ_HEADER_VALID 0b0000010000 // 4 4 valid LoRa header received
|
|||
|
|||
class CustomLLCC68 : public LLCC68 { |
|||
public: |
|||
CustomLLCC68(Module *mod) : LLCC68(mod) { } |
|||
|
|||
bool isReceiving() { |
|||
uint16_t irq = getIrqStatus(); |
|||
bool hasPreamble = (irq & SX126X_IRQ_HEADER_VALID); |
|||
return hasPreamble; |
|||
} |
|||
}; |
|||
@ -0,0 +1,21 @@ |
|||
#pragma once |
|||
|
|||
#include "CustomLLCC68.h" |
|||
#include "RadioLibWrappers.h" |
|||
|
|||
class CustomLLCC68Wrapper : public RadioLibWrapper { |
|||
public: |
|||
CustomLLCC68Wrapper(CustomLLCC68& radio, mesh::MainBoard& board) : RadioLibWrapper(radio, board) { } |
|||
bool isReceiving() override { |
|||
if (((CustomLLCC68 *)_radio)->isReceiving()) return true; |
|||
|
|||
idle(); // put sx126x into standby
|
|||
// do some basic CAD (blocks for ~12780 micros (on SF 10)!)
|
|||
bool activity = (((CustomLLCC68 *)_radio)->scanChannel() == RADIOLIB_LORA_DETECTED); |
|||
idle(); |
|||
|
|||
return activity; |
|||
} |
|||
float getLastRSSI() const override { return ((CustomLLCC68 *)_radio)->getRSSI(); } |
|||
float getLastSNR() const override { return ((CustomLLCC68 *)_radio)->getSNR(); } |
|||
}; |
|||
Loading…
Reference in new issue