https://hackaday.io/project/9526-bring-your-own-pizero-byop
でBYOPの核となるMessage stationの実装
http://qiita.com/7of9/items/a1aee7c4b8f0d4bc8d9b
の続き
code v0.29
SPIFFSの落とし穴
SPIFFSライブラリを使ってメッセージを保持しようとしたら、他の自作ライブラリが宣言されてないというエラーが出るようになった。
@exabugs さんの記事にて同じFlashに書き込む別の方法としてEEPROMライブラリがあることを覚えていたので、そちらを使うことにした。
http://qiita.com/exabugs/items/0220edd4c9bf93da981b
EEPROMライブラリは uint_8 型での書込みなので、ラッパー関数を自作して使用した。
filesysLib.ino
ファイル構成
ファイル構成は以下となった。
- dataStructure.h
- esp8266_160217_AQM0802.ino
- esp8266_160220_BYOP.ino
- esp8266_160220_StringLib.ino
- esp8266_160220_UARTlib.ino
- esp8266_160220_dataLib.ino
- esp8266_160221_msgStorageLib.ino
- esp8266_160227_filesysLib.ino
- msgStorage.h
今回追加した esp8266_160227_filesysLib.ino は他のプロジェクトでも使えるように実装したつもりであるが、依存性が何か残っているかもしれない。
debug_outputDebugString()はデバッグ出力用なので、ダミー関数を用意することでesp8266_160227_filesysLibを他プロジェクトで使えると思うが未確認。
シリアルコマンド
通信プロトコル
http://qiita.com/7of9/items/a62a6f21b00923fe3658
使用例
シリアルモニタの入力例
hello,1,7of9
check
post,Vital,hello_Vital,0
bye
電源を切る
電源を入れる : Flashからメッセージが読み込まれる
hello,2,Vital
check
get
bye
シリアルモニタの出力例
hello,7of9
check,0
post,ok
bye,7of9
hello,Vital
check,1
get,hello_Vital,0
bye,Vital
メッセージクリア
v0.24においてメッセージをクリアするコマンドも入れておいた。
主にテスト用。
// serail number of the 1st commit of [esp8266_160220_BYOP]
static const String kAuthorizationCode = "7975f53";
として定義しているコードを合わせて以下でメッセージをクリアできる。
clear,7975f53
kAuthorizationCodeを入れているのは誤操作防止。
VoyagerやNextGenerationとかだと、艦長、副長、中佐くらいのAuthorizationCodeを合わせることで船の自爆シーケンスを開始できるのだが、敵役のボーグ(or カーデシア人 or ロミュラン人)が停止してくれる親切設計。
TODO
DONE: メッセージpost時の日時を保持する処理が未実装