POC1.5 prototype 2 x color sensor 2 x LM75B 3 x AnalogIn 1 x accel

Dependencies:   mbed vt100

Revision:
6:44ca704f2bc1
Parent:
5:eba500888787
Child:
8:5590f55bdf41
--- a/af_utils/af_attriburtes.cpp	Tue Dec 05 00:46:52 2017 +0000
+++ b/af_utils/af_attriburtes.cpp	Wed Dec 06 00:35:56 2017 +0000
@@ -53,59 +53,59 @@
     {  ATTR_COLOR1_G_VALUE,    "Color1 G",                 ATTRIBUTE_TYPE_SINT16,  2 },
     {  ATTR_COLOR1_B_VALUE,    "Color1 B",                 ATTRIBUTE_TYPE_SINT16,  2 },
 /* first temperature sensor (LM75B) */    
-    {  ATTR_TEMP0_PRESENT,  "Temp0 Present",            ATTRIBUTE_TYPE_BOOLEAN, 1 },
-    {  ATTR_TEMP0_ENABLE,   "Temp0 Enable",             ATTRIBUTE_TYPE_BOOLEAN, 1 },
-    {  ATTR_TEMP0_INTERVAL, "Temp0 Interval",           ATTRIBUTE_TYPE_SINT16,  2 },
-    {  ATTR_TEMP0_VALUE,    "Temp0 Value",              ATTRIBUTE_TYPE_FIXED_15_16, 4},
+    {  ATTR_TEMP0_PRESENT,    "Temp0 Present",             ATTRIBUTE_TYPE_BOOLEAN, 1 },
+    {  ATTR_TEMP0_ENABLE,     "Temp0 Enable",              ATTRIBUTE_TYPE_BOOLEAN, 1 },
+    {  ATTR_TEMP0_INTERVAL,   "Temp0 Interval",            ATTRIBUTE_TYPE_SINT16,  2 },
+    {  ATTR_TEMP0_VALUE,      "Temp0 Value",               ATTRIBUTE_TYPE_FIXED_15_16, 4},
 /* second temperature sensor (SMTC502AT/Before) */    
-    {  ATTR_TEMP1_PRESENT,  "Temp1 Present",            ATTRIBUTE_TYPE_BOOLEAN, 1 },
-    {  ATTR_TEMP1_ENABLE,   "Temp1 Enable",             ATTRIBUTE_TYPE_BOOLEAN, 1 },
-    {  ATTR_TEMP1_INTERVAL, "Temp1 Interval",           ATTRIBUTE_TYPE_SINT16,  2 },
-    {  ATTR_TEMP1_VALUE,    "Temp1 Value",              ATTRIBUTE_TYPE_FIXED_15_16, 4},
+    {  ATTR_TEMP1_PRESENT,    "Temp1 Present",             ATTRIBUTE_TYPE_BOOLEAN, 1 },
+    {  ATTR_TEMP1_ENABLE,     "Temp1 Enable",              ATTRIBUTE_TYPE_BOOLEAN, 1 },
+    {  ATTR_TEMP1_INTERVAL,   "Temp1 Interval",            ATTRIBUTE_TYPE_SINT16,  2 },
+    {  ATTR_TEMP1_VALUE,      "Temp1 Value",               ATTRIBUTE_TYPE_FIXED_15_16, 4},
 /* third temperature sensor (SMTC502AT/After) */    
-    {  ATTR_TEMP2_PRESENT,  "Temp2 Present",            ATTRIBUTE_TYPE_BOOLEAN, 1 },
-    {  ATTR_TEMP2_ENABLE,   "Temp2 Enable",             ATTRIBUTE_TYPE_BOOLEAN, 1 },
-    {  ATTR_TEMP2_INTERVAL, "Temp2 Interval",           ATTRIBUTE_TYPE_SINT16,  2 },
-    {  ATTR_TEMP2_VALUE,    "Temp2 Value",              ATTRIBUTE_TYPE_FIXED_15_16, 4},
+    {  ATTR_TEMP2_PRESENT,    "Temp2 Present",             ATTRIBUTE_TYPE_BOOLEAN, 1 },
+    {  ATTR_TEMP2_ENABLE,     "Temp2 Enable",              ATTRIBUTE_TYPE_BOOLEAN, 1 },
+    {  ATTR_TEMP2_INTERVAL,   "Temp2 Interval",            ATTRIBUTE_TYPE_SINT16,  2 },
+    {  ATTR_TEMP2_VALUE,      "Temp2 Value",               ATTRIBUTE_TYPE_FIXED_15_16, 4},
 /* fouth temperateure sensor (LM75B) */
