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_common.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 #ifndef LOWPAN_THREAD_H_ 00030 #define LOWPAN_THREAD_H_ 00031 00032 #include "ns_list.h" 00033 #include "libDHCPv6/libDHCPv6.h" 00034 #include "libDHCPv6/libDHCPv6_server.h" 00035 #include "6LoWPAN/Thread/thread_routing.h" 00036 #include "6LoWPAN/Thread/thread_network_data_storage.h" 00037 #include "thread_management_if.h" 00038 #include "thread_commissioning_api.h" 00039 #include "thread_border_router_api.h" 00040 #include "eventOS_event_timer.h" 00041 #include "MLE/mle_tlv.h" 00042 00043 #define MAX_MLE_CHALLENGE_LENGTH 32 00044 00045 /* 00046 * How long a Leader must wait after a router ID has become unassigned before it can be reused. 00047 * 00048 */ 00049 #define ROUTER_ID_REUSE_DELAY 100 //Seconds 00050 00051 #define ROUTER_ID_INFINITY_DELAY 90 //Seconds 00052 00053 #define NETWORK_ID_TIMEOUT 120 //seconds 00054 00055 // Values when adverticements are made faster when leader connection is restored 00056 #define NETWORK_ID_SPEEDUP 60 //seconds 00057 #define NETWORK_ID_SPEEDUP_MAX 100 //seconds 00058 00059 #define DHCPV6_ENTERPRISE_THREAD 0x0000AFAA 00060 #define DHCPV6_OPTION_VENDOR_SPESIFIC_INFO_LEN 0x0011 00061 #define DHCPV6_ROUTER_ID_OPTION 0x0000 00062 #define DHCPV6_ROUTER_ID_OPTION_LEN 0x0009 00063 00064 #define THREAD_KEY_INDEX(seq) ((uint8_t) (((seq) & 0x0000007f) + 1)) 00065 00066 extern uint8_t thread_version; 00067 extern uint32_t thread_delay_timer_default; 00068 extern uint32_t thread_router_selection_jitter; 00069 extern uint16_t thread_joiner_port; 00070 00071 typedef enum { 00072 THREAD_STATE_NETWORK_DISCOVER, // Not commissioned to Thread network 00073 THREAD_STATE_REATTACH, // Connection to leader lost, searching for new parent 00074 THREAD_STATE_REATTACH_RETRY, // Connection to leader lost, searching for new parent with REED bit is set 00075 THREAD_STATE_ATTACH_ANY, // Searching for all partitions with leader connectivity 00076 THREAD_STATE_CONNECTED, // Attached to Thread network - can't route 00077 THREAD_STATE_CONNECTED_ROUTER, // Attached to Thread network - Routing enabled 00078 } thread_attach_state_e; 00079 00080 typedef enum { 00081 THREAD_DEVICE_MODE_ROUTER, 00082 THREAD_DEVICE_MODE_FULL_END_DEVICE, 00083 THREAD_DEVICE_MODE_END_DEVICE, 00084 THREAD_DEVICE_MODE_SLEEPY_END_DEVICE, 00085 } thread_attach_device_mode_e; 00086 00087 typedef enum { 00088 THREAD_COMMISSIONER_NOT_REGISTERED, 00089 THREAD_COMMISSIONER_REGISTRATION_OBSOLETE, 00090 THREAD_COMMISSIONER_REGISTERED 00091 } thread_commissioner_register_status_e; 00092 00093 typedef struct thread_mcast_child { 00094 uint8_t mac64[8]; 00095 ns_list_link_t link; 00096 } thread_mcast_child_t; 00097 00098 typedef NS_LIST_HEAD (thread_mcast_child_t, link) thread_mcast_children_list_t; 00099 00100 typedef struct thread_registered_mcast_addr { 00101 uint8_t address[16]; 00102 thread_mcast_children_list_t children; 00103 ns_list_link_t link; 00104 } thread_registered_mcast_addr_t; 00105 00106 typedef NS_LIST_HEAD (thread_registered_mcast_addr_t, link) thread_registered_mcast_addr_list_t; 00107 00108 typedef struct thread_pending_child_id_req { 00109 uint8_t euid64[8]; 00110 uint8_t eiid[8]; 00111 uint8_t linkMargin; 00112 uint8_t mode; 00113 uint32_t keySeq; 00114 uint8_t keyId; 00115 bool request_active_config; 00116 uint64_t active_timestamp; 00117 uint64_t pending_timestamp; 00118 uint32_t frameCounter; 00119 uint32_t mleFrameCounter; 00120 uint32_t timeout; 00121 uint16_t version; 00122 bool shortAddressReq: 1; 00123 bool networkDataReq: 1; 00124 bool routeReq: 1; 00125 ns_list_link_t link; /*!< List link entry */ 00126 } thread_pending_child_id_req_t; 00127 00128 typedef NS_LIST_HEAD (thread_pending_child_id_req_t, link) thread_pending_id_req_list_t; 00129 00130 typedef struct thread_router_id_entry_s { 00131 uint8_t eui64[8]; 00132 uint32_t validLifeTime; 00133 bool reUsePossible; 00134 } thread_router_id_entry_t; 00135 00136 typedef struct thread_network_data_req_s { 00137 uint8_t request_destination[16]; 00138 uint8_t timeout; 00139 bool active; 00140 } thread_network_data_req_t; 00141 00142 typedef struct thread_leader_info_s { 00143 //DHCPv6 Allocated Router Id's 00144 thread_router_id_entry_t thread_router_id_list[64]; 00145 uint8_t leader_id_seq_timer; 00146 uint8_t master_router_id_mask[8]; 00147 uint8_t maskSeq; 00148 } thread_leader_info_t; 00149 00150 typedef struct thread_leader_data_s { 00151 uint32_t partitionId; //Unique partition ID 00152 uint8_t dataVersion; //Leader data version number 00153 uint8_t stableDataVersion; //Leader data stable version number 00154 uint8_t leaderRouterId; //Leader Router ID 00155 uint8_t weighting; //Data weighting 00156 } thread_leader_data_t; 00157 00158 typedef struct thread_connectivity_s { 00159 uint16_t SEDBufferSize; 00160 int8_t parentPriority; 00161 uint8_t linkQuality3; 00162 uint8_t linkQuality2; 00163 uint8_t linkQuality1; 00164 uint8_t leaderCost; 00165 uint8_t idSequence; 00166 uint8_t activeRouters; 00167 uint8_t SEDDatagramCount; 00168 } thread_connectivity_t; 00169 00170 typedef struct thread_parent_info_s { 00171 uint8_t mac64[8]; 00172 uint16_t shortAddress; 00173 uint8_t router_id; 00174 uint8_t pathCostToLeader; 00175 bool childUpdatePending: 1; 00176 bool childUpdateProcessActive: 1; 00177 bool childUpdateProcessStatus: 1; 00178 } thread_parent_info_t; 00179 00180 00181 typedef struct thread_scanned_parent_s { 00182 thread_leader_data_t leader_data; 00183 uint8_t mac64[8]; 00184 uint8_t challengeData[MAX_MLE_CHALLENGE_LENGTH]; 00185 uint32_t linLayerFrameCounter; 00186 uint32_t mleFrameCounter; 00187 uint32_t keySequence; 00188 uint16_t shortAddress; 00189 uint8_t chal_len; 00190 uint8_t linkMarginFromParent; 00191 uint8_t linkMarginToParent; 00192 uint8_t security_key_index; 00193 uint8_t routeCostToLeader; 00194 uint8_t linkQuality3; 00195 uint8_t linkQuality2; 00196 uint8_t linkQuality1; 00197 int8_t parentPriority; 00198 uint8_t activeRouters; 00199 uint16_t version; 00200 uint16_t child_id_request_id; 00201 } thread_scanned_parent_t; 00202 00203 typedef struct thread_ula_prefix_s { 00204 uint8_t ulaPrefix[8]; 00205 bool ulaValid; 00206 } thread_ula_prefix_t; 00207 00208 typedef struct thread_master_secret_material_s { 00209 uint8_t historyKey[32]; 00210 uint32_t keySwitchGuardTimer; 00211 uint32_t keyRotation; 00212 bool historyKeyValid:1; 00213 bool valid_Info:1; 00214 uint8_t historyKeyId; 00215 } thread_master_secret_material_t; 00216 00217 /*This structure is used for storing active commissioner information*/ 00218 typedef struct thread_commissioner { 00219 uint8_t steering_data[16]; 00220 uint8_t border_router_address[16]; 00221 timeout_t *commissioner_timeout; 00222 char *commissioner_id_ptr; 00223 uint16_t session_id; /* session_id is valid even if commissioner is not valid */ 00224 thread_commissioner_register_status_e commissioner_registration; /* Only for Leader */ 00225 uint8_t steering_data_len; 00226 bool commissioner_valid:1; 00227 } thread_commissioner_t; 00228 00229 typedef struct thread_announcement_s { 00230 timeout_t *timer; 00231 uint64_t timestamp; 00232 uint16_t channel; 00233 uint16_t panid; 00234 uint8_t channel_page; 00235 uint8_t count; 00236 uint16_t period; 00237 bool announce_success; 00238 } thread_announcement_t; 00239 00240 typedef struct thread_router_select { 00241 uint8_t routerUpgradeThresHold; 00242 uint8_t routerDowngradeThresHold; 00243 uint8_t possibleDefaultParent; 00244 bool jitterTimerActive; 00245 uint16_t reedAdvertisementInterval; 00246 uint16_t reedAdvertisementJitterInterval; 00247 timeout_t *reedAdvertisementTimeout; 00248 } thread_router_select_t; 00249 00250 struct thread_extension_info; 00251 struct thread_extension_credentials; 00252 00253 typedef struct thread_previous_partition_info_s { 00254 uint32_t partitionId; //partition ID of the previous partition 00255 uint8_t idSequence; //idSequence last heard from the previous partition 00256 uint8_t weighting; //weighting last heard from the previous partition 00257 } thread_previous_partition_t; 00258 00259 00260 typedef struct thread_info_s { 00261 thread_routing_info_t routing; 00262 thread_master_secret_material_t masterSecretMaterial; 00263 thread_network_data_cache_entry_t networkDataStorage; 00264 thread_network_local_data_cache_entry_t localServerDataBase; 00265 thread_pending_id_req_list_t childIdReqPending; 00266 thread_commissioner_t registered_commissioner; 00267 thread_ula_prefix_t threadPrivatePrefixInfo; 00268 thread_router_select_t routerSelectParameters; 00269 thread_previous_partition_t previous_partition_info; 00270 thread_leader_info_t *leader_private_data; //Leader Proxy 00271 thread_parent_info_t *thread_endnode_parent; 00272 thread_leader_data_t *thread_leader_data; //Dynamic Learned Network Data 00273 thread_scanned_parent_t *thread_attach_scanned_parent; 00274 thread_commissioning_link_configuration_s *native_commissioner_link; 00275 thread_commissioning_native_select_cb *native_commissioner_cb; 00276 thread_network_data_tlv_cb *network_data_tlv_cb; 00277 thread_announcement_t *announcement_info; 00278 struct thread_extension_info *extension_info; 00279 struct thread_extension_credentials *extension_credentials_ptr; 00280 thread_attach_device_mode_e thread_device_mode; 00281 thread_attach_state_e thread_attached_state; //Indicate Thread stack state 00282 thread_registered_mcast_addr_list_t child_mcast_list; 00283 uint32_t host_link_timeout; 00284 uint32_t sleepy_host_poll_time; 00285 uint32_t testRandomPartitionId; 00286 uint16_t lastAllocatedChildAddress; 00287 uint16_t native_commissioner_port; 00288 uint16_t routerShortAddress; 00289 uint16_t reedJitterTimer; 00290 uint16_t routerIdReqCoapID; // COAP msg id of RouterID request 00291 int16_t childUpdateReqTimer; 00292 uint16_t proactive_an_timer; 00293 //uint8_t lastValidRouteMask[8]; 00294 int8_t interface_id; //Thread Interface ID 00295 uint8_t version; 00296 uint8_t testMaxActiveRouterIdLimit; //Default for this is 32 00297 uint8_t maxChildCount; //Default for this is 24 00298 uint8_t partition_weighting; 00299 bool rfc6775: 1; 00300 bool requestFullNetworkData: 1; 00301 bool leaderCab: 1; 00302 bool releaseRouterId: 1; 00303 bool networkSynch: 1; 00304 bool networkDataRequested: 1; 00305 bool end_device_link_synch: 1; 00306 bool router_mc_addrs_registered: 1; 00307 bool leader_synced:1; // flag used by leader after restart 00308 } thread_info_t; 00309 00310 #ifdef HAVE_THREAD 00311 00312 struct link_configuration; 00313 struct if_group_entry; 00314 00315 /* Ceil log2 function Needed to calculate specific values for thread TLVs. 00316 * This is very approximate 00317 */ 00318 uint16_t thread_log2_aprx(uint32_t n); 00319 00320 void thread_anycast_address_policy_update(const thread_info_t *thread_info, bool addPolicy); 00321 00322 #define thread_info(cur) ((cur)->thread_info) 00323 #define thread_am_reed(cur) ((cur)->thread_info && (cur)->thread_info->thread_attached_state == THREAD_STATE_CONNECTED && (cur)->thread_info->thread_device_mode == THREAD_DEVICE_MODE_ROUTER) 00324 #define thread_am_router(cur) ((cur)->thread_info && (cur)->thread_info->thread_attached_state == THREAD_STATE_CONNECTED_ROUTER && (cur)->thread_info->thread_device_mode == THREAD_DEVICE_MODE_ROUTER) 00325 #define thread_is_connected(cur) ((cur)->thread_info && ((cur)->thread_info->thread_attached_state == THREAD_STATE_CONNECTED || (cur)->thread_info->thread_attached_state == THREAD_STATE_CONNECTED_ROUTER)) 00326 #define thread_am_host(cur) ((cur)->thread_info && \ 00327 ((cur)->thread_info->thread_device_mode == THREAD_DEVICE_MODE_SLEEPY_END_DEVICE ||\ 00328 (cur)->thread_info->thread_device_mode == THREAD_DEVICE_MODE_END_DEVICE ||\ 00329 (cur)->thread_info->thread_device_mode == THREAD_DEVICE_MODE_FULL_END_DEVICE)) 00330 00331 //int thread_configuration_save(thread_info_t *thread_info, link_configuration_s *leader_link_setup); 00332 00333 bool thread_leader_commissioner_create(thread_info_t *thread_info); 00334 void thread_leader_commissioner_free(thread_info_t *thread_info); 00335 00336 bool thread_leader_data_parse(uint8_t *ptr, uint16_t dataLength, thread_leader_data_t *leaderDataBuf); 00337 bool thread_connectivity_tlv_parse(uint8_t *ptr, uint16_t dataLength, thread_connectivity_t *connectivityTlv); 00338 00339 thread_leader_data_t *thread_leader_data_get(thread_info_t *info); 00340 thread_parent_info_t *thread_parent_data_allocate(thread_info_t *info); 00341 void thread_data_base_init(thread_info_t *thread_info, int8_t interfaceId); 00342 int thread_info_allocate_and_init(protocol_interface_info_entry_t *cur); 00343 void thread_info_deallocate(protocol_interface_info_entry_t *cur); 00344 int thread_init(protocol_interface_info_entry_t *cur); 00345 int thread_attach_ready(protocol_interface_info_entry_t *cur); 00346 bool thread_attach_active_router(protocol_interface_info_entry_t *cur); 00347 bool thread_scan_mask_validation(protocol_interface_info_entry_t *cur, uint8_t mask); 00348 int thread_route_ready_to_leader(protocol_interface_info_entry_t *cur); 00349 void thread_timer(protocol_interface_info_entry_t *cur, uint8_t ticks); 00350 void thread_seconds_timer(protocol_interface_info_entry_t *cur, uint32_t ticks); 00351 bool thread_insist_that_mesh_isnt_a_link(const protocol_interface_info_entry_t *cur); 00352 bool thread_addr_is_mesh_local(const uint8_t *addr, const protocol_interface_info_entry_t *cur); 00353 bool thread_on_mesh_route_possible_add(thread_attach_device_mode_e threadMode); 00354 bool thread_addr_is_mesh_local_16(const uint8_t *addr, const protocol_interface_info_entry_t *cur); 00355 uint8_t *thread_addr_write_mesh_local_16(uint8_t ip_addr_out[16], uint16_t addr16, const thread_info_t *thread_info); 00356 int thread_leader_ul16_address_get(thread_info_t *thread_info, uint8_t *address_ptr); 00357 void thread_network_data_request_send(protocol_interface_info_entry_t *cur, uint8_t *requestDstAddress, bool delaydTrig); 00358 uint16_t thread_network_data_generate_stable_set(protocol_interface_info_entry_t *cur, uint8_t *result_ptr); 00359 00360 void thread_set_active_router(protocol_interface_info_entry_t *cur, if_address_entry_t *address_entry, uint8_t *routerId); 00361 uint8_t thread_get_router_count_from_route_tlv(mle_tlv_info_t *routeTlv); 00362 void thread_reset_neighbour_info(protocol_interface_info_entry_t *cur, mle_neigh_table_entry_t *neighbour); 00363 00364 void thread_child_id_request_entry_clean(protocol_interface_info_entry_t *cur); 00365 thread_pending_child_id_req_t *thread_child_id_request_entry_get(protocol_interface_info_entry_t *cur, uint8_t *euid64); 00366 void thread_child_id_request_entry_remove(protocol_interface_info_entry_t *cur, thread_pending_child_id_req_t *entry); 00367 thread_pending_child_id_req_t *thread_child_id_request_entry_get_from_the_list(protocol_interface_info_entry_t *cur); 00368 00369 thread_mcast_child_t *thread_child_mcast_entry_get(protocol_interface_info_entry_t *cur, const uint8_t *mcast_addr, const uint8_t *mac64); 00370 void thread_registered_mcast_addr_entry_clean(protocol_interface_info_entry_t *cur); 00371 thread_registered_mcast_addr_t *thread_registered_mcast_addr_entry_find(protocol_interface_info_entry_t *cur, const uint8_t *mcast_addr); 00372 void thread_child_mcast_entries_remove(protocol_interface_info_entry_t *cur, const uint8_t *mac64); 00373 00374 uint8_t thread_leader_data_tlv_size(protocol_interface_info_entry_t *cur); 00375 uint8_t *thread_leader_data_tlv_write(uint8_t *ptr, protocol_interface_info_entry_t *cur); 00376 uint8_t *thread_address_registration_tlv_write(uint8_t *ptr, protocol_interface_info_entry_t *cur); 00377 int thread_link_reject_send(protocol_interface_info_entry_t *interface, const uint8_t *ll64); 00378 thread_leader_info_t *thread_allocate_and_init_leader_private_data(void); 00379 thread_route_cost_t thread_link_quality_to_cost(thread_link_quality_e quality); 00380 thread_route_cost_t thread_link_cost_sum(thread_route_cost_t a, thread_route_cost_t b); 00381 thread_link_quality_e thread_link_margin_to_quality(thread_link_margin_t margin); 00382 uint_fast8_t thread_sum_rx_path_cost_and_link_cost(uint8_t inMargim, uint8_t outMargin, uint8_t pathCost); 00383 /* 00384 * Thread beacon payload handling functions 00385 */ 00386 int8_t thread_beacon_create_payload(struct protocol_interface_info_entry *cur); 00387 uint8_t thread_beacon_indication(uint8_t *ptr, uint8_t len, protocol_interface_info_entry_t *cur); 00388 00389 int thread_network_data_propagation(struct protocol_interface_info_entry *cur, uint8_t *childUnicastAddress, bool fullList); 00390 00391 uint8_t thread_route_option_size(protocol_interface_info_entry_t *cur); 00392 uint8_t *thread_route_option_write(protocol_interface_info_entry_t *cur, uint8_t *ptr); 00393 00394 /*Generic Thread TLV write*/ 00395 uint8_t *thread_connectivity_tlv_write(uint8_t *ptr, protocol_interface_info_entry_t *cur, uint8_t mode); 00396 00397 /*Network data TLV write*/ 00398 uint16_t thread_network_data_tlv_size(struct protocol_interface_info_entry *cur, bool fulllist); 00399 uint8_t *thread_network_data_tlv_write(struct protocol_interface_info_entry *cur, uint8_t *ptr, bool fulllist); 00400 00401 /* Active and pending operational dataset write*/ 00402 uint8_t *thread_active_timestamp_write(protocol_interface_info_entry_t *cur, uint8_t *ptr); 00403 uint16_t thread_active_operational_dataset_size(protocol_interface_info_entry_t *cur); 00404 uint8_t *thread_active_operational_dataset_write(protocol_interface_info_entry_t *cur, uint8_t *ptr); 00405 bool thread_active_operational_dataset_process(protocol_interface_info_entry_t *cur, uint8_t *ptr, uint16_t len, uint64_t dataset_timestamp); 00406 uint8_t *thread_pending_timestamp_write(protocol_interface_info_entry_t *cur, uint8_t *ptr); 00407 uint16_t thread_pending_operational_dataset_size(protocol_interface_info_entry_t *cur); 00408 uint8_t *thread_pending_operational_dataset_write(protocol_interface_info_entry_t *cur, uint8_t *ptr); 00409 bool thread_pending_operational_dataset_process(protocol_interface_info_entry_t *cur, uint64_t mle_pending_timestamp, uint8_t *ptr, uint16_t len); 00410 /*Write optional thread leader data TLV if leader data is known*/ 00411 uint8_t thread_pending_timestamp_tlv_size(protocol_interface_info_entry_t *cur); 00412 void thread_calculate_key_guard_timer(protocol_interface_info_entry_t *cur, link_configuration_s *linkConfiguration, bool is_init); 00413 void thread_set_link_local_address(protocol_interface_info_entry_t *cur); 00414 void thread_mcast_group_change(struct protocol_interface_info_entry *interface, struct if_group_entry *group, bool group_added); 00415 void thread_old_partition_data_purge(protocol_interface_info_entry_t *cur); 00416 00417 #else // HAVE_THREAD 00418 00419 NS_DUMMY_DEFINITIONS_OK 00420 00421 #define thread_info(cur) ((thread_info_t *) NULL) 00422 #define thread_am_router(cur) (false) 00423 #define thread_am_host(cur) (false) 00424 00425 #define thread_addr_is_mesh_local(addr, cur) false 00426 #define thread_addr_is_mesh_local_16(addr, cur) false 00427 #define thread_timer(cur, ticks) ((void) 0) 00428 #define thread_seconds_timer(cur, ticks) ((void) 0) 00429 #define thread_insist_that_mesh_isnt_a_link(cur) false 00430 #define thread_attach_ready(cur) 0 00431 #define thread_info_allocate_and_init(cur) (-1) 00432 #define thread_info_deallocate(cur) ((void)0) 00433 #define thread_network_data_propagation(cur, childUnicastAddress, fullList) (void(-1)) 00434 #define thread_link_reject_send(interface, ll64) 0 00435 #define thread_addr_is_mesh_local_16(addr, cur) false 00436 #define thread_mcast_group_change(interface, group, group_added) ((void)0) 00437 #endif // HAVE_THREAD 00438 00439 #endif /* LOWPAN_THREAD_H_ */
Generated on Fri Jul 22 2022 04:54:02 by
1.7.2
