mirror of https://github.com/ARMmbed/mbed-os.git
82 lines
3.7 KiB
C
82 lines
3.7 KiB
C
/*
|
|
* Copyright (c) 2015-2018, 2020, Pelion and affiliates.
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*
|
|
* 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 protocol_6lowpan.h
|
|
*
|
|
*/
|
|
|
|
#ifndef PROTOCOL_6LOWPAN_H_
|
|
#define PROTOCOL_6LOWPAN_H_
|
|
|
|
struct protocol_interface_info_entry;
|
|
struct route_info_entry_t;
|
|
struct ns_sockaddr;
|
|
struct rpl_domain;
|
|
struct rpl_dodag;
|
|
struct mlme_pan_descriptor_s;
|
|
|
|
|
|
extern struct rpl_domain *protocol_6lowpan_rpl_domain;
|
|
extern struct rpl_dodag *protocol_6lowpan_rpl_root_dodag;
|
|
|
|
#ifdef HAVE_RPL
|
|
typedef enum {
|
|
PRIORITY_1ST,
|
|
PRIORITY_2ND,
|
|
} neighbor_priority;
|
|
#endif
|
|
|
|
void protocol_6lowpan_interface_common_init(struct protocol_interface_info_entry *cur);
|
|
void protocol_6lowpan_host_init(struct protocol_interface_info_entry *cur, bool sleepy_host);
|
|
void protocol_6lowpan_router_init(struct protocol_interface_info_entry *cur);
|
|
void protocol_6lowpan_configure_core(struct protocol_interface_info_entry *cur);
|
|
|
|
#ifdef HAVE_6LOWPAN_ND
|
|
int protocol_6lowpan_child_update(struct protocol_interface_info_entry *cur);
|
|
void protocol_6lowpan_neighbor_priority_update(struct protocol_interface_info_entry *cur, uint8_t *removed_priority, uint8_t *updated_priority);
|
|
|
|
#ifdef HAVE_RPL
|
|
uint16_t protocol_6lowpan_neighbor_priority_set(int8_t interface_id, addrtype_t addr_type, const uint8_t *addr_ptr);
|
|
uint16_t protocol_6lowpan_neighbor_second_priority_set(int8_t interface_id, addrtype_t addr_type, const uint8_t *addr_ptr);
|
|
void protocol_6lowpan_neighbor_priority_clear_all(int8_t interface_id, neighbor_priority priority);
|
|
#endif
|
|
|
|
#else
|
|
#define protocol_6lowpan_child_update(cur) (-1)
|
|
#define protocol_6lowpan_neighbor_priority_update(cur, removed_priority, updated_priority) ((void)0)
|
|
#endif
|
|
|
|
int8_t protocol_6lowpan_neighbor_address_state_synch(struct protocol_interface_info_entry *cur, const uint8_t eui64[8], const uint8_t iid[8]);
|
|
int8_t protocol_6lowpan_neighbor_remove(struct protocol_interface_info_entry *cur, uint8_t *address_ptr, addrtype_t type);
|
|
|
|
void protocol_6lowpan_allocate_mac16(protocol_interface_info_entry_t *cur);
|
|
|
|
int8_t protocol_6lowpan_interface_compare_cordinator_netid(struct protocol_interface_info_entry *cur, uint8_t *adr_ptr);
|
|
int8_t protocol_6lowpan_interface_get_link_local_cordinator_address(protocol_interface_info_entry_t *cur, uint8_t *adr_ptr);
|
|
int8_t protocol_6lowpan_interface_get_mac_coordinator_address(protocol_interface_info_entry_t *cur, struct ns_sockaddr *adr_ptr);
|
|
|
|
int16_t protocol_6lowpan_rpl_global_priority_get(void);
|
|
uint8_t protocol_6lowpan_beacon_join_priority_tx(int8_t interface_id);
|
|
uint8_t protocol_6lowpan_beacon_compare_rx(int8_t interface_id, uint8_t join_priority, uint8_t link_quality);
|
|
bool protocol_6lowpan_bootsrap_start(struct protocol_interface_info_entry *interface);
|
|
bool protocol_6lowpan_bootsrap_link_set(struct protocol_interface_info_entry *interface, struct mlme_pan_descriptor_s *pan_descriptor, const uint8_t *beacon_payload, uint8_t beacon_length);
|
|
bool protocol_6lowpan_latency_estimate_get(int8_t interface_id, uint32_t *latency);
|
|
bool protocol_6lowpan_stagger_estimate_get(int8_t interface_id, uint32_t data_amount, uint16_t *stagger_min, uint16_t *stagger_max, uint16_t *stagger_rand);
|
|
|
|
#endif /* PROTOCOL_6LOWPAN_H_ */
|