mbed-os/connectivity/nanostack/sal-stack-nanostack/source/6LoWPAN/Thread/thread_constants.h

278 lines
12 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* Copyright (c) 2016-2019, Arm Limited and affiliates.
* SPDX-License-Identifier: BSD-3-Clause
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef THREAD_CONSTANTS_H_
#define THREAD_CONSTANTS_H_
/**
* Constants defined in Thread specifications. All configured values are defined in thread_config.h
*/
/**
* Default management port assigned by IANA.
* nick:MM
*/
#define THREAD_MANAGEMENT_PORT 61631
/**
* Default joiner port. Joiner must learn this from Discovery response during network discovery.
* nick:MJ
*/
#define THREAD_DEFAULT_JOINER_PORT 49153
/**
* Default Commissioning port. This can be changed if this is not available and advertised in network discovery.
* nick: MC
*/
#define THREAD_COMMISSIONING_PORT 49191
/**
* End device default timeout.
*/
#define THREAD_END_DEVICE_DEFAULT_TIMEOUT 240
/**
* COAP Status TLV values (TLV TYPE 4)
*/
#define THREAD_COAP_STATUS_TLV_SUCCESS 0
#define THREAD_COAP_STATUS_TLV_NO_ADDRESS_AVAILABLE 1
#define THREAD_COAP_STATUS_TLV_TOO_FEW_ROUTERS 2
#define THREAD_COAP_STATUS_TLV_HAVE_CHILD_ID_REQUEST 3
#define THREAD_COAP_STATUS_TLV_PARENT_PARTITION_CHANGE 4
/**
* Constants for Connectivity TLV (TLV TYPE 15)
*/
#define THREAD_CONNECTIVITY_TLV_PARENT_PRIORITY_HIGH 1
#define THREAD_CONNECTIVITY_TLV_PARENT_PRIORITY_MEDIUM 0
#define THREAD_CONNECTIVITY_TLV_PARENT_PRIORITY_LOW -1
/**
* per-SED IPv6 buffer sizes and datagram count specified in the Thread Conformance specification
*/
#define THREAD_SED_BUFFER_MIN_SIZE 106
#define THREAD_SED_DATAGRAM_MIN_COUNT 1
/**
* Thread TLV length
*/
#define THREAD_HAS_ROUTE_TLV_LENGTH 3
#define THREAD_BORDER_ROUTER_TLV_LENGTH 4
#define THREAD_6LOWPAN_ID_TLV_LENGTH 2
#define THREAD_IPV6_ADDRESS_TLV_LENGTH 16
/**
* Uris defined by thread specifications
*/
#define THREAD_URI_NETWORK_DATA "a/sd" //<* Leader
#define THREAD_URI_NEIGHBOR_DISCOVERY_DATA_REQ "a/nd" //<* 1.1 feature
#define THREAD_URI_ROUTER_ID_ASSIGNMENT "a/as" //<* Leader
#define THREAD_URI_ROUTER_ID_RELEASE "a/ar" //<* Leader
#define THREAD_URI_ADDRESS_QUERY_REQUEST "a/aq" //<* All Routers
#define THREAD_URI_ADDRESS_NOTIFICATION "a/an" //<* All Routers
#define THREAD_URI_ADDRESS_ERROR "a/ae" //<* All Nodes
#define THREAD_URI_DIAGNOSTIC_RESET "d/dr" //<* All Nodes
#define THREAD_URI_DIAGNOSTIC_REQUEST "d/dg" //<* All Nodes
#define THREAD_URI_DIAGNOSTIC_QUERY "d/dq" //<* All Routers
#define THREAD_URI_DIAGNOSTIC_ANSWER "d/da" //<* All Routers
#define THREAD_URI_MANAGEMENT_GET "c/mg" //<* Leader
#define THREAD_URI_MANAGEMENT_SET "c/ms" //<* Leader
#define THREAD_URI_LEADER_PETITION "c/lp" //<* Leader
#define THREAD_URI_LEADER_KEEP_ALIVE "c/la" //<* Leader
#define THREAD_URI_RELAY_TRANSMIT "c/tx" //<* Joiner router
#define THREAD_URI_RELAY_RECEIVE "c/rx" //<* Border router, native commissioner
#define THREAD_URI_JOINER_ENTRUST "c/je" //<* Joiner
#define THREAD_URI_JOINER_FINALIZATION "c/jf" //<* Commissioner, native commissioner
#define THREAD_URI_JOINER_APPLICATION_REQUEST "c/ja" //<* Any thread device
#define THREAD_URI_COMMISSIONER_PETITION "c/cp" //<* Border router
#define THREAD_URI_COMMISSIONER_KEEP_ALIVE "c/ca" //<* Border router
#define THREAD_URI_UDP_RECVEIVE_NOTIFICATION "c/ur" //<* Commissioner
#define THREAD_URI_UDP_TRANSMIT_NOTIFICATION "c/ut" //<* Border router
#define THREAD_URI_PANID_QUERY "c/pq" //<* 1.1 feature
#define THREAD_URI_PANID_CONFLICT "c/pc" //<* 1.1 feature
#define THREAD_URI_ED_SCAN "c/es" //<* 1.1 feature
#define THREAD_URI_ED_REPORT "c/er" //<* 1.1 feature
#define THREAD_URI_MANAGEMENT_ANNOUNCE_NTF "c/an" //<* 1.1 feature
#define THREAD_URI_MANAGEMENT_ANNOUNCE_BEGIN "c/ab" //<* 1.1 feature
#define THREAD_URI_ACTIVE_GET "c/ag" //<* 1.1 feature
#define THREAD_URI_ACTIVE_SET "c/as" //<* 1.1 feature
#define THREAD_URI_PENDING_GET "c/pg" //<* 1.1 feature
#define THREAD_URI_PENDING_SET "c/ps" //<* 1.1 feature
#define THREAD_URI_COMMISSIONER_GET "c/cg" //<* 1.1 feature
#define THREAD_URI_COMMISSIONER_SET "c/cs" //<* 1.1 feature
#define THREAD_URI_DATASET_CHANGED "c/dc" //<* 1.1 feature
#define THREAD_DEFAULT_COAP_RESOLUTION 1
#define THREAD_DEFAULT_KEY_SWITCH_GUARD_TIME 624 // Hours
#define THREAD_DEFAULT_KEY_ROTATION 672 // Hours
#define THREAD_COMMISSIONER_KEEP_ALIVE_INTERVAL 50000 // Default thread commissioner keep-alive message interval (milliseconds)
#define THREAD_DELAY_JOIN_ENT 50 // Minimum delay for Joiner router before sending joiner entrust (milliseconds)
#define THREAD_FAILED_CHILD_TRANSMISSIONS 4
#define THREAD_FAILED_ROUTER_TRANSMISSIONS 4
#define THREAD_MAC_TRANSMISSIONS 4
#define THREAD_MAX_NETWORK_DATA_SIZE 254
// How many seconds a server MUST wait after a data update has been rejected by the Leader before resending the update
#define THREAD_DATA_RESUBMIT_DELAY 300
// The maximum length of Commissioning Data TLV (including type & length)
// - Commissioner Session ID, Border Agent Locator TLV, Steering Data TLV
#define THREAD_MAX_COMM_DATA_TLV_LEN 28
// Channel page 0 super frame duration is used to convert times from ms time to exponent value in MAC
#define CHANNEL_PAGE_0_SUPERFRAME_DURATION 15.36
#define THREAD_ENTERPRISE_NUMBER 44970
#define THREAD_ADDR_REG_RETRY_INTERVAL 300
#define THREAD_PROACTIVE_AN_INTERVAL 3600
// Router defines
#define ROUTER_SELECTION_JITTER 120
#define REED_ADVERTISEMENT_INTERVAL 570
#define REED_ADVERTISEMENT_MAX_JITTER 60
#define MIN_DOWNGRADE_NEIGHBORS 7
#define THREAD_REED_ADVERTISEMENT_DELAY 5000
// Interval after which REED can send an advertisement to help others merge to higher partition.
// This is not related to default REED advertisements.
#define THREAD_REED_MERGE_ADVERTISEMENT_INTERVAL 120
/** Default Threshold for router Selection */
#define ROUTER_DOWNGRADE_THRESHOLD 23 // Define downGrade Threshold when active router is higher than this
#define ROUTER_UPGRADE_THRESHOLD 16 // Define upgrade Threshold fort REED when Active Router Count is smaller than this upgrade is possible
/** Thread prefix minimum lifetime in seconds */
#define THREAD_MIN_PREFIX_LIFETIME 3600
#define THREAD_MCAST_ADDR_PER_MSG 4 // One multicast registration message fits 4 addresses by default
/**
* Minimum specified MLR timeout in seconds
*/
#define THREAD_DEFAULT_MIN_MLR_TIMEOUT 300
/**
* Default Autonomous enrollment port.
*/
#define THREAD_DEFAULT_AE_PORT 49192
/**
* Default NMK port.
*/
#define THREAD_DEFAULT_NMKP_PORT 49193
/**
* Default registrar port
*/
#define THREAD_DEFAULT_REGISTRAR_PORT 5684
#define THREAD_URI_BBR_MCAST_LISTENER_REPORT "n/mr" //<* 1.2 feature
#define THREAD_URI_BBR_DOMAIN_ADDRESS_REGISTRATION "n/dr" //<* 1.2 feature
#define THREAD_URI_BBR_DOMAIN_ADDRESS_NOTIFICATION "n/dn" //<* 1.2 feature
#define THREAD_URI_BBR_BB_QRY_NTF "b/bq" //<* Backbone border router
#define THREAD_URI_BBR_BB_ANS_NTF "b/ba" //<* Backbone border router
#define THREAD_URI_BBR_BMLR_NTF "b/bmr" //<* 1.2 feature
#define THREAD_URI_BBR_TRI_RX_NTF "c/rxr" //<* Backbone border router
#define THREAD_URI_BBR_NMK_RX_NTF "c/rxb" //<* Backbone border router
#define THREAD_URI_BBR_TRI_TX_NTF "c/txr" //<* Backbone border router
#define THREAD_URI_BBR_NMK_TX_NTF "c/txb" //<* Backbone border router
#define THREAD_URI_BBR_NMKP_REQ "c/cjf" //<* Backbone border router
#define THREAD_URI_MGMT_SEC_PENDING_SET "c/sp" //<* Secure Dissemination of Pending Operational Dataset
#define THREAD_URI_REENROLL_REQ "c/re" //<* Device re-enrollment request
#define THREAD_URI_RESET_REQ "c/rt" //<* Device reset request - instruct to remove itself from Thread domain
#define THREAD_URI_BBR_DATA_REQ "c/bg" //<* BBR data request
#define THREAD_URI_BBR_DATA_SET "c/bs" //<* BBR data set
#define THREAD_URI_TRI_TX_NTF ".well-known/thread/c/txr" //<* Registrar
#define THREAD_URI_TRI_RX_NTF ".well-known/thread/c/rxr" //<* Registrar
#define THREAD_URI_SIMPLEENROLL ".well-known/est/sen" //<* Registrar
#define THREAD_URI_CSRATTRS ".well-known/est/att" //<* Registrar
#define THREAD_URI_RAT ".well-known/est/rv" //<* Registrar
#define THREAD_URI_SIMPLEREENROLL ".well-known/est/sren" //<* Registrar
/** Thread BBR service id */
#define THREAD_SERVICE_DATA_BBR 0x01
/** Thread 1.2 CoAP content types */
#define THREAD_CONTENT_FORMAT_AUDITNONCE (sn_coap_content_format_e)65000
#define THREAD_CONTENT_FORMAT_CSRATTRS (sn_coap_content_format_e)65002
#define THREAD_CONTENT_FORMAT_PKCS10 (sn_coap_content_format_e)65003
/**
* Thread 1.2 Security policy options. Default for all is '1';
*/
#define THREAD_SECURITY_POLICY_CCM_DISABLED 0x04
#define THREAD_SECURITY_POLICY_AE_DISABLED 0x02
#define THREAD_SECURITY_POLICY_NMP_DISABLED 0x01
#define THREAD_SECURITY_POLICY_NCR_DISABLED 0x40
#define THREAD_SECURITY_POLICY_VR_VALUE 0x07
/**
* Thread 1.2 Status TLV in DUA.rsp message.
* /
0 Successful registration
2 Registration rejected: Target EID is not a valid DUA; e.g. incorrect Domain Prefix
3 Registration rejected: DUA is already in use by another Device
4 Registration rejected: BBR resource shortage
5 Registration rejected: BBR is not Primary at this moment
6 Registration failure: Reason(s) not further specified
*/
#define THREAD_ST_DUA_SUCCESS 0
#define THREAD_ST_DUA_INVALID 2 //Fatal
#define THREAD_ST_DUA_DUPLICATE 3 //Fatal
#define THREAD_ST_DUA_NO_RESOURCES 4
#define THREAD_ST_DUA_BBR_NOT_PRIMARY 5
#define THREAD_ST_DUA_GENERAL_FAILURE 6
#define THREAD_VERSION_1_2 3
#endif /* THREAD_CONSTANTS_H_ */