-    {  ATTR_TEMP3_PRESENT,  "Temp3 Present",            ATTRIBUTE_TYPE_BOOLEAN, 1 },
-    {  ATTR_TEMP3_ENABLE,   "Temp3 Enable",             ATTRIBUTE_TYPE_BOOLEAN, 1 },
-    {  ATTR_TEMP3_INTERVAL, "Temp3 Interval",           ATTRIBUTE_TYPE_SINT16,  2 },
-    {  ATTR_TEMP3_VALUE,    "Temp3 Value",              ATTRIBUTE_TYPE_FIXED_15_16, 4}, 
+    {  ATTR_TEMP3_PRESENT,    "Temp3 Present",             ATTRIBUTE_TYPE_BOOLEAN, 1 },
+    {  ATTR_TEMP3_ENABLE,     "Temp3 Enable",              ATTRIBUTE_TYPE_BOOLEAN, 1 },
+    {  ATTR_TEMP3_INTERVAL,   "Temp3 Interval",            ATTRIBUTE_TYPE_SINT16,  2 },
+    {  ATTR_TEMP3_VALUE,      "Temp3 Value",               ATTRIBUTE_TYPE_FIXED_15_16, 4}, 
 /* Gas Pressure sensor (PSE530) */    
-    {  ATTR_GAS_PRESENT,    "Gas Pressure Present",    ATTRIBUTE_TYPE_BOOLEAN, 1 },
-    {  ATTR_GAS_ENABLE,     "Gas Pressure Enable",     ATTRIBUTE_TYPE_BOOLEAN, 1 },
-    {  ATTR_GAS_INTERVAL,   "Gas Pressure Interval",   ATTRIBUTE_TYPE_SINT16,  2 },
-    {  ATTR_GAS_VALUE,      "Gas Pressure Value",      ATTRIBUTE_TYPE_FIXED_15_16, 4}, 
+    {  ATTR_GAS_PRESENT,      "Gas Pressure Present",      ATTRIBUTE_TYPE_BOOLEAN, 1 },
+    {  ATTR_GAS_ENABLE,       "Gas Pressure Enable",       ATTRIBUTE_TYPE_BOOLEAN, 1 },
+    {  ATTR_GAS_INTERVAL,     "Gas Pressure Interval",     ATTRIBUTE_TYPE_SINT16,  2 },
+    {  ATTR_GAS_VALUE,        "Gas Pressure Value",        ATTRIBUTE_TYPE_FIXED_15_16, 4}, 
 /* Software Reset Request */    
-    {  ATTR_SOFTWARE_RESET, "Software Reset",          ATTRIBUTE_TYPE_BOOLEAN, 1 },
+    {  ATTR_SOFTWARE_RESET,   "Software Reset",            ATTRIBUTE_TYPE_BOOLEAN, 1 },
                    
