A demo application for HXC900 LoRaWAN module using Nucleo-L053R8.

Dependencies:   mbed

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?

UserRevisionLine numberNew 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