/** * @file tests/can_rpc.cpp * @brief brief * @date Aug 25, 2015 * @author rheijden * @copyright 2015 Dual Inventive Technology Centre B.V. * * descr */ #include "fixtures/CANTest.hpp" TEST_F(DI_CAN, rpc_send_device_info) { struct di_rpc_device_info d; char l[] = "testlabel"; struct di_rpc_device_info_version version[1]; version[0].key = "fw-main"; version[0].value = "v1.0.2"; d.version = version; d.versionn = DI_ARRAY_SIZE(version); d.type = l; ASSERT_EQ(DNOK, di_can_rpc_send(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, DI_RPC_TYPE_DEVICE_INFO, &d, 1)); ASSERT_EQ(DNOK, di_can_rpc_send(&_ctx, DI_CAN_TRANSFERTYPE_REPLY, DI_RPC_TYPE_DEVICE_INFO, &d, 1)); } TEST_F(DI_CAN, rpc_send_sensor_info_bool) { struct di_rpc_info info; info.uid = 1; info.label = "test-can-rpc-bool"; info.data_type = DI_RPC_DATA_TYPE_BOOL; ASSERT_EQ(DNOK, di_can_rpc_send(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, DI_RPC_TYPE_SENSOR_INFO, &info, 1)); } TEST_F(DI_CAN, rpc_send_sensor_info_enum) { struct di_rpc_info info; static const struct di_rpc_enum elist[] = { { "empty", 0 }, { "crit", 1 }, { "low", 2 }, { "half", 3 }, { "full", 4 } }; info.uid = 1; info.label = "bat1-state"; info.data_type = DI_RPC_DATA_TYPE_ENUM; info.enumerator.size = DI_ARRAY_SIZE(elist); info.enumerator.begin = (void *)elist; ASSERT_EQ(DNOK, di_can_rpc_send(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, DI_RPC_TYPE_SENSOR_INFO, &info, 1)); } TEST_F(DI_CAN, rpc_send_notify_info_single) { struct di_rpc_info info; info.uid = 1; info.label = "wu-alarm-system"; info.data_type = DI_RPC_DATA_TYPE_BOOL; ASSERT_EQ(DNOK, di_can_rpc_send(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, DI_RPC_TYPE_NOTIFY_INFO, &info, 1)); } TEST_F(DI_CAN, rpc_send_log_info_single) { struct di_rpc_log log; log.msg = "Hello World!"; ASSERT_EQ(DNOK, di_can_rpc_send(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, DI_RPC_TYPE_LOG_INFO, &log, 1)); } TEST_F(DI_CAN, rpc_send_device_ping) { ASSERT_EQ(DNOK, di_can_rpc_send_device_ping(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, false)); // Realtime device:ping without an payload is currently not supported ASSERT_EQ(DNE_PROTO, di_can_rpc_send_device_ping(&_ctx, DI_CAN_TRANSFERTYPE_PUBLISH, true)); ASSERT_EQ(DNOK, di_can_rpc_send_device_ping(&_ctx, DI_CAN_TRANSFERTYPE_REPLY, false)); } /** Send RPC reply on action:set with di_errno_t DNE_OPNOTSUPP (operation not supported) */ TEST_F(DI_CAN, rpc_send_errno) { ASSERT_EQ(DNOK, di_can_rpc_send_errno(&_ctx, DI_CAN_TRANSFERTYPE_REPLY, DI_RPC_TYPE_ACTION_SET, DNE_OPNOTSUPP)); }