北海道情報専門学校 ライフハック研究所のエンベデッドUSBチーム松葉和仁により開発されたUSBSecのmbedに使用するソースコード by 和仁
Dependencies: SDFileSystem MusicEngine
Fork of mbed-os-example-ble-LED by
北海道情報専門学校 ライフハック研究所 エンベデッドUSB USBSec用mbedプログラム
松葉和仁
Diff: source/main.cpp
- Revision:
- 30:8a28597cfa6e
- Parent:
- 29:9d2335450cd4
- Child:
- 31:0568376f3399
diff -r 9d2335450cd4 -r 8a28597cfa6e source/main.cpp --- 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; } }