Kenji Arai / mbed-os_TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ws_bootstrap.h Source File

ws_bootstrap.h

00001 /*
00002  * Copyright (c) 2018-2019, Arm Limited and affiliates.
00003  * SPDX-License-Identifier: Apache-2.0
00004  *
00005  * Licensed under the Apache License, Version 2.0 (the "License");
00006  * you may not use this file except in compliance with the License.
00007  * You may obtain a copy of the License at
00008  *
00009  *     http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef WS_BOOTSTRAP_H_
00019 #define WS_BOOTSTRAP_H_
00020 
00021 
00022 typedef enum {
00023     WS_INIT_EVENT = 0,       /**< tasklet initializion event*/
00024     WS_DISCOVERY_START,      /**< discovery start*/
00025     WS_CONFIGURATION_START,  /**< configuration learn start*/
00026     WS_OPERATION_START,      /**< active operation start*/
00027     WS_ROUTING_READY        /**< RPL routing connected to BR*/
00028 } ws_bootsrap_event_type_e;
00029 
00030 #ifdef HAVE_WS
00031 
00032 struct llc_neighbour_req;
00033 
00034 int ws_bootstrap_init(int8_t interface_id, net_6lowpan_mode_e bootstrap_mode);
00035 
00036 void ws_bootstrap_state_machine(protocol_interface_info_entry_t *cur);
00037 
00038 int ws_bootstrap_restart(int8_t interface_id);
00039 
00040 int ws_bootstrap_set_rf_config(protocol_interface_info_entry_t *cur, phy_rf_channel_configuration_s rf_configs);
00041 
00042 int ws_bootstrap_neighbor_remove(protocol_interface_info_entry_t *cur, const uint8_t *ll_address);
00043 
00044 int ws_bootstrap_aro_failure(protocol_interface_info_entry_t *cur, const uint8_t *ll_address);
00045 
00046 /*State machine transactions*/
00047 void ws_bootstrap_event_discovery_start(protocol_interface_info_entry_t *cur);
00048 
00049 void ws_bootstrap_event_configuration_start(protocol_interface_info_entry_t *cur);
00050 
00051 void ws_bootstrap_event_authentication_start(protocol_interface_info_entry_t *cur);
00052 
00053 void ws_bootstrap_event_operation_start(protocol_interface_info_entry_t *cur);
00054 
00055 void ws_bootstrap_event_routing_ready(protocol_interface_info_entry_t *cur);
00056 
00057 void ws_bootstrap_configuration_trickle_reset(protocol_interface_info_entry_t *cur);
00058 
00059 void ws_bootstrap_seconds_timer(protocol_interface_info_entry_t *cur, uint32_t seconds);
00060 
00061 void ws_bootstrap_trickle_timer(protocol_interface_info_entry_t *cur, uint16_t ticks);
00062 
00063 void ws_primary_parent_update(protocol_interface_info_entry_t *interface, mac_neighbor_table_entry_t *neighbor);
00064 
00065 void ws_secondary_parent_update(protocol_interface_info_entry_t *interface);
00066 
00067 void ws_nud_entry_remove_active(protocol_interface_info_entry_t *cur, void *neighbor);
00068 
00069 void ws_nud_active_timer(protocol_interface_info_entry_t *cur, uint16_t ticks);
00070 
00071 void ws_dhcp_client_address_request(protocol_interface_info_entry_t *cur, uint8_t *prefix, uint8_t *parent_link_local);
00072 
00073 void ws_dhcp_client_address_delete(protocol_interface_info_entry_t *cur, uint8_t *prefix);
00074 
00075 bool ws_eapol_relay_state_active(protocol_interface_info_entry_t *cur);
00076 
00077 void ws_bootstrap_eapol_parent_synch(struct protocol_interface_info_entry *cur, struct llc_neighbour_req *neighbor_info);
00078 
00079 void ws_bootstrap_etx_accelerate(struct protocol_interface_info_entry *cur, mac_neighbor_table_entry_t *neigh);
00080 
00081 #else
00082 
00083 #define ws_bootstrap_init(interface_id, bootstrap_mode) (-1)
00084 #define ws_bootstrap_state_machine(cur)
00085 #define ws_bootstrap_restart(cur)
00086 #define ws_bootstrap_neighbor_remove(cur, ll_address)
00087 #define ws_bootstrap_aro_failure(cur, ll_address)
00088 #define ws_primary_parent_update(interface, neighbor)
00089 #define ws_secondary_parent_update(interface)
00090 #define ws_bootstrap_etx_accelerate(cur, neigh) ((void) 0)
00091 
00092 #endif //HAVE_WS
00093 
00094 #endif /* WS_BOOTSTRAP_H_ */