北海道情報専門学校 ライフハック研究所のエンベデッドUSBチーム松葉和仁により開発されたUSBSecのmbedに使用するソースコード by 和仁
Dependencies: SDFileSystem MusicEngine
Fork of mbed-os-example-ble-LED by
北海道情報専門学校 ライフハック研究所 エンベデッドUSB USBSec用mbedプログラム
松葉和仁
Diff: source/main.cpp
- Revision:
- 15:c65fdaa7bfc0
- Parent:
- 14:be4e43ce1578
- Child:
- 16:1ef03a07fbab
--- a/source/main.cpp Wed Dec 21 02:56:24 2016 +0000 +++ b/source/main.cpp Thu Jan 19 01:27:19 2017 +0000 @@ -30,7 +30,8 @@ InterruptIn powerSwitch(p17);//パワー検出コード InterruptIn resetSwitch(p18);//リセットボタン -PwmOut speaker(LED3);//スピーカ +PwmOut speakerP(LED4);//スピーカPWM +DigitalOut speakerD(LED3, 0);//スピーカ省電力化デジタル //SDFileSystem local("local");//SDカードを定義する SDFileSystem sd(p13,p14,p15,p19,"sd"); @@ -53,6 +54,7 @@ char password[] = {0x00,0x00,0x00,0x00,0x00,0x00};//デバッグパスワード int connectAlertCount = 0; +int disconnectAlertCount = 0; float connectAlert[]={mE,mF,mG,mA,mB}; float disconnectAlert[]={mB,mA,mG,mF,mE}; @@ -64,9 +66,9 @@ */ void connectAlertOn() { DEBUG("connectAlertOn\r\n"); - speaker.period(1.0/connectAlert[connectAlertCount]); - speaker.write(0.5f); - queue.call_in(600, &connectAlertOff); + speakerP.period(1.0/connectAlert[connectAlertCount]); + speakerP.write(0.5f); + eventQueue.call_in(1.0f, &connectAlertOff); } /** @@ -75,11 +77,15 @@ */ void connectAlertOff() { DEBUG("connectAlertOff\r\n"); - speaker.write(0.0f); + speakerP.write(0.0f); if(connectAlertCount<4){ - queue.call_in(600, &connectAlertOn); connectAlertCount += 1; + eventQueue.call_in(1.0f, &connectAlertOn); }else{ + if(disconnectAlertCount<=0){ + speakerD = 0; + } + connectAlertCount = 0; DEBUG("connectAlertStop\r\n"); } } @@ -90,8 +96,52 @@ */ void connectAlertStart() { DEBUG("connectAlertStart\r\n"); + speakerD = 1; connectAlertCount = 0; - queue.call(&connectAlertOn); + eventQueue.call(&connectAlertOn); +} + +void disconnectAlertOff(); + +/** + *切断時発音 + *切断時に発音されるためのキュー + */ +void disconnectAlertOn() { + DEBUG("disconnectAlertOn\r\n"); + speakerP.period(1.0/disconnectAlert[disconnectAlertCount]); + speakerP.write(0.5f); + eventQueue.call_in(1.0f, &disconnectAlertOff); +} + +/** + *切断時発音 + *切断時に発音されるためのキュー + */ +void disconnectAlertOff() { + DEBUG("disconnectAlertOff\r\n"); + speakerP.write(0.0f); + if(disconnectAlertCount<4){ + disconnectAlertCount += 1; + eventQueue.call_in(1.0f, &disconnectAlertOn); + }else{ + if(connectAlertCount<=0){ + speakerD = 0; + } + disconnectAlertCount = 0; + DEBUG("disconnectAlertStop\r\n"); + } +} + +/** + *切断時発音 + *切断時に発音を開始するためのキュー + */ +void disconnectAlertStart() { + DEBUG("disconnectAlertStart\r\n"); + speakerD = 1; + disconnectAlertCount = 0; + eventQueue.call(&disconnectAlertOn); } /** @@ -200,6 +250,9 @@ DEBUG("%d ", params->ownAddr[i]); } DEBUG("\r\n"); + + + eventQueue.call(&connectAlertStart); DEBUG("BluetoothConnection!\r\n"); } @@ -218,6 +271,8 @@ stateServicePtr->usbStateUpdate(0x00); BLE::Instance().gap().startAdvertising(); + + eventQueue.call(&disconnectAlertStart); DEBUG("BluetoothDisconnection!\r\n"); } @@ -426,7 +481,7 @@ } int main() -{ +{ //SDカードパスワードの取得 char charpass;//SDカードから取得されたパスワード FILE *fp = fopen("/sd/sdtest.txt", "r");