v1.19 Release

Dependencies:   nRF51822

Revision:
25:42163d650266
Parent:
24:761c30334cf4
Child:
26:a577c4b69fe0
--- a/Source/main.cpp	Thu Mar 21 19:28:22 2019 +0000
+++ b/Source/main.cpp	Mon Mar 25 15:24:15 2019 +0000
@@ -94,7 +94,7 @@
 void light_interrupt(void)
 { // dark to light transition
     package_open_detected = true;
-    start_periodic_tick(PERIODIC_TICK_SEC);
+    start_periodic_tick(FAST_TICK_SEC);
 }
     
 /// Test to see if Cap is off or on
@@ -204,7 +204,7 @@
             case INIT:
                 log_add(EVENT_POWER, 0, 0, 0); // log event 
                 set_radio(true);
-                start_periodic_tick(PERIODIC_TICK_SEC);
+                start_periodic_tick(FAST_TICK_SEC);
                 #if SKIP_SHIP_MODE
                     state = IN_USE_SETUP;
                 #else
@@ -218,34 +218,35 @@
                 // Check Misc.
                 
                 //if(error) flash_led(0,0.1); // flash forever to indicate error
-                
+
                 if(NV_TESTING_REQUIRED) 
                 {
                     flash_led(1, 1.0);
                     package_open_sense_enable = 1;
+                    start_periodic_tick(FAST_TICK_SEC);
                     state = TEST_MODE;
                 }
                 else 
                 {
                     state = IN_USE_SETUP;
                 }
+               
                 break;
                 
-            case TEST_MODE: // allow 
-                start_periodic_tick(FAST_TICK_SEC);
+            case TEST_MODE:
                 test_cap();
                 led = is_cap_off;
-                if(NV_TESTING_REQUIRED == 0 && is_package_open == true)
+                if(!NV_TESTING_REQUIRED && is_package_open)
                 { // testing passed
                     set_radio(false); // already done when NV_TESTING_REQUIRED was cleared.
                     led = 0;
-                    //package_open_sense_enable = 1;
                     state = SHIP_MODE_WAIT_DARK;
                 }
                 break;
                 
             case SHIP_MODE_WAIT_DARK: // Wait for light sensor to see darkness
-                if(is_package_open == 0)
+                flash_led(1,0.1);
+                if(!is_package_open)
                 { // its dark
                     state = SHIP_MODE_WAIT_LIGHT;
                 }
@@ -254,11 +255,13 @@
             case SHIP_MODE_WAIT_LIGHT: 
                 // set up and enable the Light Sense Interrupt
                 // go to lowest power state
+                
                 debug("Going SHIP MODE\n");
                 is_package_open.disable_irq();
                 stop_periodic_tick();
                 led = 0;
                 package_open_detected = false;
+                is_package_open.mode(PullNone);
                 is_package_open.rise(&light_interrupt);
                 is_package_open.enable_irq();
                 state = SHIP_MODE_CHECK_CAP;
@@ -266,9 +269,11 @@
             break;
             
             case SHIP_MODE_CHECK_CAP:
+                
                 if(package_open_detected)
                 {
                     debug("Awake\n");
+                    flash_led(10,0.25);
                     test_cap();
                     if(is_cap_off)
                     {
@@ -282,7 +287,7 @@
                 break;
                 
             case SHIP_MODE_WAIT_CAP_OFF:
-                if(is_package_open == 0) 
+                if(!is_package_open) 
                 {
                     state = SHIP_MODE_WAIT_LIGHT;
                 }
@@ -299,6 +304,7 @@
                 break;
                 
             case IN_USE_SETUP:
+                flash_led(3, .25);
                 start_periodic_tick(PERIODIC_TICK_SEC);
                 debug("In Use\n");             
                 state = WAIT_CAP_OFF;
@@ -335,25 +341,6 @@
     } while(state != last_state);
 }
 
-int main(void)
-{                                                 
-    // blink LED to indicate power applied
-    flash_led(1,1.0);
-
-    if(Init_BLE_Stuff()) // init and start advertising    
-    {
-        flash_led(0, 0.05); // indicate a ble init error
-    }
-    
-    eventQueue.call(process_state);
-
-    eventQueue.dispatch_forever(); // run all tasks in the event queue (non-interrupt routines)
-    return 0;
-}
-
-//*****************************************************************************
-
-
 /// process commands sent to the SmartCap over Bluetooth UART
 void process_cmd(char * cmd)
 {
@@ -378,18 +365,7 @@
                     BLE_UART_xmit(0);
                     BLE_UART_xmit("\n");
                     break;
-                
-                #if 0
-                case 'l': // light sensor analog readings
-                    BLE_UART_xmit("sl=");
-                    package_open_sense_enable = 1;
-                    wait(0.001);
-                    BLE_UART_xmit(adc_read(ADC_CHAN_LIGHT_SENSE, 2));
-                    package_open_sense_enable = 0;
-                    BLE_UART_xmit("\n");
-                    break;
-                #endif
-                
+                              
                 case 'c': // cap sensor analog readings
                     BLE_UART_xmit("sc=");
                     test_cap();
@@ -399,15 +375,16 @@
                     BLE_UART_xmit("\n");
                     break;
                     
-                case 's': // sensors as int, with bits '000000xy', x=(1 is cap off), y=(1 is light sensed)
-                    int val = 0;
-                    BLE_UART_xmit("ss=");
+                case 's': // sensors as binary, with bits '00000tcp', t=(1=TESTING REQUIRED), c=(1 is cap off), p=(1 is light sensed)
+                    //int val = 0;
+                    BLE_UART_xmit("ss=00000");
+                    if(NV_TESTING_REQUIRED) BLE_UART_xmit("1"); else BLE_UART_xmit("0");
+                    int save = package_open_sense_enable;
                     package_open_sense_enable = 1;
                     test_cap();
-                    if(is_cap_off) val |= 2;
-                    if(is_package_open) val |= 1;
-                    package_open_sense_enable = 0;
-                    BLE_UART_xmit(val);
+                    if(is_cap_off) BLE_UART_xmit("1"); else BLE_UART_xmit("0");
+                    if(is_package_open) BLE_UART_xmit("1"); else BLE_UART_xmit("0");
+                    package_open_sense_enable = save;
                     BLE_UART_xmit("\n");
                     break;
             }
@@ -418,6 +395,14 @@
                 log_add(EVENT_TEST_PASS, 0, 0, 0);
                 nv_clear(NV_TESTING_REQUIRED_ADDR);
             }
+            #if 0
+            else if(tolower(cmd[1])=='e')
+            {
+                set_radio(false);
+                wait(1.0);
+                log_erase();
+            }
+            #endif
             break;
             
         case 't': // get time
@@ -453,3 +438,23 @@
     }
     cmd[0] = 0;
 }
+
+//*****************************************************************************
+
+int main(void)
+{                                                 
+    // blink LED to indicate power applied
+    //flash_led(1,1.0);
+
+    if(Init_BLE_Stuff()) // init and start advertising    
+    {
+        flash_led(0, 0.05); // indicate a ble init error
+    }
+    
+    eventQueue.call(process_state);
+
+    eventQueue.dispatch_forever(); // run all tasks in the event queue (non-interrupt routines)
+    return 0;
+}
+
+