3 * Copyright (c) 2020-2021 Project CHIP Authors
4 * Copyright (c) 2017 Nest Labs, Inc.
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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.
22 * This file defines the configuration parameters that are required
23 * for the CHIP Reliable Messaging Protocol.
28 #include <system/SystemConfig.h>
34 * @def CHIP_CONFIG_RMP_TIMER_DEFAULT_PERIOD_SHIFT
37 * The default ReliableMessageProtocol timer tick interval shift in
38 * milliseconds. 6 bit equals 64 milliseconds
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
46 * @def CHIP_CONFIG_RMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT_TICK
49 * The default retransmission timeout in milliseconds.
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
57 * @def CHIP_CONFIG_RMP_DEFAULT_INITIAL_RETRANS_TIMEOUT_TICK
60 * The default long retransmission timeout in milliseconds
61 * to include sleepy destinaton nodes.
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
69 * @def CHIP_CONFIG_RMP_DEFAULT_ACK_TIMEOUT_TICK
72 * The default acknowledgment timeout in milliseconds.
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
80 * @def CHIP_CONFIG_RMP_RETRANS_TABLE_SIZE
83 * The default size of the ReliableMessageProtocol retransmission table.
86 #ifndef CHIP_CONFIG_RMP_RETRANS_TABLE_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)
92 #define CHIP_CONFIG_RMP_RETRANS_TABLE_SIZE 15
93 #endif // PBUF_POOL_SIZE
94 #endif // CHIP_CONFIG_RMP_RETRANS_TABLE_SIZE
97 * @def CHIP_CONFIG_RMP_DEFAULT_MAX_RETRANS
100 * The maximum number of retransmissions before giving up.
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
109 * The ReliableMessageProtocol configuration.
111 struct ReliableMessageProtocolConfig
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. */
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 };
126 } // namespace Messaging