2013年2月16日土曜日

mbed-rpcを修正してみた。

mbed-rpcをforkしたら修正箇所がファイル全体になってしまって解りづらいので少し説明。

forkしたmbed-rpc:
mbed-rpc

クラスのメンバー関数でもRPCFunctionの(Arguments*, Reply*)タイプの関数を使えるように、rpc.h に以下の関数を追加。
template<class T, void(T::*member)(Arguments*, Reply*)>
void rpc_method_caller(RPC *this_ptr, Arguments *arguments, Reply *result) {
    (static_cast<T*>(this_ptr)->*member)(arguments, result);

使用例:
ExtensionUnitのテスト

RpcClasses.hのRpcAnalogInクラス、RpcAnalogOutクラスがRPC::add_rpc_classで登録出来るように、Arguments.cppに以下の関数を追加。
template<> unsigned short Arguments::getArg<unsigned short>(void) {
    index++;
    char *pEnd;
    return strtol(argv[index], &pEnd, 10);
}

template<> void Reply::putData<unsigned short>(unsigned short v) {
    separator();
    reply += sprintf(reply, "%u", v);
}

(2013/2/16)
---

0 件のコメント: