マイコン工作実験日記

Microcontroller を用いての工作、実験記録

電話機ジャケットのタスク構成

2009-01-14 22:35:23 | W-SIM
現在の電話機ジャケットのタスク構成について記しておくことにします。コンソール・モニタには、psコマンドを用意してあるのですが、その出力は次のとおりです。全部で9つのタスクがありますが、logtaskはTOPPERS/JSPのシステムタスクですので、電話機ジャケットで新たに用意したタスクは8つということになります。



最初のpsコマンド出力が示すように、システムの起動時にはslic_recv_task, wsim_recv_task, wsim_xmit_taskの3つのタスクは起動されていませんが、受話器をオフフックするとslic_recv_taskが走り始めます。このタスクがSLICからのPCM音声を受信してDTMF信号の検出を行います。検出されたDTMF信号はデータキューを介してphone_taskに通知されます。

phone_taskは電話機としてのユーザ・インタフェースを実現しているタスクです。このタスクではSLICやW-SIMの状態変換に伴って発生したイベントを受理して、その時の電話機状態に応じた処理をおこないます。オフフックに伴って、ダイアルトーンを生成して、slic_recv_taskを起動するのも、phone_taskの役割です。

phone_taskは検出されたDTMF信号を電話番号を指定する桁として順次蓄えていきますが、一定時間(3秒間)たっても次の桁がこないと、タイムアウトして蓄積された電話番号へ発呼するために、W-SIMに対してATDTコマンドを送出します。また、この時、slic_recv_taskを終了させます。



上図は通話中にpsを実行した場合の様子です。呼が接続されると、phone_taskはwsim_recv_taskとwsim_xmit_taskを起動します。wsim_recv_taskがW-SIMからのPCM信号を受信し、SLICへ送信するタスクです。wsim_xmit_taskは、逆にSLICからPCM信号を受信し、W-SIMへ送出します。

modem_taskはW-SIMのモデム信号やリザルト・メッセージを受信してphone_taskにイベントとして通知する処理をおこないます。main_taskは起動時の初期化処理をおこなった後は、SLICからの割り込み要求に応じた処理と、phone_taskへの状態変化通知を担当しています。