-    { 1024,  "LED",                      ATTRIBUTE_TYPE_SINT16,  2 },
-    { 1025,  "I/O 0",                    ATTRIBUTE_TYPE_SINT64,  8 },
-    { 1026,  "I/O 1",                    ATTRIBUTE_TYPE_SINT64,  8 },
-    { 1028,  "I/O 2",                    ATTRIBUTE_TYPE_SINT64,  8 },
-    { 1030,  "BUTTON",                   ATTRIBUTE_TYPE_BOOLEAN, 2 },
-    { 1031,  "I/O 3",                    ATTRIBUTE_TYPE_SINT64,  8 },
-    { 2001,  "Bootloader Version",       ATTRIBUTE_TYPE_SINT64,  8 },
-    { 2002,  "BLE Stack Version",        ATTRIBUTE_TYPE_SINT64,  8 },
-    { 2003,  "FW Application Version",   ATTRIBUTE_TYPE_SINT64,  8 },
-    { 2004,  "Device Description",       ATTRIBUTE_TYPE_SINT64,  8 },
-    { 2006,  "Wi-Fi chip",               ATTRIBUTE_TYPE_SINT64,  8 },
-    { 59001, "Offline Schedules enable", ATTRIBUTE_TYPE_SINT16,  2 }, 
-    { 60000, "Security Enabled",         ATTRIBUTE_TYPE_SINT8,   1 }, /* ? */
-    { 65001, "UTC offset data",          ATTRIBUTE_TYPE_BYTES,   8 },
-    { 65004, "Configured SSID",          ATTRIBUTE_TYPE_UTF8S,  10 }, /* ? */
-    { 65005, "Wi-Fi Bars",               ATTRIBUTE_TYPE_SINT8,   1 },
-    { 65006, "Wi-Fi Steady State",       ATTRIBUTE_TYPE_SINT8,   1 },
-    { 65012, "Command",                  ATTRIBUTE_TYPE_BYTES,   8 }, /* ? */   
-    { 65013, "ASR State",                ATTRIBUTE_TYPE_SINT8,   1 },
-    { 65014, "Low Battery Warning",      ATTRIBUTE_TYPE_SINT8,   1 },
-    { ATTR_LINKED_TIMESTAMP, "Linked Timestamp",         ATTRIBUTE_TYPE_SINT32,  4 },
-    { 65018, "Attribute ACK",            ATTRIBUTE_TYPE_SINT16,  8 },
-    { 65019, "Reboot Reason",            ATTRIBUTE_TYPE_UTF8S, 100 },
-    { 65020, "BLE Comms",                ATTRIBUTE_TYPE_BYTES,  12 },
-    { 65021, "MCU Interface",            ATTRIBUTE_TYPE_SINT8,   1 },
-    {     0, 0,                          0,                      0 }
+    { ATTR_LED,               "LED",                       ATTRIBUTE_TYPE_SINT16,  2 },
+    { ATTR_IO0,               "I/O 0",                     ATTRIBUTE_TYPE_SINT64,  8 },
+    { ATTR_IO1,               "I/O 1",                     ATTRIBUTE_TYPE_SINT64,  8 },
+    { ATTR_IO2,               "I/O 2",                     ATTRIBUTE_TYPE_SINT64,  8 },
+    { ATTR_BUTTON,            "BUTTON",                    ATTRIBUTE_TYPE_BOOLEAN, 2 },
+    { ATTR_IO3,               "I/O 3",                     ATTRIBUTE_TYPE_SINT64,  8 },
+    { ATTR_BOOT_LOADER_VER,   "Bootloader Version",        ATTRIBUTE_TYPE_SINT64,  8 },
+    { ATTR_BLE_STACK_VER,     "BLE Stack Version",         ATTRIBUTE_TYPE_SINT64,  8 },
+    { ATTR_FW_APP_VER,        "FW Application Version",    ATTRIBUTE_TYPE_SINT64,  8 },
+    { ATTR_DEVICE_DESC,       "Device Description",        ATTRIBUTE_TYPE_SINT64,  8 },
+    { ATTR_WIFI_VER,          "Wi-Fi chip",                ATTRIBUTE_TYPE_SINT64,  8 },
+    { ATTR_OFFLINE_SCHED,     "Offline Schedules enable",  ATTRIBUTE_TYPE_SINT16,  2 }, 
+    { ATTR_SECURITY_ENABLED,  "Security Enabled",          ATTRIBUTE_TYPE_SINT8,   1 }, /* ? */
+    { ATTR_UTC_OFFSET,        "UTC offset data",           ATTRIBUTE_TYPE_BYTES,   8 },
+    { ATTR_CONFIGURES_SSID,   "Configured SSID",           ATTRIBUTE_TYPE_UTF8S,  10 }, /* ? */
+    { ATTR_WIFI_BARS,         "Wi-Fi Bars",                ATTRIBUTE_TYPE_SINT8,   1 },
+    { ATTR_WIFI_STDY_STATE,   "Wi-Fi Steady State",        ATTRIBUTE_TYPE_SINT8,   1 },
+    { ATTR_COMMAND,           "Command",                   ATTRIBUTE_TYPE_BYTES,   8 }, /* ? */   
+    { ATTR_ASR_STATE,         "ASR State",                 ATTRIBUTE_TYPE_SINT8,   1 },
+    { ATTR_LOW_BATTERY,       "Low Battery Warning",       ATTRIBUTE_TYPE_SINT8,   1 },
+    { ATTR_LINKED_TIMESTAMP,  "Linked Timestamp",          ATTRIBUTE_TYPE_SINT32,  4 },
+    { ATTR_ATTR_ACK,          "Attribute ACK",             ATTRIBUTE_TYPE_SINT16,  8 },
+    { ATTR_REBOOT_REASON,     "Reboot Reason",             ATTRIBUTE_TYPE_UTF8S, 100 },
+    { ATTR_BLE_COMMS,         "BLE Comms",                 ATTRIBUTE_TYPE_BYTES,  12 },
+    { ATTR_MCU_INTERFACE,     "MCU Interface",             ATTRIBUTE_TYPE_SINT8,   1 },
+    { 0,                      0,                           0,                      0 }
 } ;
 
 int get_af_attr(uint16_t id) 
