Fahad Mirza
/
Nucleo_HXC900
A demo application for HXC900 LoRaWAN module using Nucleo-L053R8.
main.cpp@2:1ef859bc5cd2, 2018-07-16 (annotated)
- Committer:
- fahadmirza
- Date:
- Mon Jul 16 16:37:32 2018 +0000
- Revision:
- 2:1ef859bc5cd2
- Parent:
- 1:168a6afffbff
- Child:
- 3:11cdf29c8739
Added settings for ADR; Removed Mbed specific serial declarations;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fahadmirza | 0:a0c5877bd360 | 1 | #include "mbed.h" |
fahadmirza | 0:a0c5877bd360 | 2 | #include "main.h" |
fahadmirza | 0:a0c5877bd360 | 3 | #include "lora_driver.h" |
fahadmirza | 0:a0c5877bd360 | 4 | |
fahadmirza | 0:a0c5877bd360 | 5 | /* Private Macros ------------------------------------------------------------*/ |
fahadmirza | 0:a0c5877bd360 | 6 | #define SENSORS_MEASURE_CYCLE (15000U) // Send packet every 15s |
fahadmirza | 0:a0c5877bd360 | 7 | |
fahadmirza | 0:a0c5877bd360 | 8 | /* Private function declaration ----------------------------------------------*/ |
fahadmirza | 0:a0c5877bd360 | 9 | static void SensorMeasureData(uint8_t *buffer, uint8_t *dataSize, uint8_t *ack, uint8_t *port); |
fahadmirza | 0:a0c5877bd360 | 10 | static void LedControl(uint8_t *buffer, uint8_t dataSize, uint8_t ack, uint8_t port); |
fahadmirza | 0:a0c5877bd360 | 11 | |
fahadmirza | 0:a0c5877bd360 | 12 | /* Private variables ---------------------------------------------------------*/ |
fahadmirza | 0:a0c5877bd360 | 13 | static sLoraConfig_t LoraConfigParam = |
fahadmirza | 0:a0c5877bd360 | 14 | { |
fahadmirza | 2:1ef859bc5cd2 | 15 | .joinMode = OTAA, |
fahadmirza | 2:1ef859bc5cd2 | 16 | .adrStatus = ADR_OFF, |
fahadmirza | 2:1ef859bc5cd2 | 17 | .class_ = 'A', |
fahadmirza | 2:1ef859bc5cd2 | 18 | .devEui = "E000000000000003", |
fahadmirza | 2:1ef859bc5cd2 | 19 | .appEui = "E000000000000002", |
fahadmirza | 2:1ef859bc5cd2 | 20 | .appKey = "E0000000000000000000000000000004" |
fahadmirza | 2:1ef859bc5cd2 | 21 | // .class_ = 'C', |
fahadmirza | 1:168a6afffbff | 22 | // .devEui = "C0A0D00000000000", |
fahadmirza | 1:168a6afffbff | 23 | // .appEui = "C0A0000000000000", |
fahadmirza | 1:168a6afffbff | 24 | // .appKey = "C0A0A000000000000000000000000000", |
fahadmirza | 0:a0c5877bd360 | 25 | }; |
fahadmirza | 0:a0c5877bd360 | 26 | |
fahadmirza | 0:a0c5877bd360 | 27 | static sLoraDriverParam_t LoraDriverParam = |
fahadmirza | 0:a0c5877bd360 | 28 | { |
fahadmirza | 0:a0c5877bd360 | 29 | .SensorMeasureTime = SENSORS_MEASURE_CYCLE, |
fahadmirza | 0:a0c5877bd360 | 30 | .SendDataHandler = SensorMeasureData, |
fahadmirza | 0:a0c5877bd360 | 31 | .ReceiveDataHandler = LedControl |
fahadmirza | 0:a0c5877bd360 | 32 | }; |
fahadmirza | 0:a0c5877bd360 | 33 | |
fahadmirza | 1:168a6afffbff | 34 | // Mbed specific declaration |
fahadmirza | 1:168a6afffbff | 35 | AnalogIn analog_value(A0); |
fahadmirza | 0:a0c5877bd360 | 36 | DigitalOut myled(LED1); |
fahadmirza | 0:a0c5877bd360 | 37 | |
fahadmirza | 0:a0c5877bd360 | 38 | int main() |
fahadmirza | 0:a0c5877bd360 | 39 | { |
fahadmirza | 0:a0c5877bd360 | 40 | HW_Init(); |
fahadmirza | 0:a0c5877bd360 | 41 | |
fahadmirza | 1:168a6afffbff | 42 | DBG_PRINTF("HXC900-NucleoL053R8 Demo Application\r\n"); |
fahadmirza | 0:a0c5877bd360 | 43 | Lora_init(&LoraConfigParam, &LoraDriverParam); |
fahadmirza | 0:a0c5877bd360 | 44 | |
fahadmirza | 0:a0c5877bd360 | 45 | while(1) |
fahadmirza | 0:a0c5877bd360 | 46 | { |
fahadmirza | 0:a0c5877bd360 | 47 | Lora_fsm(); |
fahadmirza | 0:a0c5877bd360 | 48 | } |
fahadmirza | 0:a0c5877bd360 | 49 | } |
fahadmirza | 0:a0c5877bd360 | 50 | |
fahadmirza | 0:a0c5877bd360 | 51 | |
fahadmirza | 0:a0c5877bd360 | 52 | /* Private function definitions ----------------------------------------------*/ |
fahadmirza | 0:a0c5877bd360 | 53 | |
fahadmirza | 0:a0c5877bd360 | 54 | /****************************************************************************** |
fahadmirza | 0:a0c5877bd360 | 55 | * @Brief : Uplink packet handler for lora_driver |
fahadmirza | 0:a0c5877bd360 | 56 | * @Param : Pointer for payload buffer, data size, ack configuration and port |
fahadmirza | 0:a0c5877bd360 | 57 | * @return: none |
fahadmirza | 0:a0c5877bd360 | 58 | ******************************************************************************/ |
fahadmirza | 0:a0c5877bd360 | 59 | static void SensorMeasureData(uint8_t *buffer, uint8_t *dataSize, uint8_t *ack, uint8_t *port) |
fahadmirza | 0:a0c5877bd360 | 60 | { |
fahadmirza | 0:a0c5877bd360 | 61 | uint8_t size = 0; |
fahadmirza | 0:a0c5877bd360 | 62 | // Organizing an unconfirmed uplink packet for port 2 |
fahadmirza | 0:a0c5877bd360 | 63 | *ack = UNCONFIRMED; |
fahadmirza | 0:a0c5877bd360 | 64 | |
fahadmirza | 0:a0c5877bd360 | 65 | buffer[size++] = 0xFA; // Random data |
fahadmirza | 0:a0c5877bd360 | 66 | buffer[size++] = 0xCE; |
fahadmirza | 0:a0c5877bd360 | 67 | buffer[size++] = 0x0F; |
fahadmirza | 0:a0c5877bd360 | 68 | buffer[size++] = 0xF0; |
fahadmirza | 0:a0c5877bd360 | 69 | buffer[size++] = 0x00; |
fahadmirza | 0:a0c5877bd360 | 70 | *dataSize = size; |
fahadmirza | 0:a0c5877bd360 | 71 | |
fahadmirza | 0:a0c5877bd360 | 72 | *port = 2; |
fahadmirza | 0:a0c5877bd360 | 73 | } |
fahadmirza | 0:a0c5877bd360 | 74 | |
fahadmirza | 0:a0c5877bd360 | 75 | /****************************************************************************** |
fahadmirza | 0:a0c5877bd360 | 76 | * @Brief : Downlink packet handler for lora_driver |
fahadmirza | 0:a0c5877bd360 | 77 | * LSBytes of the payload controls the Nucleo LED |
fahadmirza | 0:a0c5877bd360 | 78 | * @Param : Payload buffer, data size, ack configuration and port |
fahadmirza | 0:a0c5877bd360 | 79 | * @return: none |
fahadmirza | 0:a0c5877bd360 | 80 | ******************************************************************************/ |
fahadmirza | 0:a0c5877bd360 | 81 | static void LedControl(uint8_t *buffer, uint8_t dataSize, uint8_t ack, uint8_t port) |
fahadmirza | 0:a0c5877bd360 | 82 | { |
fahadmirza | 0:a0c5877bd360 | 83 | switch(buffer[dataSize - 1]) |
fahadmirza | 0:a0c5877bd360 | 84 | { |
fahadmirza | 0:a0c5877bd360 | 85 | case 1: |
fahadmirza | 0:a0c5877bd360 | 86 | { |
fahadmirza | 0:a0c5877bd360 | 87 | BSP_LED_On(LED_GREEN); |
fahadmirza | 0:a0c5877bd360 | 88 | break; |
fahadmirza | 0:a0c5877bd360 | 89 | } |
fahadmirza | 0:a0c5877bd360 | 90 | default: |
fahadmirza | 0:a0c5877bd360 | 91 | { |
fahadmirza | 0:a0c5877bd360 | 92 | BSP_LED_Off(LED_GREEN); |
fahadmirza | 0:a0c5877bd360 | 93 | break; |
fahadmirza | 0:a0c5877bd360 | 94 | } |
fahadmirza | 0:a0c5877bd360 | 95 | } |
fahadmirza | 0:a0c5877bd360 | 96 | } |
fahadmirza | 0:a0c5877bd360 | 97 | |
fahadmirza | 0:a0c5877bd360 | 98 | /************************ (C) COPYRIGHT Haxiot ***** END OF FILE ****/ |
fahadmirza | 0:a0c5877bd360 | 99 |