北海道情報専門学校 ライフハック研究所のエンベデッドUSBチーム松葉和仁により開発されたUSBSecのmbedに使用するソースコード by 和仁
Dependencies: SDFileSystem MusicEngine
Fork of mbed-os-example-ble-LED by
北海道情報専門学校 ライフハック研究所 エンベデッドUSB USBSec用mbedプログラム
松葉和仁
Diff: source/main.cpp
- Revision:
- 25:40ab1e81ae43
- Parent:
- 24:c0cc460aadef
- Child:
- 26:f3bc0ee1e9b5
--- a/source/main.cpp Fri Feb 03 02:15:57 2017 +0000 +++ b/source/main.cpp Fri Feb 03 02:32:17 2017 +0000 @@ -47,6 +47,9 @@ char password[] = {0x00,0x00,0x00,0x00,0x00,0x00};//デバッグパスワード //http://mag.switch-science.com/2015/06/17/fathersday2015/ +int speakerMode = 0;//1:接続 2:切断 3:認証エラー 4:パスワードリセット + +//接続 void connectAlertOff(); /** @@ -65,7 +68,10 @@ */ void connectAlertOff() { DEBUG("connectAlertOff\r\n"); - speakerD = 0; + if(speakerMode==1){ + speakerD = 0; + speakerMode = 0; + } } /** @@ -74,10 +80,12 @@ */ void connectAlertStart() { DEBUG("connectAlertStart\r\n"); + speakerMode = 1; speakerD = 1; eventQueue.call(&connectAlertOn); } +//切断 void disconnectAlertOff(); /** @@ -96,7 +104,10 @@ */ void disconnectAlertOff() { DEBUG("disconnectAlertOff\r\n"); - speakerD = 0; + if(speakerMode == 2){ + speakerD = 0; + speakerMode = 0; + } } /** @@ -105,10 +116,75 @@ */ void disconnectAlertStart() { DEBUG("disconnectAlertStart\r\n"); + speakerMode = 2; speakerD = 1; eventQueue.call(&disconnectAlertOn); } +//認証エラー +void authErrorAlertOff(); + +/** + *認証エラー発音 + *認証エラー時に発音を開始するためのキュー + */ +void authErrorAlertOn() { + DEBUG("authErrorAlertOn\r\n"); + Speaker.play("T160L4CC");//非同期だった//非同期じゃないとすべての処理が止まるから当たり前か + eventQueue.call_in(1500.0f, &authErrorAlertOff); +} + +/** + *認証エラー発音 + *認証エラー時に発音を開始するためのキュー + */ +void authErrorAlertOff() { + DEBUG("authErrorAlertOff\r\n"); + if(speakerMode == 3){ + speakerD = 0; + speakerMode = 0; + } +} + +/** + *認証エラー発音 + *認証エラー時に発音を開始するためのキュー + */ +void authErrorAlertStart() { + DEBUG("authErrorAlertStart\r\n"); + speakerMode = 3; + speakerD = 1; + eventQueue.call(&authErrorAlertOn); +} + +//パスワードリセット +void authErrorAlertOff(); + +/** + *パスワードリセット発音 + *パスワードリセット時に発音を開始するためのキュー + */ +void passwordResetAlertOn() { + DEBUG("passwordResetAlertOn\r\n"); + Speaker.play("T160L4CDCDEFEF"); + eventQueue.call_in(3000.0f, &passwordResetAlertOff); +} + +void passwordResetAlertOff() { + DEBUG("passwordResetAlertOff\r\n"); + if(speakerMode == 4){ + speakerD = 0; + speakerMode = 0; + } +} + +void passwordResetAlertStart() { + DEBUG("passwordResetAlertStart\r\n"); + speakerMode = 4; + speakerD = 1; + eventQueue.call(&passwordResetAlertOn); +} + /** *パワー検出コード *タクトスイッチが押されたときに実行されるキュー @@ -171,6 +247,7 @@ //パスワード認証状態のリセット authenticated=false; stateServicePtr->authStateUpdate(0x00); + eventQueue.call(&passwordResetAlertStart); DEBUG("パスワードのリセットが完了しました\r\n"); } @@ -347,6 +424,7 @@ DEBUG("\r\n"); if(params->data[i]!= password[i]){ DEBUG("認証に失敗しました\r\n"); + eventQueue.call(&authErrorAlertStart); return; } }