Mick Mick
/
SX1272_TestApp
Simple SX1272 Test Application
main.cpp@1:4c82bff12ad0, 2017-04-24 (annotated)
- Committer:
- mick_ccc
- Date:
- Mon Apr 24 09:36:52 2017 +0000
- Revision:
- 1:4c82bff12ad0
- Parent:
- 0:7e7575bda256
- Child:
- 2:61713a461cf1
Added LoRaWAN payload (Encryption & MIC not correct yet)
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 | 1:4c82bff12ad0 | 36 | |
mick_ccc | 1:4c82bff12ad0 | 37 | pc.printf("HelLo Ra !\n"); |
mick_ccc | 0:7e7575bda256 | 38 | |
mick_ccc | 0:7e7575bda256 | 39 | // Get USER button pressed |
mick_ccc | 0:7e7575bda256 | 40 | DatarateButton.fall( &UserButtonPressed ); |
mick_ccc | 0:7e7575bda256 | 41 | |
mick_ccc | 0:7e7575bda256 | 42 | // Radio board init |
mick_ccc | 0:7e7575bda256 | 43 | BoardInit( ); |
mick_ccc | 0:7e7575bda256 | 44 | |
mick_ccc | 0:7e7575bda256 | 45 | while( 1 ) |
mick_ccc | 0:7e7575bda256 | 46 | { |
mick_ccc | 0:7e7575bda256 | 47 | if( ButtonPressed == true ) |
mick_ccc | 0:7e7575bda256 | 48 | { |
mick_ccc | 1:4c82bff12ad0 | 49 | // Configure radio |
mick_ccc | 1:4c82bff12ad0 | 50 | TxFreq = 867720000; |
mick_ccc | 0:7e7575bda256 | 51 | Radio.SetChannel( TxFreq ); |
mick_ccc | 1:4c82bff12ad0 | 52 | Radio.Write( REG_LR_SYNCWORD, 0x34 ); // public: to be replaced with SetPublicNetwork() when available |
mick_ccc | 0:7e7575bda256 | 53 | Radio.SetTxConfig( MODEM_LORA, 14, 0, 0, CurrentDatarate, 1, 8, false, true, 0, 0, false, 3e3 ); |
mick_ccc | 1:4c82bff12ad0 | 54 | |
mick_ccc | 1:4c82bff12ad0 | 55 | // Set packet payload |
mick_ccc | 1:4c82bff12ad0 | 56 | //LoRaWANBuffer[0] = 0x40; // Unconfirmed Data Up |
mick_ccc | 1:4c82bff12ad0 | 57 | LoRaWANBuffer[0] = 0x80; // Confirmed Data Up |
mick_ccc | 1:4c82bff12ad0 | 58 | LoRaWANBuffer[1] = 0x03; // DevAddr |
mick_ccc | 1:4c82bff12ad0 | 59 | LoRaWANBuffer[2] = 0x00; |
mick_ccc | 1:4c82bff12ad0 | 60 | LoRaWANBuffer[3] = 0xFE; |
mick_ccc | 1:4c82bff12ad0 | 61 | LoRaWANBuffer[4] = 0xCA; |
mick_ccc | 1:4c82bff12ad0 | 62 | LoRaWANBuffer[5] = 0x0; // FCtrl |
mick_ccc | 1:4c82bff12ad0 | 63 | LoRaWANBuffer[6] = FCnt; |
mick_ccc | 1:4c82bff12ad0 | 64 | LoRaWANBuffer[7] = FCnt >> 8; |
mick_ccc | 1:4c82bff12ad0 | 65 | LoRaWANBuffer[8] = 1; // FPort |
mick_ccc | 1:4c82bff12ad0 | 66 | LoRaWANBuffer[9] = 0x0; // FRMPayload |
mick_ccc | 1:4c82bff12ad0 | 67 | |
mick_ccc | 1:4c82bff12ad0 | 68 | // Send packet |
mick_ccc | 1:4c82bff12ad0 | 69 | Radio.Send( LoRaWANBuffer, 14 ); |
mick_ccc | 1:4c82bff12ad0 | 70 | FCnt += 1; |
mick_ccc | 0:7e7575bda256 | 71 | pc.printf( "LoRa packet: Freq=%u, SF%u\n", TxFreq, CurrentDatarate ); |
mick_ccc | 0:7e7575bda256 | 72 | |
mick_ccc | 0:7e7575bda256 | 73 | // Stop sending |
mick_ccc | 0:7e7575bda256 | 74 | ButtonPressed = false; |
mick_ccc | 0:7e7575bda256 | 75 | } |
mick_ccc | 0:7e7575bda256 | 76 | } |
mick_ccc | 0:7e7575bda256 | 77 | } |
mick_ccc | 0:7e7575bda256 | 78 |