Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / src / messaging / ReliableMessageProtocolConfig.h
1 /*
2  *
3  *    Copyright (c) 2020-2021 Project CHIP Authors
4  *    Copyright (c) 2017 Nest Labs, Inc.
5  *    All rights reserved.
6  *
7  *    Licensed under the Apache License, Version 2.0 (the "License");
8  *    you may not use this file except in compliance with the License.
9  *    You may obtain a copy of the License at
10  *
11  *        http://www.apache.org/licenses/LICENSE-2.0
12  *
13  *    Unless required by applicable law or agreed to in writing, software
14  *    distributed under the License is distributed on an "AS IS" BASIS,
15  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  *    See the License for the specific language governing permissions and
17  *    limitations under the License.
18  */
19
20 /**
21  *    @file
22  *      This file defines the configuration parameters that are required
23  *      for the CHIP Reliable Messaging Protocol.
24  *
25  */
26 #pragma once
27
28 #include <system/SystemConfig.h>
29
30 namespace chip {
31 namespace Messaging {
32
33 /**
34  *  @def CHIP_CONFIG_RMP_TIMER_DEFAULT_PERIOD_SHIFT
35  *
36  *  @brief
37  *    The default ReliableMessageProtocol timer tick interval shift in
38  *    milliseconds. 6 bit equals 64 milliseconds
39  *
40  */
41 #ifndef CHIP_CONFIG_RMP_TIMER_DEFAULT_PERIOD_SHIFT
42 #define CHIP_CONFIG_RMP_TIMER_DEFAULT_PERIOD_SHIFT 6
43 #endif // CHIP_CONFIG_RMP_TIMER_DEFAULT_PERIOD_SHIFT
44
45 /**
46  *  @def CHIP_CONFIG_RMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT_TICK
47  *
48  *  @brief
49  *    The default retransmission timeout in milliseconds.
50  *
51  */
52 #ifndef CHIP_CONFIG_RMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT_TICK
53 #define CHIP_CONFIG_RMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT_TICK (8)
54 #endif // CHIP_CONFIG_RMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT_TICK
55
56 /**
57  *  @def CHIP_CONFIG_RMP_DEFAULT_INITIAL_RETRANS_TIMEOUT_TICK
58  *
59  *  @brief
60  *    The default long retransmission timeout in milliseconds
61  *    to include sleepy destinaton nodes.
62  *
63  */
64 #ifndef CHIP_CONFIG_RMP_DEFAULT_INITIAL_RETRANS_TIMEOUT_TICK
65 #define CHIP_CONFIG_RMP_DEFAULT_INITIAL_RETRANS_TIMEOUT_TICK (8)
66 #endif // CHIP_CONFIG_RMP_DEFAULT_INITIAL_RETRANS_TIMEOUT_TICK
67
68 /**
69  *  @def CHIP_CONFIG_RMP_DEFAULT_ACK_TIMEOUT_TICK
70  *
71  *  @brief
72  *    The default acknowledgment timeout in milliseconds.
73  *
74  */
75 #ifndef CHIP_CONFIG_RMP_DEFAULT_ACK_TIMEOUT_TICK
76 #define CHIP_CONFIG_RMP_DEFAULT_ACK_TIMEOUT_TICK (1)
77 #endif // CHIP_CONFIG_RMP_DEFAULT_ACK_TIMEOUT_TICK
78
79 /**
80  *  @def CHIP_CONFIG_RMP_RETRANS_TABLE_SIZE
81  *
82  *  @brief
83  *    The default size of the ReliableMessageProtocol retransmission table.
84  *
85  */
86 #ifndef CHIP_CONFIG_RMP_RETRANS_TABLE_SIZE
87 #ifdef PBUF_POOL_SIZE
88 #define CHIP_CONFIG_RMP_RETRANS_TABLE_SIZE (PBUF_POOL_SIZE)
89 #elif CHIP_SYSTEM_CONFIG_PACKETBUFFER_POOL_SIZE != 0
90 #define CHIP_CONFIG_RMP_RETRANS_TABLE_SIZE (CHIP_SYSTEM_CONFIG_PACKETBUFFER_POOL_SIZE)
91 #else
92 #define CHIP_CONFIG_RMP_RETRANS_TABLE_SIZE 15
93 #endif // PBUF_POOL_SIZE
94 #endif // CHIP_CONFIG_RMP_RETRANS_TABLE_SIZE
95
96 /**
97  *  @def CHIP_CONFIG_RMP_DEFAULT_MAX_RETRANS
98  *
99  *  @brief
100  *    The maximum number of retransmissions before giving up.
101  *
102  */
103 #ifndef CHIP_CONFIG_RMP_DEFAULT_MAX_RETRANS
104 #define CHIP_CONFIG_RMP_DEFAULT_MAX_RETRANS (3)
105 #endif // CHIP_CONFIG_RMP_DEFAULT_MAX_RETRANS
106
107 /**
108  *  @brief
109  *    The ReliableMessageProtocol configuration.
110  */
111 struct ReliableMessageProtocolConfig
112 {
113     uint32_t mInitialRetransTimeoutTick; /**< Configurable timeout in msec for retransmission of the first sent message. */
114     uint32_t mActiveRetransTimeoutTick;  /**< Configurable timeout in msec for retransmission of all subsequent messages. */
115     uint16_t mAckPiggybackTimeoutTick;   /**< Configurable timeout in msec for transmission of a solitary Ack message. */
116     uint8_t mMaxRetrans;                 /**< Configurable max value for retransmissions in the ExchangeContext. */
117 };
118
119 const ReliableMessageProtocolConfig gDefaultReliableMessageProtocolConfig = { CHIP_CONFIG_RMP_DEFAULT_INITIAL_RETRANS_TIMEOUT_TICK,
120                                                                               CHIP_CONFIG_RMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT_TICK,
121                                                                               CHIP_CONFIG_RMP_DEFAULT_ACK_TIMEOUT_TICK,
122                                                                               CHIP_CONFIG_RMP_DEFAULT_MAX_RETRANS };
123
124 // clang-format on
125
126 } // namespace Messaging
127 } // namespace chip