2012年2月28日火曜日

PICでファミコンを操作する(2コン対応) その2

複数のwiiリモコン検出時のINQUIRY COMMANDの応答ですが、勘違いしていました。
私は、INQUIRY_RESULT の応答としてこんな感じを想定していました。
HCI_CMD_INQUIRY_RESULT: 02 受信データサイズ 02 BTアドレス1 BTアドレス2 

ただ調べてみると、INQUIRY_RESULT が機器の数だけ返ってくるらしい、ということが分かりました。
確かに、各機器はお互いの状況を知らないので、誰かがとりまとめをしないと上記のような結果は得られないはずです(そしてその役割がINQUIRY COMMANDの発行側...)。

 ということで、見つけたい機器の数だけINQUIRY COMMAND~INQUIRY_RESULTの受信までを繰り返してみました。 するとこんな感じで、wiiリモコンを複数見つけることが出来ました。
HCI_CMD_INQUIRY_RESULT: 02 0F 01 BTアドレス1
HCI_CMD_INQUIRY_RESULT: 02 0F 01 BTアドレス2

2コン対応、いけそうです。

2012年2月27日月曜日

PICでファミコンを操作する(2コン対応) その1

wiiリモコンで、ファミコンの操作ができるようになりました。 ただ1つのwillリモコンしか対応していないため、2つ目のwiiリモコンも接続できるようにします。 bluetoothの機器の探索で、2個見つけられれば良いはず...と考えてソース(main.c)を見ると以下の部分が該当しそうです。
case HCI_CMD_INQUIRY:
  //Inquiry (search bluetooth dongles around you)
  buf1[0]=0x01;
  buf1[1]=0x04;
  buf1[2]=0x05;
  buf1[3]=0x33;
  buf1[4]=0x8b;
  buf1[5]=0x9e;
  buf1[6]=0x05;//waiting time (5 * 1.28 sec)
//org  buf1[7]=0x01;//if there are bluetooth devices around you, you should give a maximum number here. 
  buf1[7]=0x02;//if there are bluetooth devices around you, you should give a maximum number here. 
  data_size=8;
  DemoState = BT_STATE_WRITE_CLASS;
  HciState = HCI_CMD_INQUIRY_RESULT;
  break;
INQUERYの最後の1byteで探索する機器の数を指定できるので、探索機器数を1→2にしてみました。 wiiリモコンを2つ用意して、認識させてみると...INQUIRY RESULT EVENTで返ってくる機器数は1のままでした。 他にまだ対応すべきところがあるんでしょうね、残念。

2012年2月21日火曜日

PICでファミコンを操作する その3

ずっと更新していませんでしたが、wiiリモコンとBluetoothドングル+PIC24FJGB002で通信し、ファミコンの操作をした際の動画をアップしました。

Playing NES(not emulator) with Wii Remote(ファミコンをWiiリモコンで遊ぶ)

この環境のベースとしては、辻見さんが公開している以下のベージを参考にさせて頂きました。ありがとうございます。
PIC
bluetooth-HID応用例(wiiリモコン)
ソース等は別途公開します。 ソースは以下より取得ください。 https://github.com/tocchi02/NES-Wiimote