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