F´ Flight Software - C/C++ Documentation NASA-v1.6.0
A framework for building embedded system applications to NASA flight quality standards.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
TlmTests.hpp
Go to the documentation of this file.
1// ======================================================================
2// \title TlmTests.hpp
3// \author T. Chieu
4// \brief hpp file for telemetry tests
5//
6// \copyright
7// Copyright (C) 2009-2023 California Institute of Technology.
8// ALL RIGHTS RESERVED. United States Government Sponsorship
9// acknowledged.
10//
11// ======================================================================
12
13// ----------------------------------------------------------------------
14// Telemetry test declarations
15// ----------------------------------------------------------------------
16
17#define TLM_TEST_DECL(TYPE) void testTelemetry(NATIVE_INT_TYPE portNum, FppTest::Types::TYPE##Param& data);
18
19#define TLM_TEST_DECLS \
20 TLM_TEST_DECL(U32) \
21 TLM_TEST_DECL(F32) \
22 TLM_TEST_DECL(TlmString) \
23 TLM_TEST_DECL(Enum) \
24 TLM_TEST_DECL(Array) \
25 TLM_TEST_DECL(Struct)
26
27// ----------------------------------------------------------------------
28// Telemetry test definitions
29// ----------------------------------------------------------------------
30
31#define TLM_TEST_DEF(TYPE) \
32 void Tester ::testTelemetry(NATIVE_INT_TYPE portNum, FppTest::Types::TYPE##Param& data) { \
33 ASSERT_TRUE(component.isConnected_tlmOut_OutputPort(portNum)); \
34 \
35 component.tlmWrite_Channel##TYPE(data.args.val); \
36 \
37 ASSERT_TLM_SIZE(1); \
38 ASSERT_TLM_Channel##TYPE##_SIZE(1); \
39 ASSERT_TLM_Channel##TYPE(0, data.args.val); \
40 \
41 Fw::Time time = Fw::ZERO_TIME; \
42 component.tlmWrite_Channel##TYPE(data.args.val, time); \
43 \
44 ASSERT_TLM_SIZE(2); \
45 ASSERT_TLM_Channel##TYPE##_SIZE(2); \
46 ASSERT_TLM_Channel##TYPE(0, data.args.val); \
47 }
48
49#define TLM_TEST_DEFS \
50 TLM_TEST_DEF(U32) \
51 TLM_TEST_DEF(F32) \
52 \
53 void Tester ::testTelemetry(NATIVE_INT_TYPE portNum, FppTest::Types::TlmStringParam& data) { \
54 ASSERT_TRUE(component.isConnected_tlmOut_OutputPort(portNum)); \
55 \
56 component.tlmWrite_ChannelString(data.args.val); \
57 \
58 ASSERT_TLM_SIZE(1); \
59 ASSERT_TLM_ChannelString_SIZE(1); \
60 ASSERT_TLM_ChannelString(0, data.args.val.toChar()); \
61 \
62 /* Test unchanged value */ \
63 component.tlmWrite_ChannelString(data.args.val); \
64 \
65 ASSERT_TLM_SIZE(1); \
66 ASSERT_TLM_ChannelString_SIZE(1); \
67 \
68 FppTest::Types::TlmStringParam data2; \
69 while (data2.args.val == data.args.val) { \
70 data2 = FppTest::Types::TlmStringParam(); \
71 } \
72 \
73 Fw::Time time = Fw::ZERO_TIME; \
74 component.tlmWrite_ChannelString(data2.args.val, time); \
75 \
76 ASSERT_TLM_SIZE(2); \
77 ASSERT_TLM_ChannelString_SIZE(2); \
78 ASSERT_TLM_ChannelString(1, data2.args.val.toChar()); \
79 } \
80 \
81 TLM_TEST_DEF(Enum) \
82 TLM_TEST_DEF(Array) \
83 TLM_TEST_DEF(Struct)