Kashish Haresh Shah
/
HXCClientShield
HXC Client Shield Repository.
lora_conf.h@2:52bb5ee0a72d, 2021-04-13 (annotated)
- Committer:
- kashish_mbed
- Date:
- Tue Apr 13 22:04:32 2021 +0000
- Revision:
- 2:52bb5ee0a72d
- Parent:
- 0:bacc6e701fb4
Provisioning Cmd process(Not Working)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kashish_mbed | 0:bacc6e701fb4 | 1 | /* |
kashish_mbed | 0:bacc6e701fb4 | 2 | _ _ _____ _______ |
kashish_mbed | 0:bacc6e701fb4 | 3 | | | | | |_ _| |__ __| |
kashish_mbed | 0:bacc6e701fb4 | 4 | | |__| | __ ___ __ | | ___ | | |
kashish_mbed | 0:bacc6e701fb4 | 5 | | __ |/ _` \ \/ / | | / _ \| | |
kashish_mbed | 0:bacc6e701fb4 | 6 | | | | | (_| |> < _| || (_) | | |
kashish_mbed | 0:bacc6e701fb4 | 7 | |_| |_|\__,_/_/\_\_____\___/|_| |
kashish_mbed | 0:bacc6e701fb4 | 8 | (C)2017 HaxIoT |
kashish_mbed | 0:bacc6e701fb4 | 9 | */ |
kashish_mbed | 0:bacc6e701fb4 | 10 | /******************************************************************************* |
kashish_mbed | 0:bacc6e701fb4 | 11 | * @File : lora_conf.h |
kashish_mbed | 0:bacc6e701fb4 | 12 | * @Author : Fahad Mirza (Haxiot) |
kashish_mbed | 0:bacc6e701fb4 | 13 | * @Version : V1.0.0 |
kashish_mbed | 0:bacc6e701fb4 | 14 | * @Modified: 18 October, 2018 |
kashish_mbed | 0:bacc6e701fb4 | 15 | * @Brief : LoRaWAN Configuration |
kashish_mbed | 0:bacc6e701fb4 | 16 | ****************************************************************************** |
kashish_mbed | 0:bacc6e701fb4 | 17 | * @attention |
kashish_mbed | 0:bacc6e701fb4 | 18 | * |
kashish_mbed | 0:bacc6e701fb4 | 19 | * <h2><center>© COPYRIGHT(c) 2017 Haxiot</center></h2> |
kashish_mbed | 0:bacc6e701fb4 | 20 | * |
kashish_mbed | 0:bacc6e701fb4 | 21 | * Redistribution and use in source and binary forms, with or without modification, |
kashish_mbed | 0:bacc6e701fb4 | 22 | * are permitted provided that the following conditions are met: |
kashish_mbed | 0:bacc6e701fb4 | 23 | * 1. Redistributions of source code must retain the above copyright notice, |
kashish_mbed | 0:bacc6e701fb4 | 24 | * this list of conditions and the following disclaimer. |
kashish_mbed | 0:bacc6e701fb4 | 25 | * 2. Redistributions in binary form must reproduce the above copyright notice, |
kashish_mbed | 0:bacc6e701fb4 | 26 | * this list of conditions and the following disclaimer in the documentation |
kashish_mbed | 0:bacc6e701fb4 | 27 | * and/or other materials provided with the distribution. |
kashish_mbed | 0:bacc6e701fb4 | 28 | * 3. Neither the name of Haxiot nor the names of its contributors |
kashish_mbed | 0:bacc6e701fb4 | 29 | * may be used to endorse or promote products derived from this software |
kashish_mbed | 0:bacc6e701fb4 | 30 | * without specific prior written permission. |
kashish_mbed | 0:bacc6e701fb4 | 31 | * |
kashish_mbed | 0:bacc6e701fb4 | 32 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
kashish_mbed | 0:bacc6e701fb4 | 33 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
kashish_mbed | 0:bacc6e701fb4 | 34 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
kashish_mbed | 0:bacc6e701fb4 | 35 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE |
kashish_mbed | 0:bacc6e701fb4 | 36 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
kashish_mbed | 0:bacc6e701fb4 | 37 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
kashish_mbed | 0:bacc6e701fb4 | 38 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
kashish_mbed | 0:bacc6e701fb4 | 39 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
kashish_mbed | 0:bacc6e701fb4 | 40 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
kashish_mbed | 0:bacc6e701fb4 | 41 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
kashish_mbed | 0:bacc6e701fb4 | 42 | * |
kashish_mbed | 0:bacc6e701fb4 | 43 | ****************************************************************************** |
kashish_mbed | 0:bacc6e701fb4 | 44 | */ |
kashish_mbed | 0:bacc6e701fb4 | 45 | |
kashish_mbed | 0:bacc6e701fb4 | 46 | #ifndef __LORA_CONF_H |
kashish_mbed | 0:bacc6e701fb4 | 47 | #define __LORA_CONF_H |
kashish_mbed | 0:bacc6e701fb4 | 48 | |
kashish_mbed | 0:bacc6e701fb4 | 49 | #ifdef __cplusplus |
kashish_mbed | 0:bacc6e701fb4 | 50 | extern "C" { |
kashish_mbed | 0:bacc6e701fb4 | 51 | #endif |
kashish_mbed | 0:bacc6e701fb4 | 52 | |
kashish_mbed | 0:bacc6e701fb4 | 53 | #include <ctype.h> |
kashish_mbed | 0:bacc6e701fb4 | 54 | #include <string.h> |
kashish_mbed | 0:bacc6e701fb4 | 55 | #include "lora_driver.h" |
kashish_mbed | 0:bacc6e701fb4 | 56 | #include "hxcclient_bsp.h" |
kashish_mbed | 0:bacc6e701fb4 | 57 | |
kashish_mbed | 0:bacc6e701fb4 | 58 | |
kashish_mbed | 0:bacc6e701fb4 | 59 | /* Macros --------------------------------------------------------------------*/ |
kashish_mbed | 0:bacc6e701fb4 | 60 | #define UPLINK_CYCLE (15000U) // Send packet every 15s |
kashish_mbed | 0:bacc6e701fb4 | 61 | |
kashish_mbed | 0:bacc6e701fb4 | 62 | |
kashish_mbed | 0:bacc6e701fb4 | 63 | /* Private function declaration ----------------------------------------------*/ |
kashish_mbed | 0:bacc6e701fb4 | 64 | static uint8_t GetSensorData(uint8_t *buffer, uint8_t bufSize, uint8_t *ack, uint8_t *port); |
kashish_mbed | 0:bacc6e701fb4 | 65 | static void LedControl(uint8_t *buffer, uint8_t dataSize); |
kashish_mbed | 0:bacc6e701fb4 | 66 | static void UpdateUplinkRate(uint8_t *buffer, uint8_t dataSize); |
kashish_mbed | 0:bacc6e701fb4 | 67 | static void ParseDownlink(uint8_t *buffer, uint8_t dataSize, uint8_t ack, uint8_t port); |
kashish_mbed | 0:bacc6e701fb4 | 68 | static void TolowerArray(char *array, uint8_t arraySize); |
kashish_mbed | 0:bacc6e701fb4 | 69 | |
kashish_mbed | 0:bacc6e701fb4 | 70 | |
kashish_mbed | 0:bacc6e701fb4 | 71 | /* Private variables ---------------------------------------------------------*/ |
kashish_mbed | 0:bacc6e701fb4 | 72 | enum DownlinkType |
kashish_mbed | 0:bacc6e701fb4 | 73 | { |
kashish_mbed | 0:bacc6e701fb4 | 74 | DW_LED = 1, |
kashish_mbed | 0:bacc6e701fb4 | 75 | DW_UPLINK_RATE, |
kashish_mbed | 0:bacc6e701fb4 | 76 | }eDownlinkType; |
kashish_mbed | 0:bacc6e701fb4 | 77 | |
kashish_mbed | 2:52bb5ee0a72d | 78 | sLoraConfig_t LoraConfigParam = |
kashish_mbed | 0:bacc6e701fb4 | 79 | { |
kashish_mbed | 0:bacc6e701fb4 | 80 | .JoinMode = OTAA, |
kashish_mbed | 0:bacc6e701fb4 | 81 | .AdrStatus = ADR_OFF, |
kashish_mbed | 0:bacc6e701fb4 | 82 | .Class = 'C', |
kashish_mbed | 0:bacc6e701fb4 | 83 | .DevEui = "AUTO", |
kashish_mbed | 0:bacc6e701fb4 | 84 | .AppEui = "E0A5B81425B5D2C7", |
kashish_mbed | 0:bacc6e701fb4 | 85 | .AppKey = "CDF5E6547CF354542335DCAEB657DBDF" |
kashish_mbed | 0:bacc6e701fb4 | 86 | }; |
kashish_mbed | 0:bacc6e701fb4 | 87 | |
kashish_mbed | 2:52bb5ee0a72d | 88 | sLoraDriverParam_t LoraDriverParam = |
kashish_mbed | 0:bacc6e701fb4 | 89 | { |
kashish_mbed | 0:bacc6e701fb4 | 90 | .UplinkCycle = UPLINK_CYCLE, |
kashish_mbed | 0:bacc6e701fb4 | 91 | .UplinkHandler = GetSensorData, |
kashish_mbed | 0:bacc6e701fb4 | 92 | .DownlinkHandler = ParseDownlink |
kashish_mbed | 0:bacc6e701fb4 | 93 | }; |
kashish_mbed | 0:bacc6e701fb4 | 94 | |
kashish_mbed | 0:bacc6e701fb4 | 95 | /* Private function definitions ----------------------------------------------*/ |
kashish_mbed | 0:bacc6e701fb4 | 96 | /****************************************************************************** |
kashish_mbed | 0:bacc6e701fb4 | 97 | * @Brief : Uplink packet handler for lora_driver |
kashish_mbed | 0:bacc6e701fb4 | 98 | * @Param : Pointer for payload buffer, data size, ack configuration and port |
kashish_mbed | 0:bacc6e701fb4 | 99 | * @Return: packet size |
kashish_mbed | 0:bacc6e701fb4 | 100 | ******************************************************************************/ |
kashish_mbed | 0:bacc6e701fb4 | 101 | static uint8_t GetSensorData(uint8_t *buffer, uint8_t bufSize, uint8_t *ack, uint8_t *port) |
kashish_mbed | 0:bacc6e701fb4 | 102 | { |
kashish_mbed | 0:bacc6e701fb4 | 103 | /* Prepare an unconfirmed uplink packet for port 2 */ |
kashish_mbed | 0:bacc6e701fb4 | 104 | uint8_t size = 0; |
kashish_mbed | 0:bacc6e701fb4 | 105 | |
kashish_mbed | 0:bacc6e701fb4 | 106 | uint16_t tempInt = HXC_BSP_GetTemperature(); |
kashish_mbed | 0:bacc6e701fb4 | 107 | // Checkout our user manual to convert tempInt into degree Celcius |
kashish_mbed | 0:bacc6e701fb4 | 108 | |
kashish_mbed | 0:bacc6e701fb4 | 109 | |
kashish_mbed | 0:bacc6e701fb4 | 110 | buffer[size++] = (uint8_t)Lora_getFwVersion(); // This function returns uint16_t |
kashish_mbed | 0:bacc6e701fb4 | 111 | buffer[size++] = Lora_getBatteryLevel(); |
kashish_mbed | 0:bacc6e701fb4 | 112 | buffer[size++] = (tempInt >> 8) & 0xFF; |
kashish_mbed | 0:bacc6e701fb4 | 113 | buffer[size++] = tempInt & 0xFF; |
kashish_mbed | 0:bacc6e701fb4 | 114 | buffer[size++] = HXC_BSP_GetSlideSwitchStatus(); |
kashish_mbed | 0:bacc6e701fb4 | 115 | |
kashish_mbed | 0:bacc6e701fb4 | 116 | *ack = (uint8_t)UNCONFIRMED; |
kashish_mbed | 0:bacc6e701fb4 | 117 | *port = 2; |
kashish_mbed | 0:bacc6e701fb4 | 118 | |
kashish_mbed | 0:bacc6e701fb4 | 119 | return size; |
kashish_mbed | 0:bacc6e701fb4 | 120 | } |
kashish_mbed | 0:bacc6e701fb4 | 121 | |
kashish_mbed | 0:bacc6e701fb4 | 122 | |
kashish_mbed | 0:bacc6e701fb4 | 123 | /****************************************************************************** |
kashish_mbed | 0:bacc6e701fb4 | 124 | * @Brief : Downlink packet handler for lora_driver |
kashish_mbed | 0:bacc6e701fb4 | 125 | * Valid downlink messages are: 'red', 'green', 'blue' and 'off' |
kashish_mbed | 0:bacc6e701fb4 | 126 | * @Param : Payload buffer, data size, ack configuration and port |
kashish_mbed | 0:bacc6e701fb4 | 127 | * @Return: None |
kashish_mbed | 0:bacc6e701fb4 | 128 | ******************************************************************************/ |
kashish_mbed | 0:bacc6e701fb4 | 129 | static void ParseDownlink(uint8_t *buffer, uint8_t dataSize, uint8_t ack, uint8_t port) |
kashish_mbed | 0:bacc6e701fb4 | 130 | { |
kashish_mbed | 0:bacc6e701fb4 | 131 | switch(port) |
kashish_mbed | 0:bacc6e701fb4 | 132 | { |
kashish_mbed | 0:bacc6e701fb4 | 133 | case DW_LED: |
kashish_mbed | 0:bacc6e701fb4 | 134 | { |
kashish_mbed | 0:bacc6e701fb4 | 135 | LedControl(buffer, dataSize); |
kashish_mbed | 0:bacc6e701fb4 | 136 | break; |
kashish_mbed | 0:bacc6e701fb4 | 137 | } |
kashish_mbed | 0:bacc6e701fb4 | 138 | case DW_UPLINK_RATE: |
kashish_mbed | 0:bacc6e701fb4 | 139 | { |
kashish_mbed | 0:bacc6e701fb4 | 140 | UpdateUplinkRate(buffer, dataSize); |
kashish_mbed | 0:bacc6e701fb4 | 141 | break; |
kashish_mbed | 0:bacc6e701fb4 | 142 | } |
kashish_mbed | 0:bacc6e701fb4 | 143 | default: |
kashish_mbed | 0:bacc6e701fb4 | 144 | { |
kashish_mbed | 0:bacc6e701fb4 | 145 | break; |
kashish_mbed | 0:bacc6e701fb4 | 146 | } |
kashish_mbed | 0:bacc6e701fb4 | 147 | } |
kashish_mbed | 0:bacc6e701fb4 | 148 | } |
kashish_mbed | 0:bacc6e701fb4 | 149 | static void LedControl(uint8_t *buffer, uint8_t dataSize) |
kashish_mbed | 0:bacc6e701fb4 | 150 | { |
kashish_mbed | 0:bacc6e701fb4 | 151 | TolowerArray((char *)buffer, dataSize); |
kashish_mbed | 0:bacc6e701fb4 | 152 | |
kashish_mbed | 0:bacc6e701fb4 | 153 | if(strncmp("red", (const char *)buffer, 3) == 0) |
kashish_mbed | 0:bacc6e701fb4 | 154 | { |
kashish_mbed | 0:bacc6e701fb4 | 155 | HXC_BSP_RGB_On(RED); |
kashish_mbed | 0:bacc6e701fb4 | 156 | } |
kashish_mbed | 0:bacc6e701fb4 | 157 | else if(strncmp("green", (const char *)buffer, 5) == 0) |
kashish_mbed | 0:bacc6e701fb4 | 158 | { |
kashish_mbed | 0:bacc6e701fb4 | 159 | HXC_BSP_RGB_On(GREEN); |
kashish_mbed | 0:bacc6e701fb4 | 160 | } |
kashish_mbed | 0:bacc6e701fb4 | 161 | else if(strncmp("blue", (const char *)buffer, 4) == 0) |
kashish_mbed | 0:bacc6e701fb4 | 162 | { |
kashish_mbed | 0:bacc6e701fb4 | 163 | HXC_BSP_RGB_On(BLUE); |
kashish_mbed | 0:bacc6e701fb4 | 164 | } |
kashish_mbed | 0:bacc6e701fb4 | 165 | else if(strncmp("off", (const char *)buffer, 3) == 0) |
kashish_mbed | 0:bacc6e701fb4 | 166 | { |
kashish_mbed | 0:bacc6e701fb4 | 167 | HXC_BSP_RGB_Off(); |
kashish_mbed | 0:bacc6e701fb4 | 168 | } |
kashish_mbed | 0:bacc6e701fb4 | 169 | else |
kashish_mbed | 0:bacc6e701fb4 | 170 | { |
kashish_mbed | 0:bacc6e701fb4 | 171 | // Users can send any combinations of the RGB |
kashish_mbed | 0:bacc6e701fb4 | 172 | // using last 3bits. eLedColor_t is arranged |
kashish_mbed | 0:bacc6e701fb4 | 173 | // in chronological order. |
kashish_mbed | 0:bacc6e701fb4 | 174 | HXC_BSP_RGB_On((eLedColor_t)(buffer[0] & 0x07)); |
kashish_mbed | 0:bacc6e701fb4 | 175 | } |
kashish_mbed | 0:bacc6e701fb4 | 176 | } |
kashish_mbed | 0:bacc6e701fb4 | 177 | |
kashish_mbed | 0:bacc6e701fb4 | 178 | static void UpdateUplinkRate(uint8_t *buffer, uint8_t dataSize) |
kashish_mbed | 0:bacc6e701fb4 | 179 | { |
kashish_mbed | 0:bacc6e701fb4 | 180 | //Lora_updateUplinkRate(); |
kashish_mbed | 0:bacc6e701fb4 | 181 | } |
kashish_mbed | 0:bacc6e701fb4 | 182 | |
kashish_mbed | 0:bacc6e701fb4 | 183 | |
kashish_mbed | 0:bacc6e701fb4 | 184 | /****************************************************************************** |
kashish_mbed | 0:bacc6e701fb4 | 185 | * @Brief : Upper case to lower case for an array |
kashish_mbed | 0:bacc6e701fb4 | 186 | * @Param : Pointer to array containing characters and array size |
kashish_mbed | 0:bacc6e701fb4 | 187 | * @Return: None |
kashish_mbed | 0:bacc6e701fb4 | 188 | ******************************************************************************/ |
kashish_mbed | 0:bacc6e701fb4 | 189 | static void TolowerArray(char *array, uint8_t arraySize) |
kashish_mbed | 0:bacc6e701fb4 | 190 | { |
kashish_mbed | 0:bacc6e701fb4 | 191 | for(uint8_t i = 0; i < arraySize; i++) |
kashish_mbed | 0:bacc6e701fb4 | 192 | { |
kashish_mbed | 0:bacc6e701fb4 | 193 | array[i] = tolower(array[i]); |
kashish_mbed | 0:bacc6e701fb4 | 194 | } |
kashish_mbed | 0:bacc6e701fb4 | 195 | } |
kashish_mbed | 0:bacc6e701fb4 | 196 | |
kashish_mbed | 0:bacc6e701fb4 | 197 | #ifdef __cplusplus |
kashish_mbed | 0:bacc6e701fb4 | 198 | } |
kashish_mbed | 0:bacc6e701fb4 | 199 | #endif /* __cplusplus */ |
kashish_mbed | 0:bacc6e701fb4 | 200 | |
kashish_mbed | 0:bacc6e701fb4 | 201 | #endif |