自作ツール一覧¶
本プロジェクトの解析過程で作成した Android アプリ/スクリプト群です。いずれも DS-MDA001 実機上で動作させることを前提にしています。
AlcoholTestDebugger¶
アルコールセンサー基板と直接会話するためのデバッグ用 Android アプリ (Kotlin / Jetpack Compose)。
できること
/dev/ttyMSM1を開いて、コマンドカタログ の全コマンドを手動送信- 標準測定シーケンス(
startTest→findAlcoholAD→blow→exitBlow→AlcoholContent)の自動実行と状態表示 - Passive Monitor(
passiveTest+findAlcoholADのループ)による常時監視と最大値保持 - センサー値の 1 秒周期オートポーリング
- TCP ブリッジ (
0.0.0.0:8000) — PC から生のフレームを投げて生の応答を受け取る。プロトコル解析はほぼこれで行いました
元アプリからの流用
JNI シグネチャの整合性を保つため、com.gzds.utils.CSerialPort と com.hikvision.alcoholtest.comassistant.SerialHelper / util.OrderTools / util.DataUtils は元 APK のパッケージ名のまま取り込んでいます。
PC 側スクリプト (tools/tcp_tests/)
| スクリプト | 用途 |
|---|---|
log_breath_test.py |
呼気テスト中の全フレームを CSV へ記録(AD値解析 の元データ) |
test_passive.py |
パッシブ測定サイクルの挙動確認 |
test_async.py |
非同期応答(flag=0 中間応答)のレイテンシ測定 |
test_blow_interleave.py / test_interleave.py |
吹込中の並行コマンド送信によるフリーズ再現 |
parse_responses.py |
収集したフレームのデコード |
test_ordertools.py |
コマンド生成・LRC 計算の検証 |
TCP ブリッジ使用時の注意
アプリ内部の自動ポーリングが動いたままだと、その応答が TCP クライアント向けストリームに混入します。クライアント接続中は内部ポーリングを Mutex で排他停止するようにしてあります。詳細は 実測挙動 を参照してください。
PrinterServerApp¶
内蔵サーマルプリンターをネットワーク経由・ローカル双方から叩くためのハイブリッドアプリ。
- NanoHTTPD サーバー (ポート 8080) —
POST /api/printで Base64 画像を直接印刷、/api/projectでレイアウト JSON を保存・読込 - Fabric.js ベースの Web レイアウトエディタ — PPT 感覚でテキスト・画像を配置し、2値化(Threshold / Bayer / Floyd–Steinberg)をブラウザ上でリアルタイムプレビュー
- 輪郭抽出ブレンド — ラプラシアンでエッジを抽出し、ディザ前に重み付き合成してシャープな印字を得る
- 電圧降下シミュレーション — 1 ラインあたりの黒画素率が 30% を超えると薄く描画し、実機のかすれを事前に可視化(プレビュー専用)
- フォアグラウンドサービス常駐 — 画面を閉じてもサーバーとプリンタ接続を維持
詳細な開発記録とハマりどころは PrinterServerApp 開発記録 を参照してください。
MDA001Tweak¶
端末側の設定を書き換えるためのツールアプリ(開発中)。
AndroidManifest.xml で android:sharedUserId="android.uid.shell" を宣言し WRITE_SECURE_SETTINGS を要求するため、プラットフォーム鍵での署名が必要です。本端末はブートローダーアンロック済み・Permissive のため、抽出したプラットフォーム鍵 (platform.pk8 / platform.x509.pem) で署名すればそのままインストールできます。
現時点では UI スケルトンのみで、機能実装はこれからです。