diff options
author | Jun Wako <wakojun@gmail.com> | 2015-04-24 16:26:14 +0900 |
---|---|---|
committer | Jun Wako <wakojun@gmail.com> | 2015-04-24 16:26:14 +0900 |
commit | 1fe4406f374291ab2e86e95a97341fd9c475fcb8 (patch) | |
tree | 1be0e16b4b07b5a31ea97ec50a9eb13a288c3d27 /tool/mbed/mbed-sdk/libraries/tests/mbed/rpc/main.cpp | |
parent | a20ef7052c6e937d2f7672dd59456e55a5c08296 (diff) |
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
b9e0ea0 Merge commit '7fa9d8bdea3773d1195b04d98fcf27cf48ddd81d' as 'tool/mbed/mbed-sdk'
7fa9d8b Squashed 'tool/mbed/mbed-sdk/' content from commit 7c21ce5
git-subtree-dir: tmk_core
git-subtree-split: b9e0ea08cb940de20b3610ecdda18e9d8cd7c552
Diffstat (limited to 'tool/mbed/mbed-sdk/libraries/tests/mbed/rpc/main.cpp')
-rw-r--r-- | tool/mbed/mbed-sdk/libraries/tests/mbed/rpc/main.cpp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/tool/mbed/mbed-sdk/libraries/tests/mbed/rpc/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/mbed/rpc/main.cpp new file mode 100644 index 0000000000..9912c671b6 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/mbed/rpc/main.cpp @@ -0,0 +1,67 @@ +#include "mbed.h" +#include "test_env.h" +#include "mbed_rpc.h" + +void foo(Arguments *args, Reply *reply) { + reply->putData<float>(args->getArg<float>() * 3.3); +} + +bool rpc_test(const char *input, const char *expected) { + char outbuf[RPC_MAX_STRING] = {0}; + bool result = RPC::call(input, outbuf); + printf("RPC: %s -> ", input); + + if (result == false) { + printf("Procedure call ... [FAIL]\r\n"); + } else if (strncmp(outbuf, expected, RPC_MAX_STRING) != 0) { + printf("'%s' != '%s' ... [FAIL]\r\n", outbuf, expected); + result = false; + } else { + printf("'%s' ... [OK]\r\n", outbuf); + } + return result; +} + +#define RPC_TEST(INPUT,EXPECTED) result = result && rpc_test(INPUT,EXPECTED); if (result == false) { notify_completion(result); exit(1); } + +int main() { + float f = 0; + bool result = true; + // Variable + RPCVariable<float> rpc_f(&f, "f"); + RPC_TEST("/f/write 1", ""); + RPC_TEST("/f/read", "1"); + + // Function + RPCFunction rpc_foo(&foo, "foo"); +#if defined(TOOLCHAIN_ARM_MICRO) + RPC_TEST("/foo/run 1", "3.299999952316284"); +#else + RPC_TEST("/foo/run 1", "3.2999999523162842"); +#endif + + // Class + RPC::add_rpc_class<RpcDigitalOut>(); + RPC_TEST("/DigitalOut/new LED2 led2", "led2"); + RPC_TEST("/led2/write 1", ""); + RPC_TEST("/led2/read", "1"); + + // Instance + RpcDigitalOut rpc_led(LED1, "led1"); + RPC_TEST("/led1/write 1", ""); + RPC_TEST("/led1/read", "1"); + + // Introspection + RPC_TEST("/", "led1 led2 foo f DigitalOut RPC"); + RPC_TEST("/f", "read write delete"); + RPC_TEST("/foo", "run delete"); + RPC_TEST("/DigitalOut", "new"); + RPC_TEST("/led1", "write read delete"); + + // Delete instance + RPC_TEST("/led2/delete", ""); + RPC_TEST("/", "led1 foo f DigitalOut RPC"); + + notify_completion(result); + return 0; +} |