※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

コマンドの使い方を探る

玄箱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や電源ユニットの温度ではない