sakura.io Evalution Board's sample program of power management.

Dependencies:   AQM0802A SakuraIO mbed

Files at this revision

API Documentation at this revision

Comitter:
okuhara
Date:
Thu May 31 07:06:53 2018 +0000
Parent:
0:4387b9fc4c58
Commit message:
Add "DeepSleep" message on LCD

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 4387b9fc4c58 -r c92bbea0eec1 main.cpp
--- a/main.cpp	Tue May 15 02:30:39 2018 +0000
+++ b/main.cpp	Thu May 31 07:06:53 2018 +0000
@@ -17,7 +17,7 @@
 DigitalOut led_3(LED3);
 DigitalOut led_4(LED4);
 
-DigitalOut leds[] = {led_1, led_2, led_3};
+DigitalOut leds[] = {led_1, led_2};
 
 // LCD backlight
 DigitalOut lcd_led(LED_LCD);
@@ -30,7 +30,7 @@
 DigitalIn sw_5(SW5);
 DigitalIn sw_6(SW6);
 
-DigitalIn sws[] = {sw_1, sw_2, sw_3};
+DigitalIn sws[] = {sw_1, sw_2};
 
 // Internal I2C
 I2C internal_i2c(I2C_INTERNAL_SDA, I2C_INTERNAL_SCL);
@@ -70,12 +70,29 @@
 static void loop()
 {
     uint8_t mode = 0xff;
-    static uint8_t prev_sw[3] = {1, 1, 1};
+    static uint8_t prev_sw[3] = {1, 1};
     uint8_t send_sw;
     static uint8_t prev_send_sw = 1;
     uint8_t cnstat;
     static uint8_t prev_cnstat = 0xff;
 
+    // WAKE_INを設定
+    if (wake_in != sw_5) {
+        lcd.cls(); 
+        if (sw_5 == 1) {
+            lcd.printf("Running");
+        } else {
+            lcd.printf("DeepSleep");
+            cnstat = 0xff;
+            led_4 = 0;
+        }
+    }
+    wake_in = sw_5;
+    if (wake_in == 0) {
+        wait(0.1);
+        return;
+    }
+    
     // 動作中LEDを点滅させる
     led_4 = !led_4;
     
@@ -96,7 +113,6 @@
     uint8_t stat = sakuraio.getPowerSaveMode();
     led_1 = (stat == 0) ? 1 : 0;
     led_2 = (stat == 1) ? 1 : 0;
-    led_3 = (stat == 2) ? 1 : 0;
     
     // 接続状態を表示
     cnstat = sakuraio.getConnectionStatus();
@@ -120,9 +136,6 @@
     }
     prev_send_sw = send_sw;
     
-    // WAKE_INを設定
-    wake_in = sw_5;
-    
     uint8_t available, queued;
     if (sakuraio.getRxQueueLength(&available, &queued) == CMD_ERROR_NONE) {
         for (int i = 0; i < queued; i++) {