Kris Scholte Lubberink
/
SSS_Ble
Ble for smart sOlutions
Diff: source/InterestService.cpp
- 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"); }