ModoSmart / Mbed 2 deprecated WindowSensorModule

Dependencies:   BLE_API mbed nRF51822

Fork of SensorModulePIR by ModoSmart

Files at this revision

API Documentation at this revision

Comitter:
MisterGiet
Date:
Wed Jun 06 14:53:43 2018 +0000
Parent:
11:1186eb69af44
Commit message:
Modification for Window Sensor Module for the Agile IoT final review.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Thu Jun 01 09:55:56 2017 +0000
+++ b/main.cpp	Wed Jun 06 14:53:43 2018 +0000
@@ -52,21 +52,19 @@
 /* BLE CONFIGURATION */
 
 BLE ble;
-static const char     DEVICE_NAME[]         = "SM02";
+static const char     DEVICE_NAME[]         = "WindowSensorUnit";
 static const uint16_t uuid16_list[]         = {GattService::UUID_HEALTH_THERMOMETER_SERVICE};
 static volatile bool  triggerSensorPolling  = false;
-static char           fwversion[31]         = "APP-2217";
+static char           fwversion[31]         = "Agile-IoT";
 static uint8_t        batteryLevel          = 99;
 static int8_t         TxPower               = +4;
 //static uint8_t        humidity            = 99;
 const static uint8_t  ManufData[]           = {0x01,0x02,0x03,0x04,0x05};   // Set up to 26B of advertising data to use for the Manufacturer data.
 
 
-static HealthThermometerService *thermometerServicePtr = NULL;;
+//static HealthThermometerService *thermometerServicePtr = NULL;;
 static BatteryService* batteryServicePtr = NULL;;
-static EnvironmentalService* humidityTemperatureServicePtr = NULL;
-static HumidityMeasureService *humidityService = NULL;
-static PresenceDetectionService *presenceService = NULL;
+//static EnvironmentalService* humidityTemperatureServicePtr = NULL;
 UARTService *uart;
 
 // Firmware
@@ -105,7 +103,7 @@
 
     float Vadc = (float)my_analogin_read_u16();
     float Vref = 1.2; // Internal Vref
-    float Vcc = 3 * 4 * Vref * Vadc / 1024.0;
+    float Vcc = 0.62 * Vref * Vadc / 1024.0;; //3 * 4 * Vref * Vadc / 1024.0;
 
     sprintf (Vpower, "Vcc=%.2fV, ", Vcc);
     DEBUG(Vpower);
@@ -115,23 +113,13 @@
 int getBatteryPercent ()
 {
     char batt_mess[10];
-    float Vbat_min = 2; //2;
-    float Vbat_max = 3;
+    float Vbat_min = 3; //2;
+    float Vbat_max = 3.7;
     int battLevel = (int) ( ((getBatteryVolt()-Vbat_min) / (Vbat_max-Vbat_min)) *100);
 
     sprintf (batt_mess, "Vbatt=%i, ", battLevel);
-    DEBUG(batt_mess);
-
-    // To avoid values bigger than 100%
-    if (battLevel > 100) {
-        battLevel = 100;
-    }
-
-    // To avoid overflow due to a value lower than Vbat_min
-    if (battLevel >= 250) {
-        battLevel = 0;
-    }
-
+    DEBUG(batt_mess); 
+   
     return battLevel;
 }
 
@@ -283,23 +271,15 @@
     // Set Transmission power:
     ble.setTxPower(TxPower);
 
-    //ble.gap().setScanParams(500, 400);
-    //ble.gap().startScan(advertisementCallback);
-
     //BLE server setup
     ble.gattServer().onDataWritten(onDataWrittenCallback);
 
     //Setup primary services
-    presenceService = new PresenceDetectionService(ble, updatePresenceCounter(presenceCounter));
-
-    thermometerServicePtr = new HealthThermometerService(ble, getTemperature(), HealthThermometerService::LOCATION_EAR);
-    humidityService = new HumidityMeasureService(ble, getHumidity());
-
-    humidityTemperatureServicePtr = new EnvironmentalService (ble);
     batteryServicePtr = new BatteryService(ble, batteryLevel);
 
+    //humidityTemperatureServicePtr = new EnvironmentalService (ble);
+
     ble.addService(firmwareService);
-    uart = new UARTService(ble);
     //ble.addService(TxPowerService);
 
     /* setup advertising */
@@ -309,14 +289,9 @@
     ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
 
     /* Sacrifice 2B of 31B to AdvType overhead, rest goes to AdvData array you define */
-    ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::MANUFACTURER_SPECIFIC_DATA, ManufData, sizeof(ManufData));
-    ble.gap().accumulateAdvertisingPayloadTxPower(TxPower);
+    ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));
     ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list));
-    //ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::THERMOMETER_EAR);
     ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::GENERIC_THERMOMETER);
-    //ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME,(const uint8_t *)"BLE UART", sizeof("BLE UART") - 1);
-    //ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS, (const uint8_t *)UARTServiceUUID_reversed, sizeof(UARTServiceUUID_reversed));
-    ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));
 
     ble.setAdvertisingInterval(1000); /* 1000ms */
     ble.startAdvertising();
@@ -335,17 +310,11 @@
 
 void updateBLEservices ()
 {
-    thermometerServicePtr->updateTemperature(getTemperature());
-    humidityService->updateHumidity(getHumidity());
-    
-    humidityTemperatureServicePtr->updateTemperature (getTemperature());
-    humidityTemperatureServicePtr->updateHumidity (getHumidity());
-    
+    //humidityTemperatureServicePtr->updateTemperature (getTemperature());
+    //humidityTemperatureServicePtr->updateHumidity (getHumidity());
+
     batteryServicePtr->updateBatteryLevel(getBatteryPercent());
-    
-    presenceService->updatePresence(updatePresenceCounter (presenceCounter));
-    //ble.updateCharacteristicValue(batteryPercentage.getValueAttribute().getHandle(), &batteryLevel, sizeof(batteryLevel));
-    //ble.updateCharacteristicValue(TxPowerChar.getValueAttribute().getHandle(), (uint8_t*)&TxPower, 1);
+
 }
 
 int main(void)
@@ -355,9 +324,6 @@
 
     blinkLed(1,1);
 
-    //Ticker ticker_presence;
-    //ticker_presence.attach(periodicCallbackPresence, 0.5);
-
     motion_pin.fall(&periodicCallbackPresence);
 
     Ticker ticker_sensor;
@@ -367,12 +333,6 @@
     BLE &bleptr = BLE::Instance();
     bleptr.init(bleInitComplete);
 
-    /*
-     //SpinWait for initialization to complete. This is necessary because the
-     //BLE object is used in the main loop below.
-    while (ble.hasInitialized()  == false) {    }
-    */
-
     while (true) {
 
         /* Get Presence data: */
@@ -409,14 +369,14 @@
             triggerSensorPolling = false;
 
             updateBLEservices();
-            
+
             /*
             // Red LED blinks if low battery, at every connection
             if (batteryLevel <= 10) {
                 blinkLed(battNotify,2);
             }
             */
-            
+
         } else {
             ble.waitForEvent();
         }