HAND

Dependencies:   mbed BMI160 MLX90614 max32630fthr Adafruit_FeatherOLED MAX30100

Committer:
condato_mbed
Date:
Wed Nov 03 16:10:15 2021 +0000
Revision:
1:774d50d6f9d6
Parent:
0:d36fd4cabb70
HAND

Who changed what in which revision?

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