@@ -337,14 +337,14 @@
         break ;        
     case ATTR_COLOR0_CALIBRATE: /* calibrate color0 */
         if (sensor[1]) {
-            afero->setAttributeComplete(requestId, attributeId, valueLen, value) ;
-            if (value[0]) { /* do calibration! */
+            if (value[0]) { /* do calibration! */        
                 ((edge_color*)sensor[1])->calibrate(color0_target, color0_pwm, 10) ;
                 afero->setAttribute32(ATTR_COLOR0_PWM_R, color0_pwm[0]) ;
                 afero->setAttribute32(ATTR_COLOR0_PWM_G, color0_pwm[1]) ;
                 afero->setAttribute32(ATTR_COLOR0_PWM_B, color0_pwm[2]) ;
-                afero->setAttributeBool(ATTR_COLOR0_CALIBRATE, false) ;
             }
+//            afero->setAttributeComplete(requestId, attributeId, valueLen, value) ;
+             afero->setAttributeBool(ATTR_COLOR0_CALIBRATE, false) ;
         }
         break ;
     case ATTR_COLOR1_ENABLE: /* color1 enable */
@@ -399,13 +399,13 @@
     case ATTR_COLOR1_CALIBRATE: /* calibrate color1 */
         if (sensor[2]) {
             if (value[0]) { /* do calibration! */
-                afero->setAttributeComplete(requestId, attributeId, valueLen, value) ;
                 ((edge_color*)sensor[2])->calibrate(color1_target, color1_pwm, 10) ;
                 afero->setAttribute32(ATTR_COLOR1_PWM_R, color1_pwm[0]) ;
                 afero->setAttribute32(ATTR_COLOR1_PWM_G, color1_pwm[1]) ;
                 afero->setAttribute32(ATTR_COLOR1_PWM_B, color1_pwm[2]) ;
-                afero->setAttributeBool(ATTR_COLOR1_CALIBRATE, false) ;
             }
+//            afero->setAttributeComplete(requestId, attributeId, valueLen, value) ;
+            afero->setAttributeBool(ATTR_COLOR1_CALIBRATE, false) ;
         }
 
         break ;
@@ -484,6 +484,24 @@
     }
     af_print_values(requestId, attributeId, valueLen, value) ;
     switch(attributeId) {
+    case ATTR_REBOOT_REASON:
+        printf("Reboot Reason: ") ;
+        switch(value[0]) {
+        case 1: printf("Reset pin asserted\n") ; break ;
+        case 2: printf("Watchdog reset\n") ;     break ;
+        case 4: printf("Software reset\n") ;     break ;
+        case 8: printf("CPU Lock up\n") ;        break ;
+        }
+        break ; 
+    case ATTR_MCU_INTERFACE:
+        printf("MCU Interface: ") ;
+        switch(value[0]) {
+        case 0:  printf("No MCU\n") ;    break ;
+        case 1:  printf("SPI Slave\n") ; break ;
+        case 2:  printf("UART\n") ;      break ;
+        default: printf("Unknown\n") ;   break ; 
+        }
+        break ;
     case AF_SYSTEM_ASR_STATE:
         printf("ASR state: ") ;
         switch(value[0]) {
@@ -496,16 +514,25 @@
             printf("Linked\n") ;
             break ;
         case MODULE_STATE_UPDATING:
-            gLinkedState = false ;
+            gLinkedState = true ; 
             printf("Updating\n") ;
+            if (display) {
+                display->clearDisplay() ;
+                display->putStr("FW Updating...") ;
+            }
             break ;
         case MOUDLE_STATE_UPDATE_READY:
             gLinkedState = false ;
             printf("Update ready - rebooting\n") ;
+            if (display) {
+                display->clearDisplay() ;
+                display->putStr("Rebooting...") ;
+            }
             while(afero->setAttribute32(AF_SYSTEM_COMMAND, MODULE_COMMAND_REBOOT) != afSUCCESS) {
                 afero->loop() ;
-                wait(0.1) ;
+                wait_us(100) ;
             }
+            software_reset() ;
             break ;
         default:
             break ;