Ble for smart sOlutions

Dependencies:   Adafruit_WS2801

Revision:
7:9cda1b0f25ae
Parent:
6:ee9c86f06eae
Child:
9:92d861703f96
--- a/source/InterestService.cpp	Mon May 20 09:55:38 2019 +0200
+++ b/source/InterestService.cpp	Mon May 20 13:20:35 2019 +0200
@@ -6,7 +6,7 @@
 #pragma pack(push,1)
 struct packed_A {
     uint32_t magic;
-    int value[5];
+    int value[20];
 };
 #pragma pack(pop)
 
@@ -17,10 +17,10 @@
                                 GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NONE)
 {
 
-    static bool serviceAdded = false; /* We should only ever need to add the information service once. */
-    if (serviceAdded) {
-        return;
-    }
+//    static bool serviceAdded = false; /* We should only ever need to add the information service once. */
+//    if (serviceAdded) {
+//        return;
+//    }
     printf("[PERIPHERAL] Adding interest service.. \r\n");
     GattCharacteristic *charTable[] = { &interestCharacteristic };
 
@@ -32,7 +32,7 @@
     ble.gattServer().onDataWritten(this, &InterestService::onDataWritten);
     readFromFs();
 
-    serviceAdded = true;
+//    serviceAdded = true;
 }
 
 void InterestService::onDataWritten(const GattWriteCallbackParams *writeParams) {
@@ -40,18 +40,18 @@
     uint16_t handle = writeParams->handle;
     printf("You wrote some data... But for which char? \r\n");
     printf("%d == %d", handle, interestCharacteristic.getValueHandle());//colorCharacteristic.getValueHandle());
-    if(handle == interestCharacteristic.getValueHandle()){
+//    if(handle == interestCharacteristic.getValueHandle()){
         printf("You wrote interests!");
-        printf("The value should be an array of 5 integers.");
+        printf("The value should be an array of 20 integers.");
 //            color = writeParams->data;
         int index = 0;
-        for (int i=0; i < 5;  i++) {
-            interests[i] = writeParams->data[i];//+3] << 24 | (writeParams->data[i+2] & 0xff) << 16 | (writeParams->data[i+1] & 0xff) << 8| (writeParams->data[i] & 0xff);
+        for (int i=0; i < 20;  i++) {
+            interests[i] = writeParams->data[i];
             index++;
             printf("Index: %d, val %08X \r\n", index, interests[i]);
         }
         writeToFs();
-    }
+//    }
 }
 
 int InterestService::readFromFs() {
@@ -75,20 +75,18 @@
                ptr->value[2],
                ptr->value[3],
                ptr->value[4]);
-        interests[0] = ptr->value[0];
-        interests[1] = ptr->value[1];
-        interests[2] = ptr->value[2];
-        interests[3] = ptr->value[3];
-        interests[4] = ptr->value[4];
+
+        for (int i=0; i < 5;  i++) {
+            interests[i] = ptr->value[i] << 24 | (ptr->value[i+1] & 0xff) << 16 | (ptr->value[i+2] & 0xff) << 8| (ptr->value[i+3] & 0xff);
+        }
+
     } else {
         printf("Uninitialized, setting up first time");
         packed_A newmemory;
         newmemory.magic = MAGIC_VALUE;
-        newmemory.value[0] = 2;
-        newmemory.value[1] = 3;
-        newmemory.value[2] = 4;
-        newmemory.value[3] = 5;
-        newmemory.value[4] = 6;
+        for (int i=0; i < 20;  i++) {
+            newmemory.value[i] = 0;
+        }
         flash_device.erase(address, flash_device.get_sector_size(address));
         flash_device.program(&newmemory, address, sizeof(newmemory));
         printf("Flashed");
@@ -107,11 +105,10 @@
     int address = (flash_device.get_flash_start() + flash_device.get_flash_size()) - (sector_size);
 
     newmemory.magic = MAGIC_VALUE;
-    newmemory.value[0] = interests[0];
-    newmemory.value[1] = interests[1];
-    newmemory.value[2] = interests[2];
-    newmemory.value[3] = interests[3];
-    newmemory.value[4] = interests[4];
+    for (int i=0; i < 20;  i++) {
+        newmemory.value[i] = interests[i];
+    }
+
     flash_device.erase(address, flash_device.get_sector_size(address));
     flash_device.program(&newmemory, address, sizeof(newmemory));
     printf("Flashed");
@@ -123,5 +120,6 @@
 }
 
 InterestService::~InterestService() {
+
     printf("[PERIPHERAL]\t Destructing InterestService");
 }