SX1276 library for modtronix inair9. Edited for use with NRF51DK board.

Dependents:   InAir9_PingPong

Fork of SX1276Lib_modtronix by modtronix H

Revision:
18:cdb08d710838
Parent:
17:6ae745bb937f
Child:
20:7cf7c08f0088
--- a/sx1276/sx1276-inAir.cpp	Tue Mar 03 10:42:25 2015 +0000
+++ b/sx1276/sx1276-inAir.cpp	Tue Mar 03 23:28:08 2015 +0000
@@ -58,14 +58,18 @@
 
 SX1276inAir9::SX1276inAir9( void ( *txDone )( ), void ( *txTimeout ) ( ), void ( *rxDone ) ( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr ), 
                             void ( *rxTimeout ) ( ), void ( *rxError ) ( ), void ( *fhssChangeChannel ) ( uint8_t channelIndex ), void ( *cadDone ) ( bool ChannelActivityDetected ) ) 
-                        #if( defined ( TARGET_NUCLEO_L152RE ) || defined (TARGET_NUCLEO_F401RE))
+                        #if( (defined (TARGET_NUCLEO_L152RE) || defined (TARGET_NUCLEO_F401RE)) && defined(SHIELD_SHD3I_INAIR9))
                         //For SHD3I with inAir9 in imod3, on Nucleo board
                         :   SX1276( txDone, txTimeout, rxDone, rxTimeout, rxError, fhssChangeChannel, cadDone,
                                     D11/*MOSI*/, D12/*MISO*/, D13/*SCLK*/, D7/*CS*/, A5/*RST*/, D2/*DIO0*/, D8, D4, A4, PC_3/*FAKE!!!*/, D3/*DIO5*/ ),
-                        #elif( defined (TARGET_K64F) )
-                        //For SHD3I with inAir9 in imod3, on Nucleo board
+                        #elif( defined (TARGET_K64F) && defined(SHIELD_SHD3I_INAIR9) ) /* Use pin PTC0 as fake pin */
+                        //For SHD3I with inAir9 in imod3, on FRDM-K64F board
                         :   SX1276( txDone, txTimeout, rxDone, rxTimeout, rxError, fhssChangeChannel, cadDone,
                                     D11/*MOSI*/, D12/*MISO*/, D13/*SCLK*/, D7/*CS*/, A5/*RST*/, D2/*DIO0*/, D8, D4, A4, PTC0/*FAKE!!!*/, D3/*DIO5*/ ),
+                        #elif( defined (TARGET_KL25Z) && defined(SHIELD_SHD3I_INAIR9) ) /* Use pin PTD7 as fake pin - only A & D pins have interrupts */
+                        //For SHD3I with inAir9 in imod3, on FRDM-KL25Z board
+                        :   SX1276( txDone, txTimeout, rxDone, rxTimeout, rxError, fhssChangeChannel, cadDone,
+                                    D11/*MOSI*/, D12/*MISO*/, D13/*SCLK*/, D7/*CS*/, A5/*RST*/, D2/*DIO0*/, D8, D4, A4, PTD7/*FAKE!!!*/, D3/*DIO5*/ ),
                         #elif ( defined ( TARGET_NZ32ST1L ) )
                         //For NZ32ST1L board with inAir9 in imod2
                         :   SX1276( txDone, txTimeout, rxDone, rxTimeout, rxError, fhssChangeChannel, cadDone,
@@ -145,7 +149,7 @@
     uint32_t frequencyToSet = 1000000;   //DJH - Reduced speed to 1MHz
     #if( defined ( TARGET_NUCLEO_L152RE ) || defined (TARGET_NUCLEO_F401RE) || defined ( TARGET_LPC11U6X ) || defined (TARGET_K64F) || defined ( TARGET_NZ32ST1L ) )
         debug( "SpiInit!\n\r", NULL );
-        //spi.frequency( frequencyToSet );
+        spi.frequency( frequencyToSet );
     #elif( defined ( TARGET_KL25Z ) ) //busclock frequency is halved -> double the spi frequency to compensate
         spi.frequency( frequencyToSet * 2 );
     #else
@@ -156,6 +160,7 @@
 
 void SX1276inAir9::IoIrqInit( DioIrqHandler *irqHandlers )
 {
+    //TARGET_KL25Z board does not have pulldown resistors, seems like TARGET_K64F does have them
     #if( defined ( TARGET_NUCLEO_L152RE )  || defined (TARGET_NUCLEO_F401RE) ||  defined ( TARGET_LPC11U6X ) || defined (TARGET_K64F) || defined ( TARGET_NZ32ST1L ))
         dio0.mode(PullDown);
         dio1.mode(PullDown);   
@@ -166,7 +171,12 @@
     dio0.rise( this, static_cast< TriggerInAir > ( irqHandlers[0] ) );
     dio1.rise( this, static_cast< TriggerInAir > ( irqHandlers[1] ) );
     dio2.rise( this, static_cast< TriggerInAir > ( irqHandlers[2] ) );
+    //For SHD3I with inAir9 in imod3, on FRDM-KL25Z board. It uses A4 on FRDM-KL25Z board, which does not have interrupt
+    #if( defined ( TARGET_KL25Z ) && defined(SHIELD_SHD3I_INAIR9) )
+    //Nothing to be done
+    #else
     dio3.rise( this, static_cast< TriggerInAir > ( irqHandlers[3] ) );
+    #endif
     dio4.rise( this, static_cast< TriggerInAir > ( irqHandlers[4] ) );
 }