Firmware
Dependencies: BMI160 ADT7410 Thermistor DS1621 max32630fthr Adafruit_FeatherOLED
functions.cpp@0:556294574340, 2020-07-09 (annotated)
- Committer:
- condato_mbed
- Date:
- Thu Jul 09 15:56:48 2020 +0000
- Revision:
- 0:556294574340
coldchainlogger
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
condato_mbed | 0:556294574340 | 1 | #include "functions.h" |
condato_mbed | 0:556294574340 | 2 | #include "ble_functions.h" |
condato_mbed | 0:556294574340 | 3 | #include "RawSerial.h" |
condato_mbed | 0:556294574340 | 4 | #include <InterruptIn.h> |
condato_mbed | 0:556294574340 | 5 | #include <InterruptManager.h> |
condato_mbed | 0:556294574340 | 6 | #include "bmi160.h" |
condato_mbed | 0:556294574340 | 7 | #include "max32630fthr.h" |
condato_mbed | 0:556294574340 | 8 | #include "max3263x.h" |
condato_mbed | 0:556294574340 | 9 | #include "MAX14690.h" |
condato_mbed | 0:556294574340 | 10 | #include "ADT7410.h" |
condato_mbed | 0:556294574340 | 11 | //#include "Thermistor.h" |
condato_mbed | 0:556294574340 | 12 | #include "Adafruit_SSD1306.h" |
condato_mbed | 0:556294574340 | 13 | #include <BLE.h> |
condato_mbed | 0:556294574340 | 14 | #include "ble/BLE.h" |
condato_mbed | 0:556294574340 | 15 | #include "ble/Gap.h" |
condato_mbed | 0:556294574340 | 16 | #include "SDBlockDevice.h" |
condato_mbed | 0:556294574340 | 17 | #include "FATFileSystem.h" |
condato_mbed | 0:556294574340 | 18 | #include <errno.h> |
condato_mbed | 0:556294574340 | 19 | #include <stdio.h> |
condato_mbed | 0:556294574340 | 20 | #include <time.h> |
condato_mbed | 0:556294574340 | 21 | #include <stdint.h> |
condato_mbed | 0:556294574340 | 22 | |
condato_mbed | 0:556294574340 | 23 | extern char device_id[]; |
condato_mbed | 0:556294574340 | 24 | extern unsigned short int measure_id; |
condato_mbed | 0:556294574340 | 25 | extern unsigned short int log_id; |
condato_mbed | 0:556294574340 | 26 | |
condato_mbed | 0:556294574340 | 27 | extern Serial pan1326b; |
condato_mbed | 0:556294574340 | 28 | extern DigitalOut bt_rst; |
condato_mbed | 0:556294574340 | 29 | |
condato_mbed | 0:556294574340 | 30 | extern volatile int conn_state; |
condato_mbed | 0:556294574340 | 31 | extern bool in_BT; |
condato_mbed | 0:556294574340 | 32 | |
condato_mbed | 0:556294574340 | 33 | extern AnalogIn battery; |
condato_mbed | 0:556294574340 | 34 | |
condato_mbed | 0:556294574340 | 35 | extern DigitalOut r; |
condato_mbed | 0:556294574340 | 36 | extern DigitalOut g; |
condato_mbed | 0:556294574340 | 37 | extern DigitalOut b; |
condato_mbed | 0:556294574340 | 38 | extern DigitalOut RGBs[]; |
condato_mbed | 0:556294574340 | 39 | |
condato_mbed | 0:556294574340 | 40 | extern MAX32630FTHR pegasus; |
condato_mbed | 0:556294574340 | 41 | |
condato_mbed | 0:556294574340 | 42 | extern ADT7410 myADT7410; |
condato_mbed | 0:556294574340 | 43 | //extern Thermistor extruder; |
condato_mbed | 0:556294574340 | 44 | extern I2C i2cm2; |
condato_mbed | 0:556294574340 | 45 | extern MAX14690 max14690; |
condato_mbed | 0:556294574340 | 46 | |
condato_mbed | 0:556294574340 | 47 | extern InterruptIn button; |
condato_mbed | 0:556294574340 | 48 | |
condato_mbed | 0:556294574340 | 49 | extern FATFileSystem fileSystem; |
condato_mbed | 0:556294574340 | 50 | extern SDBlockDevice blockDevice; |
condato_mbed | 0:556294574340 | 51 | |
condato_mbed | 0:556294574340 | 52 | extern I2C i2c; |
condato_mbed | 0:556294574340 | 53 | extern int sensor_temp; |
condato_mbed | 0:556294574340 | 54 | extern Adafruit_SSD1306_I2c featherOLED; |
condato_mbed | 0:556294574340 | 55 | |
condato_mbed | 0:556294574340 | 56 | extern volatile int quit; |
condato_mbed | 0:556294574340 | 57 | extern volatile int ble_return; |
condato_mbed | 0:556294574340 | 58 | extern volatile int conn_state; |
condato_mbed | 0:556294574340 | 59 | extern int counter_ble; |
condato_mbed | 0:556294574340 | 60 | |
condato_mbed | 0:556294574340 | 61 | extern bool error_status; |
condato_mbed | 0:556294574340 | 62 | extern bool BT_error; |
condato_mbed | 0:556294574340 | 63 | extern bool shipping; |
condato_mbed | 0:556294574340 | 64 | extern bool pause; |
condato_mbed | 0:556294574340 | 65 | extern bool init_status; |
condato_mbed | 0:556294574340 | 66 | extern bool after_BT; |
condato_mbed | 0:556294574340 | 67 | extern bool charge; |
condato_mbed | 0:556294574340 | 68 | |
condato_mbed | 0:556294574340 | 69 | extern Timeout after_BLE; |
condato_mbed | 0:556294574340 | 70 | extern Timeout turnoff; |
condato_mbed | 0:556294574340 | 71 | extern Timeout flipper; // |
condato_mbed | 0:556294574340 | 72 | extern Timeout advertise_cancel; // Zum abbrechen von BT bei keinem Verbindungsaufbau |
condato_mbed | 0:556294574340 | 73 | extern Timeout connected_cancel; // Zum abbrechen von BT bei kein Befehlempfang |
condato_mbed | 0:556294574340 | 74 | extern Ticker mess_timer; // ticker eventuell nur bis 30 Minuten geeignet |
condato_mbed | 0:556294574340 | 75 | extern Ticker ticker; |
condato_mbed | 0:556294574340 | 76 | extern time_t now; |
condato_mbed | 0:556294574340 | 77 | extern time_t raw; |
condato_mbed | 0:556294574340 | 78 | |
condato_mbed | 0:556294574340 | 79 | extern float buffer_temp; |
condato_mbed | 0:556294574340 | 80 | extern struct tm current; |
condato_mbed | 0:556294574340 | 81 | extern struct tm actual; |
condato_mbed | 0:556294574340 | 82 | |
condato_mbed | 0:556294574340 | 83 | extern struct user_config_struct user_config_para; |
condato_mbed | 0:556294574340 | 84 | extern struct tm user_config_time; |
condato_mbed | 0:556294574340 | 85 | |
condato_mbed | 0:556294574340 | 86 | extern Timeout done_rcv; |
condato_mbed | 0:556294574340 | 87 | |
condato_mbed | 0:556294574340 | 88 | extern int next_state; |
condato_mbed | 0:556294574340 | 89 | |
condato_mbed | 0:556294574340 | 90 | extern int unsigned long t_diff; |
condato_mbed | 0:556294574340 | 91 | extern int unsigned long unix_time; |
condato_mbed | 0:556294574340 | 92 | |
condato_mbed | 0:556294574340 | 93 | extern int default_advertise_time; |
condato_mbed | 0:556294574340 | 94 | extern int default_connected_time; |
condato_mbed | 0:556294574340 | 95 | |
condato_mbed | 0:556294574340 | 96 | extern int alert_count; |
condato_mbed | 0:556294574340 | 97 | |
condato_mbed | 0:556294574340 | 98 | void turnON(){ |
condato_mbed | 0:556294574340 | 99 | max14690.writeReg(MAX14690::REG_PWR_CFG, 0x1D); |
condato_mbed | 0:556294574340 | 100 | char string[] = "Coldchainlogger turned on"; |
condato_mbed | 0:556294574340 | 101 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 102 | } |
condato_mbed | 0:556294574340 | 103 | |
condato_mbed | 0:556294574340 | 104 | void reboot(){ |
condato_mbed | 0:556294574340 | 105 | char string[] = "Rebooting Coldchainlogger..."; |
condato_mbed | 0:556294574340 | 106 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 107 | printf("\n__________________________\n\nRebooting Coldchainlogger\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 108 | log_id -= 2; |
condato_mbed | 0:556294574340 | 109 | BT_false(); |
condato_mbed | 0:556294574340 | 110 | wait(0.2); |
condato_mbed | 0:556294574340 | 111 | NVIC_SystemReset(); |
condato_mbed | 0:556294574340 | 112 | } |
condato_mbed | 0:556294574340 | 113 | |
condato_mbed | 0:556294574340 | 114 | void set_time(){ |
condato_mbed | 0:556294574340 | 115 | unix_time = 946684800; //946684800: 2000-01-01 00:00:00 |
condato_mbed | 0:556294574340 | 116 | now = time(0); |
condato_mbed | 0:556294574340 | 117 | time(&now); |
condato_mbed | 0:556294574340 | 118 | set_time(unix_time); |
condato_mbed | 0:556294574340 | 119 | } |
condato_mbed | 0:556294574340 | 120 | |
condato_mbed | 0:556294574340 | 121 | int set_app_time(unsigned long device_time){ |
condato_mbed | 0:556294574340 | 122 | printf("\nDevice time: %ld\n", device_time); |
condato_mbed | 0:556294574340 | 123 | if(device_time >= 946684800){ |
condato_mbed | 0:556294574340 | 124 | unix_time = device_time; |
condato_mbed | 0:556294574340 | 125 | now = time(0); |
condato_mbed | 0:556294574340 | 126 | time(&now); |
condato_mbed | 0:556294574340 | 127 | set_time(unix_time); |
condato_mbed | 0:556294574340 | 128 | |
condato_mbed | 0:556294574340 | 129 | tm *current; |
condato_mbed | 0:556294574340 | 130 | time(&now); |
condato_mbed | 0:556294574340 | 131 | current = localtime (&now); |
condato_mbed | 0:556294574340 | 132 | char string[] = "Device time updated"; |
condato_mbed | 0:556294574340 | 133 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 134 | printf ("\nDate: 20%02d-%02d-%02d %02d:%02d:%02d\r\n", current->tm_year - 100, current->tm_mon + 1, current->tm_mday, current->tm_hour, current->tm_min, current->tm_sec); |
condato_mbed | 0:556294574340 | 135 | printf("\n__________________________\n\nNew device time applied\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 136 | |
condato_mbed | 0:556294574340 | 137 | return 1; |
condato_mbed | 0:556294574340 | 138 | }else{ |
condato_mbed | 0:556294574340 | 139 | printf("\n__________________________\n\nCan not applie new device time\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 140 | |
condato_mbed | 0:556294574340 | 141 | return -1; |
condato_mbed | 0:556294574340 | 142 | } |
condato_mbed | 0:556294574340 | 143 | } |
condato_mbed | 0:556294574340 | 144 | |
condato_mbed | 0:556294574340 | 145 | void write_to_sd_log_single(char log_string[]) |
condato_mbed | 0:556294574340 | 146 | { |
condato_mbed | 0:556294574340 | 147 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 148 | fflush(stdout); |
condato_mbed | 0:556294574340 | 149 | |
condato_mbed | 0:556294574340 | 150 | fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 151 | |
condato_mbed | 0:556294574340 | 152 | char file_name[14] = "/fs/log"; |
condato_mbed | 0:556294574340 | 153 | char file_type[10] = ".csv"; |
condato_mbed | 0:556294574340 | 154 | char buff_file[25]; |
condato_mbed | 0:556294574340 | 155 | sprintf(buff_file, "%s%s", file_name, file_type); |
condato_mbed | 0:556294574340 | 156 | FILE * f = fopen(buff_file, "a"); |
condato_mbed | 0:556294574340 | 157 | |
condato_mbed | 0:556294574340 | 158 | log_id++; |
condato_mbed | 0:556294574340 | 159 | |
condato_mbed | 0:556294574340 | 160 | tm *current; |
condato_mbed | 0:556294574340 | 161 | time(&now); |
condato_mbed | 0:556294574340 | 162 | current = localtime (&now); |
condato_mbed | 0:556294574340 | 163 | fprintf(f, "%d;20%02d-%02d-%02d;%02d:%02d:%02d;%s;\r\n", log_id, current->tm_year - 100, current->tm_mon + 1, current->tm_mday, current->tm_hour, current->tm_min, current->tm_sec, log_string); |
condato_mbed | 0:556294574340 | 164 | |
condato_mbed | 0:556294574340 | 165 | fclose(f); |
condato_mbed | 0:556294574340 | 166 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 167 | } |
condato_mbed | 0:556294574340 | 168 | |
condato_mbed | 0:556294574340 | 169 | void write_to_sd_messdaten_single(float buffer_temp) |
condato_mbed | 0:556294574340 | 170 | { |
condato_mbed | 0:556294574340 | 171 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 172 | fflush(stdout); |
condato_mbed | 0:556294574340 | 173 | |
condato_mbed | 0:556294574340 | 174 | |
condato_mbed | 0:556294574340 | 175 | fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 176 | |
condato_mbed | 0:556294574340 | 177 | char file_name[14] = "/fs/messdaten"; |
condato_mbed | 0:556294574340 | 178 | char file_type[10] = ".csv"; |
condato_mbed | 0:556294574340 | 179 | char buff_file[25]; |
condato_mbed | 0:556294574340 | 180 | sprintf(buff_file, "%s%s", file_name, file_type); |
condato_mbed | 0:556294574340 | 181 | FILE * f = fopen(buff_file, "a"); |
condato_mbed | 0:556294574340 | 182 | |
condato_mbed | 0:556294574340 | 183 | int buffer_conv = (int)(100 * buffer_temp); |
condato_mbed | 0:556294574340 | 184 | |
condato_mbed | 0:556294574340 | 185 | measure_id++; |
condato_mbed | 0:556294574340 | 186 | |
condato_mbed | 0:556294574340 | 187 | tm *current; |
condato_mbed | 0:556294574340 | 188 | time(&now); |
condato_mbed | 0:556294574340 | 189 | current = localtime (&now); |
condato_mbed | 0:556294574340 | 190 | fprintf(f, "%d;20%02d-%02d-%02d;%02d:%02d:%02d;%d;%4d;\r\n", measure_id, current->tm_year - 100, current->tm_mon + 1, current->tm_mday, current->tm_hour, current->tm_min, current->tm_sec, sensor_temp, buffer_conv); |
condato_mbed | 0:556294574340 | 191 | /* |
condato_mbed | 0:556294574340 | 192 | if(sensor_temp == 2){ |
condato_mbed | 0:556294574340 | 193 | sensor_temp = 1; |
condato_mbed | 0:556294574340 | 194 | }else{ |
condato_mbed | 0:556294574340 | 195 | sensor_temp = 2; |
condato_mbed | 0:556294574340 | 196 | } |
condato_mbed | 0:556294574340 | 197 | */ |
condato_mbed | 0:556294574340 | 198 | fclose(f); |
condato_mbed | 0:556294574340 | 199 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 200 | } |
condato_mbed | 0:556294574340 | 201 | |
condato_mbed | 0:556294574340 | 202 | void get_save_Messpunkt(float temperatur) |
condato_mbed | 0:556294574340 | 203 | { |
condato_mbed | 0:556294574340 | 204 | buffer_temp = temperatur; |
condato_mbed | 0:556294574340 | 205 | |
condato_mbed | 0:556294574340 | 206 | tm *current; |
condato_mbed | 0:556294574340 | 207 | time(&now); |
condato_mbed | 0:556294574340 | 208 | current = localtime (&now); |
condato_mbed | 0:556294574340 | 209 | write_to_sd_messdaten_single(buffer_temp); |
condato_mbed | 0:556294574340 | 210 | |
condato_mbed | 0:556294574340 | 211 | printf ("Measurement %d saved 20%02d-%02d-%02d %02d:%02d:%02d\r\n", measure_id, current->tm_year - 100, current->tm_mon + 1, current->tm_mday, current->tm_hour, current->tm_min, current->tm_sec); |
condato_mbed | 0:556294574340 | 212 | } |
condato_mbed | 0:556294574340 | 213 | |
condato_mbed | 0:556294574340 | 214 | float get_Messwert() |
condato_mbed | 0:556294574340 | 215 | { |
condato_mbed | 0:556294574340 | 216 | float temperatur = 0; |
condato_mbed | 0:556294574340 | 217 | //float temperatur_2 = 0; |
condato_mbed | 0:556294574340 | 218 | if(myADT7410.getTemp()){ |
condato_mbed | 0:556294574340 | 219 | temperatur = myADT7410.getTemp(); |
condato_mbed | 0:556294574340 | 220 | //temperatur_2 = extruder.get_temperature(); |
condato_mbed | 0:556294574340 | 221 | wait(0.3); |
condato_mbed | 0:556294574340 | 222 | printf("\nTemperature Sensor mesureued: %.2f C\n", temperatur); |
condato_mbed | 0:556294574340 | 223 | // printf("Temperature Thermistor mesureued: %.2f C\n\n", temperatur_2); |
condato_mbed | 0:556294574340 | 224 | |
condato_mbed | 0:556294574340 | 225 | if(user_config_para.alert == 1){ |
condato_mbed | 0:556294574340 | 226 | if(user_config_para.minimum > temperatur){ |
condato_mbed | 0:556294574340 | 227 | char string[] = "ALERT: lower threshold limit below"; |
condato_mbed | 0:556294574340 | 228 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 229 | |
condato_mbed | 0:556294574340 | 230 | printf("ALERT: lower threshold limit below (lower limit: %d C)\n", user_config_para.minimum); |
condato_mbed | 0:556294574340 | 231 | }else if(user_config_para.maximum < temperatur){ |
condato_mbed | 0:556294574340 | 232 | char string[] = "ALERT: upper threshold exceeded"; |
condato_mbed | 0:556294574340 | 233 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 234 | |
condato_mbed | 0:556294574340 | 235 | printf("ALERT: upper threshold exceeded (upper limit: %d C)\n", user_config_para.maximum); |
condato_mbed | 0:556294574340 | 236 | } |
condato_mbed | 0:556294574340 | 237 | alert_count++; |
condato_mbed | 0:556294574340 | 238 | } |
condato_mbed | 0:556294574340 | 239 | |
condato_mbed | 0:556294574340 | 240 | get_save_Messpunkt(temperatur); |
condato_mbed | 0:556294574340 | 241 | //get_save_Messpunkt(temperatur_2); |
condato_mbed | 0:556294574340 | 242 | |
condato_mbed | 0:556294574340 | 243 | return temperatur; |
condato_mbed | 0:556294574340 | 244 | }else{ |
condato_mbed | 0:556294574340 | 245 | char string[] = "Temperature sensor not detected, unable to measure"; |
condato_mbed | 0:556294574340 | 246 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 247 | printf("\nTemperature sensor not detected, unable to measure!\n"); |
condato_mbed | 0:556294574340 | 248 | |
condato_mbed | 0:556294574340 | 249 | return -278.0; |
condato_mbed | 0:556294574340 | 250 | } |
condato_mbed | 0:556294574340 | 251 | } |
condato_mbed | 0:556294574340 | 252 | |
condato_mbed | 0:556294574340 | 253 | int create_file_messdaten(){ |
condato_mbed | 0:556294574340 | 254 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 255 | fflush(stdout); |
condato_mbed | 0:556294574340 | 256 | |
condato_mbed | 0:556294574340 | 257 | int file_err = fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 258 | if(file_err){ |
condato_mbed | 0:556294574340 | 259 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 260 | |
condato_mbed | 0:556294574340 | 261 | char string[] = "SD mount error"; |
condato_mbed | 0:556294574340 | 262 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 263 | |
condato_mbed | 0:556294574340 | 264 | printf("\n__________________________\n\n! No SD-card detected !\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 265 | |
condato_mbed | 0:556294574340 | 266 | return -1; |
condato_mbed | 0:556294574340 | 267 | }else{ |
condato_mbed | 0:556294574340 | 268 | |
condato_mbed | 0:556294574340 | 269 | char file_name[14] = "/fs/messdaten"; |
condato_mbed | 0:556294574340 | 270 | char file_type[10] = ".csv"; |
condato_mbed | 0:556294574340 | 271 | char buff_file[25]; |
condato_mbed | 0:556294574340 | 272 | sprintf(buff_file, "%s%s", file_name, file_type); |
condato_mbed | 0:556294574340 | 273 | FILE * f = fopen(buff_file, "a"); |
condato_mbed | 0:556294574340 | 274 | |
condato_mbed | 0:556294574340 | 275 | fclose(f); |
condato_mbed | 0:556294574340 | 276 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 277 | |
condato_mbed | 0:556294574340 | 278 | return 1; |
condato_mbed | 0:556294574340 | 279 | } |
condato_mbed | 0:556294574340 | 280 | } |
condato_mbed | 0:556294574340 | 281 | |
condato_mbed | 0:556294574340 | 282 | int create_file_log() |
condato_mbed | 0:556294574340 | 283 | { |
condato_mbed | 0:556294574340 | 284 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 285 | fflush(stdout); |
condato_mbed | 0:556294574340 | 286 | |
condato_mbed | 0:556294574340 | 287 | int file_err = fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 288 | if(file_err){ |
condato_mbed | 0:556294574340 | 289 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 290 | |
condato_mbed | 0:556294574340 | 291 | char string[] = "SD mount error"; |
condato_mbed | 0:556294574340 | 292 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 293 | |
condato_mbed | 0:556294574340 | 294 | printf("\n__________________________\n\n! No SD-card detected !\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 295 | |
condato_mbed | 0:556294574340 | 296 | return -1; |
condato_mbed | 0:556294574340 | 297 | }else{ |
condato_mbed | 0:556294574340 | 298 | |
condato_mbed | 0:556294574340 | 299 | char file_name[14] = "/fs/log"; |
condato_mbed | 0:556294574340 | 300 | char file_type[10] = ".csv"; |
condato_mbed | 0:556294574340 | 301 | char buff_file[25]; |
condato_mbed | 0:556294574340 | 302 | sprintf(buff_file, "%s%s", file_name, file_type); |
condato_mbed | 0:556294574340 | 303 | FILE * f = fopen(buff_file, "a"); |
condato_mbed | 0:556294574340 | 304 | |
condato_mbed | 0:556294574340 | 305 | fclose(f); |
condato_mbed | 0:556294574340 | 306 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 307 | |
condato_mbed | 0:556294574340 | 308 | return 1; |
condato_mbed | 0:556294574340 | 309 | } |
condato_mbed | 0:556294574340 | 310 | } |
condato_mbed | 0:556294574340 | 311 | |
condato_mbed | 0:556294574340 | 312 | int delete_file_messdaten(){ |
condato_mbed | 0:556294574340 | 313 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 314 | fflush(stdout); |
condato_mbed | 0:556294574340 | 315 | |
condato_mbed | 0:556294574340 | 316 | int file_err = fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 317 | if(file_err) |
condato_mbed | 0:556294574340 | 318 | { |
condato_mbed | 0:556294574340 | 319 | char string[] = "SD mount error"; |
condato_mbed | 0:556294574340 | 320 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 321 | |
condato_mbed | 0:556294574340 | 322 | printf("\n__________________________\n\n! No SD-card detected !\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 323 | |
condato_mbed | 0:556294574340 | 324 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 325 | |
condato_mbed | 0:556294574340 | 326 | return -1; |
condato_mbed | 0:556294574340 | 327 | }else{ |
condato_mbed | 0:556294574340 | 328 | remove("/fs/messdaten.csv"); |
condato_mbed | 0:556294574340 | 329 | wait(0.2); |
condato_mbed | 0:556294574340 | 330 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 331 | fflush(stdout); |
condato_mbed | 0:556294574340 | 332 | |
condato_mbed | 0:556294574340 | 333 | char string_1[] = "Measuring data file deleted"; |
condato_mbed | 0:556294574340 | 334 | write_to_sd_log_single(string_1); |
condato_mbed | 0:556294574340 | 335 | |
condato_mbed | 0:556294574340 | 336 | if(create_file_messdaten() == 1){ |
condato_mbed | 0:556294574340 | 337 | |
condato_mbed | 0:556294574340 | 338 | char string[] = "New measuring data file created"; |
condato_mbed | 0:556294574340 | 339 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 340 | |
condato_mbed | 0:556294574340 | 341 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 342 | |
condato_mbed | 0:556294574340 | 343 | measure_id = 0; |
condato_mbed | 0:556294574340 | 344 | |
condato_mbed | 0:556294574340 | 345 | printf("\n__________________________\n\nMeasuring data deleted\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 346 | return 1; |
condato_mbed | 0:556294574340 | 347 | }else{ |
condato_mbed | 0:556294574340 | 348 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 349 | printf("\nError while creating new file\n"); |
condato_mbed | 0:556294574340 | 350 | return -1; |
condato_mbed | 0:556294574340 | 351 | } |
condato_mbed | 0:556294574340 | 352 | } |
condato_mbed | 0:556294574340 | 353 | } |
condato_mbed | 0:556294574340 | 354 | |
condato_mbed | 0:556294574340 | 355 | int delete_file_log(){ |
condato_mbed | 0:556294574340 | 356 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 357 | fflush(stdout); |
condato_mbed | 0:556294574340 | 358 | |
condato_mbed | 0:556294574340 | 359 | int file_err = fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 360 | if(file_err) |
condato_mbed | 0:556294574340 | 361 | { |
condato_mbed | 0:556294574340 | 362 | char string[] = "SD mount error"; |
condato_mbed | 0:556294574340 | 363 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 364 | |
condato_mbed | 0:556294574340 | 365 | printf("\n__________________________\n\n! No SD-card detected !\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 366 | |
condato_mbed | 0:556294574340 | 367 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 368 | |
condato_mbed | 0:556294574340 | 369 | return -1; |
condato_mbed | 0:556294574340 | 370 | }else{ |
condato_mbed | 0:556294574340 | 371 | |
condato_mbed | 0:556294574340 | 372 | remove("/fs/log.csv"); |
condato_mbed | 0:556294574340 | 373 | wait(0.2); |
condato_mbed | 0:556294574340 | 374 | /* |
condato_mbed | 0:556294574340 | 375 | char string_1[] = "Log file deleted"; |
condato_mbed | 0:556294574340 | 376 | write_to_sd_log_single(string_1); |
condato_mbed | 0:556294574340 | 377 | */ |
condato_mbed | 0:556294574340 | 378 | if(create_file_log() == 1){ |
condato_mbed | 0:556294574340 | 379 | |
condato_mbed | 0:556294574340 | 380 | log_id = 0; |
condato_mbed | 0:556294574340 | 381 | |
condato_mbed | 0:556294574340 | 382 | char string[] = "New log data file created"; |
condato_mbed | 0:556294574340 | 383 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 384 | |
condato_mbed | 0:556294574340 | 385 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 386 | |
condato_mbed | 0:556294574340 | 387 | printf("\n__________________________\n\nLog deleted\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 388 | return 1; |
condato_mbed | 0:556294574340 | 389 | }else{ |
condato_mbed | 0:556294574340 | 390 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 391 | printf("\nError while creating new file\n"); |
condato_mbed | 0:556294574340 | 392 | return -1; |
condato_mbed | 0:556294574340 | 393 | } |
condato_mbed | 0:556294574340 | 394 | } |
condato_mbed | 0:556294574340 | 395 | } |
condato_mbed | 0:556294574340 | 396 | |
condato_mbed | 0:556294574340 | 397 | int file_copy(const char *src, const char *dst) |
condato_mbed | 0:556294574340 | 398 | { |
condato_mbed | 0:556294574340 | 399 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 400 | fflush(stdout); |
condato_mbed | 0:556294574340 | 401 | |
condato_mbed | 0:556294574340 | 402 | int retval = 0; |
condato_mbed | 0:556294574340 | 403 | int ch; |
condato_mbed | 0:556294574340 | 404 | |
condato_mbed | 0:556294574340 | 405 | int file_err = fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 406 | if(file_err) |
condato_mbed | 0:556294574340 | 407 | { |
condato_mbed | 0:556294574340 | 408 | printf("\n__________________________\n\n! No SD-card detected !\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 409 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 410 | |
condato_mbed | 0:556294574340 | 411 | return -1; |
condato_mbed | 0:556294574340 | 412 | }else{ |
condato_mbed | 0:556294574340 | 413 | |
condato_mbed | 0:556294574340 | 414 | FILE *fpsrc = fopen(src, "r"); // src file |
condato_mbed | 0:556294574340 | 415 | FILE *fpdst = fopen(dst, "w"); // dest file |
condato_mbed | 0:556294574340 | 416 | |
condato_mbed | 0:556294574340 | 417 | while (1) { // Copy src to dest |
condato_mbed | 0:556294574340 | 418 | ch = fgetc(fpsrc); // until src EOF read. |
condato_mbed | 0:556294574340 | 419 | if (ch == EOF) break; |
condato_mbed | 0:556294574340 | 420 | fputc(ch, fpdst); |
condato_mbed | 0:556294574340 | 421 | } |
condato_mbed | 0:556294574340 | 422 | fclose(fpsrc); |
condato_mbed | 0:556294574340 | 423 | fclose(fpdst); |
condato_mbed | 0:556294574340 | 424 | |
condato_mbed | 0:556294574340 | 425 | fpdst = fopen(dst, "r"); // Reopen dest to insure |
condato_mbed | 0:556294574340 | 426 | if (fpdst == NULL) { // that it was created. |
condato_mbed | 0:556294574340 | 427 | retval = -1; // Return error. |
condato_mbed | 0:556294574340 | 428 | } else { |
condato_mbed | 0:556294574340 | 429 | fclose(fpdst); |
condato_mbed | 0:556294574340 | 430 | retval = 0; // Return success. |
condato_mbed | 0:556294574340 | 431 | } |
condato_mbed | 0:556294574340 | 432 | return retval; |
condato_mbed | 0:556294574340 | 433 | } |
condato_mbed | 0:556294574340 | 434 | } |
condato_mbed | 0:556294574340 | 435 | |
condato_mbed | 0:556294574340 | 436 | int load_user_config() |
condato_mbed | 0:556294574340 | 437 | { |
condato_mbed | 0:556294574340 | 438 | printf("\n__________________________\n\nReading the config\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 439 | |
condato_mbed | 0:556294574340 | 440 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 441 | fflush(stdout); |
condato_mbed | 0:556294574340 | 442 | |
condato_mbed | 0:556294574340 | 443 | int file_err = fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 444 | if(file_err) |
condato_mbed | 0:556294574340 | 445 | { |
condato_mbed | 0:556294574340 | 446 | printf("\n__________________________\n\n! No SD-card detected !\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 447 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 448 | |
condato_mbed | 0:556294574340 | 449 | return -1; |
condato_mbed | 0:556294574340 | 450 | }else{ |
condato_mbed | 0:556294574340 | 451 | |
condato_mbed | 0:556294574340 | 452 | FILE * conf = fopen ("/fs/user_config.csv", "rb"); |
condato_mbed | 0:556294574340 | 453 | char buffer[700]; |
condato_mbed | 0:556294574340 | 454 | int length; |
condato_mbed | 0:556294574340 | 455 | |
condato_mbed | 0:556294574340 | 456 | if (conf) |
condato_mbed | 0:556294574340 | 457 | { |
condato_mbed | 0:556294574340 | 458 | fseek (conf, 0, SEEK_END); |
condato_mbed | 0:556294574340 | 459 | length = ftell (conf); |
condato_mbed | 0:556294574340 | 460 | fseek (conf, 0, SEEK_SET); |
condato_mbed | 0:556294574340 | 461 | |
condato_mbed | 0:556294574340 | 462 | if (buffer) |
condato_mbed | 0:556294574340 | 463 | { |
condato_mbed | 0:556294574340 | 464 | fread (buffer, 1, length, conf); |
condato_mbed | 0:556294574340 | 465 | } |
condato_mbed | 0:556294574340 | 466 | fclose(conf); |
condato_mbed | 0:556294574340 | 467 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 468 | |
condato_mbed | 0:556294574340 | 469 | if (buffer) |
condato_mbed | 0:556294574340 | 470 | { |
condato_mbed | 0:556294574340 | 471 | char* single_word[100]; |
condato_mbed | 0:556294574340 | 472 | int word_count = 0; |
condato_mbed | 0:556294574340 | 473 | char delim[] = ";\r\n"; |
condato_mbed | 0:556294574340 | 474 | char *ptr = strtok(buffer, delim); |
condato_mbed | 0:556294574340 | 475 | |
condato_mbed | 0:556294574340 | 476 | for(int j = 0; j < 100; j++) |
condato_mbed | 0:556294574340 | 477 | { |
condato_mbed | 0:556294574340 | 478 | single_word[j] = new char[15]; |
condato_mbed | 0:556294574340 | 479 | } |
condato_mbed | 0:556294574340 | 480 | |
condato_mbed | 0:556294574340 | 481 | while (ptr != NULL) |
condato_mbed | 0:556294574340 | 482 | { |
condato_mbed | 0:556294574340 | 483 | strcpy(single_word[word_count], ptr); |
condato_mbed | 0:556294574340 | 484 | ptr = strtok(NULL, delim); |
condato_mbed | 0:556294574340 | 485 | word_count++; |
condato_mbed | 0:556294574340 | 486 | } |
condato_mbed | 0:556294574340 | 487 | |
condato_mbed | 0:556294574340 | 488 | const char *params[] = {"interval", "alert", "minimum", "maximum", "wait_mode", "pre_delay", "advertise", "connected"}; |
condato_mbed | 0:556294574340 | 489 | for(int k = 0; k < 100; k++) |
condato_mbed | 0:556294574340 | 490 | { |
condato_mbed | 0:556294574340 | 491 | for(int l = 0; l < 8; l++) |
condato_mbed | 0:556294574340 | 492 | { |
condato_mbed | 0:556294574340 | 493 | if(strcmp(single_word[k], params[0]) == 0){ |
condato_mbed | 0:556294574340 | 494 | user_config_para.interval = atoi(single_word[k+1]); |
condato_mbed | 0:556294574340 | 495 | } |
condato_mbed | 0:556294574340 | 496 | else if(strcmp(single_word[k], params[1]) == 0){ |
condato_mbed | 0:556294574340 | 497 | user_config_para.alert = atoi(single_word[k+1]); |
condato_mbed | 0:556294574340 | 498 | } |
condato_mbed | 0:556294574340 | 499 | else if(strcmp(single_word[k], params[2]) == 0){ |
condato_mbed | 0:556294574340 | 500 | user_config_para.minimum = atoi(single_word[k+1]); |
condato_mbed | 0:556294574340 | 501 | } |
condato_mbed | 0:556294574340 | 502 | else if(strcmp(single_word[k], params[3]) == 0){ |
condato_mbed | 0:556294574340 | 503 | user_config_para.maximum = atoi(single_word[k+1]); |
condato_mbed | 0:556294574340 | 504 | } |
condato_mbed | 0:556294574340 | 505 | else if(strcmp(single_word[k], params[4]) == 0){ |
condato_mbed | 0:556294574340 | 506 | user_config_para.wait_mode = atoi(single_word[k+1]); |
condato_mbed | 0:556294574340 | 507 | } |
condato_mbed | 0:556294574340 | 508 | else if(strcmp(single_word[k], params[5]) == 0){ |
condato_mbed | 0:556294574340 | 509 | user_config_para.pre_delay = atoi(single_word[k+1]); |
condato_mbed | 0:556294574340 | 510 | } |
condato_mbed | 0:556294574340 | 511 | else if(strcmp(single_word[k], params[6]) == 0){ |
condato_mbed | 0:556294574340 | 512 | user_config_para.advertise = atoi(single_word[k+1]); |
condato_mbed | 0:556294574340 | 513 | } |
condato_mbed | 0:556294574340 | 514 | else if(strcmp(single_word[k], params[7]) == 0){ |
condato_mbed | 0:556294574340 | 515 | user_config_para.connected = atoi(single_word[k+1]); |
condato_mbed | 0:556294574340 | 516 | } |
condato_mbed | 0:556294574340 | 517 | } |
condato_mbed | 0:556294574340 | 518 | } |
condato_mbed | 0:556294574340 | 519 | |
condato_mbed | 0:556294574340 | 520 | //printf("\nID: #%s\n", user_config_para.id); |
condato_mbed | 0:556294574340 | 521 | |
condato_mbed | 0:556294574340 | 522 | //char idnummer[10]; |
condato_mbed | 0:556294574340 | 523 | //sscanf(idnummer, "%d", &user_config_para.id); |
condato_mbed | 0:556294574340 | 524 | |
condato_mbed | 0:556294574340 | 525 | printf("\nLogger-ID: #%s\n", device_id); |
condato_mbed | 0:556294574340 | 526 | if(user_config_para.interval == 1){ |
condato_mbed | 0:556294574340 | 527 | printf("Mesureual interval: %d second\n", user_config_para.interval); |
condato_mbed | 0:556294574340 | 528 | }else{ |
condato_mbed | 0:556294574340 | 529 | printf("Mesureual interval: %d seconds\n", user_config_para.interval); |
condato_mbed | 0:556294574340 | 530 | } |
condato_mbed | 0:556294574340 | 531 | if(user_config_para.alert == 1){ |
condato_mbed | 0:556294574340 | 532 | printf("Alert-function - ON\n"); |
condato_mbed | 0:556294574340 | 533 | printf("Minimum temperature: %d C | Maximum temperature: %d C\n", user_config_para.minimum, user_config_para.maximum); |
condato_mbed | 0:556294574340 | 534 | }else{ |
condato_mbed | 0:556294574340 | 535 | printf("Alert-function - OFF\n"); |
condato_mbed | 0:556294574340 | 536 | } |
condato_mbed | 0:556294574340 | 537 | printf("BLE advertise timer: %d seconds\n", user_config_para.advertise); |
condato_mbed | 0:556294574340 | 538 | printf("BLE when connected timer: %d seconds\n", user_config_para.connected); |
condato_mbed | 0:556294574340 | 539 | |
condato_mbed | 0:556294574340 | 540 | if(user_config_para.wait_mode == 1){ |
condato_mbed | 0:556294574340 | 541 | printf("Pre-delay - ON: %d seconds\n", user_config_para.pre_delay); |
condato_mbed | 0:556294574340 | 542 | }else{ |
condato_mbed | 0:556294574340 | 543 | printf("Pre-delay - OFF\n"); |
condato_mbed | 0:556294574340 | 544 | } |
condato_mbed | 0:556294574340 | 545 | } |
condato_mbed | 0:556294574340 | 546 | else{ |
condato_mbed | 0:556294574340 | 547 | printf("Buffer empty: %s", buffer); |
condato_mbed | 0:556294574340 | 548 | } |
condato_mbed | 0:556294574340 | 549 | return 1; |
condato_mbed | 0:556294574340 | 550 | } |
condato_mbed | 0:556294574340 | 551 | else{ |
condato_mbed | 0:556294574340 | 552 | printf("!!! Config file not found, error: %s (%d)\n", strerror(errno), -errno); |
condato_mbed | 0:556294574340 | 553 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 554 | user_config_para.advertise = default_advertise_time; |
condato_mbed | 0:556294574340 | 555 | user_config_para.connected = default_connected_time; |
condato_mbed | 0:556294574340 | 556 | return -1; |
condato_mbed | 0:556294574340 | 557 | } |
condato_mbed | 0:556294574340 | 558 | } |
condato_mbed | 0:556294574340 | 559 | } |
condato_mbed | 0:556294574340 | 560 | |
condato_mbed | 0:556294574340 | 561 | int load_standard_config(){ |
condato_mbed | 0:556294574340 | 562 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 563 | fflush(stdout); |
condato_mbed | 0:556294574340 | 564 | |
condato_mbed | 0:556294574340 | 565 | printf("\n__________________________\n\nReseting config settings \nto default\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 566 | |
condato_mbed | 0:556294574340 | 567 | int file_err = fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 568 | |
condato_mbed | 0:556294574340 | 569 | if(file_err){ |
condato_mbed | 0:556294574340 | 570 | printf("\n__________________________\n\n! No SD-card detected !\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 571 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 572 | |
condato_mbed | 0:556294574340 | 573 | return -1; |
condato_mbed | 0:556294574340 | 574 | }else{ |
condato_mbed | 0:556294574340 | 575 | remove("/fs/user_config.csv"); |
condato_mbed | 0:556294574340 | 576 | wait(0.2); |
condato_mbed | 0:556294574340 | 577 | |
condato_mbed | 0:556294574340 | 578 | if(file_copy("/fs/standard_config.csv", "/fs/user_config.csv") == 0){ |
condato_mbed | 0:556294574340 | 579 | load_user_config(); |
condato_mbed | 0:556294574340 | 580 | |
condato_mbed | 0:556294574340 | 581 | printf("\n__________________________\n\nConfig settings reseted\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 582 | char string[] = "Standard user config file created"; |
condato_mbed | 0:556294574340 | 583 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 584 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 585 | |
condato_mbed | 0:556294574340 | 586 | return 1; |
condato_mbed | 0:556294574340 | 587 | }else{ |
condato_mbed | 0:556294574340 | 588 | printf("\n__________________________\n\nFailed to reset config file\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 589 | char string[] = "Failed to copy standard config file"; |
condato_mbed | 0:556294574340 | 590 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 591 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 592 | |
condato_mbed | 0:556294574340 | 593 | return -1; |
condato_mbed | 0:556294574340 | 594 | } |
condato_mbed | 0:556294574340 | 595 | } |
condato_mbed | 0:556294574340 | 596 | } |
condato_mbed | 0:556294574340 | 597 | |
condato_mbed | 0:556294574340 | 598 | int read_id() |
condato_mbed | 0:556294574340 | 599 | { |
condato_mbed | 0:556294574340 | 600 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 601 | fflush(stdout); |
condato_mbed | 0:556294574340 | 602 | |
condato_mbed | 0:556294574340 | 603 | int file_err = fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 604 | if(file_err) |
condato_mbed | 0:556294574340 | 605 | { |
condato_mbed | 0:556294574340 | 606 | printf("\n__________________________\n\n! No SD-card detected !\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 607 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 608 | |
condato_mbed | 0:556294574340 | 609 | return -1; |
condato_mbed | 0:556294574340 | 610 | }else{ |
condato_mbed | 0:556294574340 | 611 | |
condato_mbed | 0:556294574340 | 612 | FILE * id = fopen ("/fs/id.csv", "rb"); |
condato_mbed | 0:556294574340 | 613 | char buffer[14]; |
condato_mbed | 0:556294574340 | 614 | int length; |
condato_mbed | 0:556294574340 | 615 | |
condato_mbed | 0:556294574340 | 616 | if (id) |
condato_mbed | 0:556294574340 | 617 | { |
condato_mbed | 0:556294574340 | 618 | fseek (id, 0, SEEK_END); |
condato_mbed | 0:556294574340 | 619 | length = ftell (id); |
condato_mbed | 0:556294574340 | 620 | fseek (id, 0, SEEK_SET); |
condato_mbed | 0:556294574340 | 621 | |
condato_mbed | 0:556294574340 | 622 | if (buffer) |
condato_mbed | 0:556294574340 | 623 | { |
condato_mbed | 0:556294574340 | 624 | fread (buffer, 1, length, id); |
condato_mbed | 0:556294574340 | 625 | } |
condato_mbed | 0:556294574340 | 626 | fclose(id); |
condato_mbed | 0:556294574340 | 627 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 628 | |
condato_mbed | 0:556294574340 | 629 | if (buffer) |
condato_mbed | 0:556294574340 | 630 | { |
condato_mbed | 0:556294574340 | 631 | char* single_word[10]; |
condato_mbed | 0:556294574340 | 632 | int word_count = 0; |
condato_mbed | 0:556294574340 | 633 | char delim[] = ";\r\n"; |
condato_mbed | 0:556294574340 | 634 | char *ptr = strtok(buffer, delim); |
condato_mbed | 0:556294574340 | 635 | |
condato_mbed | 0:556294574340 | 636 | for(int j = 0; j < 10; j++) |
condato_mbed | 0:556294574340 | 637 | { |
condato_mbed | 0:556294574340 | 638 | single_word[j] = new char[10]; |
condato_mbed | 0:556294574340 | 639 | } |
condato_mbed | 0:556294574340 | 640 | |
condato_mbed | 0:556294574340 | 641 | while (ptr != NULL) |
condato_mbed | 0:556294574340 | 642 | { |
condato_mbed | 0:556294574340 | 643 | strcpy(single_word[word_count], ptr); |
condato_mbed | 0:556294574340 | 644 | ptr = strtok(NULL, delim); |
condato_mbed | 0:556294574340 | 645 | word_count++; |
condato_mbed | 0:556294574340 | 646 | } |
condato_mbed | 0:556294574340 | 647 | |
condato_mbed | 0:556294574340 | 648 | strcpy(device_id, single_word[1]); |
condato_mbed | 0:556294574340 | 649 | return 1; |
condato_mbed | 0:556294574340 | 650 | } |
condato_mbed | 0:556294574340 | 651 | else{ |
condato_mbed | 0:556294574340 | 652 | printf("Buffer empty: %s", buffer); |
condato_mbed | 0:556294574340 | 653 | return -1; |
condato_mbed | 0:556294574340 | 654 | } |
condato_mbed | 0:556294574340 | 655 | } |
condato_mbed | 0:556294574340 | 656 | else{ |
condato_mbed | 0:556294574340 | 657 | printf("!!! Config file not found, error: %s (%d)\n", strerror(errno), -errno); |
condato_mbed | 0:556294574340 | 658 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 659 | return -1; |
condato_mbed | 0:556294574340 | 660 | } |
condato_mbed | 0:556294574340 | 661 | } |
condato_mbed | 0:556294574340 | 662 | } |
condato_mbed | 0:556294574340 | 663 | |
condato_mbed | 0:556294574340 | 664 | int create_user_config(char params[]){ |
condato_mbed | 0:556294574340 | 665 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 666 | fflush(stdout); |
condato_mbed | 0:556294574340 | 667 | |
condato_mbed | 0:556294574340 | 668 | int file_err = fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 669 | if(file_err){ |
condato_mbed | 0:556294574340 | 670 | printf("\n__________________________\n\n! No SD-card detected !\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 671 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 672 | |
condato_mbed | 0:556294574340 | 673 | return -1; |
condato_mbed | 0:556294574340 | 674 | }else{ |
condato_mbed | 0:556294574340 | 675 | remove("/fs/user_config.csv"); |
condato_mbed | 0:556294574340 | 676 | wait(0.2); |
condato_mbed | 0:556294574340 | 677 | char string[] = "User config file deleted"; |
condato_mbed | 0:556294574340 | 678 | write_to_sd_log_single(string); |
condato_mbed | 0:556294574340 | 679 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 680 | |
condato_mbed | 0:556294574340 | 681 | fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 682 | char file_name[16] = "/fs/user_config"; |
condato_mbed | 0:556294574340 | 683 | char file_type[10] = ".csv"; |
condato_mbed | 0:556294574340 | 684 | char buff_file[27]; |
condato_mbed | 0:556294574340 | 685 | sprintf(buff_file, "%s%s", file_name, file_type); |
condato_mbed | 0:556294574340 | 686 | FILE * f = fopen(buff_file, "a"); |
condato_mbed | 0:556294574340 | 687 | |
condato_mbed | 0:556294574340 | 688 | fclose(f); |
condato_mbed | 0:556294574340 | 689 | |
condato_mbed | 0:556294574340 | 690 | char string_1[] = "User config file created"; |
condato_mbed | 0:556294574340 | 691 | write_to_sd_log_single(string_1); |
condato_mbed | 0:556294574340 | 692 | |
condato_mbed | 0:556294574340 | 693 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 694 | |
condato_mbed | 0:556294574340 | 695 | char *single_word[15]; |
condato_mbed | 0:556294574340 | 696 | int word_count = 0; |
condato_mbed | 0:556294574340 | 697 | char delim[] = ";\r\n"; |
condato_mbed | 0:556294574340 | 698 | char *ptr = strtok(params, delim); |
condato_mbed | 0:556294574340 | 699 | for(int j = 0; j < 9; j++) |
condato_mbed | 0:556294574340 | 700 | { |
condato_mbed | 0:556294574340 | 701 | single_word[j] = new char[6]; |
condato_mbed | 0:556294574340 | 702 | } |
condato_mbed | 0:556294574340 | 703 | |
condato_mbed | 0:556294574340 | 704 | while (ptr != NULL) |
condato_mbed | 0:556294574340 | 705 | { |
condato_mbed | 0:556294574340 | 706 | strcpy(single_word[word_count], ptr); |
condato_mbed | 0:556294574340 | 707 | ptr = strtok(NULL, delim); |
condato_mbed | 0:556294574340 | 708 | word_count++; |
condato_mbed | 0:556294574340 | 709 | } |
condato_mbed | 0:556294574340 | 710 | printf("interval;%s;\r\nalert;%s;\r\nminimum;%s;\r\nmaximum;%s;\r\nwait_mode;%s;\r\npre_delay;%s;\r\nadvertise;%s;\r\nconnected;%s;", |
condato_mbed | 0:556294574340 | 711 | single_word[0], single_word[1], single_word[2], single_word[3], single_word[4], single_word[5], single_word[6], single_word[7]); |
condato_mbed | 0:556294574340 | 712 | |
condato_mbed | 0:556294574340 | 713 | fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 714 | FILE * fp = fopen("/fs/user_config.csv", "w"); |
condato_mbed | 0:556294574340 | 715 | |
condato_mbed | 0:556294574340 | 716 | fprintf(fp, "interval;%s;\r\n", single_word[0]); |
condato_mbed | 0:556294574340 | 717 | fprintf(fp, "alert;%s;\r\n", single_word[1]); |
condato_mbed | 0:556294574340 | 718 | fprintf(fp, "minimum;%s;\r\n", single_word[2]); |
condato_mbed | 0:556294574340 | 719 | fprintf(fp, "maximum;%s;\r\n", single_word[3]); |
condato_mbed | 0:556294574340 | 720 | fprintf(fp, "wait_mode;%s;\r\n", single_word[4]); |
condato_mbed | 0:556294574340 | 721 | fprintf(fp, "pre_delay;%s;\r\n", single_word[5]); |
condato_mbed | 0:556294574340 | 722 | fprintf(fp, "advertise;%s;\r\n", single_word[6]); |
condato_mbed | 0:556294574340 | 723 | fprintf(fp, "connected;%s;\r\n", single_word[7]); |
condato_mbed | 0:556294574340 | 724 | |
condato_mbed | 0:556294574340 | 725 | fclose(fp); |
condato_mbed | 0:556294574340 | 726 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 727 | |
condato_mbed | 0:556294574340 | 728 | if(load_user_config() == 1){ |
condato_mbed | 0:556294574340 | 729 | return 1; |
condato_mbed | 0:556294574340 | 730 | }else{ |
condato_mbed | 0:556294574340 | 731 | printf("\nFaild to read the config!\n"); |
condato_mbed | 0:556294574340 | 732 | return -1; |
condato_mbed | 0:556294574340 | 733 | } |
condato_mbed | 0:556294574340 | 734 | } |
condato_mbed | 0:556294574340 | 735 | } |
condato_mbed | 0:556294574340 | 736 | |
condato_mbed | 0:556294574340 | 737 | void led_blink(int led, int anzahl, int lang, int pause){ |
condato_mbed | 0:556294574340 | 738 | for(int i = 0; anzahl > i; i++){ |
condato_mbed | 0:556294574340 | 739 | RGBs[led] = 0; |
condato_mbed | 0:556294574340 | 740 | if(lang == 1){ |
condato_mbed | 0:556294574340 | 741 | wait(1.5); |
condato_mbed | 0:556294574340 | 742 | }else{ |
condato_mbed | 0:556294574340 | 743 | wait(0.5); |
condato_mbed | 0:556294574340 | 744 | } |
condato_mbed | 0:556294574340 | 745 | RGBs[led] = 1; |
condato_mbed | 0:556294574340 | 746 | wait(0.5); |
condato_mbed | 0:556294574340 | 747 | } |
condato_mbed | 0:556294574340 | 748 | if(pause == 1){ |
condato_mbed | 0:556294574340 | 749 | wait(1); |
condato_mbed | 0:556294574340 | 750 | } |
condato_mbed | 0:556294574340 | 751 | } |
condato_mbed | 0:556294574340 | 752 | |
condato_mbed | 0:556294574340 | 753 | void error_handler(int error) |
condato_mbed | 0:556294574340 | 754 | { |
condato_mbed | 0:556294574340 | 755 | ticker.detach(); |
condato_mbed | 0:556294574340 | 756 | g = 1; |
condato_mbed | 0:556294574340 | 757 | wait(1); |
condato_mbed | 0:556294574340 | 758 | |
condato_mbed | 0:556294574340 | 759 | int file_err = fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 760 | if(file_err){ |
condato_mbed | 0:556294574340 | 761 | switch (error) { |
condato_mbed | 0:556294574340 | 762 | case 10:{ //led_blink(0, 2, 1, 1); |
condato_mbed | 0:556294574340 | 763 | } |
condato_mbed | 0:556294574340 | 764 | break; |
condato_mbed | 0:556294574340 | 765 | case 11:{ BT_error = true; //led_blink(0, 1, 1, 1); led_blink(0, 2, 1, 1); |
condato_mbed | 0:556294574340 | 766 | } |
condato_mbed | 0:556294574340 | 767 | break; |
condato_mbed | 0:556294574340 | 768 | case 110:{ //led_blink(0, 2, 1, 1); led_blink(0, 3, 1, 1); |
condato_mbed | 0:556294574340 | 769 | } |
condato_mbed | 0:556294574340 | 770 | break; |
condato_mbed | 0:556294574340 | 771 | case 111:{ BT_error = true; //led_blink(0, 1, 1, 1); led_blink(0, 2, 1, 1); led_blink(0, 3, 1, 1); |
condato_mbed | 0:556294574340 | 772 | } |
condato_mbed | 0:556294574340 | 773 | break; |
condato_mbed | 0:556294574340 | 774 | } |
condato_mbed | 0:556294574340 | 775 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 776 | }else{ |
condato_mbed | 0:556294574340 | 777 | tm *current; |
condato_mbed | 0:556294574340 | 778 | time(&now); |
condato_mbed | 0:556294574340 | 779 | current = localtime (&now); |
condato_mbed | 0:556294574340 | 780 | |
condato_mbed | 0:556294574340 | 781 | switch (error) { |
condato_mbed | 0:556294574340 | 782 | case 0:{ char string[] = "Initializing succesfull"; write_to_sd_log_single(string); led_blink(1, 1, 0, 0); |
condato_mbed | 0:556294574340 | 783 | } |
condato_mbed | 0:556294574340 | 784 | break; |
condato_mbed | 0:556294574340 | 785 | case 1:{ char string[] = "Initializing failed: Bluetooth not detected"; write_to_sd_log_single(string); BT_error = true; //led_blink(0, 1, 1, 1); |
condato_mbed | 0:556294574340 | 786 | } |
condato_mbed | 0:556294574340 | 787 | break; |
condato_mbed | 0:556294574340 | 788 | case 100:{ char string[] = "Initializing failed: Temperature sensor not detected"; write_to_sd_log_single(string); //led_blink(0, 3, 1, 1); |
condato_mbed | 0:556294574340 | 789 | } |
condato_mbed | 0:556294574340 | 790 | break; |
condato_mbed | 0:556294574340 | 791 | case 101:{ char string[] = "Initializing failed: Temperature sensor and bluetooth not detected"; write_to_sd_log_single(string); BT_error = true; //led_blink(0, 1, 1, 1); led_blink(0, 3, 1, 1); |
condato_mbed | 0:556294574340 | 792 | } |
condato_mbed | 0:556294574340 | 793 | break; |
condato_mbed | 0:556294574340 | 794 | } |
condato_mbed | 0:556294574340 | 795 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 796 | } |
condato_mbed | 0:556294574340 | 797 | r = 1; |
condato_mbed | 0:556294574340 | 798 | g = 1; |
condato_mbed | 0:556294574340 | 799 | b = 1; |
condato_mbed | 0:556294574340 | 800 | wait(0.5); |
condato_mbed | 0:556294574340 | 801 | } |
condato_mbed | 0:556294574340 | 802 | |
condato_mbed | 0:556294574340 | 803 | int check_devices() |
condato_mbed | 0:556294574340 | 804 | { |
condato_mbed | 0:556294574340 | 805 | printf("\nDevices check...\n\n"); |
condato_mbed | 0:556294574340 | 806 | |
condato_mbed | 0:556294574340 | 807 | int bl = 1; |
condato_mbed | 0:556294574340 | 808 | int sd = 10; |
condato_mbed | 0:556294574340 | 809 | int temp = 100; |
condato_mbed | 0:556294574340 | 810 | |
condato_mbed | 0:556294574340 | 811 | //myADT7410.setConfig(ONE_SPS_MODE); // reduce sample rate to save power |
condato_mbed | 0:556294574340 | 812 | //printf("Config: 0x%x\n", myADT7410.getConfig()); |
condato_mbed | 0:556294574340 | 813 | /* |
condato_mbed | 0:556294574340 | 814 | int count = 0; |
condato_mbed | 0:556294574340 | 815 | for (int address = 0; address < 255; address += 2) { // check only for device's read address |
condato_mbed | 0:556294574340 | 816 | if (!i2c.write(address, NULL, 0)) { // 0 returned is ok |
condato_mbed | 0:556294574340 | 817 | printf("I2C address 0x%02X\n", address); |
condato_mbed | 0:556294574340 | 818 | count++; |
condato_mbed | 0:556294574340 | 819 | } |
condato_mbed | 0:556294574340 | 820 | } |
condato_mbed | 0:556294574340 | 821 | printf("%d devices found\n\n\n", count); |
condato_mbed | 0:556294574340 | 822 | wait_ms(20); |
condato_mbed | 0:556294574340 | 823 | */ |
condato_mbed | 0:556294574340 | 824 | |
condato_mbed | 0:556294574340 | 825 | //BLE check |
condato_mbed | 0:556294574340 | 826 | bt_rst = 1; |
condato_mbed | 0:556294574340 | 827 | bt_rst = 0; |
condato_mbed | 0:556294574340 | 828 | wait(0.5); |
condato_mbed | 0:556294574340 | 829 | BLE& ble = BLE::Instance(BLE::DEFAULT_INSTANCE); |
condato_mbed | 0:556294574340 | 830 | ble.init(bleInitComplete); |
condato_mbed | 0:556294574340 | 831 | if(ble.hasInitialized() == true){ |
condato_mbed | 0:556294574340 | 832 | bl = 0; |
condato_mbed | 0:556294574340 | 833 | BT_error = false; |
condato_mbed | 0:556294574340 | 834 | printf("\nBLE detected\n"); |
condato_mbed | 0:556294574340 | 835 | printMacAddress(); |
condato_mbed | 0:556294574340 | 836 | }else{ |
condato_mbed | 0:556294574340 | 837 | BT_error = true; |
condato_mbed | 0:556294574340 | 838 | printf("\nBLE not detected!\n"); |
condato_mbed | 0:556294574340 | 839 | } |
condato_mbed | 0:556294574340 | 840 | |
condato_mbed | 0:556294574340 | 841 | //SD check |
condato_mbed | 0:556294574340 | 842 | int file_err = fileSystem.mount(&blockDevice); |
condato_mbed | 0:556294574340 | 843 | if(file_err) |
condato_mbed | 0:556294574340 | 844 | { |
condato_mbed | 0:556294574340 | 845 | printf("\nSD-card not detected\n"); |
condato_mbed | 0:556294574340 | 846 | BT_error = true; |
condato_mbed | 0:556294574340 | 847 | } |
condato_mbed | 0:556294574340 | 848 | else { |
condato_mbed | 0:556294574340 | 849 | sd = 0; |
condato_mbed | 0:556294574340 | 850 | create_file_log(); |
condato_mbed | 0:556294574340 | 851 | create_file_messdaten(); |
condato_mbed | 0:556294574340 | 852 | printf("\nSD-card detected\n"); |
condato_mbed | 0:556294574340 | 853 | |
condato_mbed | 0:556294574340 | 854 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 855 | |
condato_mbed | 0:556294574340 | 856 | messdaten_count(); |
condato_mbed | 0:556294574340 | 857 | printf("Measuremnts count: %d\n", measure_id); |
condato_mbed | 0:556294574340 | 858 | log_count(); |
condato_mbed | 0:556294574340 | 859 | printf("Logs count: %d\n", log_id); |
condato_mbed | 0:556294574340 | 860 | } |
condato_mbed | 0:556294574340 | 861 | fileSystem.unmount(); |
condato_mbed | 0:556294574340 | 862 | |
condato_mbed | 0:556294574340 | 863 | //Temp sensor check |
condato_mbed | 0:556294574340 | 864 | myADT7410.setConfig(ONE_SPS_MODE); |
condato_mbed | 0:556294574340 | 865 | if(myADT7410.getConfig() == 0x40){ |
condato_mbed | 0:556294574340 | 866 | temp = 0; |
condato_mbed | 0:556294574340 | 867 | printf("\nTemperature sensor detected\n"); |
condato_mbed | 0:556294574340 | 868 | myADT7410.reset(); |
condato_mbed | 0:556294574340 | 869 | myADT7410.setConfig(01); |
condato_mbed | 0:556294574340 | 870 | }else{ |
condato_mbed | 0:556294574340 | 871 | printf("\nTemperature sensor not detected\n"); |
condato_mbed | 0:556294574340 | 872 | } |
condato_mbed | 0:556294574340 | 873 | |
condato_mbed | 0:556294574340 | 874 | //Check output |
condato_mbed | 0:556294574340 | 875 | int devices = temp + sd + bl; |
condato_mbed | 0:556294574340 | 876 | |
condato_mbed | 0:556294574340 | 877 | if(devices != 000){ |
condato_mbed | 0:556294574340 | 878 | printf("\nError in check_devices(): %03d\n", devices); |
condato_mbed | 0:556294574340 | 879 | |
condato_mbed | 0:556294574340 | 880 | error_handler(devices); |
condato_mbed | 0:556294574340 | 881 | |
condato_mbed | 0:556294574340 | 882 | return 0; |
condato_mbed | 0:556294574340 | 883 | }else{ |
condato_mbed | 0:556294574340 | 884 | printf("\n__________________________\n\nAll devices connected\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 885 | |
condato_mbed | 0:556294574340 | 886 | return 1; |
condato_mbed | 0:556294574340 | 887 | } |
condato_mbed | 0:556294574340 | 888 | } |
condato_mbed | 0:556294574340 | 889 | |
condato_mbed | 0:556294574340 | 890 | int RTC_check(){ |
condato_mbed | 0:556294574340 | 891 | tm *current; |
condato_mbed | 0:556294574340 | 892 | time(&now); |
condato_mbed | 0:556294574340 | 893 | if ( (current = localtime (&now) ) == NULL) { |
condato_mbed | 0:556294574340 | 894 | printf ("\n\n__________________________\n\n! RTC initialize failed !\n__________________________\n"); |
condato_mbed | 0:556294574340 | 895 | return -1; |
condato_mbed | 0:556294574340 | 896 | }else{ |
condato_mbed | 0:556294574340 | 897 | set_time(); |
condato_mbed | 0:556294574340 | 898 | printf ("\n\n__________________________\n\nRTC initialized\n__________________________\n"); |
condato_mbed | 0:556294574340 | 899 | return 1; |
condato_mbed | 0:556294574340 | 900 | } |
condato_mbed | 0:556294574340 | 901 | } |
condato_mbed | 0:556294574340 | 902 | |
condato_mbed | 0:556294574340 | 903 | void max14690_init(){ |
condato_mbed | 0:556294574340 | 904 | max14690.resetToDefaults(); |
condato_mbed | 0:556294574340 | 905 | max14690.ldo2Millivolts = 3300; |
condato_mbed | 0:556294574340 | 906 | max14690.ldo3Millivolts = 3300; |
condato_mbed | 0:556294574340 | 907 | max14690.ldo2Mode = MAX14690::LDO_ENABLED; |
condato_mbed | 0:556294574340 | 908 | max14690.ldo3Mode = MAX14690::LDO_ENABLED; |
condato_mbed | 0:556294574340 | 909 | max14690.chgEn = 1; |
condato_mbed | 0:556294574340 | 910 | //max14690.intEnChgStatus = 0; |
condato_mbed | 0:556294574340 | 911 | //max14690.iLimCntl = MAX14690::iLimCntl_t::ILIM_1000mA; |
condato_mbed | 0:556294574340 | 912 | //max14690.batReg = MAX14690::batReg_t::BAT_REG_4350mV; |
condato_mbed | 0:556294574340 | 913 | max14690.intEnUSBOVP = 1; |
condato_mbed | 0:556294574340 | 914 | max14690.monCfg = MAX14690::MON_BAT; //Monitoring - Multiplexer auf SYSTEM eingestellt, um Akku-wert auszulesen |
condato_mbed | 0:556294574340 | 915 | //max14690.monRatio = MAX14690::MON_DIV4; |
condato_mbed | 0:556294574340 | 916 | //max14690.ldo3Mode = MAX14690::SW_EN_MPC1_DSC; |
condato_mbed | 0:556294574340 | 917 | if (max14690.init() == MAX14690_ERROR) { |
condato_mbed | 0:556294574340 | 918 | printf("Error initializing MAX14690"); |
condato_mbed | 0:556294574340 | 919 | } |
condato_mbed | 0:556294574340 | 920 | } |
condato_mbed | 0:556294574340 | 921 | |
condato_mbed | 0:556294574340 | 922 | void initCallback(void){ |
condato_mbed | 0:556294574340 | 923 | g = !g; |
condato_mbed | 0:556294574340 | 924 | } |
condato_mbed | 0:556294574340 | 925 | |
condato_mbed | 0:556294574340 | 926 | void init(){ |
condato_mbed | 0:556294574340 | 927 | r = 1; |
condato_mbed | 0:556294574340 | 928 | g = 1; |
condato_mbed | 0:556294574340 | 929 | b = 1; |
condato_mbed | 0:556294574340 | 930 | |
condato_mbed | 0:556294574340 | 931 | printf("\n\n__________________________\n\nStarting Coldchainlogger\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 932 | ticker.attach(initCallback, 0.5); |
condato_mbed | 0:556294574340 | 933 | |
condato_mbed | 0:556294574340 | 934 | printf("Initializing MAX32630FTHR\n\n"); |
condato_mbed | 0:556294574340 | 935 | pegasus.init(MAX32630FTHR::VIO_3V3); |
condato_mbed | 0:556294574340 | 936 | |
condato_mbed | 0:556294574340 | 937 | printf("Initializing MAX14690N\n"); |
condato_mbed | 0:556294574340 | 938 | max14690_init(); |
condato_mbed | 0:556294574340 | 939 | |
condato_mbed | 0:556294574340 | 940 | if(RTC_check() == 1){ |
condato_mbed | 0:556294574340 | 941 | if(check_devices() == 1 & read_id() == 1 & load_user_config() == 1){ |
condato_mbed | 0:556294574340 | 942 | printf("\n__________________________\n\nInitializing succesfull\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 943 | BLE& ble = BLE::Instance(BLE::DEFAULT_INSTANCE); |
condato_mbed | 0:556294574340 | 944 | ticker.detach(); |
condato_mbed | 0:556294574340 | 945 | g = 1; |
condato_mbed | 0:556294574340 | 946 | init_status = true; |
condato_mbed | 0:556294574340 | 947 | error_status = false; |
condato_mbed | 0:556294574340 | 948 | error_handler(000); |
condato_mbed | 0:556294574340 | 949 | }else{ |
condato_mbed | 0:556294574340 | 950 | printf("\n__________________________\n\nInitializing failed\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 951 | BLE& ble = BLE::Instance(BLE::DEFAULT_INSTANCE); |
condato_mbed | 0:556294574340 | 952 | next_state = 0; |
condato_mbed | 0:556294574340 | 953 | init_status = false; |
condato_mbed | 0:556294574340 | 954 | error_status = true; |
condato_mbed | 0:556294574340 | 955 | ticker.detach(); |
condato_mbed | 0:556294574340 | 956 | g = 1; |
condato_mbed | 0:556294574340 | 957 | led_blink(0, 1, 1, 1); |
condato_mbed | 0:556294574340 | 958 | } |
condato_mbed | 0:556294574340 | 959 | }else{ |
condato_mbed | 0:556294574340 | 960 | printf("\n__________________________\n\nRTC failure\n__________________________\n\n"); |
condato_mbed | 0:556294574340 | 961 | error_status = true; |
condato_mbed | 0:556294574340 | 962 | init_status = false; |
condato_mbed | 0:556294574340 | 963 | next_state = 0; |
condato_mbed | 0:556294574340 | 964 | ticker.detach(); |
condato_mbed | 0:556294574340 | 965 | g = 1; |
condato_mbed | 0:556294574340 | 966 | led_blink(0, 1, 1, 1); |
condato_mbed | 0:556294574340 | 967 | } |
condato_mbed | 0:556294574340 | 968 | } |