SX1276Lib updated in order to be RTOS aware

Fork of SX1276Lib by Semtech

Revision:
27:8a37a9362714
Parent:
26:d09a8ef807e2
Child:
31:a9575b07944d
--- a/sx1276/sx1276.h	Mon Apr 24 09:26:23 2017 +0000
+++ b/sx1276/sx1276.h	Fri Mar 02 15:39:25 2018 +0100
@@ -100,6 +100,12 @@
     RadioSettings_t settings;
 
     static const FskBandwidth_t FskBandwidths[];
+
+    // <RTOS>
+    Thread* _thread_events_queue;
+    EventQueue* _eq_events;
+    // </RTOS>
+
 protected:
 
     /*!
@@ -115,6 +121,11 @@
             PinName dio0, PinName dio1, PinName dio2, PinName dio3, PinName dio4, PinName dio5 );
     SX1276( RadioEvents_t *events );
     virtual ~SX1276( );
+
+    // <RTOS>
+    void assign_events_queue_thread(Thread* thread) {_thread_events_queue=thread;}
+    void assign_events_queue(EventQueue* event_queue) {_eq_events=event_queue;}
+    // </RTOS>
     
     //-------------------------------------------------------------------------
     //                        Redefined Radio functions
@@ -501,6 +512,36 @@
      * \retval regValue Bandwidth register value.
      */
     static uint8_t GetFskBandwidthRegValue( uint32_t bandwidth );
+
+     // Inizio nuova parte per RTOS
+
+    virtual void enqueueOnTimeoutIrq();
+
+    virtual void enqueueRadioEvent_RxTimeout();
+    virtual void enqueueRadioEvent_TxTimeout();
+    virtual void enqueueRadioEvent_RxError();
+    virtual void enqueueRadioEvent_RxDone(uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr);
+    virtual void enqueueRadioEvent_TxDone();
+    virtual void enqueueRadioEvent_FhssChangeChannel(uint8_t currentChannel);
+    virtual void enqueueRadioEvent_CadDone(bool channelActivityDetected);
+    virtual void enqueueOnDio0Irq();
+    virtual void enqueueOnDio1Irq();
+    virtual void enqueueOnDio2Irq();
+    virtual void enqueueOnDio3Irq();
+    virtual void enqueueOnDio4Irq();
+    virtual void enqueueOnDio5Irq();
+
+private:
+
+    void radioEvent_RxTimeout();
+    void radioEvent_TxTimeout();
+    void radioEvent_RxError();
+    void radioEvent_RxDone(uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr);
+    void radioEvent_TxDone();
+    void radioEvent_FhssChangeChannel(uint8_t currentChannel);
+    void radioEvent_CadDone(bool channelActivityDetected);
+
+    // Fine nuova parte per RTOS
 };
 
 #endif // __SX1276_H__