| /* |
| * |
| * Copyright (c) 2017 Nest Labs, Inc. |
| * All rights reserved. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| /** |
| * @file |
| * This file defines the configuration parameters that are required |
| * for the Weave Reliable Messaging Protocol. |
| * |
| */ |
| #ifndef WEAVE_WRM_CONFIG_H_ |
| #define WEAVE_WRM_CONFIG_H_ |
| |
| namespace nl { |
| namespace Weave { |
| |
| /** |
| * @def WEAVE_CONFIG_ENABLE_RELIABLE_MESSAGING |
| * |
| * @brief |
| * If set to (1), use of the WRMP implementation is |
| * enabled. Default value is (1) or enabled. |
| * |
| */ |
| #ifndef WEAVE_CONFIG_ENABLE_RELIABLE_MESSAGING |
| #define WEAVE_CONFIG_ENABLE_RELIABLE_MESSAGING 1 |
| #endif // WEAVE_CONFIG_ENABLE_RELIABLE_MESSAGING |
| |
| /** |
| * @def WEAVE_CONFIG_WRMP_TIMER_DEFAULT_PERIOD |
| * |
| * @brief |
| * The default WRMP timer tick interval in milliseconds. |
| * |
| */ |
| #ifndef WEAVE_CONFIG_WRMP_TIMER_DEFAULT_PERIOD |
| #define WEAVE_CONFIG_WRMP_TIMER_DEFAULT_PERIOD 200 |
| #endif // WEAVE_CONFIG_WRMP_TIMER_DEFAULT_PERIOD |
| |
| /** |
| * @def WEAVE_CONFIG_WRMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT |
| * |
| * @brief |
| * The default retransmission timeout in milliseconds. |
| * |
| */ |
| #ifndef WEAVE_CONFIG_WRMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT |
| #define WEAVE_CONFIG_WRMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT (2000) |
| #endif // WEAVE_CONFIG_WRMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT |
| |
| /** |
| * @def WEAVE_CONFIG_WRMP_DEFAULT_INITIAL_RETRANS_TIMEOUT |
| * |
| * @brief |
| * The default long retransmission timeout in milliseconds |
| * to include sleepy destinaton nodes. |
| * |
| */ |
| #ifndef WEAVE_CONFIG_WRMP_DEFAULT_INITIAL_RETRANS_TIMEOUT |
| #define WEAVE_CONFIG_WRMP_DEFAULT_INITIAL_RETRANS_TIMEOUT (2000) |
| #endif // WEAVE_CONFIG_WRMP_DEFAULT_INITIAL_RETRANS_TIMEOUT |
| |
| /** |
| * @def WEAVE_CONFIG_WRMP_DEFAULT_ACK_TIMEOUT |
| * |
| * @brief |
| * The default acknowledgment timeout in milliseconds. |
| * |
| */ |
| #ifndef WEAVE_CONFIG_WRMP_DEFAULT_ACK_TIMEOUT |
| #define WEAVE_CONFIG_WRMP_DEFAULT_ACK_TIMEOUT (WEAVE_CONFIG_WRMP_TIMER_DEFAULT_PERIOD) |
| #endif // WEAVE_CONFIG_WRMP_DEFAULT_ACK_TIMEOUT |
| |
| /** |
| * @def WEAVE_CONFIG_WRMP_RETRANS_TABLE_SIZE |
| * |
| * @brief |
| * The default size of the WRMP retransmission table. |
| * |
| */ |
| #ifndef WEAVE_CONFIG_WRMP_RETRANS_TABLE_SIZE |
| #ifdef PBUF_POOL_SIZE |
| #define WEAVE_CONFIG_WRMP_RETRANS_TABLE_SIZE (PBUF_POOL_SIZE) |
| #else |
| #define WEAVE_CONFIG_WRMP_RETRANS_TABLE_SIZE (WEAVE_SYSTEM_CONFIG_PACKETBUFFER_MAXALLOC) |
| #endif // PBUF_POOL_SIZE |
| #endif // WEAVE_CONFIG_WRMP_RETRANS_TABLE_SIZE |
| |
| /** |
| * @def WEAVE_CONFIG_WRMP_DEFAULT_MAX_RETRANS |
| * |
| * @brief |
| * The maximum number of retransmissions before giving up. |
| * |
| */ |
| #ifndef WEAVE_CONFIG_WRMP_DEFAULT_MAX_RETRANS |
| #define WEAVE_CONFIG_WRMP_DEFAULT_MAX_RETRANS (3) |
| #endif // WEAVE_CONFIG_WRMP_DEFAULT_MAX_RETRANS |
| |
| /** |
| * @brief |
| * The WRMP configuration. |
| */ |
| struct WRMPConfig |
| { |
| uint32_t mInitialRetransTimeout; /**< Configurable timeout in msec for retransmission of the first sent message. */ |
| uint32_t mActiveRetransTimeout; /**< Configurable timeout in msec for retransmission of all subsequent messages. */ |
| uint16_t mAckPiggybackTimeout; /**< Configurable timeout in msec for transmission of a solitary Ack message. */ |
| uint8_t mMaxRetrans; /**< Configurable max value for retransmissions in the ExchangeContext. */ |
| }; |
| |
| const WRMPConfig gDefaultWRMPConfig = { WEAVE_CONFIG_WRMP_DEFAULT_INITIAL_RETRANS_TIMEOUT, |
| WEAVE_CONFIG_WRMP_DEFAULT_ACTIVE_RETRANS_TIMEOUT, |
| WEAVE_CONFIG_WRMP_DEFAULT_ACK_TIMEOUT, |
| WEAVE_CONFIG_WRMP_DEFAULT_MAX_RETRANS }; |
| }; // Weave |
| }; // nl |
| |
| #endif // WEAVE_WRM_CONFIG_H_ |