Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of OmniWheels by
thread_network_data_lib.h
00001 /* 00002 * Copyright (c) 2014-2017, Arm Limited and affiliates. 00003 * SPDX-License-Identifier: BSD-3-Clause 00004 * 00005 * Redistribution and use in source and binary forms, with or without 00006 * modification, are permitted provided that the following conditions are met: 00007 * 00008 * 1. Redistributions of source code must retain the above copyright 00009 * notice, this list of conditions and the following disclaimer. 00010 * 2. Redistributions in binary form must reproduce the above copyright 00011 * notice, this list of conditions and the following disclaimer in the 00012 * documentation and/or other materials provided with the distribution. 00013 * 3. Neither the name of the copyright holder nor the 00014 * names of its contributors may be used to endorse or promote products 00015 * derived from this software without specific prior written permission. 00016 * 00017 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00018 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00019 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 00020 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 00021 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 00022 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 00023 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 00024 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 00025 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 00026 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00027 * POSSIBILITY OF SUCH DAMAGE. 00028 */ 00029 00030 /* 00031 * \file thread_network_data_lib.h 00032 * \brief Add short description about this file!!! 00033 * 00034 */ 00035 00036 #ifndef THREAD_NETWOR_DATA_LIB_H_ 00037 #define THREAD_NETWOR_DATA_LIB_H_ 00038 #include "ns_types.h" 00039 00040 /* Thread Network Data TLV types */ 00041 #define THREAD_NWK_DATA_TYPE_ROUTE (0 << 1) 00042 #define THREAD_NWK_DATA_TYPE_PREFIX (1 << 1) 00043 #define THREAD_NWK_DATA_TYPE_BORDER_ROUTER (2 << 1) 00044 #define THREAD_NWK_DATA_TYPE_6LOWPAN_ID (3 << 1) 00045 #define THREAD_NWK_DATA_TYPE_COMMISSION_DATA (4 << 1) 00046 #define THREAD_NWK_DATA_TYPE_SERVICE_DATA (5 << 1) 00047 #define THREAD_NWK_DATA_TYPE_SERVER_DATA (6 << 1) 00048 00049 #define THREAD_NWK_STABLE_DATA 0x01 00050 #define THREAD_NWK_DATA_TYPE_MASK 0xfe 00051 00052 #define THREAD_NWK_CONTEXT_COMPRESS_ENABLED 0x10 00053 00054 /* Bit shift for BorderRouterTLV (16-bit)*/ 00055 #define THREAD_PRF_BIT_MOVE 14 /* Prf-bits */ 00056 #define THREAD_P_PREFERRED_BIT_MOVE 13 /* P-bit */ 00057 #define THREAD_P_SLAAC_BIT_MOVE 12 /* S-bit */ 00058 #define THREAD_P_DHCP_BIT_MOVE 11 /* D-bit */ 00059 #define THREAD_P_CONFIGURE_BIT_MOVE 10 /* C-bit */ 00060 #define THREAD_P_DEF_ROUTE_BIT_MOVE 9 /* R-bit */ 00061 #define THREAD_P_ON_MESH_BIT_MOVE 8 /* O-bit */ 00062 #define THREAD_P_ND_DNS_BIT_MOVE 7 /* N-bit */ 00063 00064 /* Bit shift for HasRouteTLV preference bit */ 00065 #define THREAD_HAS_ROUTE_PRF_BIT_MOVE 6 /* Prf-bits */ 00066 00067 #define THREAD_TLV_NETWORK_NAME 3 00068 #define THREAD_TLV_COMMISSIONING_CREDENTIALS 4 00069 #define THREAD_TLV_COMMISSIONER_ID 10 00070 #define THREAD_TLV_COMMISSIONER_SESSION_ID 11 00071 #define THREAD_TLV_SECURITY_POLICY 12 00072 #define THREAD_TLV_COMMISSIONING_TIME_STAMP 14 00073 #define THREAD_TLV_JOINER_UDP_PORT 18 00074 #define THREAD_TLV_STEERING_DATA 8 //Optional 00075 #define THREAD_TLV_BORDER_ROUTER_LOCATOR 9 //optional 00076 00077 typedef struct thread_network_data_tlv_buf_s { 00078 uint8_t *dataPtr; /** Allocated Pointer which need to be freed by library user */ 00079 uint8_t length; /** Allocated Pointer data length */ 00080 } thread_network_data_tlv_buf_t; 00081 00082 typedef struct thread_prefix_tlv_params_s { 00083 uint8_t *routePrefixPtr; 00084 uint8_t prefixLength; 00085 } thread_prefix_tlv_params_t; 00086 00087 typedef struct thread_network_router_info_s { 00088 bool stableData; 00089 uint16_t router16BitSddress; 00090 } thread_network_router_info_s; 00091 00092 typedef struct thread_network_context_info_s { 00093 bool stableData: 1; 00094 bool compress_supported: 1; 00095 unsigned cid: 4; 00096 uint8_t context_length; 00097 } thread_network_context_info_t; 00098 00099 00100 00101 00102 /** 00103 * Verify Network Data TLV data structure 00104 * 00105 * \param network_data_ptr pointer to Network Data TLV 00106 * \param network_data_length Data Length 00107 * 00108 * return 0, TLV OK 00109 * return <0 TLV Malformed 00110 */ 00111 int thread_network_data_malformed_check(uint8_t *network_data_ptr, uint16_t network_data_length); 00112 00113 int thread_network_data_sub_tlv_malformed_check(uint8_t *network_data_ptr, uint8_t network_data_length); 00114 00115 /** 00116 * Claculate Prefix bits to bytes count 00117 * 00118 * \param prefixLenInBits len in bits 00119 * 00120 * return Byte length 00121 */ 00122 uint8_t prefixBits_to_bytes(uint8_t prefixLenInBits); 00123 00124 uint8_t *thread_nd_commission_data_write_steering_data(uint8_t *ptr, const uint8_t *steeringData, uint8_t length); 00125 00126 uint8_t *thread_nd_network_data_border_router_tlv_write(uint8_t *ptr, uint16_t routerId, uint16_t flags); 00127 00128 uint8_t *thread_nd_network_data_has_route_tlv_write(uint8_t *ptr, uint16_t routerId, uint8_t prf); 00129 00130 #endif /* THREAD_NETWOR_DATA_LIB_H_ */
Generated on Fri Jul 22 2022 04:54:03 by
 1.7.2
 1.7.2 
    