START/STOP UNIT コマンドの CDB は次のとおりです。
BYTE\bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | Operation Code = 0x1B | |||||||
1 | LUN | 予約 | Immed | |||||
2 | 予約 | |||||||
3 | 予約 | |||||||
4 | 予約 | LoEj | Start | |||||
5 | 予約 |
これからもですが、説明していない値には、取り合えず0を入れておいてください。
4バイト目の LoEj と Start の組み合わせで動作を決定します。
LoEj | Start | 動作 |
0 | 0 | ディスクの回転を止める |
0 | 1 | ディスクの回転を始め、読み込みの準備を開始する |
1 | 0 | 可能ならば、トレイを出す |
1 | 1 | ディスクを入れる(トレイを閉める) |
トレイがロックされていると、エラーになります。
「せんべえ焼き」では、
CDBByte[4] = 0x02; // (=00000010B) トレイを出す
CDBByte[4] = 0x03; // (=00000011B) トレイを入れる
として使っています。
ASPIでドライブを制御してみたいと考えている方は、 まずこのトレイの出し入れを目指してみるのが良いかと思います。 結果が一目でわかりますし、 ウィィィン、ウィィィンパタンと動くのをみると結構感動したり、 自分がデバイスを動かしている気にはなりませんか?