Google テレビ ペアリング プロトコル ライブラリを実装するプログラム言語は 2 つあります。
- JAVA バージョン <-- 私の参考サンプル
- C++ バージョン <-- 私のターゲット
ペアリング プログラムの接続タスクを実装しています。こちらのようにペアリングライブラリを呼び出すJAVAサンプルコードを見つけました。
上記のリンク コードのメソッド「attemptToPair」の下の定義:
PoloWireInterface protocol =
WireFormat.PROTOCOL_BUFFERS.getWireInterface(context);
C++ 版ライブラリを呼び出してこの定義を実装する方法がわかりません。
クラス 'PoloWireInterface' は、C++ バージョン ライブラリの単なる抽象クラスであるためです。
さらに、このライブラリの下で PoloWireInterface を拡張する他のクラスはありません。(ここをチェック)
PoloWireInterface インスタンスがないと、「ClientPairingSession」のインスタンスを確立できません。
私のクライアント部分のペアリングタスクは次のコードですが、うまくいきません:'(
using namespace polo::pairing;
using namespace polo::wire;
using namespace polo::encoding;
X509* peer_cert = // peer side certificate, load by openssl
X509* local_cert = // local side certificate, generate by openssl
PairingContext* context;
context = new PairingContext(local_cert,peer_cert,false);
// CPoloWireInterface extends abstract class PoloWireInterface
PoloWireInterface* protocol = new CPoloWireInterface();
PoloWireAdapter* wire = new protobuf::ProtobufWireAdapter(protocol);
PoloChallengeResponse* challenge;
challenge = new PoloChallengeResponse(local_cert,peer_cert);
ClientPairingSession* mClientPairingSession;
mClientPairingSession = new ClientPairingSession
(wire, context, challenge, service_name, "AnyMote");
EncodingOption hexEnc(EncodingOption::kHexadecimal, 4);
mClientPairingSession->AddInputEncoding(hexEnc);
mClientPairingSession->AddOutputEncoding(hexEnc);
// CPairingListener extends abstract class PairingListener
PairingListener* listener = new CPairingListener();
mClientPairingSession->DoPair(listener);