2 * Copyright © Stéphane Raimbault <stephane.raimbault@gmail.com>
4 * SPDX-License-Identifier: BSD-3-Clause
10 /* Constants defined by configure.ac */
11 #define HAVE_INTTYPES_H @HAVE_INTTYPES_H@
12 #define HAVE_STDINT_H @HAVE_STDINT_H@
15 #ifdef HAVE_INTTYPES_H
28 #define INVALID_SERVER_ID 18
30 const uint16_t UT_BITS_ADDRESS
= 0x130;
31 const uint16_t UT_BITS_NB
= 0x25;
32 const uint8_t UT_BITS_TAB
[] = { 0xCD, 0x6B, 0xB2, 0x0E, 0x1B };
34 const uint16_t UT_INPUT_BITS_ADDRESS
= 0x1C4;
35 const uint16_t UT_INPUT_BITS_NB
= 0x16;
36 const uint8_t UT_INPUT_BITS_TAB
[] = { 0xAC, 0xDB, 0x35 };
38 const uint16_t UT_REGISTERS_ADDRESS
= 0x160;
39 const uint16_t UT_REGISTERS_NB
= 0x3;
40 const uint16_t UT_REGISTERS_NB_MAX
= 0x20;
41 const uint16_t UT_REGISTERS_TAB
[] = { 0x022B, 0x0001, 0x0064 };
43 /* Raise a manual exception when this address is used for the first byte */
44 const uint16_t UT_REGISTERS_ADDRESS_SPECIAL
= 0x170;
45 /* The response of the server will contains an invalid TID or slave */
46 const uint16_t UT_REGISTERS_ADDRESS_INVALID_TID_OR_SLAVE
= 0x171;
47 /* The server will wait for 1 second before replying to test timeout */
48 const uint16_t UT_REGISTERS_ADDRESS_SLEEP_500_MS
= 0x172;
49 /* The server will wait for 5 ms before sending each byte */
50 const uint16_t UT_REGISTERS_ADDRESS_BYTE_SLEEP_5_MS
= 0x173;
52 /* If the following value is used, a bad response is sent.
53 It's better to test with a lower value than
54 UT_REGISTERS_NB_POINTS to try to raise a segfault. */
55 const uint16_t UT_REGISTERS_NB_SPECIAL
= 0x2;
57 const uint16_t UT_INPUT_REGISTERS_ADDRESS
= 0x108;
58 const uint16_t UT_INPUT_REGISTERS_NB
= 0x1;
59 const uint16_t UT_INPUT_REGISTERS_TAB
[] = { 0x000A };
62 * This float value is 0x47F12000 (in big-endian format).
63 * In Little-endian(intel) format, it will be stored in memory as follows:
66 * You can check this with the following code:
69 uint8_t *inmem = (uint8_t*)&fl;
71 for(x = 0; x < 4; x++){
72 printf("0x%02X ", inmem[ x ]);
76 const float UT_REAL
= 123456.00;
79 * The following arrays assume that 'A' is the MSB,
81 * Thus, the following is the case:
87 * There are two sets of arrays: one to test that the setting is correct,
88 * the other to test that the getting is correct.
89 * Note that the 'get' values must be constants in processor-endianness,
90 * as libmodbus will convert all words to processor-endianness as they come in.
92 const uint8_t UT_IREAL_ABCD_SET
[] = {0x47, 0xF1, 0x20, 0x00};
93 const uint16_t UT_IREAL_ABCD_GET
[] = {0x47F1, 0x2000};
94 const uint8_t UT_IREAL_DCBA_SET
[] = {0x00, 0x20, 0xF1, 0x47};
95 const uint16_t UT_IREAL_DCBA_GET
[] = {0x0020, 0xF147};
96 const uint8_t UT_IREAL_BADC_SET
[] = {0xF1, 0x47, 0x00, 0x20};
97 const uint16_t UT_IREAL_BADC_GET
[] = {0xF147, 0x0020};
98 const uint8_t UT_IREAL_CDAB_SET
[] = {0x20, 0x00, 0x47, 0xF1};
99 const uint16_t UT_IREAL_CDAB_GET
[] = {0x2000, 0x47F1};
101 /* const uint32_t UT_IREAL_ABCD = 0x47F12000);
102 const uint32_t UT_IREAL_DCBA = 0x0020F147;
103 const uint32_t UT_IREAL_BADC = 0xF1470020;
104 const uint32_t UT_IREAL_CDAB = 0x200047F1;*/
106 #endif /* _UNIT_TEST_H_ */