ver. 1
Dependencies: mbed OneWireCRC_LoRa_Node
main.cpp@2:e731b7dba32b, 2021-05-08 (annotated)
- Committer:
- lukas_formanek
- Date:
- Sat May 08 18:34:38 2021 +0000
- Revision:
- 2:e731b7dba32b
- Parent:
- 1:8a60d7a33fa5
LoRaWAN_Node
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lukas_formanek | 1:8a60d7a33fa5 | 1 | #include "stm32f4xx_hal.h" |
lukas_formanek | 1:8a60d7a33fa5 | 2 | #include "stm32f4xx.h" |
lukas_formanek | 1:8a60d7a33fa5 | 3 | #include "hal_tick.h" |
lukas_formanek | 0:7f12b35d7969 | 4 | #include "mbed.h" |
lukas_formanek | 0:7f12b35d7969 | 5 | //#include "stdio.h" |
lukas_formanek | 0:7f12b35d7969 | 6 | //#include <sstream> |
lukas_formanek | 2:e731b7dba32b | 7 | //#include <iostream> |
lukas_formanek | 2:e731b7dba32b | 8 | //#include <string> |
lukas_formanek | 0:7f12b35d7969 | 9 | #include "DS18B20.h" |
lukas_formanek | 0:7f12b35d7969 | 10 | #include "OneWireDefs.h" |
lukas_formanek | 0:7f12b35d7969 | 11 | |
lukas_formanek | 0:7f12b35d7969 | 12 | |
lukas_formanek | 0:7f12b35d7969 | 13 | #ifndef DEBUG_CONSOLE |
lukas_formanek | 1:8a60d7a33fa5 | 14 | #define DEBUG_CONSOLE 0 |
lukas_formanek | 0:7f12b35d7969 | 15 | #endif |
lukas_formanek | 0:7f12b35d7969 | 16 | |
lukas_formanek | 1:8a60d7a33fa5 | 17 | #define USB_TX PA_9 |
lukas_formanek | 1:8a60d7a33fa5 | 18 | #define USB_RX PA_10 |
lukas_formanek | 1:8a60d7a33fa5 | 19 | #define LORA_TX PA_11 |
lukas_formanek | 1:8a60d7a33fa5 | 20 | #define LORA_RX PA_12 |
lukas_formanek | 1:8a60d7a33fa5 | 21 | #define THERM_PIN PB_8 |
lukas_formanek | 1:8a60d7a33fa5 | 22 | #define LED_PIN PB_0 |
lukas_formanek | 0:7f12b35d7969 | 23 | #define FOTO_PIN PA_1 |
lukas_formanek | 0:7f12b35d7969 | 24 | #define BATTERY_PIN PA_3 |
lukas_formanek | 0:7f12b35d7969 | 25 | |
lukas_formanek | 2:e731b7dba32b | 26 | #define BUF_SIZE 256 |
lukas_formanek | 2:e731b7dba32b | 27 | #define V_BATT_REFF 8.20 // max napatie baterii |
lukas_formanek | 2:e731b7dba32b | 28 | |
lukas_formanek | 2:e731b7dba32b | 29 | volatile int measurePeriod = 60; // in seconds |
lukas_formanek | 2:e731b7dba32b | 30 | |
lukas_formanek | 2:e731b7dba32b | 31 | const double voltage_divider_ref = V_BATT_REFF * (1.00/(1.00+1.60)); // max uroven napatia na delici |
lukas_formanek | 2:e731b7dba32b | 32 | const char *delimiter=":"; // delimiter na prijatie spravy |
lukas_formanek | 2:e731b7dba32b | 33 | volatile uint32_t timeCounter = 0; |
lukas_formanek | 2:e731b7dba32b | 34 | |
lukas_formanek | 2:e731b7dba32b | 35 | DS18B20 thermometer(true, true, false,THERM_PIN); |
lukas_formanek | 0:7f12b35d7969 | 36 | AnalogIn foto(FOTO_PIN); |
lukas_formanek | 0:7f12b35d7969 | 37 | AnalogIn battery(BATTERY_PIN); |
lukas_formanek | 0:7f12b35d7969 | 38 | DigitalOut led(LED_PIN); |
lukas_formanek | 2:e731b7dba32b | 39 | Ticker secondTicker; |
lukas_formanek | 0:7f12b35d7969 | 40 | |
lukas_formanek | 0:7f12b35d7969 | 41 | Serial lora(LORA_TX, LORA_RX,115200); |
lukas_formanek | 2:e731b7dba32b | 42 | |
lukas_formanek | 0:7f12b35d7969 | 43 | #if DEBUG_CONSOLE |
lukas_formanek | 0:7f12b35d7969 | 44 | Serial usb(USB_TX, USB_RX,115200); |
lukas_formanek | 0:7f12b35d7969 | 45 | #endif |
lukas_formanek | 0:7f12b35d7969 | 46 | |
lukas_formanek | 2:e731b7dba32b | 47 | |
lukas_formanek | 2:e731b7dba32b | 48 | char buffer[BUF_SIZE]; |
lukas_formanek | 2:e731b7dba32b | 49 | char hexBuffer[BUF_SIZE]; |
lukas_formanek | 0:7f12b35d7969 | 50 | char rxBuffer[BUF_SIZE]; |
lukas_formanek | 0:7f12b35d7969 | 51 | char rxMessage[BUF_SIZE]; |
lukas_formanek | 0:7f12b35d7969 | 52 | char message[BUF_SIZE]; |
lukas_formanek | 2:e731b7dba32b | 53 | |
lukas_formanek | 0:7f12b35d7969 | 54 | volatile int8_t rxPtr = 0; |
lukas_formanek | 2:e731b7dba32b | 55 | volatile uint8_t numOfERR = 0; |
lukas_formanek | 2:e731b7dba32b | 56 | volatile float batteryValue = 0.00; |
lukas_formanek | 2:e731b7dba32b | 57 | volatile float temperature = 0.00; |
lukas_formanek | 2:e731b7dba32b | 58 | volatile uint16_t fotoValue = 0; |
lukas_formanek | 2:e731b7dba32b | 59 | |
lukas_formanek | 2:e731b7dba32b | 60 | |
lukas_formanek | 0:7f12b35d7969 | 61 | volatile bool measure = true; |
lukas_formanek | 0:7f12b35d7969 | 62 | volatile bool rxDone = false; |
lukas_formanek | 0:7f12b35d7969 | 63 | volatile bool receiveOK=false; |
lukas_formanek | 0:7f12b35d7969 | 64 | volatile bool receiveACK=false; |
lukas_formanek | 0:7f12b35d7969 | 65 | volatile bool receiveJOIN=false; |
lukas_formanek | 0:7f12b35d7969 | 66 | volatile bool receiveERR=false; |
lukas_formanek | 2:e731b7dba32b | 67 | |
lukas_formanek | 2:e731b7dba32b | 68 | // ----------------------------------------------------------------------------- |
lukas_formanek | 2:e731b7dba32b | 69 | void onSecondTick(); |
lukas_formanek | 2:e731b7dba32b | 70 | void rxLoraInterrupt(); |
lukas_formanek | 2:e731b7dba32b | 71 | void clearRxBuffer(); |
lukas_formanek | 2:e731b7dba32b | 72 | void resetModule(); |
lukas_formanek | 2:e731b7dba32b | 73 | void init(); |
lukas_formanek | 2:e731b7dba32b | 74 | void onMeasure(); |
lukas_formanek | 2:e731b7dba32b | 75 | void onReceive(); |
lukas_formanek | 2:e731b7dba32b | 76 | // ----------------------------------------------------------------------------- |
lukas_formanek | 2:e731b7dba32b | 77 | |
lukas_formanek | 0:7f12b35d7969 | 78 | |
lukas_formanek | 2:e731b7dba32b | 79 | int main() |
lukas_formanek | 2:e731b7dba32b | 80 | { |
lukas_formanek | 2:e731b7dba32b | 81 | #if DEBUG_CONSOLE |
lukas_formanek | 2:e731b7dba32b | 82 | usb.printf("\r\n ------------ START APPLICATION ------------ \r\n"); |
lukas_formanek | 2:e731b7dba32b | 83 | usb.printf("HCLK frequency : %d \r\n",HAL_RCC_GetHCLKFreq()); |
lukas_formanek | 2:e731b7dba32b | 84 | usb.printf("System clock : %d \r\n", SystemCoreClock); |
lukas_formanek | 2:e731b7dba32b | 85 | #endif |
lukas_formanek | 2:e731b7dba32b | 86 | init(); |
lukas_formanek | 2:e731b7dba32b | 87 | while(true) { |
lukas_formanek | 2:e731b7dba32b | 88 | if(measure) { |
lukas_formanek | 2:e731b7dba32b | 89 | onMeasure(); |
lukas_formanek | 0:7f12b35d7969 | 90 | } |
lukas_formanek | 2:e731b7dba32b | 91 | |
lukas_formanek | 2:e731b7dba32b | 92 | if(receiveACK) { |
lukas_formanek | 2:e731b7dba32b | 93 | onReceive(); |
lukas_formanek | 0:7f12b35d7969 | 94 | } |
lukas_formanek | 2:e731b7dba32b | 95 | |
lukas_formanek | 2:e731b7dba32b | 96 | if(receiveERR) { |
lukas_formanek | 2:e731b7dba32b | 97 | receiveERR = false; |
lukas_formanek | 2:e731b7dba32b | 98 | } |
lukas_formanek | 2:e731b7dba32b | 99 | |
lukas_formanek | 2:e731b7dba32b | 100 | if(receiveOK) { |
lukas_formanek | 2:e731b7dba32b | 101 | receiveOK = false; |
lukas_formanek | 2:e731b7dba32b | 102 | } |
lukas_formanek | 2:e731b7dba32b | 103 | hal_sleep(); |
lukas_formanek | 0:7f12b35d7969 | 104 | } |
lukas_formanek | 0:7f12b35d7969 | 105 | } |
lukas_formanek | 2:e731b7dba32b | 106 | |
lukas_formanek | 0:7f12b35d7969 | 107 | |
lukas_formanek | 0:7f12b35d7969 | 108 | void clearRxBuffer() |
lukas_formanek | 0:7f12b35d7969 | 109 | { |
lukas_formanek | 0:7f12b35d7969 | 110 | memset(rxBuffer, '\0', sizeof(rxBuffer)); |
lukas_formanek | 0:7f12b35d7969 | 111 | rxPtr = 0; |
lukas_formanek | 0:7f12b35d7969 | 112 | }; |
lukas_formanek | 0:7f12b35d7969 | 113 | |
lukas_formanek | 0:7f12b35d7969 | 114 | void resetModule() |
lukas_formanek | 0:7f12b35d7969 | 115 | { |
lukas_formanek | 0:7f12b35d7969 | 116 | numOfERR = 0; |
lukas_formanek | 0:7f12b35d7969 | 117 | lora.printf("at+set_config=device:sleep:0\r\n"); |
lukas_formanek | 0:7f12b35d7969 | 118 | wait(0.2); |
lukas_formanek | 0:7f12b35d7969 | 119 | receiveJOIN = false; |
lukas_formanek | 0:7f12b35d7969 | 120 | lora.printf("at+set_config=device:restart\r\n"); |
lukas_formanek | 2:e731b7dba32b | 121 | #if DEBUG_CONSOLE |
lukas_formanek | 2:e731b7dba32b | 122 | usb.printf("Joining to network... \r\n"); |
lukas_formanek | 2:e731b7dba32b | 123 | #endif |
lukas_formanek | 2:e731b7dba32b | 124 | |
lukas_formanek | 0:7f12b35d7969 | 125 | Timer timer; |
lukas_formanek | 0:7f12b35d7969 | 126 | timer.reset(); |
lukas_formanek | 0:7f12b35d7969 | 127 | timer.start(); |
lukas_formanek | 2:e731b7dba32b | 128 | while(1) |
lukas_formanek | 2:e731b7dba32b | 129 | { |
lukas_formanek | 2:e731b7dba32b | 130 | if(receiveJOIN) |
lukas_formanek | 0:7f12b35d7969 | 131 | { |
lukas_formanek | 2:e731b7dba32b | 132 | #if DEBUG_CONSOLE |
lukas_formanek | 2:e731b7dba32b | 133 | usb.printf("Join OK \r\n"); |
lukas_formanek | 2:e731b7dba32b | 134 | #endif |
lukas_formanek | 0:7f12b35d7969 | 135 | timer.stop(); |
lukas_formanek | 0:7f12b35d7969 | 136 | receiveJOIN=false; |
lukas_formanek | 0:7f12b35d7969 | 137 | break; |
lukas_formanek | 0:7f12b35d7969 | 138 | } |
lukas_formanek | 2:e731b7dba32b | 139 | if(timer.read_ms() > 30000) |
lukas_formanek | 0:7f12b35d7969 | 140 | { |
lukas_formanek | 0:7f12b35d7969 | 141 | timer.stop(); |
lukas_formanek | 0:7f12b35d7969 | 142 | timer.reset(); |
lukas_formanek | 0:7f12b35d7969 | 143 | timer.start(); |
lukas_formanek | 0:7f12b35d7969 | 144 | lora.printf("at+join\r\n"); |
lukas_formanek | 2:e731b7dba32b | 145 | #if DEBUG_CONSOLE |
lukas_formanek | 2:e731b7dba32b | 146 | usb.printf("Joining...\r\n"); |
lukas_formanek | 2:e731b7dba32b | 147 | #endif |
lukas_formanek | 0:7f12b35d7969 | 148 | } |
lukas_formanek | 0:7f12b35d7969 | 149 | } |
lukas_formanek | 0:7f12b35d7969 | 150 | timer.stop(); |
lukas_formanek | 0:7f12b35d7969 | 151 | } |
lukas_formanek | 0:7f12b35d7969 | 152 | |
lukas_formanek | 0:7f12b35d7969 | 153 | |
lukas_formanek | 0:7f12b35d7969 | 154 | void rxLoraInterrupt() |
lukas_formanek | 0:7f12b35d7969 | 155 | { |
lukas_formanek | 0:7f12b35d7969 | 156 | while (lora.readable()) |
lukas_formanek | 0:7f12b35d7969 | 157 | { |
lukas_formanek | 0:7f12b35d7969 | 158 | char c = lora.getc(); |
lukas_formanek | 0:7f12b35d7969 | 159 | // usb.putc(c); |
lukas_formanek | 0:7f12b35d7969 | 160 | if(rxPtr >= sizeof(rxBuffer) - 1) |
lukas_formanek | 0:7f12b35d7969 | 161 | clearRxBuffer(); |
lukas_formanek | 0:7f12b35d7969 | 162 | rxBuffer[rxPtr++] = c; |
lukas_formanek | 2:e731b7dba32b | 163 | |
lukas_formanek | 0:7f12b35d7969 | 164 | if(c =='\n') |
lukas_formanek | 0:7f12b35d7969 | 165 | { |
lukas_formanek | 0:7f12b35d7969 | 166 | rxDone = true; |
lukas_formanek | 2:e731b7dba32b | 167 | |
lukas_formanek | 2:e731b7dba32b | 168 | if( strncmp( ( const char* )rxBuffer, "at+recv", 7) == 0) |
lukas_formanek | 0:7f12b35d7969 | 169 | { |
lukas_formanek | 0:7f12b35d7969 | 170 | receiveACK = true; |
lukas_formanek | 0:7f12b35d7969 | 171 | snprintf((char *)rxMessage, BUF_SIZE, "%s", rxBuffer); |
lukas_formanek | 0:7f12b35d7969 | 172 | clearRxBuffer(); |
lukas_formanek | 0:7f12b35d7969 | 173 | return; |
lukas_formanek | 0:7f12b35d7969 | 174 | } |
lukas_formanek | 2:e731b7dba32b | 175 | |
lukas_formanek | 2:e731b7dba32b | 176 | if(strncmp( ( const char* )rxBuffer, "OK", 2) == 0) |
lukas_formanek | 0:7f12b35d7969 | 177 | { |
lukas_formanek | 0:7f12b35d7969 | 178 | receiveOK = true; |
lukas_formanek | 0:7f12b35d7969 | 179 | clearRxBuffer(); |
lukas_formanek | 0:7f12b35d7969 | 180 | return; |
lukas_formanek | 0:7f12b35d7969 | 181 | } |
lukas_formanek | 2:e731b7dba32b | 182 | |
lukas_formanek | 2:e731b7dba32b | 183 | if(strncmp( ( const char* )rxBuffer, "ERROR", 5) == 0) |
lukas_formanek | 0:7f12b35d7969 | 184 | { |
lukas_formanek | 0:7f12b35d7969 | 185 | receiveERR = true; |
lukas_formanek | 0:7f12b35d7969 | 186 | numOfERR++; |
lukas_formanek | 0:7f12b35d7969 | 187 | clearRxBuffer(); |
lukas_formanek | 0:7f12b35d7969 | 188 | return; |
lukas_formanek | 0:7f12b35d7969 | 189 | } |
lukas_formanek | 0:7f12b35d7969 | 190 | |
lukas_formanek | 2:e731b7dba32b | 191 | if( strncmp( ( const char* )rxBuffer, "[LoRa]:Join Success", 19) == 0) |
lukas_formanek | 0:7f12b35d7969 | 192 | { |
lukas_formanek | 0:7f12b35d7969 | 193 | receiveJOIN = true; |
lukas_formanek | 0:7f12b35d7969 | 194 | clearRxBuffer(); |
lukas_formanek | 0:7f12b35d7969 | 195 | return; |
lukas_formanek | 0:7f12b35d7969 | 196 | } |
lukas_formanek | 0:7f12b35d7969 | 197 | clearRxBuffer(); |
lukas_formanek | 0:7f12b35d7969 | 198 | } |
lukas_formanek | 0:7f12b35d7969 | 199 | } |
lukas_formanek | 0:7f12b35d7969 | 200 | } |
lukas_formanek | 0:7f12b35d7969 | 201 | |
lukas_formanek | 2:e731b7dba32b | 202 | void onSecondTick() |
lukas_formanek | 0:7f12b35d7969 | 203 | { |
lukas_formanek | 0:7f12b35d7969 | 204 | timeCounter++; |
lukas_formanek | 2:e731b7dba32b | 205 | if(timeCounter >= measurePeriod) |
lukas_formanek | 0:7f12b35d7969 | 206 | { |
lukas_formanek | 0:7f12b35d7969 | 207 | timeCounter = 0; |
lukas_formanek | 0:7f12b35d7969 | 208 | measure = true; |
lukas_formanek | 0:7f12b35d7969 | 209 | return; |
lukas_formanek | 0:7f12b35d7969 | 210 | } |
lukas_formanek | 0:7f12b35d7969 | 211 | } |
lukas_formanek | 0:7f12b35d7969 | 212 | |
lukas_formanek | 0:7f12b35d7969 | 213 | void init() |
lukas_formanek | 0:7f12b35d7969 | 214 | { |
lukas_formanek | 2:e731b7dba32b | 215 | led = 1; // led OFF |
lukas_formanek | 0:7f12b35d7969 | 216 | timeCounter = 0; |
lukas_formanek | 2:e731b7dba32b | 217 | secondTicker.detach(); |
lukas_formanek | 0:7f12b35d7969 | 218 | clearRxBuffer(); |
lukas_formanek | 0:7f12b35d7969 | 219 | lora.attach(&rxLoraInterrupt, Serial::RxIrq); |
lukas_formanek | 0:7f12b35d7969 | 220 | resetModule(); |
lukas_formanek | 0:7f12b35d7969 | 221 | thermometer.initialize(); |
lukas_formanek | 0:7f12b35d7969 | 222 | thermometer.setResolution(twelveBit); |
lukas_formanek | 0:7f12b35d7969 | 223 | memset(buffer, '\0', sizeof(buffer)); |
lukas_formanek | 0:7f12b35d7969 | 224 | memset(hexBuffer, '\0', sizeof(hexBuffer)); |
lukas_formanek | 0:7f12b35d7969 | 225 | memset(rxBuffer, '\0', sizeof(rxBuffer)); |
lukas_formanek | 2:e731b7dba32b | 226 | memset(rxMessage, '\0', sizeof(rxMessage)); |
lukas_formanek | 2:e731b7dba32b | 227 | memset(message, '\0', sizeof(message)); |
lukas_formanek | 2:e731b7dba32b | 228 | sprintf(hexBuffer,"at+send=lora:1:"); |
lukas_formanek | 2:e731b7dba32b | 229 | secondTicker.attach(&onSecondTick, 1.0); |
lukas_formanek | 2:e731b7dba32b | 230 | } |
lukas_formanek | 2:e731b7dba32b | 231 | |
lukas_formanek | 2:e731b7dba32b | 232 | void onMeasure() |
lukas_formanek | 2:e731b7dba32b | 233 | { |
lukas_formanek | 2:e731b7dba32b | 234 | fotoValue = foto.read_u16(); |
lukas_formanek | 2:e731b7dba32b | 235 | batteryValue = (((battery.read_u16()/65535.0)*3.30)/voltage_divider_ref)*V_BATT_REFF; |
lukas_formanek | 2:e731b7dba32b | 236 | lora.printf("at+set_config=device:sleep:0\r\n"); |
lukas_formanek | 2:e731b7dba32b | 237 | temperature = thermometer.readTemperature(); |
lukas_formanek | 2:e731b7dba32b | 238 | sprintf(buffer, "%.2f;%.2f;%d", batteryValue, temperature, fotoValue); |
lukas_formanek | 2:e731b7dba32b | 239 | for(int i=0; i < sizeof(buffer); i++) |
lukas_formanek | 2:e731b7dba32b | 240 | { |
lukas_formanek | 2:e731b7dba32b | 241 | if(buffer[i] == '\0') |
lukas_formanek | 2:e731b7dba32b | 242 | break; |
lukas_formanek | 2:e731b7dba32b | 243 | sprintf(hexBuffer + strlen(hexBuffer), "%02x",buffer[i]); |
lukas_formanek | 2:e731b7dba32b | 244 | } |
lukas_formanek | 2:e731b7dba32b | 245 | #if DEBUG_CONSOLE |
lukas_formanek | 2:e731b7dba32b | 246 | usb.printf("Buffer : %s\r\n", buffer); |
lukas_formanek | 2:e731b7dba32b | 247 | #endif |
lukas_formanek | 2:e731b7dba32b | 248 | lora.printf("%s\r\n", hexBuffer); |
lukas_formanek | 2:e731b7dba32b | 249 | memset(buffer, '\0', sizeof(buffer)); |
lukas_formanek | 2:e731b7dba32b | 250 | memset(hexBuffer, '\0', sizeof(hexBuffer)); |
lukas_formanek | 2:e731b7dba32b | 251 | sprintf(hexBuffer,"at+send=lora:1:"); |
lukas_formanek | 2:e731b7dba32b | 252 | measure=false; |
lukas_formanek | 0:7f12b35d7969 | 253 | } |
lukas_formanek | 0:7f12b35d7969 | 254 | |
lukas_formanek | 2:e731b7dba32b | 255 | void onReceive() |
lukas_formanek | 0:7f12b35d7969 | 256 | { |
lukas_formanek | 2:e731b7dba32b | 257 | #if DEBUG_CONSOLE |
lukas_formanek | 2:e731b7dba32b | 258 | usb.printf("%s",rxMessage); |
lukas_formanek | 2:e731b7dba32b | 259 | #endif |
lukas_formanek | 2:e731b7dba32b | 260 | if(rxMessage[8] != '0') |
lukas_formanek | 0:7f12b35d7969 | 261 | { |
lukas_formanek | 2:e731b7dba32b | 262 | char *e; |
lukas_formanek | 2:e731b7dba32b | 263 | int idx; |
lukas_formanek | 2:e731b7dba32b | 264 | e = strchr(rxMessage, ':'); |
lukas_formanek | 2:e731b7dba32b | 265 | idx = (int)(e - rxMessage); |
lukas_formanek | 2:e731b7dba32b | 266 | char str[3]; |
lukas_formanek | 2:e731b7dba32b | 267 | str[2]='\0'; |
lukas_formanek | 2:e731b7dba32b | 268 | int8_t j = 0; |
lukas_formanek | 2:e731b7dba32b | 269 | memset(message, '\0', sizeof(message)); |
lukas_formanek | 2:e731b7dba32b | 270 | |
lukas_formanek | 2:e731b7dba32b | 271 | for(int i=idx+1; i<sizeof(rxMessage); i+=2) |
lukas_formanek | 0:7f12b35d7969 | 272 | { |
lukas_formanek | 2:e731b7dba32b | 273 | if((rxMessage[i] == '\r') || (rxMessage[i] == '\n')) |
lukas_formanek | 2:e731b7dba32b | 274 | break; |
lukas_formanek | 2:e731b7dba32b | 275 | str[0]=rxMessage[i]; |
lukas_formanek | 2:e731b7dba32b | 276 | str[1]=rxMessage[i+1]; |
lukas_formanek | 2:e731b7dba32b | 277 | char chr = (char)(int)strtol((const char *)str, NULL, 16); |
lukas_formanek | 2:e731b7dba32b | 278 | message[j++] = chr; |
lukas_formanek | 0:7f12b35d7969 | 279 | } |
lukas_formanek | 0:7f12b35d7969 | 280 | |
lukas_formanek | 2:e731b7dba32b | 281 | if(rxMessage[8] == '1') |
lukas_formanek | 2:e731b7dba32b | 282 | { // nastavenie intervalu merania v sekundach |
lukas_formanek | 2:e731b7dba32b | 283 | timeCounter = 0; |
lukas_formanek | 2:e731b7dba32b | 284 | measurePeriod = atoi((const char*)(message)); |
lukas_formanek | 2:e731b7dba32b | 285 | #if DEBUG_CONSOLE |
lukas_formanek | 2:e731b7dba32b | 286 | usb.printf("Converted number : %d \r\n", measurePeriod); |
lukas_formanek | 2:e731b7dba32b | 287 | #endif |
lukas_formanek | 2:e731b7dba32b | 288 | } |
lukas_formanek | 2:e731b7dba32b | 289 | else if(rxMessage[8] == '2') |
lukas_formanek | 2:e731b7dba32b | 290 | { |
lukas_formanek | 2:e731b7dba32b | 291 | if( strncmp( ( const char* )message, "reset", 5) == 0) |
lukas_formanek | 2:e731b7dba32b | 292 | { |
lukas_formanek | 2:e731b7dba32b | 293 | #if DEBUG_CONSOLE |
lukas_formanek | 2:e731b7dba32b | 294 | usb.printf("Received message : %s \r\n", message); |
lukas_formanek | 2:e731b7dba32b | 295 | usb.printf("\r\n ------------ SOFTWARE RESET ------------ \r\n"); |
lukas_formanek | 2:e731b7dba32b | 296 | #endif |
lukas_formanek | 2:e731b7dba32b | 297 | NVIC_SystemReset(); |
lukas_formanek | 2:e731b7dba32b | 298 | } |
lukas_formanek | 2:e731b7dba32b | 299 | lora.printf("at+set_config=device:sleep:0\r\n"); |
lukas_formanek | 2:e731b7dba32b | 300 | wait(0.1); |
lukas_formanek | 2:e731b7dba32b | 301 | lora.printf("%s\r\n", message); |
lukas_formanek | 2:e731b7dba32b | 302 | wait(0.2); |
lukas_formanek | 0:7f12b35d7969 | 303 | } |
lukas_formanek | 2:e731b7dba32b | 304 | #if DEBUG_CONSOLE |
lukas_formanek | 2:e731b7dba32b | 305 | usb.printf("Received message : %s \r\n", message); |
lukas_formanek | 2:e731b7dba32b | 306 | #endif |
lukas_formanek | 0:7f12b35d7969 | 307 | } |
lukas_formanek | 2:e731b7dba32b | 308 | memset(rxMessage, '\0', sizeof(rxMessage)); |
lukas_formanek | 2:e731b7dba32b | 309 | lora.printf("at+set_config=device:sleep:1\r\n"); |
lukas_formanek | 2:e731b7dba32b | 310 | receiveACK = false; |
lukas_formanek | 1:8a60d7a33fa5 | 311 | } |