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 "Adafruit_SSD1306.h"
condato_mbed 0:d36fd4cabb70 11 #include "MAX30100_PulseOximeter.h"
condato_mbed 0:d36fd4cabb70 12 #include "mlx90614.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 "ble/services/BatteryService.h"
condato_mbed 0:d36fd4cabb70 17 #include "ble/blecommon.h"
condato_mbed 0:d36fd4cabb70 18 #include "UUID.h"
condato_mbed 0:d36fd4cabb70 19 #include "ble/gap/AdvertisingDataTypes.h"
condato_mbed 0:d36fd4cabb70 20 #include "ble/gap/Types.h"
condato_mbed 0:d36fd4cabb70 21 #include "SDBlockDevice.h"
condato_mbed 0:d36fd4cabb70 22 #include "FATFileSystem.h"
condato_mbed 0:d36fd4cabb70 23 #include <errno.h>
condato_mbed 0:d36fd4cabb70 24 #include <stdio.h>
condato_mbed 0:d36fd4cabb70 25 #include <time.h>
condato_mbed 0:d36fd4cabb70 26 #include <stdint.h>
condato_mbed 0:d36fd4cabb70 27
condato_mbed 0:d36fd4cabb70 28 extern char device_id[];
condato_mbed 0:d36fd4cabb70 29 extern unsigned short int measure_id;
condato_mbed 0:d36fd4cabb70 30 extern unsigned short int log_id;
condato_mbed 0:d36fd4cabb70 31
condato_mbed 0:d36fd4cabb70 32 extern Serial pan1326b;
condato_mbed 0:d36fd4cabb70 33 extern DigitalOut bt_rst;
condato_mbed 0:d36fd4cabb70 34
condato_mbed 0:d36fd4cabb70 35 extern volatile int conn_state;
condato_mbed 0:d36fd4cabb70 36 extern bool in_BT;
condato_mbed 0:d36fd4cabb70 37
condato_mbed 0:d36fd4cabb70 38 extern AnalogIn battery;
condato_mbed 0:d36fd4cabb70 39
condato_mbed 0:d36fd4cabb70 40 extern DigitalOut r;
condato_mbed 0:d36fd4cabb70 41 extern DigitalOut g;
condato_mbed 0:d36fd4cabb70 42 extern DigitalOut b;
condato_mbed 0:d36fd4cabb70 43 extern DigitalOut RGBs[];
condato_mbed 0:d36fd4cabb70 44
condato_mbed 0:d36fd4cabb70 45 extern MAX32630FTHR pegasus;
condato_mbed 0:d36fd4cabb70 46
condato_mbed 0:d36fd4cabb70 47 extern I2C i2cm2;
condato_mbed 0:d36fd4cabb70 48 extern MAX14690 max14690;
condato_mbed 0:d36fd4cabb70 49
condato_mbed 0:d36fd4cabb70 50 extern InterruptIn button;
condato_mbed 0:d36fd4cabb70 51
condato_mbed 0:d36fd4cabb70 52 extern FATFileSystem fileSystem;
condato_mbed 0:d36fd4cabb70 53 extern SDBlockDevice blockDevice;
condato_mbed 0:d36fd4cabb70 54
condato_mbed 0:d36fd4cabb70 55 extern I2C i2c;
condato_mbed 0:d36fd4cabb70 56 extern int sensor_temp;
condato_mbed 0:d36fd4cabb70 57 extern Adafruit_SSD1306_I2c featherOLED;
condato_mbed 0:d36fd4cabb70 58
condato_mbed 0:d36fd4cabb70 59 extern Timer t;
condato_mbed 0:d36fd4cabb70 60 extern PulseOximeter pox;
condato_mbed 0:d36fd4cabb70 61 extern uint32_t tsLastReport;
condato_mbed 0:d36fd4cabb70 62
condato_mbed 0:d36fd4cabb70 63 extern DigitalIn ain;
condato_mbed 0:d36fd4cabb70 64 extern double anSignal;
condato_mbed 0:d36fd4cabb70 65 extern int bpm;
condato_mbed 0:d36fd4cabb70 66 extern int signal;
condato_mbed 0:d36fd4cabb70 67 extern int ibi;
condato_mbed 0:d36fd4cabb70 68 extern MLX90614 IR_thermometer;
condato_mbed 0:d36fd4cabb70 69 extern float ir_temp;
condato_mbed 0:d36fd4cabb70 70
condato_mbed 0:d36fd4cabb70 71 extern volatile int quit;
condato_mbed 0:d36fd4cabb70 72 extern volatile int ble_return;
condato_mbed 0:d36fd4cabb70 73 extern volatile int conn_state;
condato_mbed 0:d36fd4cabb70 74 extern int counter_ble;
condato_mbed 0:d36fd4cabb70 75
condato_mbed 0:d36fd4cabb70 76 extern bool error_status;
condato_mbed 0:d36fd4cabb70 77 extern bool BT_error;
condato_mbed 0:d36fd4cabb70 78 extern bool shipping;
condato_mbed 0:d36fd4cabb70 79 extern bool pause;
condato_mbed 0:d36fd4cabb70 80 extern bool init_status;
condato_mbed 0:d36fd4cabb70 81 extern bool after_BT;
condato_mbed 0:d36fd4cabb70 82
condato_mbed 0:d36fd4cabb70 83 extern Timeout after_BLE;
condato_mbed 0:d36fd4cabb70 84 extern Timeout turnoff;
condato_mbed 0:d36fd4cabb70 85 extern Timeout flipper;
condato_mbed 0:d36fd4cabb70 86 extern Timeout advertise_cancel;
condato_mbed 0:d36fd4cabb70 87 extern Timeout connected_cancel;
condato_mbed 0:d36fd4cabb70 88 extern Ticker mess_timer;
condato_mbed 0:d36fd4cabb70 89 extern Ticker ticker;
condato_mbed 0:d36fd4cabb70 90 extern time_t now;
condato_mbed 0:d36fd4cabb70 91 extern time_t raw;
condato_mbed 0:d36fd4cabb70 92
condato_mbed 0:d36fd4cabb70 93 extern float buffer_temp;
condato_mbed 0:d36fd4cabb70 94 extern struct tm current;
condato_mbed 0:d36fd4cabb70 95 extern struct tm actual;
condato_mbed 0:d36fd4cabb70 96
condato_mbed 0:d36fd4cabb70 97 extern struct user_config_struct user_config_para;
condato_mbed 0:d36fd4cabb70 98 extern struct tm user_config_time;
condato_mbed 0:d36fd4cabb70 99
condato_mbed 0:d36fd4cabb70 100 extern Timeout done_rcv;
condato_mbed 0:d36fd4cabb70 101
condato_mbed 0:d36fd4cabb70 102 extern int next_state;
condato_mbed 0:d36fd4cabb70 103
condato_mbed 0:d36fd4cabb70 104 extern int unsigned long t_diff;
condato_mbed 0:d36fd4cabb70 105 extern int unsigned long unix_time;
condato_mbed 0:d36fd4cabb70 106
condato_mbed 0:d36fd4cabb70 107 extern int default_advertise_time;
condato_mbed 0:d36fd4cabb70 108 extern int default_connected_time;
condato_mbed 0:d36fd4cabb70 109
condato_mbed 0:d36fd4cabb70 110 extern int alert_count;
condato_mbed 0:d36fd4cabb70 111
condato_mbed 0:d36fd4cabb70 112 extern Timer t;
condato_mbed 0:d36fd4cabb70 113 extern PulseOximeter pox;
condato_mbed 0:d36fd4cabb70 114 extern uint32_t tsLastReport;
condato_mbed 0:d36fd4cabb70 115
condato_mbed 0:d36fd4cabb70 116 int ble_buff_line = 0;
condato_mbed 0:d36fd4cabb70 117 char ble_buff[1024][64];
condato_mbed 0:d36fd4cabb70 118
condato_mbed 0:d36fd4cabb70 119 char response = '0';
condato_mbed 0:d36fd4cabb70 120 char messungen[7];
condato_mbed 0:d36fd4cabb70 121 int messwerte[5000];
condato_mbed 0:d36fd4cabb70 122 char logs_array[7];
condato_mbed 0:d36fd4cabb70 123 char seconds[12];
condato_mbed 0:d36fd4cabb70 124 float min_temp = 0;
condato_mbed 0:d36fd4cabb70 125 float max_temp = 0;
condato_mbed 0:d36fd4cabb70 126 float avr_temp = 0;
condato_mbed 0:d36fd4cabb70 127 unsigned short counter_m = 0;
condato_mbed 0:d36fd4cabb70 128 unsigned short counter_l = 0;
condato_mbed 0:d36fd4cabb70 129 int sendLedCounter = 0;
condato_mbed 0:d36fd4cabb70 130
condato_mbed 0:d36fd4cabb70 131 //const static char* SERVICE_UUID = "32372fb9-5f73-4c32-a17b-25e17f52a99a";
condato_mbed 0:d36fd4cabb70 132 static uint8_t service_data[16];
condato_mbed 0:d36fd4cabb70 133
condato_mbed 0:d36fd4cabb70 134 //const static char* CHARACTERISTIC_UUID = "1d6ba3db-d405-4034-96fc-78942ef7075f";
condato_mbed 0:d36fd4cabb70 135
condato_mbed 0:d36fd4cabb70 136 uint16_t customServiceUUID = 0xA000;
condato_mbed 0:d36fd4cabb70 137 uint16_t readCharUUID = 0xA001;
condato_mbed 0:d36fd4cabb70 138 uint16_t writeCharUUID = 0xA002;
condato_mbed 0:d36fd4cabb70 139 uint16_t battService = 0x180F;
condato_mbed 0:d36fd4cabb70 140
condato_mbed 0:d36fd4cabb70 141 const static char DEVICE_NAME[] = "Cold Chain Logger";
condato_mbed 0:d36fd4cabb70 142
condato_mbed 0:d36fd4cabb70 143 static const uint16_t uuid16_list[] = {0xFFFF};
condato_mbed 0:d36fd4cabb70 144 //static const uint8_t advData[26];
condato_mbed 0:d36fd4cabb70 145
condato_mbed 0:d36fd4cabb70 146 //UUID service_uuid = UUID(SERVICE_UUID);
condato_mbed 0:d36fd4cabb70 147 //UUID characteristic_uuid = UUID(CHARACTERISTIC_UUID);
condato_mbed 0:d36fd4cabb70 148
condato_mbed 0:d36fd4cabb70 149 //Gap::ConnectionParams_t fast;
condato_mbed 0:d36fd4cabb70 150
condato_mbed 0:d36fd4cabb70 151 // Set Up custom Charatiristics
condato_mbed 0:d36fd4cabb70 152 static uint8_t readValue[360];
condato_mbed 0:d36fd4cabb70 153 //ReadOnlyArrayGattCharacteristic<uint8_t, sizeof(readValue)> readChar(readCharUUID, readValue);
condato_mbed 0:d36fd4cabb70 154 ReadOnlyArrayGattCharacteristic<uint8_t, sizeof(readValue)> readChar(readCharUUID, readValue, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY ,NULL,0);
condato_mbed 0:d36fd4cabb70 155
condato_mbed 0:d36fd4cabb70 156 static uint8_t writeValue[20];
condato_mbed 0:d36fd4cabb70 157 //WriteOnlyArrayGattCharacteristic<uint8_t, sizeof(writeValue)> writeChar(writeCharUUID, writeValue);
condato_mbed 0:d36fd4cabb70 158 WriteOnlyArrayGattCharacteristic<uint8_t, sizeof(writeValue)> writeChar(writeCharUUID, writeValue, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE ,NULL,0);
condato_mbed 0:d36fd4cabb70 159
condato_mbed 0:d36fd4cabb70 160 // Set up custom service
condato_mbed 0:d36fd4cabb70 161 GattCharacteristic *characteristics[] = {&readChar, &writeChar};
condato_mbed 0:d36fd4cabb70 162 GattService customService(customServiceUUID, characteristics, sizeof(characteristics) / sizeof(GattCharacteristic *));
condato_mbed 0:d36fd4cabb70 163
condato_mbed 0:d36fd4cabb70 164 //Battery service
condato_mbed 0:d36fd4cabb70 165 static uint8_t batteryLevel = 50;
condato_mbed 0:d36fd4cabb70 166 static BatteryService* batteryServicePtr;
condato_mbed 0:d36fd4cabb70 167
condato_mbed 0:d36fd4cabb70 168 void periodicCallback(void)
condato_mbed 0:d36fd4cabb70 169 {
condato_mbed 0:d36fd4cabb70 170 /*
condato_mbed 0:d36fd4cabb70 171 if(error_status == true){
condato_mbed 0:d36fd4cabb70 172 r = !r;
condato_mbed 0:d36fd4cabb70 173 }
condato_mbed 0:d36fd4cabb70 174 */
condato_mbed 0:d36fd4cabb70 175 b = !b;
condato_mbed 0:d36fd4cabb70 176 }
condato_mbed 0:d36fd4cabb70 177
condato_mbed 0:d36fd4cabb70 178 void writeLedCallback(void)
condato_mbed 0:d36fd4cabb70 179 {/*
condato_mbed 0:d36fd4cabb70 180 if(error_status == true){
condato_mbed 0:d36fd4cabb70 181 r = !r;
condato_mbed 0:d36fd4cabb70 182 }
condato_mbed 0:d36fd4cabb70 183 */
condato_mbed 0:d36fd4cabb70 184 b = !b;
condato_mbed 0:d36fd4cabb70 185 ticker.detach();
condato_mbed 0:d36fd4cabb70 186 }
condato_mbed 0:d36fd4cabb70 187
condato_mbed 0:d36fd4cabb70 188 void sendLedCallback(void)
condato_mbed 0:d36fd4cabb70 189 {/*
condato_mbed 0:d36fd4cabb70 190 if(error_status == true){
condato_mbed 0:d36fd4cabb70 191 r = !r;
condato_mbed 0:d36fd4cabb70 192 }*/
condato_mbed 0:d36fd4cabb70 193 b = !b;
condato_mbed 0:d36fd4cabb70 194 if(sendLedCounter == 2){
condato_mbed 0:d36fd4cabb70 195 ticker.detach();
condato_mbed 0:d36fd4cabb70 196 sendLedCounter = 0;
condato_mbed 0:d36fd4cabb70 197 }else{
condato_mbed 0:d36fd4cabb70 198 sendLedCounter++;
condato_mbed 0:d36fd4cabb70 199 }
condato_mbed 0:d36fd4cabb70 200 }
condato_mbed 0:d36fd4cabb70 201
condato_mbed 0:d36fd4cabb70 202 void clear_buffer(){
condato_mbed 0:d36fd4cabb70 203 if(response != 's'){
condato_mbed 0:d36fd4cabb70 204 counter_m = 0;
condato_mbed 0:d36fd4cabb70 205 }else if(response != 'l'){
condato_mbed 0:d36fd4cabb70 206 counter_l = 0;
condato_mbed 0:d36fd4cabb70 207 }
condato_mbed 0:d36fd4cabb70 208 ble_buff_line = 0;
condato_mbed 0:d36fd4cabb70 209 memset(&ble_buff[0][0], 0, sizeof(ble_buff));
condato_mbed 0:d36fd4cabb70 210 memset(&readValue[0], 0, sizeof(readValue));
condato_mbed 0:d36fd4cabb70 211 memset(&writeValue[0], 0, sizeof(writeValue));
condato_mbed 0:d36fd4cabb70 212 }
condato_mbed 0:d36fd4cabb70 213
condato_mbed 0:d36fd4cabb70 214 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *)
condato_mbed 0:d36fd4cabb70 215 {
condato_mbed 0:d36fd4cabb70 216 printf("\nDisconnection callback\n");
condato_mbed 0:d36fd4cabb70 217 clear_buffer();
condato_mbed 0:d36fd4cabb70 218 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 219 ticker.attach(periodicCallback, 0.5);
condato_mbed 0:d36fd4cabb70 220 advertise_cancel.attach(&BT_false, user_config_para.advertise);
condato_mbed 0:d36fd4cabb70 221 char string[] = "Bluetooth disconnected";
condato_mbed 0:d36fd4cabb70 222 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 223 conn_state = 0;
condato_mbed 0:d36fd4cabb70 224 counter_m = 0;
condato_mbed 0:d36fd4cabb70 225 counter_l = 0;
condato_mbed 0:d36fd4cabb70 226 BLE::Instance(BLE::DEFAULT_INSTANCE).startAdvertising();
condato_mbed 0:d36fd4cabb70 227 printf("\nAdvertising\n");
condato_mbed 0:d36fd4cabb70 228 }
condato_mbed 0:d36fd4cabb70 229
condato_mbed 0:d36fd4cabb70 230 void updateSensorValue() {
condato_mbed 0:d36fd4cabb70 231 batteryLevel = (battery.read() * 100 - 47) / 0.3971;
condato_mbed 0:d36fd4cabb70 232 if(batteryLevel > 99.95){
condato_mbed 0:d36fd4cabb70 233 batteryLevel = 100;
condato_mbed 0:d36fd4cabb70 234 }
condato_mbed 0:d36fd4cabb70 235 batteryServicePtr->updateBatteryLevel(batteryLevel);
condato_mbed 0:d36fd4cabb70 236 }
condato_mbed 0:d36fd4cabb70 237
condato_mbed 0:d36fd4cabb70 238 void printMacAddress()
condato_mbed 0:d36fd4cabb70 239 {
condato_mbed 0:d36fd4cabb70 240 Gap::AddressType_t addr_type;
condato_mbed 0:d36fd4cabb70 241 Gap::Address_t address;
condato_mbed 0:d36fd4cabb70 242 BLE::Instance().gap().getAddress(&addr_type, address);
condato_mbed 0:d36fd4cabb70 243 printf("Device MAC address: ");
condato_mbed 0:d36fd4cabb70 244 for (int i = 5; i >= 1; i--){
condato_mbed 0:d36fd4cabb70 245 printf("%02x:", address[i]);
condato_mbed 0:d36fd4cabb70 246 }
condato_mbed 0:d36fd4cabb70 247 printf("%02x\r\n", address[0]);
condato_mbed 0:d36fd4cabb70 248 }
condato_mbed 0:d36fd4cabb70 249
condato_mbed 0:d36fd4cabb70 250 void writeCharCallback(const GattWriteCallbackParams *params)
condato_mbed 0:d36fd4cabb70 251 {
condato_mbed 0:d36fd4cabb70 252 printf("\nData received\n");
condato_mbed 0:d36fd4cabb70 253 b = 1;
condato_mbed 0:d36fd4cabb70 254 ticker.attach(writeLedCallback, 0.5);
condato_mbed 0:d36fd4cabb70 255 memset(&readValue[0], 0, sizeof(readValue));
condato_mbed 0:d36fd4cabb70 256 memset(&writeValue[0], 0, sizeof(writeValue));
condato_mbed 0:d36fd4cabb70 257 BLE::Instance(BLE::DEFAULT_INSTANCE).gattServer().write(readChar.getValueHandle(), params->data, params->len);
condato_mbed 0:d36fd4cabb70 258 for(int i = 0; i < 15; i++){
condato_mbed 0:d36fd4cabb70 259 ble_buff[0][i + ble_buff_line] = readValue[i];
condato_mbed 0:d36fd4cabb70 260 }
condato_mbed 0:d36fd4cabb70 261 printf("\n%s received (ble_buff)\n", ble_buff[0]);
condato_mbed 0:d36fd4cabb70 262 ble_buff_line = ble_buff_line + 15;
condato_mbed 0:d36fd4cabb70 263 if(readValue[0] > 0x60){
condato_mbed 0:d36fd4cabb70 264 response = readValue[0];
condato_mbed 0:d36fd4cabb70 265 }
condato_mbed 0:d36fd4cabb70 266 }
condato_mbed 0:d36fd4cabb70 267
condato_mbed 0:d36fd4cabb70 268 void disconnect(){
condato_mbed 0:d36fd4cabb70 269 Gap::DisconnectionReason_t res=Gap::LOCAL_HOST_TERMINATED_CONNECTION;
condato_mbed 0:d36fd4cabb70 270 BLE::Instance(BLE::DEFAULT_INSTANCE).gap().disconnect(res);
condato_mbed 0:d36fd4cabb70 271 }
condato_mbed 0:d36fd4cabb70 272
condato_mbed 0:d36fd4cabb70 273 void whenConnected(const Gap::ConnectionCallbackParams_t *)
condato_mbed 0:d36fd4cabb70 274 {
condato_mbed 0:d36fd4cabb70 275 printf("\nConnected\n");
condato_mbed 0:d36fd4cabb70 276 advertise_cancel.detach();
condato_mbed 0:d36fd4cabb70 277 ticker.detach();
condato_mbed 0:d36fd4cabb70 278 connected_cancel.attach(&disconnect, user_config_para.connected);
condato_mbed 0:d36fd4cabb70 279 conn_state = 1;
condato_mbed 0:d36fd4cabb70 280 if(error_status == true){
condato_mbed 0:d36fd4cabb70 281 r = 1;
condato_mbed 0:d36fd4cabb70 282 }
condato_mbed 0:d36fd4cabb70 283 b = 0;
condato_mbed 0:d36fd4cabb70 284 response = '0';
condato_mbed 0:d36fd4cabb70 285 char string[] = "Bluetooth connected";
condato_mbed 0:d36fd4cabb70 286 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 287 }
condato_mbed 0:d36fd4cabb70 288
condato_mbed 0:d36fd4cabb70 289 void onDataSent(unsigned count)
condato_mbed 0:d36fd4cabb70 290 {
condato_mbed 0:d36fd4cabb70 291 printf("%c", ble_buff[ble_buff_line][count]);
condato_mbed 0:d36fd4cabb70 292 readValue[count] = ble_buff[ble_buff_line][count];
condato_mbed 0:d36fd4cabb70 293 }
condato_mbed 0:d36fd4cabb70 294
condato_mbed 0:d36fd4cabb70 295 void after_BL(){
condato_mbed 0:d36fd4cabb70 296 after_BT = false;
condato_mbed 0:d36fd4cabb70 297 after_BLE.detach();
condato_mbed 0:d36fd4cabb70 298 }
condato_mbed 0:d36fd4cabb70 299
condato_mbed 0:d36fd4cabb70 300 void BT_false()
condato_mbed 0:d36fd4cabb70 301 {
condato_mbed 0:d36fd4cabb70 302 BLE &ble = BLE::Instance();
condato_mbed 0:d36fd4cabb70 303 in_BT = false;
condato_mbed 0:d36fd4cabb70 304 b = 1;
condato_mbed 0:d36fd4cabb70 305 conn_state = 0;
condato_mbed 0:d36fd4cabb70 306 quit = 0;
condato_mbed 0:d36fd4cabb70 307 clear_buffer();
condato_mbed 0:d36fd4cabb70 308 ticker.detach();
condato_mbed 0:d36fd4cabb70 309 advertise_cancel.detach();
condato_mbed 0:d36fd4cabb70 310 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 311 disconnect();
condato_mbed 0:d36fd4cabb70 312 wait(0.5);
condato_mbed 0:d36fd4cabb70 313 if(error_status == true){
condato_mbed 0:d36fd4cabb70 314 r = 0;
condato_mbed 0:d36fd4cabb70 315 }
condato_mbed 0:d36fd4cabb70 316 if(shipping == true && pause == false){
condato_mbed 0:d36fd4cabb70 317 mess_timer.attach(&mess_handler, (float)user_config_para.interval);
condato_mbed 0:d36fd4cabb70 318 }
condato_mbed 0:d36fd4cabb70 319 after_BT = true;
condato_mbed 0:d36fd4cabb70 320 after_BLE.attach(after_BL, 2);
condato_mbed 0:d36fd4cabb70 321 response = '0';
condato_mbed 0:d36fd4cabb70 322 }
condato_mbed 0:d36fd4cabb70 323
condato_mbed 0:d36fd4cabb70 324 void BT_true()
condato_mbed 0:d36fd4cabb70 325 {
condato_mbed 0:d36fd4cabb70 326 in_BT = true;
condato_mbed 0:d36fd4cabb70 327 next_state = 2;
condato_mbed 0:d36fd4cabb70 328 }
condato_mbed 0:d36fd4cabb70 329
condato_mbed 0:d36fd4cabb70 330 void log_count(){
condato_mbed 0:d36fd4cabb70 331 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 332 fflush(stdout);
condato_mbed 0:d36fd4cabb70 333
condato_mbed 0:d36fd4cabb70 334 fileSystem.mount(&blockDevice);
condato_mbed 0:d36fd4cabb70 335 FILE * log = fopen ("/fs/log.csv", "rb");
condato_mbed 0:d36fd4cabb70 336
condato_mbed 0:d36fd4cabb70 337 int ch = 0;
condato_mbed 0:d36fd4cabb70 338 int lines = 0;
condato_mbed 0:d36fd4cabb70 339
condato_mbed 0:d36fd4cabb70 340 while(!feof(log)){
condato_mbed 0:d36fd4cabb70 341 ch = fgetc(log);
condato_mbed 0:d36fd4cabb70 342 if(ch == '\n')
condato_mbed 0:d36fd4cabb70 343 {
condato_mbed 0:d36fd4cabb70 344 lines++;
condato_mbed 0:d36fd4cabb70 345 }
condato_mbed 0:d36fd4cabb70 346 }
condato_mbed 0:d36fd4cabb70 347
condato_mbed 0:d36fd4cabb70 348 log_id = lines;
condato_mbed 0:d36fd4cabb70 349
condato_mbed 0:d36fd4cabb70 350 fclose(log);
condato_mbed 0:d36fd4cabb70 351 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 352
condato_mbed 0:d36fd4cabb70 353 sprintf(logs_array,"%d", lines);
condato_mbed 0:d36fd4cabb70 354 }
condato_mbed 0:d36fd4cabb70 355
condato_mbed 0:d36fd4cabb70 356 void messdaten_count(){
condato_mbed 0:d36fd4cabb70 357 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 358 fflush(stdout);
condato_mbed 0:d36fd4cabb70 359
condato_mbed 0:d36fd4cabb70 360 fileSystem.mount(&blockDevice);
condato_mbed 0:d36fd4cabb70 361 FILE * messdaten = fopen ("/fs/messdaten.csv", "rb");
condato_mbed 0:d36fd4cabb70 362
condato_mbed 0:d36fd4cabb70 363 int ch = 0;
condato_mbed 0:d36fd4cabb70 364 int lines = 0;
condato_mbed 0:d36fd4cabb70 365
condato_mbed 0:d36fd4cabb70 366 while(!feof(messdaten)){
condato_mbed 0:d36fd4cabb70 367 ch = fgetc(messdaten);
condato_mbed 0:d36fd4cabb70 368 if(ch == '\n')
condato_mbed 0:d36fd4cabb70 369 {
condato_mbed 0:d36fd4cabb70 370 lines++;
condato_mbed 0:d36fd4cabb70 371 }
condato_mbed 0:d36fd4cabb70 372 }
condato_mbed 0:d36fd4cabb70 373
condato_mbed 0:d36fd4cabb70 374 fclose(messdaten);
condato_mbed 0:d36fd4cabb70 375 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 376
condato_mbed 0:d36fd4cabb70 377 measure_id = lines;
condato_mbed 0:d36fd4cabb70 378
condato_mbed 0:d36fd4cabb70 379 sprintf(messungen,"%d", lines);
condato_mbed 0:d36fd4cabb70 380 }
condato_mbed 0:d36fd4cabb70 381
condato_mbed 0:d36fd4cabb70 382 void unixtime_to_char_array(){
condato_mbed 0:d36fd4cabb70 383 tm *current;
condato_mbed 0:d36fd4cabb70 384 time(&now);
condato_mbed 0:d36fd4cabb70 385 current = localtime (&now);
condato_mbed 0:d36fd4cabb70 386 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 387
condato_mbed 0:d36fd4cabb70 388 printf("\nSekunden als Dezimal: %d\n", time(&now));
condato_mbed 0:d36fd4cabb70 389
condato_mbed 0:d36fd4cabb70 390 sprintf(seconds,"%d", time(&now));
condato_mbed 0:d36fd4cabb70 391
condato_mbed 0:d36fd4cabb70 392 printf("\nSekunden als String: %s\n", seconds);
condato_mbed 0:d36fd4cabb70 393 }
condato_mbed 0:d36fd4cabb70 394
condato_mbed 0:d36fd4cabb70 395 int array_to_int(int z){
condato_mbed 0:d36fd4cabb70 396 int zahl[z];
condato_mbed 0:d36fd4cabb70 397
condato_mbed 0:d36fd4cabb70 398 for(int i = 0; i < z; i++){
condato_mbed 0:d36fd4cabb70 399 zahl[i] = readValue[i];
condato_mbed 0:d36fd4cabb70 400 zahl[i] = zahl[i] - 48;
condato_mbed 0:d36fd4cabb70 401 }
condato_mbed 0:d36fd4cabb70 402
condato_mbed 0:d36fd4cabb70 403 unsigned long ganzes = 0;
condato_mbed 0:d36fd4cabb70 404 unsigned long log = 1;
condato_mbed 0:d36fd4cabb70 405 int j = z;
condato_mbed 0:d36fd4cabb70 406 do{
condato_mbed 0:d36fd4cabb70 407 j--;
condato_mbed 0:d36fd4cabb70 408 ganzes = ganzes + log * zahl[j];
condato_mbed 0:d36fd4cabb70 409 log = log * 10;
condato_mbed 0:d36fd4cabb70 410 }while(j > 0);
condato_mbed 0:d36fd4cabb70 411
condato_mbed 0:d36fd4cabb70 412 if((int)ganzes < 0){
condato_mbed 0:d36fd4cabb70 413 ganzes = 0;
condato_mbed 0:d36fd4cabb70 414 }
condato_mbed 0:d36fd4cabb70 415 return ganzes;
condato_mbed 0:d36fd4cabb70 416 }
condato_mbed 0:d36fd4cabb70 417
condato_mbed 0:d36fd4cabb70 418 void bleInitComplete(BLE::InitializationCompleteCallbackContext *params)
condato_mbed 0:d36fd4cabb70 419 {
condato_mbed 0:d36fd4cabb70 420 BLE &ble = params->ble;
condato_mbed 0:d36fd4cabb70 421 ble_error_t error = params->error;
condato_mbed 0:d36fd4cabb70 422
condato_mbed 0:d36fd4cabb70 423 if (error != BLE_ERROR_NONE) {
condato_mbed 0:d36fd4cabb70 424 return;
condato_mbed 0:d36fd4cabb70 425 }
condato_mbed 0:d36fd4cabb70 426
condato_mbed 0:d36fd4cabb70 427 read_id();
condato_mbed 0:d36fd4cabb70 428
condato_mbed 0:d36fd4cabb70 429 /* Setup advertising */
condato_mbed 0:d36fd4cabb70 430 ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); // BLE only, no classic BT
condato_mbed 0:d36fd4cabb70 431 ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); // advertising type
condato_mbed 0:d36fd4cabb70 432 ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME, (const uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); // add name
condato_mbed 0:d36fd4cabb70 433 ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::DEVICE_ID, (uint8_t *)device_id, 5); // add name
condato_mbed 0:d36fd4cabb70 434 //ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list)); // UUID's broadcast in advertising packet
condato_mbed 0:d36fd4cabb70 435 ble.gap().setAdvertisingInterval(100); // 100ms.
condato_mbed 0:d36fd4cabb70 436
condato_mbed 0:d36fd4cabb70 437
condato_mbed 0:d36fd4cabb70 438 /* Add custom service */
condato_mbed 0:d36fd4cabb70 439 ble.gattServer().addService(customService);
condato_mbed 0:d36fd4cabb70 440
condato_mbed 0:d36fd4cabb70 441 /* Add battery service */
condato_mbed 0:d36fd4cabb70 442 batteryServicePtr = new BatteryService(ble, batteryLevel);
condato_mbed 0:d36fd4cabb70 443
condato_mbed 0:d36fd4cabb70 444 ble.gap().onDisconnection(disconnectionCallback);
condato_mbed 0:d36fd4cabb70 445 ble.gap().onConnection(whenConnected);
condato_mbed 0:d36fd4cabb70 446 ble.gattServer().onDataWritten(writeCharCallback);
condato_mbed 0:d36fd4cabb70 447 ble.gattServer().onDataSent(onDataSent);
condato_mbed 0:d36fd4cabb70 448
condato_mbed 0:d36fd4cabb70 449 /* Start advertising */
condato_mbed 0:d36fd4cabb70 450 ble.gap().startAdvertising();
condato_mbed 0:d36fd4cabb70 451 }
condato_mbed 0:d36fd4cabb70 452
condato_mbed 0:d36fd4cabb70 453 void scheduleBleEventsProcessing(BLE::OnEventsToProcessCallbackContext* context) {
condato_mbed 0:d36fd4cabb70 454 BLE &ble = BLE::Instance();
condato_mbed 0:d36fd4cabb70 455 updateSensorValue();
condato_mbed 0:d36fd4cabb70 456 }
condato_mbed 0:d36fd4cabb70 457
condato_mbed 0:d36fd4cabb70 458 void dataSentSend(){
condato_mbed 0:d36fd4cabb70 459 response = '0';
condato_mbed 0:d36fd4cabb70 460 connected_cancel.attach(&disconnect, user_config_para.connected);
condato_mbed 0:d36fd4cabb70 461 }
condato_mbed 0:d36fd4cabb70 462
condato_mbed 0:d36fd4cabb70 463 void dataSent(){
condato_mbed 0:d36fd4cabb70 464 wait(1);
condato_mbed 0:d36fd4cabb70 465 b = 1;
condato_mbed 0:d36fd4cabb70 466 ticker.attach(sendLedCallback, 0.5);
condato_mbed 0:d36fd4cabb70 467 response = '0';
condato_mbed 0:d36fd4cabb70 468 connected_cancel.attach(&disconnect, user_config_para.connected);
condato_mbed 0:d36fd4cabb70 469 }
condato_mbed 0:d36fd4cabb70 470
condato_mbed 0:d36fd4cabb70 471 void swap(int num1, int num2){
condato_mbed 0:d36fd4cabb70 472 int temp = messwerte[num1];
condato_mbed 0:d36fd4cabb70 473 messwerte[num1] = messwerte[num2];
condato_mbed 0:d36fd4cabb70 474 messwerte[num2] = temp;
condato_mbed 0:d36fd4cabb70 475 }
condato_mbed 0:d36fd4cabb70 476
condato_mbed 0:d36fd4cabb70 477 int partition(int left, int right, int pivot){
condato_mbed 0:d36fd4cabb70 478 int leftPointer = left - 1;
condato_mbed 0:d36fd4cabb70 479 int rightPointer = right;
condato_mbed 0:d36fd4cabb70 480
condato_mbed 0:d36fd4cabb70 481 while(true){
condato_mbed 0:d36fd4cabb70 482 while(messwerte[++leftPointer] < pivot){
condato_mbed 0:d36fd4cabb70 483 //do nothing
condato_mbed 0:d36fd4cabb70 484 }
condato_mbed 0:d36fd4cabb70 485
condato_mbed 0:d36fd4cabb70 486 while(rightPointer > 0 && messwerte[--rightPointer] > pivot){
condato_mbed 0:d36fd4cabb70 487 //do nothing
condato_mbed 0:d36fd4cabb70 488 }
condato_mbed 0:d36fd4cabb70 489
condato_mbed 0:d36fd4cabb70 490 if(leftPointer >= rightPointer){
condato_mbed 0:d36fd4cabb70 491 break;
condato_mbed 0:d36fd4cabb70 492 }else{
condato_mbed 0:d36fd4cabb70 493 swap(leftPointer, rightPointer);
condato_mbed 0:d36fd4cabb70 494 }
condato_mbed 0:d36fd4cabb70 495 }
condato_mbed 0:d36fd4cabb70 496 swap(leftPointer, right);
condato_mbed 0:d36fd4cabb70 497
condato_mbed 0:d36fd4cabb70 498 return leftPointer;
condato_mbed 0:d36fd4cabb70 499 }
condato_mbed 0:d36fd4cabb70 500
condato_mbed 0:d36fd4cabb70 501 void quickSort(int left, int right){
condato_mbed 0:d36fd4cabb70 502 if(right - left <= 0){
condato_mbed 0:d36fd4cabb70 503 return;
condato_mbed 0:d36fd4cabb70 504 }else{
condato_mbed 0:d36fd4cabb70 505 int pivot = messwerte[right];
condato_mbed 0:d36fd4cabb70 506 int partionPoint = partition(left, right, pivot);
condato_mbed 0:d36fd4cabb70 507 quickSort(left, partionPoint - 1);
condato_mbed 0:d36fd4cabb70 508 quickSort(partionPoint + 1, right);
condato_mbed 0:d36fd4cabb70 509 }
condato_mbed 0:d36fd4cabb70 510 }
condato_mbed 0:d36fd4cabb70 511
condato_mbed 0:d36fd4cabb70 512 void BLE_handler()
condato_mbed 0:d36fd4cabb70 513 {
condato_mbed 0:d36fd4cabb70 514 BLE &ble = BLE::Instance();
condato_mbed 0:d36fd4cabb70 515 r = 1;
condato_mbed 0:d36fd4cabb70 516 g = 1;
condato_mbed 0:d36fd4cabb70 517 b = 0;
condato_mbed 0:d36fd4cabb70 518 ticker.attach(periodicCallback, 0.5);
condato_mbed 0:d36fd4cabb70 519 advertise_cancel.attach(&BT_false, user_config_para.advertise);
condato_mbed 0:d36fd4cabb70 520 clear_buffer();
condato_mbed 0:d36fd4cabb70 521 next_state = 0;
condato_mbed 0:d36fd4cabb70 522 printf("\nBLE - ON\n");
condato_mbed 0:d36fd4cabb70 523 printf("\nAdvertising\n");
condato_mbed 0:d36fd4cabb70 524
condato_mbed 0:d36fd4cabb70 525 while( quit )
condato_mbed 0:d36fd4cabb70 526 {
condato_mbed 0:d36fd4cabb70 527 ble.waitForEvent();
condato_mbed 0:d36fd4cabb70 528 ble.onEventsToProcess(scheduleBleEventsProcessing);
condato_mbed 0:d36fd4cabb70 529
condato_mbed 0:d36fd4cabb70 530 while ( conn_state ) //Abfrage zum Verbindungsstatus
condato_mbed 0:d36fd4cabb70 531 {
condato_mbed 0:d36fd4cabb70 532 ble.waitForEvent();
condato_mbed 0:d36fd4cabb70 533 ble.onEventsToProcess(scheduleBleEventsProcessing);
condato_mbed 0:d36fd4cabb70 534
condato_mbed 0:d36fd4cabb70 535 switch ( response )
condato_mbed 0:d36fd4cabb70 536 {
condato_mbed 0:d36fd4cabb70 537 /*
condato_mbed 0:d36fd4cabb70 538 case 's': // Messwerte übertragen
condato_mbed 0:d36fd4cabb70 539 {
condato_mbed 0:d36fd4cabb70 540 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 541 clear_buffer();
condato_mbed 0:d36fd4cabb70 542
condato_mbed 0:d36fd4cabb70 543 unsigned int length = 0;
condato_mbed 0:d36fd4cabb70 544
condato_mbed 0:d36fd4cabb70 545 connected_cancel.attach(&disconnect, user_config_para.connected);
condato_mbed 0:d36fd4cabb70 546 while(readValue[0] == NULL || readValue[0] < 0x31|| readValue[0] > 0x39){
condato_mbed 0:d36fd4cabb70 547 clear_buffer();
condato_mbed 0:d36fd4cabb70 548 ble.waitForEvent();
condato_mbed 0:d36fd4cabb70 549 if(conn_state == 0){
condato_mbed 0:d36fd4cabb70 550 break;
condato_mbed 0:d36fd4cabb70 551 }
condato_mbed 0:d36fd4cabb70 552 }
condato_mbed 0:d36fd4cabb70 553 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 554 if(conn_state == 1){
condato_mbed 0:d36fd4cabb70 555 int a = 0;
condato_mbed 0:d36fd4cabb70 556 while(readValue[a] != NULL){
condato_mbed 0:d36fd4cabb70 557 a++;
condato_mbed 0:d36fd4cabb70 558 }
condato_mbed 0:d36fd4cabb70 559 int id = array_to_int(a);
condato_mbed 0:d36fd4cabb70 560 clear_buffer();
condato_mbed 0:d36fd4cabb70 561
condato_mbed 0:d36fd4cabb70 562 fileSystem.mount(&blockDevice);
condato_mbed 0:d36fd4cabb70 563 FILE * messdaten = fopen ("/fs/messdaten.csv", "rb");
condato_mbed 0:d36fd4cabb70 564
condato_mbed 0:d36fd4cabb70 565 fseek (messdaten, 0, SEEK_END);
condato_mbed 0:d36fd4cabb70 566 length = ftell (messdaten);
condato_mbed 0:d36fd4cabb70 567 fseek (messdaten, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 568
condato_mbed 0:d36fd4cabb70 569 if(id > measure_id){
condato_mbed 0:d36fd4cabb70 570 printf("\nMeasuremnt ID %d doesn't exist!\n", id);
condato_mbed 0:d36fd4cabb70 571 char string[] = "Call of an inexistent measurement ID";
condato_mbed 0:d36fd4cabb70 572 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 573
condato_mbed 0:d36fd4cabb70 574 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 575 onDataSent(0);
condato_mbed 0:d36fd4cabb70 576 }else{
condato_mbed 0:d36fd4cabb70 577 unsigned long ch = 0;
condato_mbed 0:d36fd4cabb70 578 unsigned long lines = 0;
condato_mbed 0:d36fd4cabb70 579 unsigned long i = 0;
condato_mbed 0:d36fd4cabb70 580 unsigned long j = 1;
condato_mbed 0:d36fd4cabb70 581 unsigned long c = 0;
condato_mbed 0:d36fd4cabb70 582
condato_mbed 0:d36fd4cabb70 583 if(id == 1){
condato_mbed 0:d36fd4cabb70 584 fseek(messdaten, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 585 }else{
condato_mbed 0:d36fd4cabb70 586 while((id - 1) != lines){
condato_mbed 0:d36fd4cabb70 587 ch = fgetc(messdaten);
condato_mbed 0:d36fd4cabb70 588 if(ch == '\n'){
condato_mbed 0:d36fd4cabb70 589 lines++;
condato_mbed 0:d36fd4cabb70 590 }
condato_mbed 0:d36fd4cabb70 591 i++;
condato_mbed 0:d36fd4cabb70 592 }
condato_mbed 0:d36fd4cabb70 593 fseek(messdaten, i, SEEK_SET);
condato_mbed 0:d36fd4cabb70 594 c = i;
condato_mbed 0:d36fd4cabb70 595 }
condato_mbed 0:d36fd4cabb70 596 if(id == measure_id){
condato_mbed 0:d36fd4cabb70 597 while(fgetc(messdaten) != EOF){
condato_mbed 0:d36fd4cabb70 598 i++;
condato_mbed 0:d36fd4cabb70 599 j++;
condato_mbed 0:d36fd4cabb70 600 }
condato_mbed 0:d36fd4cabb70 601 }else{
condato_mbed 0:d36fd4cabb70 602 while(fgetc(messdaten) != '\n'){
condato_mbed 0:d36fd4cabb70 603 i++;
condato_mbed 0:d36fd4cabb70 604 j++;
condato_mbed 0:d36fd4cabb70 605 }
condato_mbed 0:d36fd4cabb70 606 }
condato_mbed 0:d36fd4cabb70 607 fseek(messdaten, c, SEEK_SET);
condato_mbed 0:d36fd4cabb70 608 fread (ble_buff[ble_buff_line], 1, j, messdaten);
condato_mbed 0:d36fd4cabb70 609
condato_mbed 0:d36fd4cabb70 610 for(int l = 0; l < j; l++){
condato_mbed 0:d36fd4cabb70 611 onDataSent(l);
condato_mbed 0:d36fd4cabb70 612 }
condato_mbed 0:d36fd4cabb70 613 }
condato_mbed 0:d36fd4cabb70 614
condato_mbed 0:d36fd4cabb70 615 fclose(messdaten);
condato_mbed 0:d36fd4cabb70 616 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 617 fflush(stdout);
condato_mbed 0:d36fd4cabb70 618
condato_mbed 0:d36fd4cabb70 619 dataSentSend();
condato_mbed 0:d36fd4cabb70 620 }
condato_mbed 0:d36fd4cabb70 621 break;
condato_mbed 0:d36fd4cabb70 622 }
condato_mbed 0:d36fd4cabb70 623 */
condato_mbed 0:d36fd4cabb70 624
condato_mbed 0:d36fd4cabb70 625 case 's': // Messwerte übertragen
condato_mbed 0:d36fd4cabb70 626 {
condato_mbed 0:d36fd4cabb70 627 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 628 clear_buffer();
condato_mbed 0:d36fd4cabb70 629
condato_mbed 0:d36fd4cabb70 630 if(counter_m == 0){
condato_mbed 0:d36fd4cabb70 631 char string[] = "Command 's' (send measuremnts) received";
condato_mbed 0:d36fd4cabb70 632 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 633 }
condato_mbed 0:d36fd4cabb70 634
condato_mbed 0:d36fd4cabb70 635 connected_cancel.attach(&disconnect, user_config_para.connected);
condato_mbed 0:d36fd4cabb70 636 while(readValue[0] == NULL || readValue[0] < 0x31|| readValue[0] > 0x39){
condato_mbed 0:d36fd4cabb70 637 clear_buffer();
condato_mbed 0:d36fd4cabb70 638 ble.waitForEvent();
condato_mbed 0:d36fd4cabb70 639 if(conn_state == 0){
condato_mbed 0:d36fd4cabb70 640 break;
condato_mbed 0:d36fd4cabb70 641 }
condato_mbed 0:d36fd4cabb70 642 }
condato_mbed 0:d36fd4cabb70 643 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 644 if(conn_state == 1){
condato_mbed 0:d36fd4cabb70 645
condato_mbed 0:d36fd4cabb70 646 if(counter_m == 0){
condato_mbed 0:d36fd4cabb70 647 char string1[] = "Sending measuremnts...";
condato_mbed 0:d36fd4cabb70 648 write_to_sd_log_single(string1);
condato_mbed 0:d36fd4cabb70 649 }
condato_mbed 0:d36fd4cabb70 650
condato_mbed 0:d36fd4cabb70 651 int a = 0;
condato_mbed 0:d36fd4cabb70 652 while(readValue[a] != NULL){
condato_mbed 0:d36fd4cabb70 653 a++;
condato_mbed 0:d36fd4cabb70 654 }
condato_mbed 0:d36fd4cabb70 655 int id = array_to_int(a);
condato_mbed 0:d36fd4cabb70 656 clear_buffer();
condato_mbed 0:d36fd4cabb70 657
condato_mbed 0:d36fd4cabb70 658 fileSystem.mount(&blockDevice);
condato_mbed 0:d36fd4cabb70 659 FILE * messdaten = fopen ("/fs/messdaten.csv", "rb");
condato_mbed 0:d36fd4cabb70 660
condato_mbed 0:d36fd4cabb70 661 /* Daten senden */
condato_mbed 0:d36fd4cabb70 662
condato_mbed 0:d36fd4cabb70 663 if(id > measure_id){
condato_mbed 0:d36fd4cabb70 664 printf("\nMeasuremnt ID %d doesn't exist!\n", id);
condato_mbed 0:d36fd4cabb70 665 char string[] = "Call of an inexistent measurement ID";
condato_mbed 0:d36fd4cabb70 666 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 667
condato_mbed 0:d36fd4cabb70 668 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 669 onDataSent(0);
condato_mbed 0:d36fd4cabb70 670 }else{
condato_mbed 0:d36fd4cabb70 671 unsigned long ch = 0;
condato_mbed 0:d36fd4cabb70 672 unsigned long lines = 0;
condato_mbed 0:d36fd4cabb70 673 unsigned long i = 0;
condato_mbed 0:d36fd4cabb70 674 unsigned long j = 1;
condato_mbed 0:d36fd4cabb70 675 unsigned long c = 0;
condato_mbed 0:d36fd4cabb70 676
condato_mbed 0:d36fd4cabb70 677 if(id == 1){
condato_mbed 0:d36fd4cabb70 678 fseek(messdaten, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 679 }else{
condato_mbed 0:d36fd4cabb70 680 while((id - 1) != lines){
condato_mbed 0:d36fd4cabb70 681 ch = fgetc(messdaten);
condato_mbed 0:d36fd4cabb70 682 if(ch == '\n'){
condato_mbed 0:d36fd4cabb70 683 lines++;
condato_mbed 0:d36fd4cabb70 684 }
condato_mbed 0:d36fd4cabb70 685 i++;
condato_mbed 0:d36fd4cabb70 686 }
condato_mbed 0:d36fd4cabb70 687 fseek(messdaten, i, SEEK_SET);
condato_mbed 0:d36fd4cabb70 688 c = i;
condato_mbed 0:d36fd4cabb70 689 }
condato_mbed 0:d36fd4cabb70 690 if(id == measure_id){
condato_mbed 0:d36fd4cabb70 691 while(fgetc(messdaten) != EOF){
condato_mbed 0:d36fd4cabb70 692 i++;
condato_mbed 0:d36fd4cabb70 693 j++;
condato_mbed 0:d36fd4cabb70 694 }
condato_mbed 0:d36fd4cabb70 695 }else{
condato_mbed 0:d36fd4cabb70 696 int y = 0;
condato_mbed 0:d36fd4cabb70 697 while(y < 10){
condato_mbed 0:d36fd4cabb70 698 i++;
condato_mbed 0:d36fd4cabb70 699 j++;
condato_mbed 0:d36fd4cabb70 700 ch = fgetc(messdaten);
condato_mbed 0:d36fd4cabb70 701 if(ch == '\n'){
condato_mbed 0:d36fd4cabb70 702 y++;
condato_mbed 0:d36fd4cabb70 703 }
condato_mbed 0:d36fd4cabb70 704 if(ch == EOF){
condato_mbed 0:d36fd4cabb70 705 break;
condato_mbed 0:d36fd4cabb70 706 }
condato_mbed 0:d36fd4cabb70 707 }
condato_mbed 0:d36fd4cabb70 708 i--;
condato_mbed 0:d36fd4cabb70 709 j--;
condato_mbed 0:d36fd4cabb70 710 }
condato_mbed 0:d36fd4cabb70 711 fseek(messdaten, c, SEEK_SET);
condato_mbed 0:d36fd4cabb70 712 fread (ble_buff[ble_buff_line], 1, j, messdaten);
condato_mbed 0:d36fd4cabb70 713
condato_mbed 0:d36fd4cabb70 714 for(int l = 0; l < j; l++){
condato_mbed 0:d36fd4cabb70 715 onDataSent(l);
condato_mbed 0:d36fd4cabb70 716 }
condato_mbed 0:d36fd4cabb70 717 }
condato_mbed 0:d36fd4cabb70 718
condato_mbed 0:d36fd4cabb70 719 fclose(messdaten);
condato_mbed 0:d36fd4cabb70 720 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 721 fflush(stdout);
condato_mbed 0:d36fd4cabb70 722
condato_mbed 0:d36fd4cabb70 723 counter_m += 10;
condato_mbed 0:d36fd4cabb70 724 if(counter_m >= measure_id){
condato_mbed 0:d36fd4cabb70 725 char string2[] = "Sending measuremnts complete";
condato_mbed 0:d36fd4cabb70 726 write_to_sd_log_single(string2);
condato_mbed 0:d36fd4cabb70 727 counter_m = 0;
condato_mbed 0:d36fd4cabb70 728 dataSent();
condato_mbed 0:d36fd4cabb70 729 }else{
condato_mbed 0:d36fd4cabb70 730 dataSentSend();
condato_mbed 0:d36fd4cabb70 731 }
condato_mbed 0:d36fd4cabb70 732 }
condato_mbed 0:d36fd4cabb70 733 break;
condato_mbed 0:d36fd4cabb70 734 }
condato_mbed 0:d36fd4cabb70 735
condato_mbed 0:d36fd4cabb70 736 case 'g': //Config senden
condato_mbed 0:d36fd4cabb70 737 {
condato_mbed 0:d36fd4cabb70 738 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 739 clear_buffer();
condato_mbed 0:d36fd4cabb70 740
condato_mbed 0:d36fd4cabb70 741 char string[] = "Command 'g' (send config settings) received";
condato_mbed 0:d36fd4cabb70 742 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 743
condato_mbed 0:d36fd4cabb70 744 unsigned int length = 0;
condato_mbed 0:d36fd4cabb70 745
condato_mbed 0:d36fd4cabb70 746 char string_1[] = "Sending config..";
condato_mbed 0:d36fd4cabb70 747 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 748
condato_mbed 0:d36fd4cabb70 749 fileSystem.mount(&blockDevice);
condato_mbed 0:d36fd4cabb70 750 FILE * user_config = fopen ("/fs/user_config.csv", "rb");
condato_mbed 0:d36fd4cabb70 751
condato_mbed 0:d36fd4cabb70 752 fseek (user_config, 0, SEEK_END);
condato_mbed 0:d36fd4cabb70 753 length = ftell (user_config);
condato_mbed 0:d36fd4cabb70 754 fseek (user_config, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 755
condato_mbed 0:d36fd4cabb70 756 fread (ble_buff, 1, length, user_config);
condato_mbed 0:d36fd4cabb70 757
condato_mbed 0:d36fd4cabb70 758 fclose(user_config);
condato_mbed 0:d36fd4cabb70 759 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 760
condato_mbed 0:d36fd4cabb70 761 fflush(stdout);
condato_mbed 0:d36fd4cabb70 762
condato_mbed 0:d36fd4cabb70 763 for(int i = 0; i < length; i++){
condato_mbed 0:d36fd4cabb70 764 onDataSent(i);
condato_mbed 0:d36fd4cabb70 765 }
condato_mbed 0:d36fd4cabb70 766
condato_mbed 0:d36fd4cabb70 767 char string_2[] = "Sending config complete";
condato_mbed 0:d36fd4cabb70 768 write_to_sd_log_single(string_2);
condato_mbed 0:d36fd4cabb70 769
condato_mbed 0:d36fd4cabb70 770 dataSent();
condato_mbed 0:d36fd4cabb70 771
condato_mbed 0:d36fd4cabb70 772 break;
condato_mbed 0:d36fd4cabb70 773 }
condato_mbed 0:d36fd4cabb70 774
condato_mbed 0:d36fd4cabb70 775 case 'c': // Config auf Werkeinstellungen zurücksetzen
condato_mbed 0:d36fd4cabb70 776 {
condato_mbed 0:d36fd4cabb70 777 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 778 clear_buffer();
condato_mbed 0:d36fd4cabb70 779
condato_mbed 0:d36fd4cabb70 780 char string[] = "Command 'c' (reset config to standard) received";
condato_mbed 0:d36fd4cabb70 781 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 782
condato_mbed 0:d36fd4cabb70 783 if(load_standard_config() == 1){
condato_mbed 0:d36fd4cabb70 784 char string[] = "Config reseted to factory settings";
condato_mbed 0:d36fd4cabb70 785 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 786
condato_mbed 0:d36fd4cabb70 787 ble_buff[0][0] = '1';
condato_mbed 0:d36fd4cabb70 788 onDataSent(0);
condato_mbed 0:d36fd4cabb70 789 }else{
condato_mbed 0:d36fd4cabb70 790 char string[] = "Failed to reset Config to factory settings";
condato_mbed 0:d36fd4cabb70 791 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 792
condato_mbed 0:d36fd4cabb70 793 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 794 onDataSent(0);
condato_mbed 0:d36fd4cabb70 795 }
condato_mbed 0:d36fd4cabb70 796
condato_mbed 0:d36fd4cabb70 797 dataSent();
condato_mbed 0:d36fd4cabb70 798
condato_mbed 0:d36fd4cabb70 799 break;
condato_mbed 0:d36fd4cabb70 800 }
condato_mbed 0:d36fd4cabb70 801
condato_mbed 0:d36fd4cabb70 802 case 'd': // Messwerte löschen
condato_mbed 0:d36fd4cabb70 803 {
condato_mbed 0:d36fd4cabb70 804 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 805 clear_buffer();
condato_mbed 0:d36fd4cabb70 806
condato_mbed 0:d36fd4cabb70 807 char string[] = "Command 'd' (delete measurement data) received";
condato_mbed 0:d36fd4cabb70 808 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 809
condato_mbed 0:d36fd4cabb70 810 if(delete_file_messdaten() == 1){
condato_mbed 0:d36fd4cabb70 811 char string_1[] = "Measuerements deleted succesfully";
condato_mbed 0:d36fd4cabb70 812 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 813
condato_mbed 0:d36fd4cabb70 814 ble_buff[0][0] = '1';
condato_mbed 0:d36fd4cabb70 815 onDataSent(0);
condato_mbed 0:d36fd4cabb70 816 }else{
condato_mbed 0:d36fd4cabb70 817 char string_1[] = "Measuerements data delete failed";
condato_mbed 0:d36fd4cabb70 818 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 819
condato_mbed 0:d36fd4cabb70 820 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 821 onDataSent(0);
condato_mbed 0:d36fd4cabb70 822 }
condato_mbed 0:d36fd4cabb70 823
condato_mbed 0:d36fd4cabb70 824 dataSent();
condato_mbed 0:d36fd4cabb70 825
condato_mbed 0:d36fd4cabb70 826 break;
condato_mbed 0:d36fd4cabb70 827 }
condato_mbed 0:d36fd4cabb70 828 /*
condato_mbed 0:d36fd4cabb70 829 case 'l': //Log-Datei übertragen
condato_mbed 0:d36fd4cabb70 830 {
condato_mbed 0:d36fd4cabb70 831
condato_mbed 0:d36fd4cabb70 832 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 833 clear_buffer();
condato_mbed 0:d36fd4cabb70 834
condato_mbed 0:d36fd4cabb70 835 unsigned int length = 0;
condato_mbed 0:d36fd4cabb70 836
condato_mbed 0:d36fd4cabb70 837 connected_cancel.attach(&disconnect, user_config_para.connected);
condato_mbed 0:d36fd4cabb70 838 while(readValue[0] == NULL || readValue[0] < 0x31|| readValue[0] > 0x39){
condato_mbed 0:d36fd4cabb70 839 clear_buffer();
condato_mbed 0:d36fd4cabb70 840 ble.waitForEvent();
condato_mbed 0:d36fd4cabb70 841 if(conn_state == 0){
condato_mbed 0:d36fd4cabb70 842 break;
condato_mbed 0:d36fd4cabb70 843 }
condato_mbed 0:d36fd4cabb70 844 }
condato_mbed 0:d36fd4cabb70 845 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 846 if(conn_state == 1){
condato_mbed 0:d36fd4cabb70 847 int a = 0;
condato_mbed 0:d36fd4cabb70 848 while(readValue[a] != NULL){
condato_mbed 0:d36fd4cabb70 849 a++;
condato_mbed 0:d36fd4cabb70 850 }
condato_mbed 0:d36fd4cabb70 851 int id = array_to_int(a);
condato_mbed 0:d36fd4cabb70 852 clear_buffer();
condato_mbed 0:d36fd4cabb70 853
condato_mbed 0:d36fd4cabb70 854 fileSystem.mount(&blockDevice);
condato_mbed 0:d36fd4cabb70 855 FILE * log = fopen ("/fs/log.csv", "rb");
condato_mbed 0:d36fd4cabb70 856
condato_mbed 0:d36fd4cabb70 857 fseek (log, 0, SEEK_END);
condato_mbed 0:d36fd4cabb70 858 length = ftell (log);
condato_mbed 0:d36fd4cabb70 859 fseek (log, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 860
condato_mbed 0:d36fd4cabb70 861
condato_mbed 0:d36fd4cabb70 862
condato_mbed 0:d36fd4cabb70 863 if(id > log_id){
condato_mbed 0:d36fd4cabb70 864 printf("\nLog ID %d doesn't exist!\n", id);
condato_mbed 0:d36fd4cabb70 865 char string[] = "Call of an inexistent log ID";
condato_mbed 0:d36fd4cabb70 866 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 867
condato_mbed 0:d36fd4cabb70 868 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 869 onDataSent(0);
condato_mbed 0:d36fd4cabb70 870 }else{
condato_mbed 0:d36fd4cabb70 871 unsigned long ch = 0;
condato_mbed 0:d36fd4cabb70 872 unsigned long lines = 0;
condato_mbed 0:d36fd4cabb70 873 unsigned long i = 0;
condato_mbed 0:d36fd4cabb70 874 unsigned long j = 1;
condato_mbed 0:d36fd4cabb70 875 unsigned long c = 0;
condato_mbed 0:d36fd4cabb70 876
condato_mbed 0:d36fd4cabb70 877 if(id == 1){
condato_mbed 0:d36fd4cabb70 878 fseek(log, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 879 }else{
condato_mbed 0:d36fd4cabb70 880 while((id - 1) != lines){
condato_mbed 0:d36fd4cabb70 881 ch = fgetc(log);
condato_mbed 0:d36fd4cabb70 882 if(ch == '\n'){
condato_mbed 0:d36fd4cabb70 883 lines++;
condato_mbed 0:d36fd4cabb70 884 }
condato_mbed 0:d36fd4cabb70 885 i++;
condato_mbed 0:d36fd4cabb70 886 }
condato_mbed 0:d36fd4cabb70 887 fseek(log, i, SEEK_SET);
condato_mbed 0:d36fd4cabb70 888 c = i;
condato_mbed 0:d36fd4cabb70 889 }
condato_mbed 0:d36fd4cabb70 890 if(id == log_id){
condato_mbed 0:d36fd4cabb70 891 while(fgetc(log) != EOF){
condato_mbed 0:d36fd4cabb70 892 i++;
condato_mbed 0:d36fd4cabb70 893 j++;
condato_mbed 0:d36fd4cabb70 894 }
condato_mbed 0:d36fd4cabb70 895 }else{
condato_mbed 0:d36fd4cabb70 896 while(fgetc(log) != '\n'){
condato_mbed 0:d36fd4cabb70 897 i++;
condato_mbed 0:d36fd4cabb70 898 j++;
condato_mbed 0:d36fd4cabb70 899 }
condato_mbed 0:d36fd4cabb70 900 }
condato_mbed 0:d36fd4cabb70 901 fseek(log, c, SEEK_SET);
condato_mbed 0:d36fd4cabb70 902 fread (ble_buff[ble_buff_line], 1, j, log);
condato_mbed 0:d36fd4cabb70 903
condato_mbed 0:d36fd4cabb70 904 for(int l = 0; l < j; l++){
condato_mbed 0:d36fd4cabb70 905 onDataSent(l);
condato_mbed 0:d36fd4cabb70 906 }
condato_mbed 0:d36fd4cabb70 907 }
condato_mbed 0:d36fd4cabb70 908
condato_mbed 0:d36fd4cabb70 909 fclose(log);
condato_mbed 0:d36fd4cabb70 910 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 911 fflush(stdout);
condato_mbed 0:d36fd4cabb70 912
condato_mbed 0:d36fd4cabb70 913 dataSentSend();
condato_mbed 0:d36fd4cabb70 914 }
condato_mbed 0:d36fd4cabb70 915 break;
condato_mbed 0:d36fd4cabb70 916 }
condato_mbed 0:d36fd4cabb70 917 */
condato_mbed 0:d36fd4cabb70 918
condato_mbed 0:d36fd4cabb70 919 case 'l': //Log-Datei übertragen
condato_mbed 0:d36fd4cabb70 920 {
condato_mbed 0:d36fd4cabb70 921 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 922 clear_buffer();
condato_mbed 0:d36fd4cabb70 923
condato_mbed 0:d36fd4cabb70 924 if(counter_l == 0){
condato_mbed 0:d36fd4cabb70 925 char string[] = "Command 'l' (send logs) received";
condato_mbed 0:d36fd4cabb70 926 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 927 }
condato_mbed 0:d36fd4cabb70 928
condato_mbed 0:d36fd4cabb70 929 connected_cancel.attach(&disconnect, user_config_para.connected);
condato_mbed 0:d36fd4cabb70 930 while(readValue[0] == NULL || readValue[0] < 0x31|| readValue[0] > 0x39){
condato_mbed 0:d36fd4cabb70 931 clear_buffer();
condato_mbed 0:d36fd4cabb70 932 ble.waitForEvent();
condato_mbed 0:d36fd4cabb70 933 if(conn_state == 0){
condato_mbed 0:d36fd4cabb70 934 break;
condato_mbed 0:d36fd4cabb70 935 }
condato_mbed 0:d36fd4cabb70 936 }
condato_mbed 0:d36fd4cabb70 937 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 938 if(conn_state == 1){
condato_mbed 0:d36fd4cabb70 939
condato_mbed 0:d36fd4cabb70 940 if(counter_l == 0){
condato_mbed 0:d36fd4cabb70 941 char string1[] = "Sending logs...";
condato_mbed 0:d36fd4cabb70 942 write_to_sd_log_single(string1);
condato_mbed 0:d36fd4cabb70 943 }
condato_mbed 0:d36fd4cabb70 944
condato_mbed 0:d36fd4cabb70 945 int a = 0;
condato_mbed 0:d36fd4cabb70 946 while(readValue[a] != NULL){
condato_mbed 0:d36fd4cabb70 947 a++;
condato_mbed 0:d36fd4cabb70 948 }
condato_mbed 0:d36fd4cabb70 949 int id = array_to_int(a);
condato_mbed 0:d36fd4cabb70 950 clear_buffer();
condato_mbed 0:d36fd4cabb70 951
condato_mbed 0:d36fd4cabb70 952 fileSystem.mount(&blockDevice);
condato_mbed 0:d36fd4cabb70 953 FILE * log = fopen ("/fs/log.csv", "rb");
condato_mbed 0:d36fd4cabb70 954
condato_mbed 0:d36fd4cabb70 955 /* Daten senden */
condato_mbed 0:d36fd4cabb70 956
condato_mbed 0:d36fd4cabb70 957 if(id > log_id){
condato_mbed 0:d36fd4cabb70 958 printf("\nLog ID %d doesn't exist!\n", id);
condato_mbed 0:d36fd4cabb70 959 char string[] = "Call of an inexistent log ID";
condato_mbed 0:d36fd4cabb70 960 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 961
condato_mbed 0:d36fd4cabb70 962 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 963 onDataSent(0);
condato_mbed 0:d36fd4cabb70 964 }else{
condato_mbed 0:d36fd4cabb70 965 unsigned long ch = 0;
condato_mbed 0:d36fd4cabb70 966 unsigned long lines = 0;
condato_mbed 0:d36fd4cabb70 967 unsigned long i = 0;
condato_mbed 0:d36fd4cabb70 968 unsigned long j = 1;
condato_mbed 0:d36fd4cabb70 969 unsigned long c = 0;
condato_mbed 0:d36fd4cabb70 970
condato_mbed 0:d36fd4cabb70 971 if(id == 1){
condato_mbed 0:d36fd4cabb70 972 fseek(log, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 973 }else{
condato_mbed 0:d36fd4cabb70 974 while((id - 1) != lines){
condato_mbed 0:d36fd4cabb70 975 ch = fgetc(log);
condato_mbed 0:d36fd4cabb70 976 if(ch == '\n'){
condato_mbed 0:d36fd4cabb70 977 lines++;
condato_mbed 0:d36fd4cabb70 978 }
condato_mbed 0:d36fd4cabb70 979 i++;
condato_mbed 0:d36fd4cabb70 980 }
condato_mbed 0:d36fd4cabb70 981 fseek(log, i, SEEK_SET);
condato_mbed 0:d36fd4cabb70 982 c = i;
condato_mbed 0:d36fd4cabb70 983 }
condato_mbed 0:d36fd4cabb70 984 if(id == log_id){
condato_mbed 0:d36fd4cabb70 985 while(fgetc(log) != EOF){
condato_mbed 0:d36fd4cabb70 986 i++;
condato_mbed 0:d36fd4cabb70 987 j++;
condato_mbed 0:d36fd4cabb70 988 }
condato_mbed 0:d36fd4cabb70 989 }else{
condato_mbed 0:d36fd4cabb70 990 int y = 0;
condato_mbed 0:d36fd4cabb70 991 while(y < 5){
condato_mbed 0:d36fd4cabb70 992 i++;
condato_mbed 0:d36fd4cabb70 993 j++;
condato_mbed 0:d36fd4cabb70 994 ch = fgetc(log);
condato_mbed 0:d36fd4cabb70 995 if(ch == '\n'){
condato_mbed 0:d36fd4cabb70 996 y++;
condato_mbed 0:d36fd4cabb70 997 }
condato_mbed 0:d36fd4cabb70 998 if(ch == EOF){
condato_mbed 0:d36fd4cabb70 999 break;
condato_mbed 0:d36fd4cabb70 1000 }
condato_mbed 0:d36fd4cabb70 1001 }
condato_mbed 0:d36fd4cabb70 1002 i--;
condato_mbed 0:d36fd4cabb70 1003 j--;
condato_mbed 0:d36fd4cabb70 1004 }
condato_mbed 0:d36fd4cabb70 1005 fseek(log, c, SEEK_SET);
condato_mbed 0:d36fd4cabb70 1006 fread (ble_buff[ble_buff_line], 1, j, log);
condato_mbed 0:d36fd4cabb70 1007
condato_mbed 0:d36fd4cabb70 1008 for(int l = 0; l < j; l++){
condato_mbed 0:d36fd4cabb70 1009 onDataSent(l);
condato_mbed 0:d36fd4cabb70 1010 }
condato_mbed 0:d36fd4cabb70 1011 }
condato_mbed 0:d36fd4cabb70 1012
condato_mbed 0:d36fd4cabb70 1013 fclose(log);
condato_mbed 0:d36fd4cabb70 1014 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 1015 fflush(stdout);
condato_mbed 0:d36fd4cabb70 1016
condato_mbed 0:d36fd4cabb70 1017 counter_l += 5;
condato_mbed 0:d36fd4cabb70 1018 if(counter_l >= measure_id){
condato_mbed 0:d36fd4cabb70 1019 char string2[] = "Sending logs complete";
condato_mbed 0:d36fd4cabb70 1020 write_to_sd_log_single(string2);
condato_mbed 0:d36fd4cabb70 1021 counter_l = 0;
condato_mbed 0:d36fd4cabb70 1022 dataSent();
condato_mbed 0:d36fd4cabb70 1023 }else{
condato_mbed 0:d36fd4cabb70 1024 dataSentSend();
condato_mbed 0:d36fd4cabb70 1025 }
condato_mbed 0:d36fd4cabb70 1026 }
condato_mbed 0:d36fd4cabb70 1027 break;
condato_mbed 0:d36fd4cabb70 1028 }
condato_mbed 0:d36fd4cabb70 1029
condato_mbed 0:d36fd4cabb70 1030 case 'r': // Log Datei löschen
condato_mbed 0:d36fd4cabb70 1031 {
condato_mbed 0:d36fd4cabb70 1032 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1033 clear_buffer();
condato_mbed 0:d36fd4cabb70 1034
condato_mbed 0:d36fd4cabb70 1035 char string[] = "Command 'r' (delete log file) received";
condato_mbed 0:d36fd4cabb70 1036 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1037
condato_mbed 0:d36fd4cabb70 1038 if(delete_file_log() == 1){
condato_mbed 0:d36fd4cabb70 1039 char string_1[] = "Log file deleted";
condato_mbed 0:d36fd4cabb70 1040 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 1041
condato_mbed 0:d36fd4cabb70 1042 ble_buff[0][0] = '1';
condato_mbed 0:d36fd4cabb70 1043 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1044 }else{
condato_mbed 0:d36fd4cabb70 1045 char string_1[] = "Log file delete failed";
condato_mbed 0:d36fd4cabb70 1046 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 1047
condato_mbed 0:d36fd4cabb70 1048 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 1049 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1050 }
condato_mbed 0:d36fd4cabb70 1051
condato_mbed 0:d36fd4cabb70 1052 dataSent();
condato_mbed 0:d36fd4cabb70 1053
condato_mbed 0:d36fd4cabb70 1054 break;
condato_mbed 0:d36fd4cabb70 1055 }
condato_mbed 0:d36fd4cabb70 1056
condato_mbed 0:d36fd4cabb70 1057 case 'n': //Reset
condato_mbed 0:d36fd4cabb70 1058 {
condato_mbed 0:d36fd4cabb70 1059 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1060 clear_buffer();
condato_mbed 0:d36fd4cabb70 1061
condato_mbed 0:d36fd4cabb70 1062 char string[] = "Command 'n' (reboot) received";
condato_mbed 0:d36fd4cabb70 1063 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1064 BT_false();
condato_mbed 0:d36fd4cabb70 1065 wait(0.5);
condato_mbed 0:d36fd4cabb70 1066 reboot();
condato_mbed 0:d36fd4cabb70 1067 break;
condato_mbed 0:d36fd4cabb70 1068 }
condato_mbed 0:d36fd4cabb70 1069
condato_mbed 0:d36fd4cabb70 1070 case 'w': // Werkeinstellungen
condato_mbed 0:d36fd4cabb70 1071 {
condato_mbed 0:d36fd4cabb70 1072 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1073 clear_buffer();
condato_mbed 0:d36fd4cabb70 1074
condato_mbed 0:d36fd4cabb70 1075 char string[] = "Command 'w' (reset to factory settings) received";
condato_mbed 0:d36fd4cabb70 1076 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1077
condato_mbed 0:d36fd4cabb70 1078 if(delete_file_messdaten() && load_standard_config() && delete_file_log() == 1){
condato_mbed 0:d36fd4cabb70 1079 char string_1[] = "System reseted to factory settings";
condato_mbed 0:d36fd4cabb70 1080 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 1081
condato_mbed 0:d36fd4cabb70 1082 ble_buff[0][0] = '1';
condato_mbed 0:d36fd4cabb70 1083 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1084
condato_mbed 0:d36fd4cabb70 1085 printf("\n__________________________\n\nColdchainlogger reseted \nto factory settings\n__________________________\n\n");
condato_mbed 0:d36fd4cabb70 1086 }else{
condato_mbed 0:d36fd4cabb70 1087 char string_1[] = "System reset to factory settings failed";
condato_mbed 0:d36fd4cabb70 1088 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 1089
condato_mbed 0:d36fd4cabb70 1090 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 1091 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1092 }
condato_mbed 0:d36fd4cabb70 1093
condato_mbed 0:d36fd4cabb70 1094 dataSent();
condato_mbed 0:d36fd4cabb70 1095
condato_mbed 0:d36fd4cabb70 1096 break;
condato_mbed 0:d36fd4cabb70 1097 }
condato_mbed 0:d36fd4cabb70 1098
condato_mbed 0:d36fd4cabb70 1099 case 'a': // Datenaufnahme pausieren / stoppen
condato_mbed 0:d36fd4cabb70 1100 {
condato_mbed 0:d36fd4cabb70 1101 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1102 clear_buffer();
condato_mbed 0:d36fd4cabb70 1103
condato_mbed 0:d36fd4cabb70 1104 char string[] = "Command 'a' (pause / stop measurement) received";
condato_mbed 0:d36fd4cabb70 1105 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1106
condato_mbed 0:d36fd4cabb70 1107 mess_timer.detach();
condato_mbed 0:d36fd4cabb70 1108 next_state = 0;
condato_mbed 0:d36fd4cabb70 1109
condato_mbed 0:d36fd4cabb70 1110 if(pause == true){
condato_mbed 0:d36fd4cabb70 1111 char string_1[] = "Measurement stopped";
condato_mbed 0:d36fd4cabb70 1112 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 1113 printf("\nMeasurement stopped\n");
condato_mbed 0:d36fd4cabb70 1114 shipping = false;
condato_mbed 0:d36fd4cabb70 1115
condato_mbed 0:d36fd4cabb70 1116 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 1117 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1118 }else{
condato_mbed 0:d36fd4cabb70 1119 pause = true;
condato_mbed 0:d36fd4cabb70 1120 char string_1[] = "Measurement paused";
condato_mbed 0:d36fd4cabb70 1121 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 1122 printf("\nMeasurement puased\n");
condato_mbed 0:d36fd4cabb70 1123
condato_mbed 0:d36fd4cabb70 1124 ble_buff[0][0] = '1';
condato_mbed 0:d36fd4cabb70 1125 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1126 }
condato_mbed 0:d36fd4cabb70 1127
condato_mbed 0:d36fd4cabb70 1128 mess_timer.detach();
condato_mbed 0:d36fd4cabb70 1129
condato_mbed 0:d36fd4cabb70 1130 dataSent();
condato_mbed 0:d36fd4cabb70 1131
condato_mbed 0:d36fd4cabb70 1132 break;
condato_mbed 0:d36fd4cabb70 1133 }
condato_mbed 0:d36fd4cabb70 1134
condato_mbed 0:d36fd4cabb70 1135 case 'f': // Datenaufnahme starten / fortsetzen
condato_mbed 0:d36fd4cabb70 1136 {
condato_mbed 0:d36fd4cabb70 1137 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1138 clear_buffer();
condato_mbed 0:d36fd4cabb70 1139
condato_mbed 0:d36fd4cabb70 1140 char string[] = "Command 'f' (start / continue measurement) received";
condato_mbed 0:d36fd4cabb70 1141 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1142
condato_mbed 0:d36fd4cabb70 1143 if(shipping == false){
condato_mbed 0:d36fd4cabb70 1144 char string_1[] = "Measurement started";
condato_mbed 0:d36fd4cabb70 1145 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 1146 shipping = true;
condato_mbed 0:d36fd4cabb70 1147 pause = false;
condato_mbed 0:d36fd4cabb70 1148
condato_mbed 0:d36fd4cabb70 1149 if(user_config_para.wait_mode == 1){
condato_mbed 0:d36fd4cabb70 1150 next_state = 3;
condato_mbed 0:d36fd4cabb70 1151 }else{
condato_mbed 0:d36fd4cabb70 1152 next_state = 1;
condato_mbed 0:d36fd4cabb70 1153 }
condato_mbed 0:d36fd4cabb70 1154 printf("\nMeasurement started\n");
condato_mbed 0:d36fd4cabb70 1155
condato_mbed 0:d36fd4cabb70 1156 ble_buff[0][0] = '1';
condato_mbed 0:d36fd4cabb70 1157 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1158 }else{
condato_mbed 0:d36fd4cabb70 1159 next_state = 1;
condato_mbed 0:d36fd4cabb70 1160 char string_1[] = "Measurement continued";
condato_mbed 0:d36fd4cabb70 1161 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 1162 printf("\nMeasurement continued\n");
condato_mbed 0:d36fd4cabb70 1163 pause = false;
condato_mbed 0:d36fd4cabb70 1164
condato_mbed 0:d36fd4cabb70 1165 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 1166 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1167 }
condato_mbed 0:d36fd4cabb70 1168
condato_mbed 0:d36fd4cabb70 1169 dataSent();
condato_mbed 0:d36fd4cabb70 1170
condato_mbed 0:d36fd4cabb70 1171 break;
condato_mbed 0:d36fd4cabb70 1172 }
condato_mbed 0:d36fd4cabb70 1173
condato_mbed 0:d36fd4cabb70 1174 case 'e': //Config erhalten
condato_mbed 0:d36fd4cabb70 1175 {
condato_mbed 0:d36fd4cabb70 1176 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1177 clear_buffer();
condato_mbed 0:d36fd4cabb70 1178
condato_mbed 0:d36fd4cabb70 1179 char string[] = "Command 'e' (receive and overwrite config) received";
condato_mbed 0:d36fd4cabb70 1180 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1181
condato_mbed 0:d36fd4cabb70 1182 connected_cancel.attach(&disconnect, user_config_para.connected);
condato_mbed 0:d36fd4cabb70 1183 printf("\nReady to receive new config settings\n");
condato_mbed 0:d36fd4cabb70 1184
condato_mbed 0:d36fd4cabb70 1185 while(readValue[0] == NULL){
condato_mbed 0:d36fd4cabb70 1186 ble.waitForEvent();
condato_mbed 0:d36fd4cabb70 1187 if(conn_state == 0){
condato_mbed 0:d36fd4cabb70 1188 break;
condato_mbed 0:d36fd4cabb70 1189 }
condato_mbed 0:d36fd4cabb70 1190 }
condato_mbed 0:d36fd4cabb70 1191 memset(&readValue[0], 0, sizeof(readValue));
condato_mbed 0:d36fd4cabb70 1192 memset(&writeValue[0], 0, sizeof(writeValue));
condato_mbed 0:d36fd4cabb70 1193 while(readValue[0] == NULL){
condato_mbed 0:d36fd4cabb70 1194 ble.waitForEvent();
condato_mbed 0:d36fd4cabb70 1195 if(conn_state == 0){
condato_mbed 0:d36fd4cabb70 1196 break;
condato_mbed 0:d36fd4cabb70 1197 }
condato_mbed 0:d36fd4cabb70 1198 }
condato_mbed 0:d36fd4cabb70 1199 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1200 if(conn_state == 1){
condato_mbed 0:d36fd4cabb70 1201 char params[50];
condato_mbed 0:d36fd4cabb70 1202 printf("\n%s\n", ble_buff[0]);
condato_mbed 0:d36fd4cabb70 1203 strcpy(params, ble_buff[0]);
condato_mbed 0:d36fd4cabb70 1204
condato_mbed 0:d36fd4cabb70 1205 if(create_user_config(params) == 1){
condato_mbed 0:d36fd4cabb70 1206 clear_buffer();
condato_mbed 0:d36fd4cabb70 1207
condato_mbed 0:d36fd4cabb70 1208 char string_1[] = "User config changed";
condato_mbed 0:d36fd4cabb70 1209 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 1210 printf("\n__________________________\n\nUser config changed\n__________________________\n\n");
condato_mbed 0:d36fd4cabb70 1211
condato_mbed 0:d36fd4cabb70 1212 ble_buff[0][0] = '1';
condato_mbed 0:d36fd4cabb70 1213 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1214 }else{
condato_mbed 0:d36fd4cabb70 1215 clear_buffer();
condato_mbed 0:d36fd4cabb70 1216
condato_mbed 0:d36fd4cabb70 1217 char string_1[] = "Changing user config failed";
condato_mbed 0:d36fd4cabb70 1218 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 1219 printf("\n__________________________\n\n!!! Error while changing the user config !!!\n__________________________\n\n");
condato_mbed 0:d36fd4cabb70 1220
condato_mbed 0:d36fd4cabb70 1221 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 1222 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1223 }
condato_mbed 0:d36fd4cabb70 1224
condato_mbed 0:d36fd4cabb70 1225 dataSent();
condato_mbed 0:d36fd4cabb70 1226 }
condato_mbed 0:d36fd4cabb70 1227 break;
condato_mbed 0:d36fd4cabb70 1228 }
condato_mbed 0:d36fd4cabb70 1229
condato_mbed 0:d36fd4cabb70 1230 case 'x': // Verbindung beenden
condato_mbed 0:d36fd4cabb70 1231 {
condato_mbed 0:d36fd4cabb70 1232 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1233 clear_buffer();
condato_mbed 0:d36fd4cabb70 1234
condato_mbed 0:d36fd4cabb70 1235 char string[] = "Command 'x' (shut down bluetooth) received";
condato_mbed 0:d36fd4cabb70 1236 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1237
condato_mbed 0:d36fd4cabb70 1238 BT_false();
condato_mbed 0:d36fd4cabb70 1239 char string_1[] = "Bluetooth shuted down";
condato_mbed 0:d36fd4cabb70 1240 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 1241 printf("\n\nBluetooth shuted down\n\n");
condato_mbed 0:d36fd4cabb70 1242
condato_mbed 0:d36fd4cabb70 1243 response = '0';
condato_mbed 0:d36fd4cabb70 1244 connected_cancel.attach(&disconnect, user_config_para.connected);
condato_mbed 0:d36fd4cabb70 1245
condato_mbed 0:d36fd4cabb70 1246 break;
condato_mbed 0:d36fd4cabb70 1247 }
condato_mbed 0:d36fd4cabb70 1248
condato_mbed 0:d36fd4cabb70 1249 case 'b': //Akku-Zustand
condato_mbed 0:d36fd4cabb70 1250 {
condato_mbed 0:d36fd4cabb70 1251 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1252 clear_buffer();
condato_mbed 0:d36fd4cabb70 1253
condato_mbed 0:d36fd4cabb70 1254 char string[] = "Command 'b' (send battery info) received";
condato_mbed 0:d36fd4cabb70 1255 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1256
condato_mbed 0:d36fd4cabb70 1257 updateSensorValue();
condato_mbed 0:d36fd4cabb70 1258 int battery = batteryLevel;
condato_mbed 0:d36fd4cabb70 1259 sprintf(ble_buff[0],"%d", battery);
condato_mbed 0:d36fd4cabb70 1260 for(int i = 0; i < 2; i++){
condato_mbed 0:d36fd4cabb70 1261 onDataSent(i);
condato_mbed 0:d36fd4cabb70 1262 }
condato_mbed 0:d36fd4cabb70 1263 printf("\nBattery level: %d %%\n", battery);
condato_mbed 0:d36fd4cabb70 1264
condato_mbed 0:d36fd4cabb70 1265 dataSent();
condato_mbed 0:d36fd4cabb70 1266
condato_mbed 0:d36fd4cabb70 1267 break;
condato_mbed 0:d36fd4cabb70 1268 }
condato_mbed 0:d36fd4cabb70 1269
condato_mbed 0:d36fd4cabb70 1270 case 'm': //Speicher-Belegung
condato_mbed 0:d36fd4cabb70 1271 {
condato_mbed 0:d36fd4cabb70 1272 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1273 clear_buffer();
condato_mbed 0:d36fd4cabb70 1274
condato_mbed 0:d36fd4cabb70 1275 char string[] = "Command 'm' (send memmory info) received";
condato_mbed 0:d36fd4cabb70 1276 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1277
condato_mbed 0:d36fd4cabb70 1278 printf("\nTotal SD memory: %llu Bytes\n", blockDevice.size());
condato_mbed 0:d36fd4cabb70 1279
condato_mbed 0:d36fd4cabb70 1280 unsigned long long length = 0;
condato_mbed 0:d36fd4cabb70 1281
condato_mbed 0:d36fd4cabb70 1282 //ID Größe
condato_mbed 0:d36fd4cabb70 1283 fileSystem.mount(&blockDevice);
condato_mbed 0:d36fd4cabb70 1284 FILE * id = fopen ("/fs/id.csv", "rb");
condato_mbed 0:d36fd4cabb70 1285
condato_mbed 0:d36fd4cabb70 1286 fseek (id, 0, SEEK_END);
condato_mbed 0:d36fd4cabb70 1287 length = ftell (id);
condato_mbed 0:d36fd4cabb70 1288 fseek (id, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 1289
condato_mbed 0:d36fd4cabb70 1290 fclose(id);
condato_mbed 0:d36fd4cabb70 1291 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 1292 fflush(stdout);
condato_mbed 0:d36fd4cabb70 1293
condato_mbed 0:d36fd4cabb70 1294 unsigned long long idn = length;
condato_mbed 0:d36fd4cabb70 1295 length = 0;
condato_mbed 0:d36fd4cabb70 1296
condato_mbed 0:d36fd4cabb70 1297 //Log Größe
condato_mbed 0:d36fd4cabb70 1298 fileSystem.mount(&blockDevice);
condato_mbed 0:d36fd4cabb70 1299 FILE * log = fopen ("/fs/log.csv", "rb");
condato_mbed 0:d36fd4cabb70 1300
condato_mbed 0:d36fd4cabb70 1301 fseek (log, 0, SEEK_END);
condato_mbed 0:d36fd4cabb70 1302 length = ftell (log);
condato_mbed 0:d36fd4cabb70 1303 fseek (log, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 1304
condato_mbed 0:d36fd4cabb70 1305 fclose(log);
condato_mbed 0:d36fd4cabb70 1306 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 1307 fflush(stdout);
condato_mbed 0:d36fd4cabb70 1308
condato_mbed 0:d36fd4cabb70 1309 unsigned long long logs = length;
condato_mbed 0:d36fd4cabb70 1310 length = 0;
condato_mbed 0:d36fd4cabb70 1311
condato_mbed 0:d36fd4cabb70 1312 //Messdaten Größe
condato_mbed 0:d36fd4cabb70 1313 fileSystem.mount(&blockDevice);
condato_mbed 0:d36fd4cabb70 1314 FILE * messdaten = fopen ("/fs/messdaten.csv", "rb");
condato_mbed 0:d36fd4cabb70 1315
condato_mbed 0:d36fd4cabb70 1316 fseek (messdaten, 0, SEEK_END);
condato_mbed 0:d36fd4cabb70 1317 length = ftell (messdaten);
condato_mbed 0:d36fd4cabb70 1318 fseek (messdaten, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 1319
condato_mbed 0:d36fd4cabb70 1320 fclose(messdaten);
condato_mbed 0:d36fd4cabb70 1321 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 1322 fflush(stdout);
condato_mbed 0:d36fd4cabb70 1323
condato_mbed 0:d36fd4cabb70 1324 unsigned long long mes = length;
condato_mbed 0:d36fd4cabb70 1325 length = 0;
condato_mbed 0:d36fd4cabb70 1326
condato_mbed 0:d36fd4cabb70 1327 //Standard Config Größe
condato_mbed 0:d36fd4cabb70 1328 fileSystem.mount(&blockDevice);
condato_mbed 0:d36fd4cabb70 1329 FILE * stcf = fopen ("/fs/standard_config.csv", "rb");
condato_mbed 0:d36fd4cabb70 1330
condato_mbed 0:d36fd4cabb70 1331 fseek (stcf, 0, SEEK_END);
condato_mbed 0:d36fd4cabb70 1332 length = ftell (stcf);
condato_mbed 0:d36fd4cabb70 1333 fseek (stcf, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 1334
condato_mbed 0:d36fd4cabb70 1335 fclose(stcf);
condato_mbed 0:d36fd4cabb70 1336 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 1337 fflush(stdout);
condato_mbed 0:d36fd4cabb70 1338
condato_mbed 0:d36fd4cabb70 1339 unsigned long long stcfg = length;
condato_mbed 0:d36fd4cabb70 1340 length = 0;
condato_mbed 0:d36fd4cabb70 1341
condato_mbed 0:d36fd4cabb70 1342 //User Config Größe
condato_mbed 0:d36fd4cabb70 1343 fileSystem.mount(&blockDevice);
condato_mbed 0:d36fd4cabb70 1344 FILE * uscf = fopen ("/fs/user_config.csv", "rb");
condato_mbed 0:d36fd4cabb70 1345
condato_mbed 0:d36fd4cabb70 1346 fseek (uscf, 0, SEEK_END);
condato_mbed 0:d36fd4cabb70 1347 length = ftell (uscf);
condato_mbed 0:d36fd4cabb70 1348 fseek (uscf, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 1349
condato_mbed 0:d36fd4cabb70 1350 fclose(uscf);
condato_mbed 0:d36fd4cabb70 1351 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 1352 fflush(stdout);
condato_mbed 0:d36fd4cabb70 1353
condato_mbed 0:d36fd4cabb70 1354 unsigned long long uscfg = length;
condato_mbed 0:d36fd4cabb70 1355 length = 0;
condato_mbed 0:d36fd4cabb70 1356
condato_mbed 0:d36fd4cabb70 1357 printf("\nID size: %llu Bytes\n", idn);
condato_mbed 0:d36fd4cabb70 1358 printf("Logs size: %llu Bytes\n", logs);
condato_mbed 0:d36fd4cabb70 1359 printf("Standard config size: %llu Bytes\n", stcfg);
condato_mbed 0:d36fd4cabb70 1360 printf("User config size: %llu Bytes\n\n", uscfg);
condato_mbed 0:d36fd4cabb70 1361
condato_mbed 0:d36fd4cabb70 1362 unsigned long long not_measuremnts = idn + logs + stcfg + uscfg;
condato_mbed 0:d36fd4cabb70 1363 unsigned long long actual_size = blockDevice.size() - not_measuremnts;
condato_mbed 0:d36fd4cabb70 1364 printf("Available SD memory (100 %%) = total SD memory - configs & id (%llu Bytes) - logs\n", not_measuremnts);
condato_mbed 0:d36fd4cabb70 1365 printf("Available SD memory (100 %%): %llu Bytes\n\n", actual_size);
condato_mbed 0:d36fd4cabb70 1366
condato_mbed 0:d36fd4cabb70 1367 messdaten_count();
condato_mbed 0:d36fd4cabb70 1368 printf("Measuremnts count: %s\n", messungen);
condato_mbed 0:d36fd4cabb70 1369 printf("Measurements size: %llu Bytes\n\n", mes);
condato_mbed 0:d36fd4cabb70 1370
condato_mbed 0:d36fd4cabb70 1371 double hundert = 100;
condato_mbed 0:d36fd4cabb70 1372 double occupied = hundert / actual_size * mes;
condato_mbed 0:d36fd4cabb70 1373 printf("Occupied memory: %f %%\n", occupied);
condato_mbed 0:d36fd4cabb70 1374
condato_mbed 0:d36fd4cabb70 1375 double free_mem = 100 - occupied;
condato_mbed 0:d36fd4cabb70 1376 printf("Available memory: %f %%\n", free_mem);
condato_mbed 0:d36fd4cabb70 1377
condato_mbed 0:d36fd4cabb70 1378 char occ[3];
condato_mbed 0:d36fd4cabb70 1379 char free[3];
condato_mbed 0:d36fd4cabb70 1380
condato_mbed 0:d36fd4cabb70 1381 if((int)occupied != 0){
condato_mbed 0:d36fd4cabb70 1382 occupied = ceil( occupied * 100.0 ) / 100.0;
condato_mbed 0:d36fd4cabb70 1383 }
condato_mbed 0:d36fd4cabb70 1384 if((int)free_mem != 0){
condato_mbed 0:d36fd4cabb70 1385 free_mem = ceil( free_mem * 100.0 ) / 100.0;
condato_mbed 0:d36fd4cabb70 1386 }
condato_mbed 0:d36fd4cabb70 1387
condato_mbed 0:d36fd4cabb70 1388 sprintf(occ,"%d", (int)occupied);
condato_mbed 0:d36fd4cabb70 1389 sprintf(free,"%d", (int)free_mem);
condato_mbed 0:d36fd4cabb70 1390
condato_mbed 0:d36fd4cabb70 1391 printf("OCC: %s\n", occ);
condato_mbed 0:d36fd4cabb70 1392 printf("FREE: %s\n", free);
condato_mbed 0:d36fd4cabb70 1393
condato_mbed 0:d36fd4cabb70 1394 messdaten_count();
condato_mbed 0:d36fd4cabb70 1395
condato_mbed 0:d36fd4cabb70 1396 int i = 0;
condato_mbed 0:d36fd4cabb70 1397 while(i < messungen[i] != NULL){
condato_mbed 0:d36fd4cabb70 1398 ble_buff[0][i] = messungen[i];
condato_mbed 0:d36fd4cabb70 1399 onDataSent(i);
condato_mbed 0:d36fd4cabb70 1400 i++;
condato_mbed 0:d36fd4cabb70 1401 }
condato_mbed 0:d36fd4cabb70 1402 ble_buff[0][i] = 0x3B;
condato_mbed 0:d36fd4cabb70 1403 onDataSent(i);
condato_mbed 0:d36fd4cabb70 1404 i++;
condato_mbed 0:d36fd4cabb70 1405 int j = 0;
condato_mbed 0:d36fd4cabb70 1406 while(j < occ[j] != NULL){
condato_mbed 0:d36fd4cabb70 1407 ble_buff[0][i] = occ[j];
condato_mbed 0:d36fd4cabb70 1408 onDataSent(i);
condato_mbed 0:d36fd4cabb70 1409 i++;
condato_mbed 0:d36fd4cabb70 1410 j++;
condato_mbed 0:d36fd4cabb70 1411 }
condato_mbed 0:d36fd4cabb70 1412 ble_buff[0][i] = 0x3B;
condato_mbed 0:d36fd4cabb70 1413 onDataSent(i);
condato_mbed 0:d36fd4cabb70 1414 i++;
condato_mbed 0:d36fd4cabb70 1415 int c = 0;
condato_mbed 0:d36fd4cabb70 1416 while(c < free[c] != NULL){
condato_mbed 0:d36fd4cabb70 1417 ble_buff[0][i] = free[c];
condato_mbed 0:d36fd4cabb70 1418 onDataSent(i);
condato_mbed 0:d36fd4cabb70 1419 i++;
condato_mbed 0:d36fd4cabb70 1420 c++;
condato_mbed 0:d36fd4cabb70 1421 }
condato_mbed 0:d36fd4cabb70 1422 ble_buff[0][i] = 0x3B;
condato_mbed 0:d36fd4cabb70 1423 onDataSent(i);
condato_mbed 0:d36fd4cabb70 1424 i++;
condato_mbed 0:d36fd4cabb70 1425 dataSent();
condato_mbed 0:d36fd4cabb70 1426
condato_mbed 0:d36fd4cabb70 1427 break;
condato_mbed 0:d36fd4cabb70 1428 }
condato_mbed 0:d36fd4cabb70 1429
condato_mbed 0:d36fd4cabb70 1430 case 'i': //ID auslesen
condato_mbed 0:d36fd4cabb70 1431 {
condato_mbed 0:d36fd4cabb70 1432 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1433 clear_buffer();
condato_mbed 0:d36fd4cabb70 1434
condato_mbed 0:d36fd4cabb70 1435 char string[] = "Command 'i' (send ID) received";
condato_mbed 0:d36fd4cabb70 1436 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1437
condato_mbed 0:d36fd4cabb70 1438 char string_1[] = "Sending device ID...";
condato_mbed 0:d36fd4cabb70 1439 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 1440
condato_mbed 0:d36fd4cabb70 1441 printf("\nDevice ID: %s\n", device_id);
condato_mbed 0:d36fd4cabb70 1442
condato_mbed 0:d36fd4cabb70 1443 int j = 0;
condato_mbed 0:d36fd4cabb70 1444 while(device_id[j] != NULL){
condato_mbed 0:d36fd4cabb70 1445 ble_buff[0][j] = device_id[j];
condato_mbed 0:d36fd4cabb70 1446 j++;
condato_mbed 0:d36fd4cabb70 1447 }
condato_mbed 0:d36fd4cabb70 1448
condato_mbed 0:d36fd4cabb70 1449 int i = 0;
condato_mbed 0:d36fd4cabb70 1450 while(device_id[i] != NULL){
condato_mbed 0:d36fd4cabb70 1451 onDataSent(i);
condato_mbed 0:d36fd4cabb70 1452 i++;
condato_mbed 0:d36fd4cabb70 1453 }
condato_mbed 0:d36fd4cabb70 1454
condato_mbed 0:d36fd4cabb70 1455 char string_2[] = "Sending device ID complete";
condato_mbed 0:d36fd4cabb70 1456 write_to_sd_log_single(string_2);
condato_mbed 0:d36fd4cabb70 1457
condato_mbed 0:d36fd4cabb70 1458 dataSent();
condato_mbed 0:d36fd4cabb70 1459
condato_mbed 0:d36fd4cabb70 1460 break;
condato_mbed 0:d36fd4cabb70 1461 }
condato_mbed 0:d36fd4cabb70 1462
condato_mbed 0:d36fd4cabb70 1463 case 'z': //Hardware Module abfragen
condato_mbed 0:d36fd4cabb70 1464 {
condato_mbed 0:d36fd4cabb70 1465 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1466 clear_buffer();
condato_mbed 0:d36fd4cabb70 1467
condato_mbed 0:d36fd4cabb70 1468 char string[] = "Command 'z' (send connected devices) received";
condato_mbed 0:d36fd4cabb70 1469 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1470
condato_mbed 0:d36fd4cabb70 1471 dataSent();
condato_mbed 0:d36fd4cabb70 1472
condato_mbed 0:d36fd4cabb70 1473 break;
condato_mbed 0:d36fd4cabb70 1474 }
condato_mbed 0:d36fd4cabb70 1475
condato_mbed 0:d36fd4cabb70 1476 case 'v': // Zeit in Unixformat von Datenlogger abfragen
condato_mbed 0:d36fd4cabb70 1477 {
condato_mbed 0:d36fd4cabb70 1478 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1479 clear_buffer();
condato_mbed 0:d36fd4cabb70 1480
condato_mbed 0:d36fd4cabb70 1481 char string[] = "Command 'v' (send device time) received";
condato_mbed 0:d36fd4cabb70 1482 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1483
condato_mbed 0:d36fd4cabb70 1484 unixtime_to_char_array();
condato_mbed 0:d36fd4cabb70 1485 for(int i = 0; i < sizeof(seconds); i++){
condato_mbed 0:d36fd4cabb70 1486 ble_buff[0][i] = seconds[i];
condato_mbed 0:d36fd4cabb70 1487 onDataSent(i);
condato_mbed 0:d36fd4cabb70 1488 }
condato_mbed 0:d36fd4cabb70 1489
condato_mbed 0:d36fd4cabb70 1490 dataSent();
condato_mbed 0:d36fd4cabb70 1491
condato_mbed 0:d36fd4cabb70 1492 break;
condato_mbed 0:d36fd4cabb70 1493 }
condato_mbed 0:d36fd4cabb70 1494
condato_mbed 0:d36fd4cabb70 1495 case 't': //Zeit in Unixformat an Datenlogger schicken
condato_mbed 0:d36fd4cabb70 1496 {
condato_mbed 0:d36fd4cabb70 1497 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1498 clear_buffer();
condato_mbed 0:d36fd4cabb70 1499
condato_mbed 0:d36fd4cabb70 1500 char string[] = "Command 't' (receive and set device time) received";
condato_mbed 0:d36fd4cabb70 1501 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1502
condato_mbed 0:d36fd4cabb70 1503 connected_cancel.attach(&disconnect, user_config_para.connected);
condato_mbed 0:d36fd4cabb70 1504 printf("\nReady to receive new time settings\n");
condato_mbed 0:d36fd4cabb70 1505 while(readValue[0] == NULL || readValue[0] < 0x31|| readValue[0] > 0x39){
condato_mbed 0:d36fd4cabb70 1506 clear_buffer();
condato_mbed 0:d36fd4cabb70 1507 ble.waitForEvent();
condato_mbed 0:d36fd4cabb70 1508 if(conn_state == 0){
condato_mbed 0:d36fd4cabb70 1509 break;
condato_mbed 0:d36fd4cabb70 1510 }
condato_mbed 0:d36fd4cabb70 1511 }
condato_mbed 0:d36fd4cabb70 1512 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1513 if(conn_state == 1){
condato_mbed 0:d36fd4cabb70 1514 int a = 0;
condato_mbed 0:d36fd4cabb70 1515 while(readValue[a] != NULL){
condato_mbed 0:d36fd4cabb70 1516 a++;
condato_mbed 0:d36fd4cabb70 1517 }
condato_mbed 0:d36fd4cabb70 1518 int new_time = array_to_int(a);
condato_mbed 0:d36fd4cabb70 1519 clear_buffer();
condato_mbed 0:d36fd4cabb70 1520
condato_mbed 0:d36fd4cabb70 1521 if(set_app_time(new_time) == 1){
condato_mbed 0:d36fd4cabb70 1522 ble_buff[0][0] = '1';
condato_mbed 0:d36fd4cabb70 1523 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1524 }else{
condato_mbed 0:d36fd4cabb70 1525 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 1526 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1527 }
condato_mbed 0:d36fd4cabb70 1528
condato_mbed 0:d36fd4cabb70 1529 dataSent();
condato_mbed 0:d36fd4cabb70 1530 }
condato_mbed 0:d36fd4cabb70 1531 break;
condato_mbed 0:d36fd4cabb70 1532 }
condato_mbed 0:d36fd4cabb70 1533
condato_mbed 0:d36fd4cabb70 1534 case 'q': //Min- / Max- / Mittelwert schicken
condato_mbed 0:d36fd4cabb70 1535 {
condato_mbed 0:d36fd4cabb70 1536 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1537 clear_buffer();
condato_mbed 0:d36fd4cabb70 1538
condato_mbed 0:d36fd4cabb70 1539 char string[] = "Command 'q' (send min/max/average) received";
condato_mbed 0:d36fd4cabb70 1540 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1541
condato_mbed 0:d36fd4cabb70 1542 //wait(1);
condato_mbed 0:d36fd4cabb70 1543 //min_max_avr();
condato_mbed 0:d36fd4cabb70 1544
condato_mbed 0:d36fd4cabb70 1545 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1546 clear_buffer();
condato_mbed 0:d36fd4cabb70 1547
condato_mbed 0:d36fd4cabb70 1548 unsigned int length = 0;
condato_mbed 0:d36fd4cabb70 1549 int a = 0;
condato_mbed 0:d36fd4cabb70 1550
condato_mbed 0:d36fd4cabb70 1551 char string_1[] = "Sending min/max/average..";
condato_mbed 0:d36fd4cabb70 1552 write_to_sd_log_single(string_1);
condato_mbed 0:d36fd4cabb70 1553
condato_mbed 0:d36fd4cabb70 1554 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 1555 fflush(stdout);
condato_mbed 0:d36fd4cabb70 1556
condato_mbed 0:d36fd4cabb70 1557 fileSystem.mount(&blockDevice);
condato_mbed 0:d36fd4cabb70 1558 FILE * messdaten = fopen ("/fs/messdaten.csv", "rb");
condato_mbed 0:d36fd4cabb70 1559
condato_mbed 0:d36fd4cabb70 1560 fseek (messdaten, 0, SEEK_END);
condato_mbed 0:d36fd4cabb70 1561 length = ftell (messdaten);
condato_mbed 0:d36fd4cabb70 1562 fseek (messdaten, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 1563
condato_mbed 0:d36fd4cabb70 1564 /* Daten senden */
condato_mbed 0:d36fd4cabb70 1565
condato_mbed 0:d36fd4cabb70 1566 unsigned long ch = 0;
condato_mbed 0:d36fd4cabb70 1567 unsigned short lines = 0;
condato_mbed 0:d36fd4cabb70 1568 unsigned long i = 0;
condato_mbed 0:d36fd4cabb70 1569 unsigned long j = 1;
condato_mbed 0:d36fd4cabb70 1570 unsigned long c = 0;
condato_mbed 0:d36fd4cabb70 1571 unsigned long e = 0;
condato_mbed 0:d36fd4cabb70 1572
condato_mbed 0:d36fd4cabb70 1573 while(!feof(messdaten)){
condato_mbed 0:d36fd4cabb70 1574 ch = fgetc(messdaten);
condato_mbed 0:d36fd4cabb70 1575 if(ch == '\n')
condato_mbed 0:d36fd4cabb70 1576 {
condato_mbed 0:d36fd4cabb70 1577 lines++;
condato_mbed 0:d36fd4cabb70 1578 }
condato_mbed 0:d36fd4cabb70 1579 }
condato_mbed 0:d36fd4cabb70 1580
condato_mbed 0:d36fd4cabb70 1581 printf("\n%d Eintraege\n", lines);
condato_mbed 0:d36fd4cabb70 1582
condato_mbed 0:d36fd4cabb70 1583 for(int a = 0; a < lines; a++)
condato_mbed 0:d36fd4cabb70 1584 {
condato_mbed 0:d36fd4cabb70 1585 messwerte[a] = *new int[8];
condato_mbed 0:d36fd4cabb70 1586 //printf("\nTEST 1\n");
condato_mbed 0:d36fd4cabb70 1587 }
condato_mbed 0:d36fd4cabb70 1588
condato_mbed 0:d36fd4cabb70 1589 char temp[8];
condato_mbed 0:d36fd4cabb70 1590
condato_mbed 0:d36fd4cabb70 1591 fseek(messdaten, 0, SEEK_SET);
condato_mbed 0:d36fd4cabb70 1592 while(!feof(messdaten)){
condato_mbed 0:d36fd4cabb70 1593 ch = fgetc(messdaten);
condato_mbed 0:d36fd4cabb70 1594 if(ch == '\n'){
condato_mbed 0:d36fd4cabb70 1595 fseek(messdaten, i - 7, SEEK_SET);
condato_mbed 0:d36fd4cabb70 1596 fread (temp, 1, 7, messdaten);
condato_mbed 0:d36fd4cabb70 1597 messwerte[e] = atoi(temp);
condato_mbed 0:d36fd4cabb70 1598 memset(&temp[0], 0, sizeof(temp));
condato_mbed 0:d36fd4cabb70 1599 e++;
condato_mbed 0:d36fd4cabb70 1600 }else if(ch == EOF){
condato_mbed 0:d36fd4cabb70 1601 fseek(messdaten, i - 8, SEEK_SET);
condato_mbed 0:d36fd4cabb70 1602 fread (temp, 1, 8, messdaten);
condato_mbed 0:d36fd4cabb70 1603 messwerte[e] = atoi(temp);
condato_mbed 0:d36fd4cabb70 1604 memset(&temp[0], 0, sizeof(temp));
condato_mbed 0:d36fd4cabb70 1605 }
condato_mbed 0:d36fd4cabb70 1606 //printf("\nTEST 3\n");
condato_mbed 0:d36fd4cabb70 1607 i++;
condato_mbed 0:d36fd4cabb70 1608 }
condato_mbed 0:d36fd4cabb70 1609
condato_mbed 0:d36fd4cabb70 1610 unsigned long summe = 0;
condato_mbed 0:d36fd4cabb70 1611
condato_mbed 0:d36fd4cabb70 1612 for(int q = 1; q < e; q++){
condato_mbed 0:d36fd4cabb70 1613 summe += messwerte[q];
condato_mbed 0:d36fd4cabb70 1614 }
condato_mbed 0:d36fd4cabb70 1615 printf("\nSumme: %lu\n", summe);
condato_mbed 0:d36fd4cabb70 1616
condato_mbed 0:d36fd4cabb70 1617 double avr = summe / lines;
condato_mbed 0:d36fd4cabb70 1618
condato_mbed 0:d36fd4cabb70 1619 fclose(messdaten);
condato_mbed 0:d36fd4cabb70 1620 fileSystem.unmount();
condato_mbed 0:d36fd4cabb70 1621 fflush(stdout);
condato_mbed 0:d36fd4cabb70 1622
condato_mbed 0:d36fd4cabb70 1623 char string_2[] = "Sending min/max/average complete";
condato_mbed 0:d36fd4cabb70 1624 write_to_sd_log_single(string_2);
condato_mbed 0:d36fd4cabb70 1625
condato_mbed 0:d36fd4cabb70 1626 quickSort(1, lines);
condato_mbed 0:d36fd4cabb70 1627
condato_mbed 0:d36fd4cabb70 1628 if((int)avr != 0){
condato_mbed 0:d36fd4cabb70 1629 avr = ceil( avr * 100.0 ) / 100.0;
condato_mbed 0:d36fd4cabb70 1630 }
condato_mbed 0:d36fd4cabb70 1631
condato_mbed 0:d36fd4cabb70 1632 char min[5];
condato_mbed 0:d36fd4cabb70 1633 char max[5];
condato_mbed 0:d36fd4cabb70 1634 char durch[5];
condato_mbed 0:d36fd4cabb70 1635
condato_mbed 0:d36fd4cabb70 1636 sprintf(min,"%d", messwerte[1]);
condato_mbed 0:d36fd4cabb70 1637 sprintf(max,"%d", messwerte[lines]);
condato_mbed 0:d36fd4cabb70 1638 sprintf(durch,"%d", (int)avr);
condato_mbed 0:d36fd4cabb70 1639
condato_mbed 0:d36fd4cabb70 1640 printf("\n%s, %s, %s\n", min, max, durch);
condato_mbed 0:d36fd4cabb70 1641
condato_mbed 0:d36fd4cabb70 1642 int k = 0;
condato_mbed 0:d36fd4cabb70 1643 while(k < min[k] != NULL){
condato_mbed 0:d36fd4cabb70 1644 ble_buff[0][k] = min[k];
condato_mbed 0:d36fd4cabb70 1645 onDataSent(k);
condato_mbed 0:d36fd4cabb70 1646 k++;
condato_mbed 0:d36fd4cabb70 1647 }
condato_mbed 0:d36fd4cabb70 1648 ble_buff[0][k] = 0x3B;
condato_mbed 0:d36fd4cabb70 1649 onDataSent(k);
condato_mbed 0:d36fd4cabb70 1650 k++;
condato_mbed 0:d36fd4cabb70 1651 int p = 0;
condato_mbed 0:d36fd4cabb70 1652 while(p < max[p] != NULL){
condato_mbed 0:d36fd4cabb70 1653 ble_buff[0][k] = max[p];
condato_mbed 0:d36fd4cabb70 1654 onDataSent(k);
condato_mbed 0:d36fd4cabb70 1655 k++;
condato_mbed 0:d36fd4cabb70 1656 p++;
condato_mbed 0:d36fd4cabb70 1657 }
condato_mbed 0:d36fd4cabb70 1658 ble_buff[0][k] = 0x3B;
condato_mbed 0:d36fd4cabb70 1659 onDataSent(k);
condato_mbed 0:d36fd4cabb70 1660 k++;
condato_mbed 0:d36fd4cabb70 1661 int z = 0;
condato_mbed 0:d36fd4cabb70 1662 while(z < durch[z] != NULL){
condato_mbed 0:d36fd4cabb70 1663 ble_buff[0][k] = durch[z];
condato_mbed 0:d36fd4cabb70 1664 onDataSent(k);
condato_mbed 0:d36fd4cabb70 1665 k++;
condato_mbed 0:d36fd4cabb70 1666 z++;
condato_mbed 0:d36fd4cabb70 1667 }
condato_mbed 0:d36fd4cabb70 1668 ble_buff[0][k] = 0x3B;
condato_mbed 0:d36fd4cabb70 1669 onDataSent(k);
condato_mbed 0:d36fd4cabb70 1670 k++;
condato_mbed 0:d36fd4cabb70 1671
condato_mbed 0:d36fd4cabb70 1672 dataSent();
condato_mbed 0:d36fd4cabb70 1673
condato_mbed 0:d36fd4cabb70 1674 //printf("\nTEST 6\n");
condato_mbed 0:d36fd4cabb70 1675
condato_mbed 0:d36fd4cabb70 1676 break;
condato_mbed 0:d36fd4cabb70 1677 }
condato_mbed 0:d36fd4cabb70 1678
condato_mbed 0:d36fd4cabb70 1679 case 'j': //Anzahl der Messungen schicken
condato_mbed 0:d36fd4cabb70 1680 {
condato_mbed 0:d36fd4cabb70 1681 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1682 clear_buffer();
condato_mbed 0:d36fd4cabb70 1683
condato_mbed 0:d36fd4cabb70 1684 char string[] = "Command 'j' (send measurements count) received";
condato_mbed 0:d36fd4cabb70 1685 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1686
condato_mbed 0:d36fd4cabb70 1687 //Anzahl der Messdaten
condato_mbed 0:d36fd4cabb70 1688 messdaten_count();
condato_mbed 0:d36fd4cabb70 1689 for(int i = 0; i < sizeof(messungen); i++){
condato_mbed 0:d36fd4cabb70 1690 ble_buff[0][i] = messungen[i];
condato_mbed 0:d36fd4cabb70 1691 onDataSent(i);
condato_mbed 0:d36fd4cabb70 1692 }
condato_mbed 0:d36fd4cabb70 1693 printf("\nMeasurements count: %s\n", messungen);
condato_mbed 0:d36fd4cabb70 1694
condato_mbed 0:d36fd4cabb70 1695 dataSent();
condato_mbed 0:d36fd4cabb70 1696
condato_mbed 0:d36fd4cabb70 1697 break;
condato_mbed 0:d36fd4cabb70 1698 }
condato_mbed 0:d36fd4cabb70 1699
condato_mbed 0:d36fd4cabb70 1700 case 'h': //Anzahl der Logs schicken
condato_mbed 0:d36fd4cabb70 1701 {
condato_mbed 0:d36fd4cabb70 1702 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1703 clear_buffer();
condato_mbed 0:d36fd4cabb70 1704
condato_mbed 0:d36fd4cabb70 1705 char string[] = "Command 'h' (send log count) received";
condato_mbed 0:d36fd4cabb70 1706 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1707
condato_mbed 0:d36fd4cabb70 1708 //Anzahl der Logs
condato_mbed 0:d36fd4cabb70 1709 log_count();
condato_mbed 0:d36fd4cabb70 1710 for(int i = 0; i < sizeof(logs_array); i++){
condato_mbed 0:d36fd4cabb70 1711 ble_buff[0][i] = logs_array[i];
condato_mbed 0:d36fd4cabb70 1712 onDataSent(i);
condato_mbed 0:d36fd4cabb70 1713 }
condato_mbed 0:d36fd4cabb70 1714 printf("\nLogs count: %s\n", logs_array);
condato_mbed 0:d36fd4cabb70 1715
condato_mbed 0:d36fd4cabb70 1716 dataSent();
condato_mbed 0:d36fd4cabb70 1717
condato_mbed 0:d36fd4cabb70 1718 break;
condato_mbed 0:d36fd4cabb70 1719 }
condato_mbed 0:d36fd4cabb70 1720
condato_mbed 0:d36fd4cabb70 1721 case 'y': //Alarn AN / AUS - Anzahl der Meldungen
condato_mbed 0:d36fd4cabb70 1722 {
condato_mbed 0:d36fd4cabb70 1723 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1724 clear_buffer();
condato_mbed 0:d36fd4cabb70 1725
condato_mbed 0:d36fd4cabb70 1726 char string[] = "Command 'y' (Alert function and count) received";
condato_mbed 0:d36fd4cabb70 1727 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1728
condato_mbed 0:d36fd4cabb70 1729 if(user_config_para.alert == 1){
condato_mbed 0:d36fd4cabb70 1730 printf("\nAlert function - ON\n");
condato_mbed 0:d36fd4cabb70 1731
condato_mbed 0:d36fd4cabb70 1732 printf("\nNumber of alerts: %d\n", alert_count);
condato_mbed 0:d36fd4cabb70 1733 char alerts[4];
condato_mbed 0:d36fd4cabb70 1734 sprintf(alerts, "%d", alert_count);
condato_mbed 0:d36fd4cabb70 1735 for(int i = 0; i < 4; i++){
condato_mbed 0:d36fd4cabb70 1736 ble_buff[0][i] = alerts[i];
condato_mbed 0:d36fd4cabb70 1737 onDataSent(i);
condato_mbed 0:d36fd4cabb70 1738 }
condato_mbed 0:d36fd4cabb70 1739 }else{
condato_mbed 0:d36fd4cabb70 1740 printf("\nAlert function - OFF\n");
condato_mbed 0:d36fd4cabb70 1741
condato_mbed 0:d36fd4cabb70 1742 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 1743 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1744 }
condato_mbed 0:d36fd4cabb70 1745
condato_mbed 0:d36fd4cabb70 1746 dataSent();
condato_mbed 0:d36fd4cabb70 1747
condato_mbed 0:d36fd4cabb70 1748 break;
condato_mbed 0:d36fd4cabb70 1749 }
condato_mbed 0:d36fd4cabb70 1750
condato_mbed 0:d36fd4cabb70 1751 case 'k': //Initialisierungsstatus auslesen
condato_mbed 0:d36fd4cabb70 1752 {
condato_mbed 0:d36fd4cabb70 1753 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1754 clear_buffer();
condato_mbed 0:d36fd4cabb70 1755
condato_mbed 0:d36fd4cabb70 1756 char string[] = "Command 'b' (send initialize status) received";
condato_mbed 0:d36fd4cabb70 1757 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1758
condato_mbed 0:d36fd4cabb70 1759 if(init_status == true){
condato_mbed 0:d36fd4cabb70 1760 ble_buff[0][0] = '1';
condato_mbed 0:d36fd4cabb70 1761 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1762
condato_mbed 0:d36fd4cabb70 1763 printf("\nInitialaze status: OK\n");
condato_mbed 0:d36fd4cabb70 1764 }else{
condato_mbed 0:d36fd4cabb70 1765 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 1766 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1767
condato_mbed 0:d36fd4cabb70 1768 printf("\nInitialaze status: FAILED\n");
condato_mbed 0:d36fd4cabb70 1769 }
condato_mbed 0:d36fd4cabb70 1770
condato_mbed 0:d36fd4cabb70 1771 dataSent();
condato_mbed 0:d36fd4cabb70 1772
condato_mbed 0:d36fd4cabb70 1773 break;
condato_mbed 0:d36fd4cabb70 1774 }
condato_mbed 0:d36fd4cabb70 1775
condato_mbed 0:d36fd4cabb70 1776 case 'p': //Mess-Status auslesen
condato_mbed 0:d36fd4cabb70 1777 {
condato_mbed 0:d36fd4cabb70 1778 connected_cancel.detach();
condato_mbed 0:d36fd4cabb70 1779 clear_buffer();
condato_mbed 0:d36fd4cabb70 1780
condato_mbed 0:d36fd4cabb70 1781 char string[] = "Command 'p' (send measurement status) received";
condato_mbed 0:d36fd4cabb70 1782 write_to_sd_log_single(string);
condato_mbed 0:d36fd4cabb70 1783
condato_mbed 0:d36fd4cabb70 1784 if(shipping == true){
condato_mbed 0:d36fd4cabb70 1785 ble_buff[0][0] = 1;
condato_mbed 0:d36fd4cabb70 1786 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1787
condato_mbed 0:d36fd4cabb70 1788 wait(1);
condato_mbed 0:d36fd4cabb70 1789 clear_buffer();
condato_mbed 0:d36fd4cabb70 1790
condato_mbed 0:d36fd4cabb70 1791 if(pause == false){
condato_mbed 0:d36fd4cabb70 1792 ble_buff[0][0] = '1';
condato_mbed 0:d36fd4cabb70 1793 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1794
condato_mbed 0:d36fd4cabb70 1795 printf("\nMeasuremt status = Launched\n");
condato_mbed 0:d36fd4cabb70 1796 }else{
condato_mbed 0:d36fd4cabb70 1797 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 1798 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1799
condato_mbed 0:d36fd4cabb70 1800 printf("\nMeasuremt status = Paused\n");
condato_mbed 0:d36fd4cabb70 1801 }
condato_mbed 0:d36fd4cabb70 1802
condato_mbed 0:d36fd4cabb70 1803 }else{
condato_mbed 0:d36fd4cabb70 1804 ble_buff[0][0] = '0';
condato_mbed 0:d36fd4cabb70 1805 onDataSent(0);
condato_mbed 0:d36fd4cabb70 1806
condato_mbed 0:d36fd4cabb70 1807 printf("\nMeasuremt status = Sttopped\n");
condato_mbed 0:d36fd4cabb70 1808 }
condato_mbed 0:d36fd4cabb70 1809
condato_mbed 0:d36fd4cabb70 1810 dataSent();
condato_mbed 0:d36fd4cabb70 1811
condato_mbed 0:d36fd4cabb70 1812 break;
condato_mbed 0:d36fd4cabb70 1813 }
condato_mbed 0:d36fd4cabb70 1814
condato_mbed 0:d36fd4cabb70 1815 default: {
condato_mbed 0:d36fd4cabb70 1816 break;
condato_mbed 0:d36fd4cabb70 1817 }
condato_mbed 0:d36fd4cabb70 1818 }
condato_mbed 0:d36fd4cabb70 1819 }
condato_mbed 0:d36fd4cabb70 1820 }
condato_mbed 0:d36fd4cabb70 1821 }