F´ Flight Software - C/C++ Documentation NASA-v1.6.0
A framework for building embedded system applications to NASA flight quality standards.
Loading...
Searching...
No Matches
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)