Fahad Mirza
/
Nucleo_HXC900
A demo application for HXC900 LoRaWAN module using Nucleo-L053R8.
main.cpp@0:a0c5877bd360, 2018-07-12 (annotated)
- Committer:
- fahadmirza
- Date:
- Thu Jul 12 00:50:48 2018 +0000
- Revision:
- 0:a0c5877bd360
- Child:
- 1:168a6afffbff
Porting complete!
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 | 0:a0c5877bd360 | 15 | .joinMode = OTAA, |
fahadmirza | 0:a0c5877bd360 | 16 | .class_ = 'C', //'A', |
fahadmirza | 0:a0c5877bd360 | 17 | .devEui = "C0A0D00000000000", //"E000000000000003". |
fahadmirza | 0:a0c5877bd360 | 18 | .appEui = "C0A0000000000000", //"E000000000000002", |
fahadmirza | 0:a0c5877bd360 | 19 | .appKey = "C0A0A000000000000000000000000000", //"E0000000000000000000000000000004", |
fahadmirza | 0:a0c5877bd360 | 20 | }; |
fahadmirza | 0:a0c5877bd360 | 21 | |
fahadmirza | 0:a0c5877bd360 | 22 | static sLoraDriverParam_t LoraDriverParam = |
fahadmirza | 0:a0c5877bd360 | 23 | { |
fahadmirza | 0:a0c5877bd360 | 24 | .SensorMeasureTime = SENSORS_MEASURE_CYCLE, |
fahadmirza | 0:a0c5877bd360 | 25 | .SendDataHandler = SensorMeasureData, |
fahadmirza | 0:a0c5877bd360 | 26 | .ReceiveDataHandler = LedControl |
fahadmirza | 0:a0c5877bd360 | 27 | }; |
fahadmirza | 0:a0c5877bd360 | 28 | |
fahadmirza | 0:a0c5877bd360 | 29 | //------------------------------------ |
fahadmirza | 0:a0c5877bd360 | 30 | // Hyperterminal configuration |
fahadmirza | 0:a0c5877bd360 | 31 | // 9600 bauds, 8-bit data, no parity |
fahadmirza | 0:a0c5877bd360 | 32 | //------------------------------------ |
fahadmirza | 0:a0c5877bd360 | 33 | |
fahadmirza | 0:a0c5877bd360 | 34 | Serial pc(SERIAL_TX, SERIAL_RX); |
fahadmirza | 0:a0c5877bd360 | 35 | Serial hxc(PA_9, PA_10); |
fahadmirza | 0:a0c5877bd360 | 36 | |
fahadmirza | 0:a0c5877bd360 | 37 | DigitalOut myled(LED1); |
fahadmirza | 0:a0c5877bd360 | 38 | |
fahadmirza | 0:a0c5877bd360 | 39 | int main() |
fahadmirza | 0:a0c5877bd360 | 40 | { |
fahadmirza | 0:a0c5877bd360 | 41 | HW_Init(); |
fahadmirza | 0:a0c5877bd360 | 42 | |
fahadmirza | 0:a0c5877bd360 | 43 | |
fahadmirza | 0:a0c5877bd360 | 44 | DBG_PRINTF("Initializing LoRaWAN...\r\n"); |
fahadmirza | 0:a0c5877bd360 | 45 | Lora_init(&LoraConfigParam, &LoraDriverParam); |
fahadmirza | 0:a0c5877bd360 | 46 | |
fahadmirza | 0:a0c5877bd360 | 47 | |
fahadmirza | 0:a0c5877bd360 | 48 | while(1) |
fahadmirza | 0:a0c5877bd360 | 49 | { |
fahadmirza | 0:a0c5877bd360 | 50 | Lora_fsm(); |
fahadmirza | 0:a0c5877bd360 | 51 | } |
fahadmirza | 0:a0c5877bd360 | 52 | } |
fahadmirza | 0:a0c5877bd360 | 53 | |
fahadmirza | 0:a0c5877bd360 | 54 | |
fahadmirza | 0:a0c5877bd360 | 55 | /* Private function definitions ----------------------------------------------*/ |
fahadmirza | 0:a0c5877bd360 | 56 | |
fahadmirza | 0:a0c5877bd360 | 57 | /****************************************************************************** |
fahadmirza | 0:a0c5877bd360 | 58 | * @Brief : Uplink packet handler for lora_driver |
fahadmirza | 0:a0c5877bd360 | 59 | * @Param : Pointer for payload buffer, data size, ack configuration and port |
fahadmirza | 0:a0c5877bd360 | 60 | * @return: none |
fahadmirza | 0:a0c5877bd360 | 61 | ******************************************************************************/ |
fahadmirza | 0:a0c5877bd360 | 62 | static void SensorMeasureData(uint8_t *buffer, uint8_t *dataSize, uint8_t *ack, uint8_t *port) |
fahadmirza | 0:a0c5877bd360 | 63 | { |
fahadmirza | 0:a0c5877bd360 | 64 | uint8_t size = 0; |
fahadmirza | 0:a0c5877bd360 | 65 | // Organizing an unconfirmed uplink packet for port 2 |
fahadmirza | 0:a0c5877bd360 | 66 | *ack = UNCONFIRMED; |
fahadmirza | 0:a0c5877bd360 | 67 | |
fahadmirza | 0:a0c5877bd360 | 68 | buffer[size++] = 0xFA; // Random data |
fahadmirza | 0:a0c5877bd360 | 69 | buffer[size++] = 0xCE; |
fahadmirza | 0:a0c5877bd360 | 70 | buffer[size++] = 0x0F; |
fahadmirza | 0:a0c5877bd360 | 71 | buffer[size++] = 0xF0; |
fahadmirza | 0:a0c5877bd360 | 72 | buffer[size++] = 0x00; |
fahadmirza | 0:a0c5877bd360 | 73 | *dataSize = size; |
fahadmirza | 0:a0c5877bd360 | 74 | |
fahadmirza | 0:a0c5877bd360 | 75 | *port = 2; |
fahadmirza | 0:a0c5877bd360 | 76 | } |
fahadmirza | 0:a0c5877bd360 | 77 | |
fahadmirza | 0:a0c5877bd360 | 78 | /****************************************************************************** |
fahadmirza | 0:a0c5877bd360 | 79 | * @Brief : Downlink packet handler for lora_driver |
fahadmirza | 0:a0c5877bd360 | 80 | * LSBytes of the payload controls the Nucleo LED |
fahadmirza | 0:a0c5877bd360 | 81 | * @Param : Payload buffer, data size, ack configuration and port |
fahadmirza | 0:a0c5877bd360 | 82 | * @return: none |
fahadmirza | 0:a0c5877bd360 | 83 | ******************************************************************************/ |
fahadmirza | 0:a0c5877bd360 | 84 | static void LedControl(uint8_t *buffer, uint8_t dataSize, uint8_t ack, uint8_t port) |
fahadmirza | 0:a0c5877bd360 | 85 | { |
fahadmirza | 0:a0c5877bd360 | 86 | switch(buffer[dataSize - 1]) |
fahadmirza | 0:a0c5877bd360 | 87 | { |
fahadmirza | 0:a0c5877bd360 | 88 | case 1: |
fahadmirza | 0:a0c5877bd360 | 89 | { |
fahadmirza | 0:a0c5877bd360 | 90 | BSP_LED_On(LED_GREEN); |
fahadmirza | 0:a0c5877bd360 | 91 | break; |
fahadmirza | 0:a0c5877bd360 | 92 | } |
fahadmirza | 0:a0c5877bd360 | 93 | default: |
fahadmirza | 0:a0c5877bd360 | 94 | { |
fahadmirza | 0:a0c5877bd360 | 95 | BSP_LED_Off(LED_GREEN); |
fahadmirza | 0:a0c5877bd360 | 96 | break; |
fahadmirza | 0:a0c5877bd360 | 97 | } |
fahadmirza | 0:a0c5877bd360 | 98 | } |
fahadmirza | 0:a0c5877bd360 | 99 | } |
fahadmirza | 0:a0c5877bd360 | 100 | |
fahadmirza | 0:a0c5877bd360 | 101 | /************************ (C) COPYRIGHT Haxiot ***** END OF FILE ****/ |
fahadmirza | 0:a0c5877bd360 | 102 |