Personal-HomeKit-HAP を Windowsの VisualStudio2010でビルドできるようにしてみるテスト

HomeKitの C++ の実装である、 Personal-HomeKit-HAPを、せっかくなので、 Windows VisualStudio2010 でビルドして動くようにしてみました。
https://github.com/rti7743/Personal-HomeKit-HAP


windowsLinuxはかなーり違うので ifdef で直していますが、
とりあえずちゃんと動きます。
https://github.com/etwmc/Personal-HomeKit-HAP/compare/master...rti7743:master

VisualStudio2010だと、メンバ変数の初期化を宣言と同時に出来ないし、何よりwinsockのよくわからないinclude順番に悩まされるのがつらいところです。やっぱつれぇわ。

これを作るのにあたって、 derawさんの unistd.h を利用しました。
http://d.hatena.ne.jp/deraw/20070517/1179334643

また、 pthreadをとりあえず windowsビルドできるようにする変換層とか作りました。
pthreadのwindowsの実装と言えば、いろいろと大規模なやつが有りますが、そんないらなくて、 threadが作れて ロックできて、joinできればいいので、 .h だけでできるようにしてみました。
簡単ですね。
https://github.com/rti7743/Personal-HomeKit-HAP/tree/master/windows_support_include


ビルドするには、openssl と Bonjour SDK for Windowsが必要です。

opensslはwindowsでビルドできるようにしたものが有ります。
http://d.hatena.ne.jp/rti7743/20140921/1411270906
(ただし、上のはバージョンが少し古い。)

Bonjour SDK for Windowsは、Appleがタダで配っているので落としてきてください。
https://developer.apple.com/bonjour/
(Linuxとかだと、avahiで補うが、windowsだとavahiないし・・・ win10だとなんかあるのかな? テストはwin7でやってます。)

で、面倒なので、それらをデバッグビルドで動くようにしたものも作ってみました。
ここからご自由にどうぞ。
http://rtilabs.rti-giken.jp/files/2016_11_24/Personal-HomeKit-HAP.7z

ライセンスは、もともとの Personal-HomeKit-HAP が MITライセンスらしいので、MITライセンスで好きに使えばいいんじゃないんですか。
それぞれのオリジナルのソフトウェアライセンスに従います。

遊び方

1.
とりあえず、ビルドします。

2.
実行します。
サーバアプリなので windows firewallが反応しますが、許可してあげてください。
ソースコードを見ればわかりますが、無害です。

3.
iphoneとかipadの ホーム(Home)アプリを立ち上げて、
バイスの追加をします。

4.
Light とかいうデバイスが見えると思うので、
選択します。

5.
コードを入力で、以下のコードを入れます。
523-12-643

このコードは、 Configuration.h で、定義されています。
好きに変えましょう。
https://github.com/rti7743/Personal-HomeKit-HAP/blob/master/Configuration.h


家電はAccessory.cppで定義していきます。
C++だとガチで操作しないといけないので、いろいろとややこしいですが、遠目で見ると、 homebridgeとかで定義した構文ぽいのが見えると思います。
状態がかわったときに、上の方で定義されているchangeLightPowerとかのコールバック関数が呼び出されます。
https://github.com/rti7743/Personal-HomeKit-HAP/blob/master/Accessory.cpp



happy hacking!