Power downモードの続きです。タッチパネルとW-SIMからのイベントによるWakeupはできたのですが、問題はBluetoothであるWT32からのイベントによるWakeupです。WT32からのイベント通知はUARTによるシリアル通信なのですが、UARTではWakeupできません。UARTのRXD端子の変化を監視して割り込みかけるという方法も無いではありませんが、Wakeup処理の間にWT32から送られてくるデータを受信することができないので、WT32が何か送ろうとしたことはわかっても、何を送ってきたのかわからないので意味がありません。実際にデータ送信を始めるに先立って変化させてくれるような信号があればいいのですが、RTSはその役目を果たしてくれないので、うまい方法が見当たりません。
そんなわけで、WT32からの任意のデータでWakeupさせることは断念することにします。その代わりに、何らかのBluetoothリンクが張られたことを検出して、GPIO割り込みをかけることにしました。WT32はGPIO端子をもっており、そのうちのひとつをリンクの有無を示すCD端子として動作させることが可能なので、この機能を使います。これにより、MCUがPower downされていても、ヘッドセットの電源が入ってHFPのリンクが接続されると、GPIO割り込みでWakeupさせることが可能になりました。そして、ちょっと残念ではありますが、Bluetoothのリンクが存在する間はPower downしないようにすることにしました。今回のジャケットではMP3再生や通話はBluetoothヘッドセット経由でしかできないので、Bluetoothリンクが無い状態では時計としての機能しか使えないのですけれども。。。
この制約により、W-SIM着信によるWakeup機能も実際にはあまり意味がないことになります。Bluetoothリンクが存在している間はPower downされないので、Wake on Ringも必要ありません。Bluetoohリンクが切れていれば、Wake on Ring でWakeupしますが、送受話につかうBluetoothが動いていないので通話できないことになってしまいます。
こんな経緯で、実際にはPower downモードを有効に利用できないというオチになってしまいましたが、一応実験してみたし、その機能も使えるようにはなっているということで満足することにします。
そんなわけで、WT32からの任意のデータでWakeupさせることは断念することにします。その代わりに、何らかのBluetoothリンクが張られたことを検出して、GPIO割り込みをかけることにしました。WT32はGPIO端子をもっており、そのうちのひとつをリンクの有無を示すCD端子として動作させることが可能なので、この機能を使います。これにより、MCUがPower downされていても、ヘッドセットの電源が入ってHFPのリンクが接続されると、GPIO割り込みでWakeupさせることが可能になりました。そして、ちょっと残念ではありますが、Bluetoothのリンクが存在する間はPower downしないようにすることにしました。今回のジャケットではMP3再生や通話はBluetoothヘッドセット経由でしかできないので、Bluetoothリンクが無い状態では時計としての機能しか使えないのですけれども。。。
この制約により、W-SIM着信によるWakeup機能も実際にはあまり意味がないことになります。Bluetoothリンクが存在している間はPower downされないので、Wake on Ringも必要ありません。Bluetoohリンクが切れていれば、Wake on Ring でWakeupしますが、送受話につかうBluetoothが動いていないので通話できないことになってしまいます。
こんな経緯で、実際にはPower downモードを有効に利用できないというオチになってしまいましたが、一応実験してみたし、その機能も使えるようにはなっているということで満足することにします。