「miconaplコマンド」の編集履歴(バックアップ)一覧に戻る
miconaplコマンド - (2008/02/03 (日) 03:52:59) のソース
#contents() *コマンドの使い方を探る 玄箱PROに組み込まれた各種装置を論理的に操作するのはCPUである88F5182だが、実際に直接制御しているのはμPD78F0500だ。 そして88F5182がμPD78F0500を制御するために使用しているのがこのmiconaplコマンドなのだが、このコマンドはプログラムでありソースは公開されていない。 詳しい使い方を知るためにはmiconaplコマンドを使用しているスクリプトを調べればいい。 **/以下の全ファイルから「miconapl」文字列を探す findコマンドでファイル形式のものを検索し、その中身にmiconaplという記述があればそれを出力する。 ~ # find / -type f | xargs grep -i miconapl /etc/init.d/rcS: miconapl -b -a boot_end /etc/init.d/bootcomplete.sh:/usr/local/sbin/miconapl -b -a boot_end /etc/init.d/FanController.sh: /usr/local/sbin/miconapl -a fan_set_speed stop /etc/init.d/shutdown_start.sh:miconapl -a bz_on button /etc/init.d/shutdown_start.sh:miconapl -a shutdown_wait /etc/init.d/reboot_start.sh:miconapl -a bz_on button /etc/init.d/reboot_start.sh:miconapl -a reboot grep: /sys/class/scsi_host/host1/scan: Permission denied grep: /sys/class/scsi_host/host0/scan: Permission denied grep: /sys/bus/pci/drivers/uhci_hcd/new_id: Permission denied grep: /sys/bus/pci/drivers/ohci_hcd/new_id: Permission denied grep: /sys/bus/pci/drivers/ehci_hcd/new_id: Permission denied grep: /sys/bus/pci/drivers/mvSata/new_id: Permission denied grep: /sys/bus/pci/drivers/sk98lin/new_id: Permission denied grep: /sys/bus/pci/drivers/serial/new_id: Permission denied grep: /sys/bus/pci/drivers/tpm_atmel/new_id: Permission denied grep: /sys/devices/system/leds/leds0/event: Permission denied grep: /sys/devices/platform/host0/target0:0:0/0:0:0:0/delete: Permission denied grep: /sys/devices/platform/host0/target0:0:0/0:0:0:0/rescan: Permission denied /usr/local/bin/kuro_lib:MICONAPL=/usr/local/sbin/miconapl /usr/local/bin/KeventHandller.sh: INT_DETAIL=`$MICONAPL -a int_get_switch_status |grep "int=" |sed -e "s/int=//"` /usr/local/bin/PlayBeep.sh:miconapl -a bz_melody ${PLAYDATA} /usr/local/bin/InitDisk1.sh: miconapl -a led_set_cpu_mcon diag /usr/local/bin/InitDisk1.sh: miconapl -a led_set_on_off diag /usr/local/bin/InitDisk1.sh: miconapl -a led_set_brink diag /usr/local/bin/InitDisk1.sh: miconapl -a bz_on on3off3 /usr/local/bin/InitDisk1.sh: miconapl -a bz_on /usr/local/bin/InitDisk1.sh: miconapl -a led_set_brink off /usr/local/bin/InitDisk1.sh: miconapl -a led_set_on_off off /usr/local/bin/InitDisk1.sh: miconapl -a led_set_cpu_mcon off /usr/local/bin/InitDisk1.sh:miconapl -a led_set_code_information 28 /usr/local/bin/InitDisk1.sh:miconapl -a bz_on button /usr/local/bin/InitDisk1.sh:miconapl -a led_set_code_information clear /usr/local/sbin/Fand:miconapl -a fan_set_speed full /usr/local/sbin/Fand: TEMP=`miconapl -a temp_get|grep temp=| sed -e "s/.*=//"` /usr/local/sbin/Fand: SPD=`miconapl -a fan_get_speed|grep fan_rpm=|sed -e "s/.*=//"` /usr/local/sbin/Fand: SSPD=`miconapl -a fan_set_speed|grep fan_speed=|sed -e "s/.*=//"` /usr/local/sbin/Fand: miconapl -a fan_set_speed ${SSPD_NEW} /usr/local/sbin/miconapl:/var/run/miconapl.pid /usr/local/sbin/miconapl:/var/log/miconapllog.txt /usr/local/sbin/miconapl:Usage: miconapl ver.%s(%s) OPTION /usr/local/sbin/miconapl:/etc/miconapl.conf /usr/local/sbin/miconapl:miconapl already running /usr/local/sbin/miconapl:/var/lock/miconapl /usr/local/sbin/miconapl:miconapl giveup /usr/local/sbin/miconapl:#[miconapl.%s] ~ # ここまでで出てきたのは >miconapl -b -a boot_end >miconapl -a fan_set_speed stop >miconapl -a bz_on button >miconapl -a shutdown_wait >miconapl -a reboot >$MICONAPL -a int_get_switch_status >miconapl -a bz_melody ${PLAYDATA} >miconapl -a led_set_cpu_mcon diag >miconapl -a led_set_on_off diag >miconapl -a led_set_brink diag >miconapl -a bz_on on3off3 >miconapl -a bz_on >miconapl -a led_set_brink off >miconapl -a led_set_on_off off >miconapl -a led_set_cpu_mcon off >miconapl -a led_set_code_information 28 >miconapl -a led_set_code_information clear >miconapl -a temp_get >miconapl -a fan_get_speed >miconapl -a fan_set_speed ${SSPD_NEW} など。 引数らしき要素を簡単にまとめると >miconapl -b -a boot_end >miconapl -a fan_set_speed stop|${SSPD_NEW} >miconapl -a bz_on button|on3off3 >miconapl -a shutdown_wait >miconapl -a reboot >miconapl -a int_get_switch_status >miconapl -a bz_melody ${PLAYDATA} >miconapl -a led_set_cpu_mcon diag|off >miconapl -a led_set_on_off diag|off >miconapl -a led_set_brink diag|off >miconapl -a led_set_code_information 28|clear >miconapl -a temp_get >miconapl -a fan_get_speed となる。実際に試してみるのが一番だが、${PLAYDATA}と${SSPD_NEW}という変数は個別に調べる必要がある。 **${PLAYDATA}を調べる ${PLAYDATA}を調べるため、/usr/local/bin/PlayBeep.shを見てみる。 ~ # cat /usr/local/bin/PlayBeep.sh #!/bin/sh if [ -f "$1" ] ; then TEMPO=`grep "TEMPO=" $1|sed -e "s/TEMPO=//"` MELODY=`grep -v "TEMPO=" $1` PLAYDATA="${TEMPO} ${MELODY}" else MELODY=`echo $*| sed -e "s/$0//"` PLAYDATA=${MELODY} fi miconapl -a bz_melody ${PLAYDATA} ~ # miconapl -a bz_melodyのあとに「TEMPO」と「MELODY」が続くということがわかる。 このスクリプトそのものの詳細は「[[PlayBeep.sh]]」で説明する。 同様に「TEMPO」で検索すると/usr/local/music/SW_ON.mscがヒットし、中を見ると ~ # cat /usr/local/music/SW_ON.msc TEMPO=30 b4 b5 b4 b6 とある。 TEMPOは数字で示しMELODYは「b4 b5 b4 b6」というように音程とオクターブの組み合わせの羅列らしい。 まともに「ドレミファソラシド」と演奏させるには >~ # miconapl -b -a bz_melody 120 c3 d3 e3 f3 g3 a3 b4 c4 というようにB(シ)をキーとして組み立てればうまくいく。 **${SSPD_NEW}を調べる 次に/usr/local/sbin/Fandを覗いてみる。 ~ # cat /usr/local/sbin/Fand #!/bin/sh CONF_FILE=/etc/fan.prof miconapl -a fan_set_speed full while : do while : do sleep 60 TEMP=`miconapl -a temp_get|grep temp=| sed -e "s/.*=//"` SPD=`miconapl -a fan_get_speed|grep fan_rpm=|sed -e "s/.*=//"` SSPD=`miconapl -a fan_set_speed|grep fan_speed=|sed -e "s/.*=//"` if [ -f ${CONF_FILE} ] ; then L_LIMIT=`grep ${SSPD} ${CONF_FILE}| awk '{print $2}'` H_LIMIT=`grep ${SSPD} ${CONF_FILE}| awk '{print $3}'` if [ "${TEMP}" -lt "${L_LIMIT}" ] ; then DIRECT=DOWN elif [ "${TEMP}" -gt "${H_LIMIT}" ] ; then DIRECT=UP else DIRECT=NO fi if [ "${DIRECT}" = "DOWN" -a "${SSPD}" = "slow" ] ; then SSPD_NEW=stop elif [ "${DIRECT}" = "DOWN" -a "${SSPD}" = "fast" -o "${DIRECT}" = "UP" -a "${SSPD}" = "stop" ] ; then SSPD_NEW=slow elif [ "${DIRECT}" = "DOWN" -a "${SSPD}" = "full" -o "${DIRECT}" = "UP" -a "${SSPD}" = "slow" ] ; then SSPD_NEW=fast elif [ "${DIRECT}" = "UP" -a "${SSPD}" = "fast" ] ; then SSPD_NEW=full else SSPD_NEW=${SSPD} fi miconapl -a fan_set_speed ${SSPD_NEW} fi done done ~ # こちらもスクリプトそのものは[[Fand]]で説明するが、${SSPD_NEW}に当てはまる値としてはstop、slow、fast、fullの4種類あるようだ。 **まとめ ***ファンの制御 ****miconapl -a fan_set_speed stop|slow|fast|full ファンの回転スピードを停止|微速|中速|最速と変更する。引数をつけずmiconapl -a fan_set_speedとした場合、ファンのスピード状態を表示する ****miconapl -a fan_get_speed ファンの回転スピードを表示する ***ブザーの制御 ****miconapl -a bz_on button|on3off3 ブザーをピッと鳴らす|ピッピッピッ・・と鳴らす ****miconapl -a bz_melody テンポ メロディ メロディ ・・ 指定したテンポ(メロディを4/4とするなら250あたりで楽譜上の120程度)とメロディ(音階『b c cm d dm e f fm g gm a am』とオクターブ1~6(オクターブの始まり音はb)の組み合わせ)でブザーを鳴らす ***LEDの制御 ****miconapl -a led_set_on_off diag|off エラーLEDの制御開始|停止をする。 ****miconapl -a led_set_cpu_mcon diag|off エラーLEDを点灯|消灯させる。事前にmiconapl -a led_set_on_off diagが必要 ****miconapl -a led_set_brink diag|off エラーLEDを点滅|点灯させる。事前にmiconapl -a led_set_cpu_mcon diagが必要 ***温度の管理 ****miconapl -a temp_get 88F5182の温度を表示。HDDや電源ユニットの温度ではない ----