mirror of
https://github.com/liberatedsystems/RNode_Firmware_CE.git
synced 2025-02-23 08:20:13 -05:00
Add new modem TX IRQ handling
This commit is contained in:
parent
20b51104a1
commit
e9660ae595
@ -66,6 +66,9 @@ volatile uint16_t queued_bytes[INTERFACE_COUNT] = {0};
|
||||
volatile uint16_t queue_cursor[INTERFACE_COUNT] = {0};
|
||||
volatile uint16_t current_packet_start[INTERFACE_COUNT] = {0};
|
||||
volatile bool serial_buffering = false;
|
||||
|
||||
extern void setup_interfaces(); // from /src/misc/ModemISR.h
|
||||
|
||||
#if HAS_BLUETOOTH || HAS_BLE == true
|
||||
bool bt_init_ran = false;
|
||||
#endif
|
||||
|
45
src/misc/ModemISR.h
Normal file
45
src/misc/ModemISR.h
Normal file
@ -0,0 +1,45 @@
|
||||
extern RadioInterface* interface_obj[INTERFACE_COUNT];
|
||||
void (*onIntRise[INTERFACE_COUNT]) (void);
|
||||
|
||||
#if INTERFACE_COUNT == 1
|
||||
void onInt0Rise() {
|
||||
if (interfaces[0] == SX1280) {
|
||||
// On the SX1280, there is a bug which can cause the busy line
|
||||
// to remain high if a high amount of packets are received when
|
||||
// in continuous RX mode. This is documented as Errata 16.1 in
|
||||
// the SX1280 datasheet v3.2 (page 149)
|
||||
// Therefore, the modem is set into receive mode each time a packet is received.
|
||||
interface_obj[0]->receive();
|
||||
}
|
||||
if (interface_obj[0]->getPacketValidity()) {
|
||||
interface_obj[0]->handleDio0Rise();
|
||||
}
|
||||
}
|
||||
|
||||
void setup_interfaces() {
|
||||
onIntRise[0] = onInt0Rise;
|
||||
}
|
||||
#elif BOARD_MODEL == BOARD_RAK4631 || BOARD_MODEL == BOARD_OPENCOM_XL
|
||||
void onInt0Rise() {
|
||||
if (interface_obj[0]->getPacketValidity()) {
|
||||
interface_obj[0]->handleDio0Rise();
|
||||
}
|
||||
}
|
||||
|
||||
void onInt1Rise() {
|
||||
// On the SX1280, there is a bug which can cause the busy line
|
||||
// to remain high if a high amount of packets are received when
|
||||
// in continuous RX mode. This is documented as Errata 16.1 in
|
||||
// the SX1280 datasheet v3.2 (page 149)
|
||||
// Therefore, the modem is set into receive mode each time a packet is received.
|
||||
interface_obj[1]->receive();
|
||||
if (interface_obj[1]->getPacketValidity()) {
|
||||
interface_obj[1]->handleDio0Rise();
|
||||
}
|
||||
}
|
||||
|
||||
void setup_interfaces() {
|
||||
onIntRise[0] = &onInt0Rise;
|
||||
onIntRise[1] = &onInt1Rise;
|
||||
}
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user