![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Simple SX1272 Test Application
main.cpp@2:61713a461cf1, 2017-04-25 (annotated)
- Committer:
- mick_ccc
- Date:
- Tue Apr 25 07:31:14 2017 +0000
- Revision:
- 2:61713a461cf1
- Parent:
- 1:4c82bff12ad0
- Child:
- 3:e42efecbbe1b
Updated SX1272lib to latest version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mick_ccc | 0:7e7575bda256 | 1 | #include "mbed.h" |
mick_ccc | 0:7e7575bda256 | 2 | |
mick_ccc | 0:7e7575bda256 | 3 | #include "board.h" |
mick_ccc | 0:7e7575bda256 | 4 | #include "radio.h" |
mick_ccc | 0:7e7575bda256 | 5 | |
mick_ccc | 0:7e7575bda256 | 6 | Serial pc(USBTX, USBRX); // tx, rx |
mick_ccc | 0:7e7575bda256 | 7 | InterruptIn DatarateButton(USER_BUTTON); |
mick_ccc | 0:7e7575bda256 | 8 | |
mick_ccc | 1:4c82bff12ad0 | 9 | // Global variables |
mick_ccc | 1:4c82bff12ad0 | 10 | static uint8_t LoRaWANBuffer[255]; |
mick_ccc | 1:4c82bff12ad0 | 11 | static uint16_t FCnt = 0; |
mick_ccc | 0:7e7575bda256 | 12 | |
mick_ccc | 1:4c82bff12ad0 | 13 | // ISR variables |
mick_ccc | 1:4c82bff12ad0 | 14 | static volatile bool SingleDatarate = true; |
mick_ccc | 1:4c82bff12ad0 | 15 | static volatile uint8_t CurrentDatarate = 12; |
mick_ccc | 1:4c82bff12ad0 | 16 | static volatile bool ButtonPressed = false; |
mick_ccc | 0:7e7575bda256 | 17 | |
mick_ccc | 0:7e7575bda256 | 18 | /* -------------- */ |
mick_ccc | 0:7e7575bda256 | 19 | |
mick_ccc | 0:7e7575bda256 | 20 | void UserButtonPressed( void ) |
mick_ccc | 0:7e7575bda256 | 21 | { |
mick_ccc | 1:4c82bff12ad0 | 22 | if( SingleDatarate == false ) |
mick_ccc | 0:7e7575bda256 | 23 | { |
mick_ccc | 1:4c82bff12ad0 | 24 | // Increase datarate by 1 |
mick_ccc | 1:4c82bff12ad0 | 25 | CurrentDatarate = (CurrentDatarate == 7) ? 12 : CurrentDatarate-1; |
mick_ccc | 0:7e7575bda256 | 26 | } |
mick_ccc | 1:4c82bff12ad0 | 27 | |
mick_ccc | 0:7e7575bda256 | 28 | ButtonPressed = true; |
mick_ccc | 0:7e7575bda256 | 29 | } |
mick_ccc | 0:7e7575bda256 | 30 | |
mick_ccc | 0:7e7575bda256 | 31 | /* -------------- */ |
mick_ccc | 0:7e7575bda256 | 32 | |
mick_ccc | 0:7e7575bda256 | 33 | int main() { |
mick_ccc | 1:4c82bff12ad0 | 34 | Timer t; |
mick_ccc | 1:4c82bff12ad0 | 35 | uint32_t TxFreq; |
mick_ccc | 2:61713a461cf1 | 36 | double PktToA; |
mick_ccc | 1:4c82bff12ad0 | 37 | |
mick_ccc | 1:4c82bff12ad0 | 38 | pc.printf("HelLo Ra !\n"); |
mick_ccc | 0:7e7575bda256 | 39 | |
mick_ccc | 0:7e7575bda256 | 40 | // Get USER button pressed |
mick_ccc | 0:7e7575bda256 | 41 | DatarateButton.fall( &UserButtonPressed ); |
mick_ccc | 0:7e7575bda256 | 42 | |
mick_ccc | 0:7e7575bda256 | 43 | // Radio board init |
mick_ccc | 0:7e7575bda256 | 44 | BoardInit( ); |
mick_ccc | 0:7e7575bda256 | 45 | |
mick_ccc | 0:7e7575bda256 | 46 | while( 1 ) |
mick_ccc | 0:7e7575bda256 | 47 | { |
mick_ccc | 2:61713a461cf1 | 48 | // Check if there is a packet to be sent |
mick_ccc | 0:7e7575bda256 | 49 | if( ButtonPressed == true ) |
mick_ccc | 0:7e7575bda256 | 50 | { |
mick_ccc | 1:4c82bff12ad0 | 51 | // Configure radio |
mick_ccc | 1:4c82bff12ad0 | 52 | TxFreq = 867720000; |
mick_ccc | 0:7e7575bda256 | 53 | Radio.SetChannel( TxFreq ); |
mick_ccc | 2:61713a461cf1 | 54 | Radio.SetPublicNetwork( true ); |
mick_ccc | 2:61713a461cf1 | 55 | Radio.SetTxConfig( MODEM_LORA, 14, 0, 0, CurrentDatarate, 1, 8, false, true, 0, 0, false, 3e3 ); |
mick_ccc | 1:4c82bff12ad0 | 56 | |
mick_ccc | 1:4c82bff12ad0 | 57 | // Set packet payload |
mick_ccc | 1:4c82bff12ad0 | 58 | //LoRaWANBuffer[0] = 0x40; // Unconfirmed Data Up |
mick_ccc | 1:4c82bff12ad0 | 59 | LoRaWANBuffer[0] = 0x80; // Confirmed Data Up |
mick_ccc | 1:4c82bff12ad0 | 60 | LoRaWANBuffer[1] = 0x03; // DevAddr |
mick_ccc | 1:4c82bff12ad0 | 61 | LoRaWANBuffer[2] = 0x00; |
mick_ccc | 1:4c82bff12ad0 | 62 | LoRaWANBuffer[3] = 0xFE; |
mick_ccc | 1:4c82bff12ad0 | 63 | LoRaWANBuffer[4] = 0xCA; |
mick_ccc | 1:4c82bff12ad0 | 64 | LoRaWANBuffer[5] = 0x0; // FCtrl |
mick_ccc | 1:4c82bff12ad0 | 65 | LoRaWANBuffer[6] = FCnt; |
mick_ccc | 1:4c82bff12ad0 | 66 | LoRaWANBuffer[7] = FCnt >> 8; |
mick_ccc | 1:4c82bff12ad0 | 67 | LoRaWANBuffer[8] = 1; // FPort |
mick_ccc | 1:4c82bff12ad0 | 68 | LoRaWANBuffer[9] = 0x0; // FRMPayload |
mick_ccc | 1:4c82bff12ad0 | 69 | |
mick_ccc | 1:4c82bff12ad0 | 70 | // Send packet |
mick_ccc | 2:61713a461cf1 | 71 | PktToA = Radio.TimeOnAir( MODEM_LORA, 14 ); |
mick_ccc | 1:4c82bff12ad0 | 72 | Radio.Send( LoRaWANBuffer, 14 ); |
mick_ccc | 2:61713a461cf1 | 73 | pc.printf( "sending LoRa packet: Freq=%u, SF%u (%.1lfus)...\n", TxFreq, CurrentDatarate, PktToA ); |
mick_ccc | 2:61713a461cf1 | 74 | wait_us( PktToA ); |
mick_ccc | 2:61713a461cf1 | 75 | pc.printf( "sent.\n"); |
mick_ccc | 1:4c82bff12ad0 | 76 | FCnt += 1; |
mick_ccc | 0:7e7575bda256 | 77 | |
mick_ccc | 0:7e7575bda256 | 78 | // Stop sending |
mick_ccc | 0:7e7575bda256 | 79 | ButtonPressed = false; |
mick_ccc | 0:7e7575bda256 | 80 | } |
mick_ccc | 2:61713a461cf1 | 81 | |
mick_ccc | 2:61713a461cf1 | 82 | // Receive packets |
mick_ccc | 2:61713a461cf1 | 83 | |
mick_ccc | 0:7e7575bda256 | 84 | } |
mick_ccc | 0:7e7575bda256 | 85 | } |
mick_ccc | 0:7e7575bda256 | 86 |