Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
lora_conf.h@27:517ca3a30ad7, 2018-11-01 (annotated)
- Committer:
- fahadmirza
- Date:
- Thu Nov 01 23:55:31 2018 +0000
- Revision:
- 27:517ca3a30ad7
- Parent:
- 24:f3b987589609
- Child:
- 28:c777d977b252
-Max_Payload_Size defined; -Replaced Appeui, Appkey with a general statement; -and DevEui as Auto. implemented print_deveui function; - forget to update keys will be stuck in infinite loop; -During rejoin,stop uplink timer; -stop rejoin timer in event fun
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| fahadmirza | 4:511677d804ac | 1 | /* |
| fahadmirza | 4:511677d804ac | 2 | _ _ _____ _______ |
| fahadmirza | 4:511677d804ac | 3 | | | | | |_ _| |__ __| |
| fahadmirza | 4:511677d804ac | 4 | | |__| | __ ___ __ | | ___ | | |
| fahadmirza | 4:511677d804ac | 5 | | __ |/ _` \ \/ / | | / _ \| | |
| fahadmirza | 4:511677d804ac | 6 | | | | | (_| |> < _| || (_) | | |
| fahadmirza | 4:511677d804ac | 7 | |_| |_|\__,_/_/\_\_____\___/|_| |
| fahadmirza | 4:511677d804ac | 8 | (C)2017 HaxIoT |
| fahadmirza | 4:511677d804ac | 9 | */ |
| fahadmirza | 4:511677d804ac | 10 | /******************************************************************************* |
| fahadmirza | 22:5b77cf59d630 | 11 | * @File : lora_conf.h |
| fahadmirza | 22:5b77cf59d630 | 12 | * @Author : Fahad Mirza (Haxiot) |
| fahadmirza | 22:5b77cf59d630 | 13 | * @Version : V1.0.0 |
| fahadmirza | 22:5b77cf59d630 | 14 | * @Modified: 18 October, 2018 |
| fahadmirza | 22:5b77cf59d630 | 15 | * @Brief : LoRaWAN Configuration |
| fahadmirza | 4:511677d804ac | 16 | ****************************************************************************** |
| fahadmirza | 4:511677d804ac | 17 | * @attention |
| fahadmirza | 4:511677d804ac | 18 | * |
| fahadmirza | 4:511677d804ac | 19 | * <h2><center>© COPYRIGHT(c) 2017 Haxiot</center></h2> |
| fahadmirza | 4:511677d804ac | 20 | * |
| fahadmirza | 4:511677d804ac | 21 | * Redistribution and use in source and binary forms, with or without modification, |
| fahadmirza | 4:511677d804ac | 22 | * are permitted provided that the following conditions are met: |
| fahadmirza | 4:511677d804ac | 23 | * 1. Redistributions of source code must retain the above copyright notice, |
| fahadmirza | 4:511677d804ac | 24 | * this list of conditions and the following disclaimer. |
| fahadmirza | 4:511677d804ac | 25 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
| fahadmirza | 4:511677d804ac | 26 | * this list of conditions and the following disclaimer in the documentation |
| fahadmirza | 4:511677d804ac | 27 | * and/or other materials provided with the distribution. |
| fahadmirza | 4:511677d804ac | 28 | * 3. Neither the name of Haxiot nor the names of its contributors |
| fahadmirza | 4:511677d804ac | 29 | * may be used to endorse or promote products derived from this software |
| fahadmirza | 4:511677d804ac | 30 | * without specific prior written permission. |
| fahadmirza | 4:511677d804ac | 31 | * |
| fahadmirza | 4:511677d804ac | 32 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| fahadmirza | 4:511677d804ac | 33 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| fahadmirza | 4:511677d804ac | 34 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| fahadmirza | 4:511677d804ac | 35 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
| fahadmirza | 4:511677d804ac | 36 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| fahadmirza | 4:511677d804ac | 37 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
| fahadmirza | 4:511677d804ac | 38 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
| fahadmirza | 4:511677d804ac | 39 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
| fahadmirza | 4:511677d804ac | 40 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| fahadmirza | 4:511677d804ac | 41 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| fahadmirza | 4:511677d804ac | 42 | * |
| fahadmirza | 4:511677d804ac | 43 | ****************************************************************************** |
| fahadmirza | 4:511677d804ac | 44 | */ |
| fahadmirza | 4:511677d804ac | 45 | |
| fahadmirza | 4:511677d804ac | 46 | #ifndef __LORA_CONF_H |
| fahadmirza | 4:511677d804ac | 47 | #define __LORA_CONF_H |
| fahadmirza | 4:511677d804ac | 48 | |
| fahadmirza | 4:511677d804ac | 49 | #ifdef __cplusplus |
| fahadmirza | 4:511677d804ac | 50 | extern "C" { |
| fahadmirza | 4:511677d804ac | 51 | #endif |
| fahadmirza | 4:511677d804ac | 52 | |
| fahadmirza | 6:1d09b7960d57 | 53 | #include <ctype.h> |
| fahadmirza | 6:1d09b7960d57 | 54 | #include <string.h> |
| fahadmirza | 22:5b77cf59d630 | 55 | #include "lora_driver.h" |
| fahadmirza | 4:511677d804ac | 56 | |
| fahadmirza | 15:2860c960d2ff | 57 | /* Macros --------------------------------------------------------------------*/ |
| fahadmirza | 15:2860c960d2ff | 58 | #define SENSORS_MEASURE_CYCLE (15000U) // Send packet every 15s |
| fahadmirza | 4:511677d804ac | 59 | |
| fahadmirza | 22:5b77cf59d630 | 60 | /* Private function declaration ----------------------------------------------*/ |
| fahadmirza | 22:5b77cf59d630 | 61 | static void GetSensorData(uint8_t *buffer, uint8_t *dataSize, uint8_t *ack, uint8_t *port); |
| fahadmirza | 22:5b77cf59d630 | 62 | static void LedControl(uint8_t *buffer, uint8_t dataSize, uint8_t ack, uint8_t port); |
| fahadmirza | 22:5b77cf59d630 | 63 | static void tolower_array(char *array, uint8_t arraySize); |
| fahadmirza | 4:511677d804ac | 64 | |
| fahadmirza | 22:5b77cf59d630 | 65 | /* Private variables ---------------------------------------------------------*/ |
| fahadmirza | 22:5b77cf59d630 | 66 | static sLoraConfig_t LoraConfigParam = |
| fahadmirza | 22:5b77cf59d630 | 67 | { |
| fahadmirza | 24:f3b987589609 | 68 | .JoinMode = OTAA, |
| fahadmirza | 24:f3b987589609 | 69 | .AdrStatus = ADR_OFF, |
| fahadmirza | 24:f3b987589609 | 70 | .Class = 'A', |
| fahadmirza | 27:517ca3a30ad7 | 71 | .DevEui = "AUTO", |
| fahadmirza | 27:517ca3a30ad7 | 72 | .AppEui = "<Use your device specific EUI>", |
| fahadmirza | 27:517ca3a30ad7 | 73 | .AppKey = "<Use your device specific KEY>" |
| fahadmirza | 22:5b77cf59d630 | 74 | }; |
| fahadmirza | 4:511677d804ac | 75 | |
| fahadmirza | 22:5b77cf59d630 | 76 | static sLoraDriverParam_t LoraDriverParam = |
| fahadmirza | 22:5b77cf59d630 | 77 | { |
| fahadmirza | 22:5b77cf59d630 | 78 | .SensorMeasureTime = SENSORS_MEASURE_CYCLE, |
| fahadmirza | 22:5b77cf59d630 | 79 | .SendDataHandler = GetSensorData, |
| fahadmirza | 22:5b77cf59d630 | 80 | .ReceiveDataHandler = LedControl |
| fahadmirza | 22:5b77cf59d630 | 81 | }; |
| fahadmirza | 8:60cfc0029421 | 82 | |
| fahadmirza | 4:511677d804ac | 83 | /* Private function definitions ----------------------------------------------*/ |
| fahadmirza | 4:511677d804ac | 84 | /****************************************************************************** |
| fahadmirza | 4:511677d804ac | 85 | * @Brief : Uplink packet handler for lora_driver |
| fahadmirza | 4:511677d804ac | 86 | * @Param : Pointer for payload buffer, data size, ack configuration and port |
| fahadmirza | 15:2860c960d2ff | 87 | * @Return: None |
| fahadmirza | 4:511677d804ac | 88 | ******************************************************************************/ |
| fahadmirza | 4:511677d804ac | 89 | static void GetSensorData(uint8_t *buffer, uint8_t *dataSize, uint8_t *ack, uint8_t *port) |
| fahadmirza | 4:511677d804ac | 90 | { |
| fahadmirza | 20:1ed8723a3a87 | 91 | /* Prepare an unconfirmed uplink packet for port 2 */ |
| fahadmirza | 4:511677d804ac | 92 | uint8_t size = 0; |
| fahadmirza | 4:511677d804ac | 93 | |
| fahadmirza | 21:f1d561ed31a1 | 94 | // Converts and read the analog input value (value from 0.0 to 1.0) |
| fahadmirza | 21:f1d561ed31a1 | 95 | float temperatureValue = temperatureSensor.read(); |
| fahadmirza | 21:f1d561ed31a1 | 96 | // Change the value to be in the 0 to 3300 range |
| fahadmirza | 21:f1d561ed31a1 | 97 | uint16_t temperatureValueInt = temperatureValue * 3300; |
| fahadmirza | 21:f1d561ed31a1 | 98 | // Checkout our user manual to convert temperatureValueInt into degree Celcius |
| fahadmirza | 19:0c90e38fc9c5 | 99 | |
| fahadmirza | 19:0c90e38fc9c5 | 100 | buffer[size++] = (temperatureValueInt >> 8) & 0xFF; |
| fahadmirza | 19:0c90e38fc9c5 | 101 | buffer[size++] = temperatureValueInt & 0xFF; |
| fahadmirza | 19:0c90e38fc9c5 | 102 | buffer[size++] = slideSwitch; |
| fahadmirza | 4:511677d804ac | 103 | |
| fahadmirza | 4:511677d804ac | 104 | *dataSize = size; |
| fahadmirza | 22:5b77cf59d630 | 105 | *ack = (uint8_t)UNCONFIRMED; |
| fahadmirza | 4:511677d804ac | 106 | *port = 2; |
| fahadmirza | 4:511677d804ac | 107 | } |
| fahadmirza | 4:511677d804ac | 108 | |
| fahadmirza | 22:5b77cf59d630 | 109 | |
| fahadmirza | 4:511677d804ac | 110 | /****************************************************************************** |
| fahadmirza | 4:511677d804ac | 111 | * @Brief : Downlink packet handler for lora_driver |
| fahadmirza | 8:60cfc0029421 | 112 | * Valid downlink messages are: 'red', 'green', 'blue' and 'off' |
| fahadmirza | 4:511677d804ac | 113 | * @Param : Payload buffer, data size, ack configuration and port |
| fahadmirza | 15:2860c960d2ff | 114 | * @Return: None |
| fahadmirza | 4:511677d804ac | 115 | ******************************************************************************/ |
| fahadmirza | 4:511677d804ac | 116 | static void LedControl(uint8_t *buffer, uint8_t dataSize, uint8_t ack, uint8_t port) |
| fahadmirza | 4:511677d804ac | 117 | { |
| fahadmirza | 8:60cfc0029421 | 118 | tolower_array((char *)buffer, dataSize); |
| fahadmirza | 6:1d09b7960d57 | 119 | |
| fahadmirza | 6:1d09b7960d57 | 120 | if(strncmp("red", (const char *)buffer, 3) == 0) |
| fahadmirza | 6:1d09b7960d57 | 121 | { |
| fahadmirza | 6:1d09b7960d57 | 122 | redLED = 1; |
| fahadmirza | 6:1d09b7960d57 | 123 | greenLED = 0; |
| fahadmirza | 6:1d09b7960d57 | 124 | blueLED = 0; |
| fahadmirza | 6:1d09b7960d57 | 125 | } |
| fahadmirza | 6:1d09b7960d57 | 126 | else if(strncmp("green", (const char *)buffer, 5) == 0) |
| fahadmirza | 6:1d09b7960d57 | 127 | { |
| fahadmirza | 6:1d09b7960d57 | 128 | redLED = 0; |
| fahadmirza | 6:1d09b7960d57 | 129 | greenLED = 1; |
| fahadmirza | 6:1d09b7960d57 | 130 | blueLED = 0; |
| fahadmirza | 6:1d09b7960d57 | 131 | } |
| fahadmirza | 6:1d09b7960d57 | 132 | else if(strncmp("blue", (const char *)buffer, 4) == 0) |
| fahadmirza | 4:511677d804ac | 133 | { |
| fahadmirza | 6:1d09b7960d57 | 134 | redLED = 0; |
| fahadmirza | 6:1d09b7960d57 | 135 | greenLED = 0; |
| fahadmirza | 6:1d09b7960d57 | 136 | blueLED = 1; |
| fahadmirza | 6:1d09b7960d57 | 137 | } |
| fahadmirza | 6:1d09b7960d57 | 138 | else if(strncmp("off", (const char *)buffer, 4) == 0) |
| fahadmirza | 6:1d09b7960d57 | 139 | { |
| fahadmirza | 6:1d09b7960d57 | 140 | redLED = 0; |
| fahadmirza | 6:1d09b7960d57 | 141 | greenLED = 0; |
| fahadmirza | 6:1d09b7960d57 | 142 | blueLED = 0; |
| fahadmirza | 6:1d09b7960d57 | 143 | } |
| fahadmirza | 6:1d09b7960d57 | 144 | } |
| fahadmirza | 6:1d09b7960d57 | 145 | |
| fahadmirza | 8:60cfc0029421 | 146 | |
| fahadmirza | 8:60cfc0029421 | 147 | /****************************************************************************** |
| fahadmirza | 8:60cfc0029421 | 148 | * @Brief : Upper case to lower case for an array |
| fahadmirza | 8:60cfc0029421 | 149 | * @Param : Pointer to array containing characters and array size |
| fahadmirza | 15:2860c960d2ff | 150 | * @Return: None |
| fahadmirza | 8:60cfc0029421 | 151 | ******************************************************************************/ |
| fahadmirza | 8:60cfc0029421 | 152 | static void tolower_array(char *array, uint8_t arraySize) |
| fahadmirza | 6:1d09b7960d57 | 153 | { |
| fahadmirza | 8:60cfc0029421 | 154 | for(uint8_t i = 0; i < arraySize; i++) |
| fahadmirza | 6:1d09b7960d57 | 155 | { |
| fahadmirza | 8:60cfc0029421 | 156 | array[i] = tolower(array[i]); |
| fahadmirza | 4:511677d804ac | 157 | } |
| fahadmirza | 4:511677d804ac | 158 | } |
| fahadmirza | 4:511677d804ac | 159 | |
| fahadmirza | 4:511677d804ac | 160 | #ifdef __cplusplus |
| fahadmirza | 4:511677d804ac | 161 | } |
| fahadmirza | 4:511677d804ac | 162 | #endif /* __cplusplus */ |
| fahadmirza | 4:511677d804ac | 163 | |
| fahadmirza | 4:511677d804ac | 164 | #endif |