Import Mbed OS hard-float snapshot
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
/*
|
||||
* Copyright (c) 2016-2018, 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.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Nanostack Thread leader service. Service is responsible of Leader specific
|
||||
* tasks like:
|
||||
* -Router ID assignment
|
||||
* -Partitioning
|
||||
* -Leader TLV writing
|
||||
* -Leader COAP message handling
|
||||
*/
|
||||
|
||||
#ifndef _THREAD_LEADER_SERVICE_H_
|
||||
#define _THREAD_LEADER_SERVICE_H_
|
||||
#ifdef HAVE_THREAD_LEADER_SERVICE
|
||||
|
||||
#include "MLE/mle_tlv.h"
|
||||
|
||||
/** Initialize Thread Leader Service
|
||||
*
|
||||
* \param interface interface id of this thread instance.
|
||||
* \param coap_service_id assigned COAP service id to use
|
||||
*
|
||||
* \return 0 for success, negative value for error
|
||||
*/
|
||||
int thread_leader_service_init(int8_t interface_id, uint8_t coap_service_id);
|
||||
|
||||
/** Delete Thread Leader Service
|
||||
*
|
||||
* \param interface interface id of this thread instance.
|
||||
*/
|
||||
void thread_leader_service_delete(int8_t interface_id);
|
||||
|
||||
/** Start and initialise CoAP thread leader.
|
||||
* When becoming a leader this method enables all the leader management functionalities using Thread management CoAP.
|
||||
*
|
||||
* \param interface interface id of this thread instance.
|
||||
* \param assign_cb callback for router id assignment request.
|
||||
* \param release_cb callback for router id release request.
|
||||
*
|
||||
* \return 0 for success, negative value in case of error
|
||||
*
|
||||
*/
|
||||
int thread_leader_service_start(int8_t interface_id);
|
||||
|
||||
/** Stop Thread leader service and return to normal device mode.
|
||||
* This closes the leader functionality services from CoAP, but leaves the normal node behavior.
|
||||
*
|
||||
* \param interface interface id of this thread instance.
|
||||
*
|
||||
*/
|
||||
void thread_leader_service_stop(int8_t interface_id);
|
||||
|
||||
/** Free Thread leader data
|
||||
*
|
||||
* \param thread_info
|
||||
*/
|
||||
void thread_leader_service_leader_data_free(struct thread_info_s *thread_info);
|
||||
|
||||
/** Generate new Thread partition
|
||||
*
|
||||
* \param interface_id current interface
|
||||
* \param newPartition true if new partition is needed
|
||||
*/
|
||||
void thread_leader_service_thread_partitition_generate(int8_t interface_id, bool newPartition);
|
||||
|
||||
/** Start Leader after sync
|
||||
*
|
||||
* \param interface_id current interface
|
||||
* \param routing routing info used to rebuild
|
||||
*/
|
||||
int thread_leader_service_thread_partitition_restart(int8_t interface_id, mle_tlv_info_t *routing);
|
||||
|
||||
/** Update ID
|
||||
*
|
||||
* \param cur current interface
|
||||
*/
|
||||
void thread_leader_service_update_id_set(protocol_interface_info_entry_t *cur);
|
||||
|
||||
/** Generate new Thread partition
|
||||
*
|
||||
* \param cur current interface
|
||||
* \param tickUpdate ticks
|
||||
*/
|
||||
void thread_leader_service_router_id_valid_lifetime_update(protocol_interface_info_entry_t *cur, uint32_t tickUpdate);
|
||||
|
||||
bool thread_leader_service_route_mask_bit_clear(thread_leader_info_t *info, uint8_t router_id);
|
||||
|
||||
void thread_leader_service_generate_network_data(protocol_interface_info_entry_t *cur);
|
||||
|
||||
void thread_leader_service_network_data_changed(protocol_interface_info_entry_t *cur, bool force_stable_update, bool force_unstable_update);
|
||||
|
||||
void thread_leader_service_timer(protocol_interface_info_entry_t *cur, uint32_t ticks);
|
||||
|
||||
int thread_leader_mleid_rloc_map_to_nvm_write(protocol_interface_info_entry_t *cur);
|
||||
|
||||
/** Get first child ID from network data based on parent ID
|
||||
*
|
||||
* \param thread_info
|
||||
* \param router_id router short address
|
||||
*
|
||||
* \return First child ID of the router children. 0 if no child found.
|
||||
*/
|
||||
uint16_t thread_leader_service_child_id_from_networkdata_get(struct thread_info_s *thread_info, uint16_t router_short_addr);
|
||||
|
||||
void thread_leader_service_router_state_changed(thread_info_t *thread_info, uint8_t router_id, bool available, int8_t interface_id);
|
||||
|
||||
#else
|
||||
|
||||
#define thread_leader_service_init(interface_id, coap_service_id) (0)
|
||||
|
||||
#define thread_leader_service_delete(interface_id)
|
||||
|
||||
#define thread_leader_service_start(interface_id) (-1)
|
||||
|
||||
#define thread_leader_service_stop(interface_id)
|
||||
|
||||
#define thread_leader_service_leader_data_free(thread_info)
|
||||
|
||||
#define thread_leader_service_thread_partitition_generate(interface_id,newPartition)
|
||||
|
||||
#define thread_leader_service_thread_partitition_restart(interface_id, routing) (-1)
|
||||
|
||||
#define thread_leader_service_update_id_set(cur);
|
||||
|
||||
#define thread_leader_service_router_id_valid_lifetime_update(cur,tickUpdate)
|
||||
|
||||
#define thread_leader_service_route_mask_bit_clear(info,router_id) false
|
||||
|
||||
#define thread_leader_service_generate_network_data(cur)
|
||||
|
||||
#define thread_leader_service_network_data_changed(cur, force_stable_update, force_unstable_update)
|
||||
|
||||
#define thread_leader_service_timer(cur,ticks)
|
||||
|
||||
#define thread_leader_service_child_id_from_networkdata_get(thread_info,router_short_addr)
|
||||
|
||||
#define thread_leader_service_router_state_changed(thread_info, router_id, available, interface_id)
|
||||
|
||||
#define thread_leader_mleid_rloc_map_to_nvm_write(cur) (0)
|
||||
|
||||
#endif /*HAVE_THREAD_LEADER_SERVICE*/
|
||||
|
||||
#endif /* _THREAD_LEADER_SERVICE_H_ */
|
||||
Reference in New Issue
Block a user