北海道情報専門学校 ライフハック研究所のエンベデッドUSBチーム松葉和仁により開発されたUSBSecのmbedに使用するソースコード by 和仁

Dependencies:   SDFileSystem MusicEngine

Fork of mbed-os-example-ble-LED by mbed-os-examples

北海道情報専門学校 ライフハック研究所 エンベデッドUSB USBSec用mbedプログラム

松葉和仁

Revision:
30:8a28597cfa6e
Parent:
29:9d2335450cd4
Child:
31:0568376f3399
--- a/source/main.cpp	Mon Feb 06 01:09:48 2017 +0000
+++ b/source/main.cpp	Mon Feb 06 01:41:35 2017 +0000
@@ -48,7 +48,7 @@
 
 //http://mag.switch-science.com/2015/06/17/fathersday2015/
 //http://www.geocities.co.jp/Playtown-Denei/9628/whatsmml.html
-int speakerMode = 0;//1:接続 2:切断 3:認証エラー 4:パスワードリセット 5:起動
+int speakerMode = 0;//1:接続 2:切断 3:認証エラー 4:パスワードリセット 5:起動 6:USB有効 7:USB無効
 
 //接続
 void connectAlertOff();
@@ -96,7 +96,7 @@
  */
 void disconnectAlertOn() {
     DEBUG("disconnectAlertOn\r\n");
-    Speaker.play("T160L4CR4CR4CR4CR4");//非同期だった//非同期じゃないとすべての処理が止まるから当たり前か
+    Speaker.play("T160L4CR4CR4CR4CR4");
     eventQueue.call_in(3000.0f, &disconnectAlertOff);
 }
 
@@ -132,7 +132,7 @@
  */
 void authErrorAlertOn() {
     DEBUG("authErrorAlertOn\r\n");
-    Speaker.play("T160L4CC");//非同期だった//非同期じゃないとすべての処理が止まるから当たり前か
+    Speaker.play("T160L4CC");
     eventQueue.call_in(1500.0f, &authErrorAlertOff);
 }
 
@@ -215,6 +215,70 @@
     eventQueue.call(&startupAlertOn);
 }
 
+//USB有効
+void enableUSBAlertOff();
+
+/**
+ *USB有効発音
+ *USBの回路を有効にする際に発音を開始するためのキュー
+ */
+void enableUSBAlertOn(){
+    DEBUG("enableUSBAlertOn\r\n");
+    Speaker.play("T160L4CE");
+    eventQueue.call_in(3000.0f, &enableUSBAlertOff);
+}
+
+void enableUSBAlertOff() {
+    DEBUG("enableUSBAlertOff\r\n");
+    if(speakerMode == 6){
+        speakerD = 0;
+        speakerMode = 0;
+    }
+}
+
+void enableUSBAlertStart() {
+    DEBUG("enableUSBAlertStart\r\n");
+    if(speakerMode == 1){
+        DEBUG("接続アラートが有効なため中止しました\r\n");
+        return;
+    }
+    speakerMode = 6;
+    speakerD = 1;
+    eventQueue.call(&enableUSBAlertOn);
+}
+
+//USB無効
+void disableUSBAlertOff();
+
+/**
+ *USB無効発音
+ *USBの回路を無効にする際に発音を開始するためのキュー
+ */
+void disableUSBAlertOn(){
+    DEBUG("disableUSBAlertOn\r\n");
+    Speaker.play("T160L4EC");
+    eventQueue.call_in(3000.0f, &disableUSBAlertOff);
+}
+
+void disableUSBAlertOff() {
+    DEBUG("disableUSBAlertOff\r\n");
+    if(speakerMode == 7){
+        speakerD = 0;
+        speakerMode = 0;
+    }
+}
+
+void disableUSBAlertStart() {
+    DEBUG("disableUSBAlertStart\r\n");
+    if(speakerMode == 2){
+        DEBUG("切断アラートが有効なため中止しました\r\n");
+        return;
+    }
+    speakerMode = 7;
+    speakerD = 1;
+    eventQueue.call(&disableUSBAlertOn);
+}
+
 /**
  *パワー検出コード
  *タクトスイッチが押されたときに実行されるキュー
@@ -482,6 +546,12 @@
         
         actuatedLED = *(params->data);
         stateServicePtr->usbStateUpdate(*(params->data));
+        
+        if(params->data[0] == 1){
+            eventQueue.call(&enableUSBAlertStart);    
+        }else if(params->data[0] == 0){
+            eventQueue.call(&disableUSBAlertStart);    
+        }
         return;
     }
 }