SX1272Lib updated in order to be RTOS aware
Fork of SX1272Lib by
Since Semtech original SX1272 library used InterruptIn and Timout mbed-os classes, whose ISRs are not allowed to lock RTOS mutexes, any SPI-related operation was doomed to fail. Indeed, SPI transactions functions are always nested inside a spi-level mutex lock/unlock pair in order to provide for thread access safety. A typical case occurs for example when radio is set to sleep state after a RX timeout.
This fork solves such problems by mean of a EventQueue/Thread pair, where any InterruptIn and Timeout ISRs actually enqueue callback calls.
Take a look at usage example at https://github.com/maiorfi/mbedos_lablet_lora_1
Diff: sx1272/sx1272.h
- Revision:
- 11:866b939cf709
- Parent:
- 10:bd29cdff8f3e
diff -r bd29cdff8f3e -r 866b939cf709 sx1272/sx1272.h --- a/sx1272/sx1272.h Sat Feb 24 08:47:30 2018 +0100 +++ b/sx1272/sx1272.h Sat Mar 03 18:07:30 2018 +0100 @@ -99,7 +99,7 @@ static const FskBandwidth_t FskBandwidths[]; // <RTOS> - Thread* _thread_events_queue; + //Thread* _thread_events_queue; EventQueue* _eq_events; // </RTOS> @@ -120,7 +120,7 @@ virtual ~SX1272( ); // <RTOS> - void assign_events_queue_thread(Thread* thread) {_thread_events_queue=thread;} + //void assign_events_queue_thread(Thread* thread) {_thread_events_queue=thread;} void assign_events_queue(EventQueue* event_queue) {_eq_events=event_queue;} // </RTOS>