Sergio Scaglia / Nanostack_lib

Dependents:   mbedEndpointNetwork mbedEndpointNetworkMJK

Fork of Nanostack_lib by Sensinode

Committer:
sscaglia
Date:
Tue Jul 15 02:52:09 2014 +0000
Revision:
14:b486fa9e70a7
Parent:
12:acef6f596835
Initial version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Mika Karjalainen 4:c449bead5cf3 1 /*
Mika Karjalainen 4:c449bead5cf3 2 * \file net_interface.h
Mika Karjalainen 4:c449bead5cf3 3 * \brief Add short description about this file!!!
Mika Karjalainen 4:c449bead5cf3 4 * Copyrigth ARM Ltd 2013
Mika Karjalainen 4:c449bead5cf3 5 *
Mika Karjalainen 4:c449bead5cf3 6 */
Mika Karjalainen 4:c449bead5cf3 7
Mika Karjalainen 4:c449bead5cf3 8 #ifndef NET_INTERFACE_H_
Mika Karjalainen 4:c449bead5cf3 9 #define NET_INTERFACE_H_
jusu_81 11:1b7aaf37a131 10 #ifdef __cplusplus
jusu_81 11:1b7aaf37a131 11 extern "C" {
jusu_81 11:1b7aaf37a131 12 #endif
Mika Karjalainen 4:c449bead5cf3 13 /** Platform is not valid for ZigBeeIP library */
Mika Karjalainen 4:c449bead5cf3 14 #define ZIGBEE_IP_INVALID_PART -2
Mika Karjalainen 4:c449bead5cf3 15
Mika Karjalainen 4:c449bead5cf3 16
Mika Karjalainen 4:c449bead5cf3 17 /**
Mika Karjalainen 4:c449bead5cf3 18 * Socket event description:
Mika Karjalainen 4:c449bead5cf3 19 *
Mika Karjalainen 4:c449bead5cf3 20 * 8-bit variable where four MSB bits describes the event type and
Mika Karjalainen 4:c449bead5cf3 21 * four LSB bits describes the socket that has received the event.
Mika Karjalainen 4:c449bead5cf3 22 *
Mika Karjalainen 4:c449bead5cf3 23 * Type Socket ID
Mika Karjalainen 4:c449bead5cf3 24 * ---- ----
Mika Karjalainen 4:c449bead5cf3 25 * xxxx xxxx
Mika Karjalainen 4:c449bead5cf3 26 *
Mika Karjalainen 4:c449bead5cf3 27 */
Mika Karjalainen 4:c449bead5cf3 28
Mika Karjalainen 4:c449bead5cf3 29
Mika Karjalainen 4:c449bead5cf3 30 /** Socket type exceptions */
Mika Karjalainen 4:c449bead5cf3 31 /** Socket event Mask */
Mika Karjalainen 4:c449bead5cf3 32 #define SOCKET_EVENT_MASK 0xF0
Mika Karjalainen 4:c449bead5cf3 33 /** Data received*/
Mika Karjalainen 4:c449bead5cf3 34 #define SOCKET_DATA 0
Mika Karjalainen 4:c449bead5cf3 35 /** TCP connection ready */
Mika Karjalainen 4:c449bead5cf3 36 #define SOCKET_BIND_DONE 1 << 4
Mika Karjalainen 4:c449bead5cf3 37 /** TCP connection failed */
Mika Karjalainen 4:c449bead5cf3 38 #define SOCKET_BIND_FAIL 2 << 4
Mika Karjalainen 4:c449bead5cf3 39 /** TCP connection authentication failed */
Mika Karjalainen 4:c449bead5cf3 40 #define SOCKET_BIND_AUTH_FAIL 3 << 4
Mika Karjalainen 4:c449bead5cf3 41 /** TCP state from listen to establishment */
Mika Karjalainen 4:c449bead5cf3 42 #define SOCKET_SERVER_CONNECT_TO_CLIENT 4 << 4
Mika Karjalainen 4:c449bead5cf3 43 /** Socket data send fail */
Mika Karjalainen 4:c449bead5cf3 44 #define SOCKET_TX_FAIL 5 << 4
Mika Karjalainen 4:c449bead5cf3 45 /** TCP connection closed */
Mika Karjalainen 4:c449bead5cf3 46 #define SOCKET_CONNECT_CLOSED 6 << 4
Mika Karjalainen 4:c449bead5cf3 47 /** TCP connection closed because no ACK received */
Mika Karjalainen 4:c449bead5cf3 48 #define SOCKET_CONNECT_FAIL_CLOSED 7 << 4
Mika Karjalainen 4:c449bead5cf3 49 /** No route available to the destination */
Mika Karjalainen 4:c449bead5cf3 50 #define SOCKET_NO_ROUTE 8 << 4
Mika Karjalainen 4:c449bead5cf3 51 /** Socket TX Done */
Mika Karjalainen 4:c449bead5cf3 52 #define SOCKET_TX_DONE 9 << 4
Mika Karjalainen 4:c449bead5cf3 53
Mika Karjalainen 4:c449bead5cf3 54 /*!
Mika Karjalainen 4:c449bead5cf3 55 * \enum net_interface_type_e
Mika Karjalainen 4:c449bead5cf3 56 * \brief Interface type definition.
Mika Karjalainen 4:c449bead5cf3 57 */
Mika Karjalainen 4:c449bead5cf3 58 typedef enum
Mika Karjalainen 4:c449bead5cf3 59 {
Mika Karjalainen 4:c449bead5cf3 60 NET_INTERFACE_ETHERNET, /**< IPv4 or IPv6*/
Mika Karjalainen 4:c449bead5cf3 61 NET_INTERFACE_WIFI, /**< WIFI RF interface*/
Mika Karjalainen 4:c449bead5cf3 62 NET_INTERFACE_RF_6LOWPAN, /**< RF 6LoWPAN interface*/
Mika Karjalainen 4:c449bead5cf3 63 NET_INTERFACE_BLE_6LOWPAN, /**< BLE 6LoWPAN interface*/
Mika Karjalainen 4:c449bead5cf3 64 NET_INTERFACE_RF_ZIGBEEIP, /**< RF ZigBeeIP interface*/
Mika Karjalainen 4:c449bead5cf3 65 NET_INTERFACE_G3_6LOWPAN, /**< G3 6LoWPAN interface*/
Mika Karjalainen 4:c449bead5cf3 66 NET_INTERFACE_IEEE1901_2_6LOWPAN, /**< IEEE1901.2 6LoWPAN interface*/
Mika Karjalainen 4:c449bead5cf3 67 NET_INTERFACE_VIRTUAL, /**< IPv6 over anyserial interface */
Mika Karjalainen 4:c449bead5cf3 68 } net_interface_type_e;
Mika Karjalainen 4:c449bead5cf3 69
Mika Karjalainen 4:c449bead5cf3 70 /*!
Mika Karjalainen 4:c449bead5cf3 71 * \enum net_security_t
Mika Karjalainen 4:c449bead5cf3 72 * Network Security Levels
Mika Karjalainen 4:c449bead5cf3 73 * */
Mika Karjalainen 4:c449bead5cf3 74 typedef enum net_security_t
Mika Karjalainen 4:c449bead5cf3 75 {
Mika Karjalainen 4:c449bead5cf3 76 NW_NO_SECURITY = 0, /**< No Security*/
Mika Karjalainen 4:c449bead5cf3 77 NW_SECURITY_LEVEL_MIC32 = 1, /**< 32-bit Mic verify no Encoding. */
Mika Karjalainen 4:c449bead5cf3 78 NW_SECURITY_LEVEL_MIC64 = 2, /**< 64-bit Mic verify no Encoding. */
Mika Karjalainen 4:c449bead5cf3 79 NW_SECURITY_LEVEL_MIC128 = 3, /**< 128-bit Mic verify no Encoding. */
Mika Karjalainen 4:c449bead5cf3 80 NW_SECURITY_LEVEL_ENC = 4, /**< AES Encoding without MIC. */
Mika Karjalainen 4:c449bead5cf3 81 NW_SECURITY_LEVEL_ENC_MIC32 = 5, /**< 32-bit Mic verify with Encoding. */
Mika Karjalainen 4:c449bead5cf3 82 NW_SECURITY_LEVEL_ENC_MIC64 = 6, /**< 64-bit Mic verify with Encoding. */
Mika Karjalainen 4:c449bead5cf3 83 NW_SECURITY_LEVEL_ENC_MIC128 = 7 /**< 128-bit Mic verify with Encoding. */
Mika Karjalainen 4:c449bead5cf3 84 }net_security_t;
Mika Karjalainen 4:c449bead5cf3 85
Mika Karjalainen 4:c449bead5cf3 86 /*!
Mika Karjalainen 4:c449bead5cf3 87 * \enum net_address_t
Mika Karjalainen 4:c449bead5cf3 88 * \brief addresses for arm_net_address_get().
Mika Karjalainen 4:c449bead5cf3 89 */
Mika Karjalainen 4:c449bead5cf3 90 typedef enum net_address_t
Mika Karjalainen 4:c449bead5cf3 91 {
Mika Karjalainen 4:c449bead5cf3 92 ADDR_IPV6_GP, /**< Node Default Global address */
Mika Karjalainen 4:c449bead5cf3 93 ADDR_IPV6_GP_SEC, /**< Node Secondary Global address */
Mika Karjalainen 4:c449bead5cf3 94 ADDR_IPV6_LL /**< Node Default Link Local address */
Mika Karjalainen 4:c449bead5cf3 95 }net_address_t;
Mika Karjalainen 4:c449bead5cf3 96
Mika Karjalainen 4:c449bead5cf3 97 typedef enum net_mac_address_t
Mika Karjalainen 4:c449bead5cf3 98 {
Mika Karjalainen 4:c449bead5cf3 99 ADDR_MAC_SHORT16, /**< Nodes 16-bit Short Address */
Mika Karjalainen 4:c449bead5cf3 100 ADDR_MAC_LONG64, /**< IP layer EUID64 which based on MAC layer 64-bit long Addressafter U/I -bit conversion */
Mika Karjalainen 4:c449bead5cf3 101 }net_mac_address_t;
Mika Karjalainen 4:c449bead5cf3 102
Mika Karjalainen 4:c449bead5cf3 103 /*!
Mika Karjalainen 4:c449bead5cf3 104 * \enum net_tls_cipher_e
Mika Karjalainen 4:c449bead5cf3 105 * \brief TLS cipher mode enumeration types.
Mika Karjalainen 4:c449bead5cf3 106 */
Mika Karjalainen 4:c449bead5cf3 107 typedef enum
Mika Karjalainen 4:c449bead5cf3 108 {
Mika Karjalainen 4:c449bead5cf3 109 NET_TLS_PSK_CIPHER, /**< Network Authentication support only PSK */
Mika Karjalainen 4:c449bead5cf3 110 NET_TLS_ECC_CIPHER, /**< Network Authentication support only ECC */
Mika Karjalainen 4:c449bead5cf3 111 NET_TLS_PSK_AND_ECC_CIPHER, /**< Network Authentication support PSK & ECC */
Mika Karjalainen 4:c449bead5cf3 112 } net_tls_cipher_e;
Mika Karjalainen 4:c449bead5cf3 113
Mika Karjalainen 4:c449bead5cf3 114 /*!
Mika Karjalainen 4:c449bead5cf3 115 * \enum net_pana_session_mode_e
Mika Karjalainen 4:c449bead5cf3 116 * \brief PANA session cache support.
Mika Karjalainen 4:c449bead5cf3 117 */
Mika Karjalainen 4:c449bead5cf3 118 typedef enum
Mika Karjalainen 4:c449bead5cf3 119 {
Mika Karjalainen 4:c449bead5cf3 120 NET_PANA_SINGLE_SESSION, /**< Client keep track only 1 Pana session data, Default use case */
Mika Karjalainen 4:c449bead5cf3 121 NET_PANA_MULTI_SESSION, /**< Client support many Start network coordinator session data */
Mika Karjalainen 4:c449bead5cf3 122 } net_pana_session_mode_e;
Mika Karjalainen 4:c449bead5cf3 123
Mika Karjalainen 4:c449bead5cf3 124 /*!
Mika Karjalainen 4:c449bead5cf3 125 * \enum net_6lowpan_link_layer_sec_mode_e
Mika Karjalainen 4:c449bead5cf3 126 * \brief 6Lowpan network Security & authentication modes.
Mika Karjalainen 4:c449bead5cf3 127 */
Mika Karjalainen 4:c449bead5cf3 128 typedef enum
Mika Karjalainen 4:c449bead5cf3 129 {
Mika Karjalainen 12:acef6f596835 130 NET_SEC_MODE_NO_LINK_SECURITY, /**< Security Disabled at Link Layer – DEFAULT */
Mika Karjalainen 4:c449bead5cf3 131 NET_SEC_MODE_PSK_LINK_SECURITY, /**< Link Security by PSK key*/
Mika Karjalainen 4:c449bead5cf3 132 NET_SEC_MODE_PANA_LINK_SECURITY, /**< PANA network authentication define link KEY */
Mika Karjalainen 4:c449bead5cf3 133 } net_6lowpan_link_layer_sec_mode_e;
Mika Karjalainen 4:c449bead5cf3 134
Mika Karjalainen 4:c449bead5cf3 135
Mika Karjalainen 4:c449bead5cf3 136 /*!
Mika Karjalainen 4:c449bead5cf3 137 * \enum net_6lowpan_mode_e
Mika Karjalainen 4:c449bead5cf3 138 * \brief 6LoWPAN bootsrap modes.
Mika Karjalainen 4:c449bead5cf3 139 */
Mika Karjalainen 4:c449bead5cf3 140 typedef enum
Mika Karjalainen 4:c449bead5cf3 141 {
Mika Karjalainen 4:c449bead5cf3 142 NET_6LOWPAN_BORDER_ROUTER, /**< Root device for 6LoWPAN ND */
Mika Karjalainen 4:c449bead5cf3 143 NET_6LOWPAN_ROUTER, /**< Router device */
Mika Karjalainen 12:acef6f596835 144 NET_6LOWPAN_HOST, /**< Host device – DEFAULT setting */
Mika Karjalainen 4:c449bead5cf3 145 NET_6LOWPAN_SLEEPY_HOST /**< Sleepy Host device */
Mika Karjalainen 4:c449bead5cf3 146 } net_6lowpan_mode_e;
Mika Karjalainen 4:c449bead5cf3 147
Mika Karjalainen 4:c449bead5cf3 148 /*!
Mika Karjalainen 4:c449bead5cf3 149 * \struct link_layer_setups_s
Mika Karjalainen 4:c449bead5cf3 150 * \brief Network Cordinator Parameter List.
Mika Karjalainen 4:c449bead5cf3 151 * Structure is used to read network parameter for warm start.
Mika Karjalainen 4:c449bead5cf3 152 */
Mika Karjalainen 4:c449bead5cf3 153 typedef struct link_layer_setups_s
Mika Karjalainen 4:c449bead5cf3 154 {
Mika Karjalainen 4:c449bead5cf3 155 uint16_t PANId; /**< Network PAN-ID */
Mika Karjalainen 4:c449bead5cf3 156 uint8_t LogicalChannel; /**< Network Logical Channel */
Mika Karjalainen 4:c449bead5cf3 157 net_mac_address_t addr_mode; /**< Coordinator Address mode */
Mika Karjalainen 4:c449bead5cf3 158 uint8_t address[8]; /**< Coordinator Address */
Mika Karjalainen 4:c449bead5cf3 159 uint8_t sf; /**< Network super frame setup */
Mika Karjalainen 4:c449bead5cf3 160 }link_layer_setups_s;
Mika Karjalainen 4:c449bead5cf3 161
Mika Karjalainen 4:c449bead5cf3 162 /*!
Mika Karjalainen 4:c449bead5cf3 163 * \struct link_layer_address_s
Mika Karjalainen 4:c449bead5cf3 164 * \brief Network MAC address info.
Mika Karjalainen 4:c449bead5cf3 165 * Structure is used to read link layer Adress.
Mika Karjalainen 4:c449bead5cf3 166 */
Mika Karjalainen 4:c449bead5cf3 167 typedef struct link_layer_address_s
Mika Karjalainen 4:c449bead5cf3 168 {
Mika Karjalainen 4:c449bead5cf3 169 uint16_t PANId; /**< Network PAN-ID */
Mika Karjalainen 4:c449bead5cf3 170 uint16_t mac_short; /**< MAC short address if <0xffe then is valid */
Mika Karjalainen 4:c449bead5cf3 171 uint8_t long_euid64[8]; /**< Long64-bit MAC address */
Mika Karjalainen 4:c449bead5cf3 172 uint8_t euid64[8]; /**< Long64-bit Network ID */
Mika Karjalainen 4:c449bead5cf3 173 }link_layer_address_s;
Mika Karjalainen 4:c449bead5cf3 174
Mika Karjalainen 4:c449bead5cf3 175 /*!
Mika Karjalainen 4:c449bead5cf3 176 * \struct network_layer_address_s
Mika Karjalainen 4:c449bead5cf3 177 * \brief Network layer parent address info.
Mika Karjalainen 4:c449bead5cf3 178
Mika Karjalainen 4:c449bead5cf3 179 */
Mika Karjalainen 4:c449bead5cf3 180 typedef struct network_layer_address_s
Mika Karjalainen 4:c449bead5cf3 181 {
Mika Karjalainen 4:c449bead5cf3 182 uint8_t border_router[16]; /**< ND Border Router Address */
Mika Karjalainen 4:c449bead5cf3 183 uint8_t prefix[8]; /**< Long64-bit Network ID */
Mika Karjalainen 4:c449bead5cf3 184 }network_layer_address_s;
Mika Karjalainen 4:c449bead5cf3 185
Mika Karjalainen 4:c449bead5cf3 186 /*!
Mika Karjalainen 4:c449bead5cf3 187 * \enum net_6lowpan_gp_address_mode_e
Mika Karjalainen 4:c449bead5cf3 188 * \brief 6LoWPAN stack address modes.
Mika Karjalainen 4:c449bead5cf3 189 */
Mika Karjalainen 4:c449bead5cf3 190
Mika Karjalainen 4:c449bead5cf3 191 typedef enum
Mika Karjalainen 4:c449bead5cf3 192 {
Mika Karjalainen 12:acef6f596835 193 NET_6LOWPAN_GP64_ADDRESS, /**< Interface will register only GP64 Address – DEFAULT */
Mika Karjalainen 4:c449bead5cf3 194 NET_6LOWPAN_GP16_ADDRESS, /**< Interface will register only GP16 Address */
Mika Karjalainen 12:acef6f596835 195 NET_6LOWPAN_MULTI_GP_ADDRESS, /**< Interface will register GP16 & GP64 Address’s */
Mika Karjalainen 4:c449bead5cf3 196 } net_6lowpan_gp_address_mode_e;
Mika Karjalainen 4:c449bead5cf3 197
Mika Karjalainen 4:c449bead5cf3 198
Mika Karjalainen 4:c449bead5cf3 199 /*!
Mika Karjalainen 4:c449bead5cf3 200 * \struct net_tls_psk_info_s
Mika Karjalainen 4:c449bead5cf3 201 * \brief TLS PSK info structure.
Mika Karjalainen 4:c449bead5cf3 202 */
Mika Karjalainen 4:c449bead5cf3 203 typedef struct net_tls_psk_info_s
Mika Karjalainen 4:c449bead5cf3 204 {
Mika Karjalainen 4:c449bead5cf3 205 uint32_t key_id; /**< PSK Key ID can be 0x01-0xffff, storage size is intentionally 32 bits */
Mika Karjalainen 4:c449bead5cf3 206 uint8_t key[16]; /**< 128-bit PSK Key */
Mika Karjalainen 4:c449bead5cf3 207 } net_tls_psk_info_s;
Mika Karjalainen 4:c449bead5cf3 208
Mika Karjalainen 4:c449bead5cf3 209 /*!
Mika Karjalainen 4:c449bead5cf3 210 * \struct net_link_layer_psk_security_info_s
Mika Karjalainen 4:c449bead5cf3 211 * \brief NETWORK PSK link key structure.
Mika Karjalainen 4:c449bead5cf3 212 */
Mika Karjalainen 4:c449bead5cf3 213 typedef struct
Mika Karjalainen 4:c449bead5cf3 214 {
Mika Karjalainen 4:c449bead5cf3 215 uint8_t key_id; /**< Link Layer PSK Key ID can be 0x01-0xff */
Mika Karjalainen 4:c449bead5cf3 216 uint8_t security_key[16]; /**< Link layer 128-bit PSK Key */
Mika Karjalainen 4:c449bead5cf3 217 } net_link_layer_psk_security_info_s;
Mika Karjalainen 4:c449bead5cf3 218
Mika Karjalainen 4:c449bead5cf3 219
Mika Karjalainen 4:c449bead5cf3 220 /*!
Mika Karjalainen 4:c449bead5cf3 221 * \struct arm_certificate_chain_entry_s
Mika Karjalainen 4:c449bead5cf3 222 * \brief Certificate chain structure.
Mika Karjalainen 4:c449bead5cf3 223 */
Mika Karjalainen 4:c449bead5cf3 224 typedef struct
Mika Karjalainen 4:c449bead5cf3 225 {
Mika Karjalainen 4:c449bead5cf3 226 uint8_t chain_length; /**< Certificate Chain length, indicate chain length */
Mika Karjalainen 4:c449bead5cf3 227 const uint8_t *cert_chain[4]; /**< Certificate Chain pointer List */
Mika Karjalainen 4:c449bead5cf3 228 uint16_t cert_len[4]; /**< Certificate length */
Mika Karjalainen 4:c449bead5cf3 229 const uint8_t *key_chain[4]; /**< Certificate private key */
Mika Karjalainen 4:c449bead5cf3 230 } arm_certificate_chain_entry_s;
Mika Karjalainen 4:c449bead5cf3 231
Mika Karjalainen 4:c449bead5cf3 232 /**
Mika Karjalainen 4:c449bead5cf3 233
Mika Karjalainen 4:c449bead5cf3 234 * /struct ns_keys_t
Mika Karjalainen 4:c449bead5cf3 235
Mika Karjalainen 4:c449bead5cf3 236 * /brief Struct for the network keys used by net_network_key_get
Mika Karjalainen 4:c449bead5cf3 237
Mika Karjalainen 4:c449bead5cf3 238 */
Mika Karjalainen 4:c449bead5cf3 239
Mika Karjalainen 4:c449bead5cf3 240 typedef struct ns_keys_t
Mika Karjalainen 4:c449bead5cf3 241
Mika Karjalainen 4:c449bead5cf3 242 {
Mika Karjalainen 4:c449bead5cf3 243 uint8_t previous_active_network_key[16]; /**< the key that is currently active when a new key is generated and activated */
Mika Karjalainen 4:c449bead5cf3 244 uint8_t previous_active_key_index; /**< the index associated to the current_active_network_key */
Mika Karjalainen 4:c449bead5cf3 245 uint8_t current_active_network_key[16]; /**< last generated and activated key */
Mika Karjalainen 4:c449bead5cf3 246 uint8_t current_active_key_index; /**< the index associated to the current_active_network_key */
Mika Karjalainen 4:c449bead5cf3 247 } ns_keys_t;
Mika Karjalainen 4:c449bead5cf3 248
Mika Karjalainen 4:c449bead5cf3 249
Mika Karjalainen 4:c449bead5cf3 250 /*!
Mika Karjalainen 4:c449bead5cf3 251 * \struct border_router_setup_s
Mika Karjalainen 4:c449bead5cf3 252 * \brief 6LoWPAN Border Router information structure.
Mika Karjalainen 4:c449bead5cf3 253 */
Mika Karjalainen 4:c449bead5cf3 254 typedef struct
Mika Karjalainen 4:c449bead5cf3 255 {
Mika Karjalainen 4:c449bead5cf3 256 uint8_t channel; /**< Channel 1-26 802.15.4 Radios */
Mika Karjalainen 4:c449bead5cf3 257 uint16_t mac_panid; /**< Link Layer PAN-id accepts only < 0xfffe */
Mika Karjalainen 4:c449bead5cf3 258 uint16_t mac_short_adr; /**< Define 802.15.4 short address if value is <0xffe that indicate that GP16 is activated at */
Mika Karjalainen 4:c449bead5cf3 259 uint8_t beacon_protocol_id; /**< ZigBeeIP uses always 2 */
Mika Karjalainen 4:c449bead5cf3 260 uint8_t network_id[16]; /**< network id 16-bytes, will be used at Beacon payload */
Mika Karjalainen 4:c449bead5cf3 261 uint8_t lowpan_nd_prefix[8]; /**< Define ND Default prefix, ABRO, DODAG ID, GP address*/
Mika Karjalainen 4:c449bead5cf3 262 uint16_t ra_life_time; /**< Define ND router lifetime in seconds Recommend value 180+. */
Mika Karjalainen 4:c449bead5cf3 263 uint16_t abro_version_num; /**< ND ABRO version number (0 when starting new ND setup) */
Mika Karjalainen 4:c449bead5cf3 264 } border_router_setup_s;
Mika Karjalainen 4:c449bead5cf3 265
Mika Karjalainen 4:c449bead5cf3 266 /**
Mika Karjalainen 4:c449bead5cf3 267 * \brief Init nanostack need set core idle call back.
Mika Karjalainen 4:c449bead5cf3 268 *
Mika Karjalainen 4:c449bead5cf3 269 * \param core_idle Function pointer for nanostack idle call back handler
Mika Karjalainen 4:c449bead5cf3 270 *
Mika Karjalainen 4:c449bead5cf3 271 * core_idle is a function pointer to the CPU idle time handler. CPU can be set to idle state or in sleep mode if supported by platform.
Mika Karjalainen 4:c449bead5cf3 272 * For skipping idle state handling, function can return null. Function first parameter can be as follows:
Mika Karjalainen 4:c449bead5cf3 273 * 1. EV_REAYDY_SLEEP then next second parameter tells max sleeptime in milliseconds then function should return sleep time end of the function
Mika Karjalainen 4:c449bead5cf3 274 * 2. EV_CORE_IDLE now cpu is safe to set to idle. Application will continue after next interrupt normally. Return anything is possible that case
Mika Karjalainen 4:c449bead5cf3 275 *
Mika Karjalainen 4:c449bead5cf3 276 * Reference Code for core idle call back function for :
Mika Karjalainen 4:c449bead5cf3 277 *
Mika Karjalainen 4:c449bead5cf3 278 * @code
Mika Karjalainen 4:c449bead5cf3 279 uint32_t app_ns_core_idle(uint8_t event, uint32_t sleep_time_ms)
Mika Karjalainen 4:c449bead5cf3 280 {
Mika Karjalainen 4:c449bead5cf3 281 uint32_t returned_slept_time = 0;
Mika Karjalainen 4:c449bead5cf3 282 if(event == EV_READY_TO_SLEEP)
Mika Karjalainen 4:c449bead5cf3 283 {
Mika Karjalainen 4:c449bead5cf3 284
Mika Karjalainen 4:c449bead5cf3 285 uint32_t wake_up_info = 0;
Mika Karjalainen 4:c449bead5cf3 286 uint8_t wakeup_bits = 0;
Mika Karjalainen 4:c449bead5cf3 287 //Hal sleep here
Mika Karjalainen 4:c449bead5cf3 288 //Returns time spent in sleep mode (milliseconds)
Mika Karjalainen 4:c449bead5cf3 289 returned_slept_time = hal_sleep(SLEEPMODE_WAKETIMER, sleep_time_ms, 1);
Mika Karjalainen 4:c449bead5cf3 290 //Initialize uart after sleeping
Mika Karjalainen 4:c449bead5cf3 291 debug_init(230400, 1);
Mika Karjalainen 4:c449bead5cf3 292 wake_up_info = (halGetWakeInfo());
Mika Karjalainen 4:c449bead5cf3 293 wakeup_bits = wake_up_info >> 24;
Mika Karjalainen 4:c449bead5cf3 294 if(wakeup_bits & 0x80)
Mika Karjalainen 4:c449bead5cf3 295 {
Mika Karjalainen 4:c449bead5cf3 296 if(wakeup_bits & 1)
Mika Karjalainen 4:c449bead5cf3 297 {
Mika Karjalainen 4:c449bead5cf3 298 debug("Valid SLPCOMPA WU\r\n");
Mika Karjalainen 4:c449bead5cf3 299 }
Mika Karjalainen 4:c449bead5cf3 300 else
Mika Karjalainen 4:c449bead5cf3 301 {
Mika Karjalainen 4:c449bead5cf3 302 net_host_enter_sleep_state_set(0);
Mika Karjalainen 4:c449bead5cf3 303 debug(" S1 wakeup disable sleeping state\r\n");
Mika Karjalainen 4:c449bead5cf3 304 }
Mika Karjalainen 4:c449bead5cf3 305 }
Mika Karjalainen 4:c449bead5cf3 306 }
Mika Karjalainen 4:c449bead5cf3 307 else // EV_CORE_IDLE
Mika Karjalainen 4:c449bead5cf3 308 {
Mika Karjalainen 4:c449bead5cf3 309 ATOMIC(halSleepWithOptions(SLEEPMODE_IDLE,0);)
Mika Karjalainen 4:c449bead5cf3 310 }
Mika Karjalainen 4:c449bead5cf3 311 return returned_slept_time;
Mika Karjalainen 4:c449bead5cf3 312 }
Mika Karjalainen 4:c449bead5cf3 313 * @endcode
Mika Karjalainen 4:c449bead5cf3 314 *
Mika Karjalainen 4:c449bead5cf3 315 * Reference Code for Border Router:
Mika Karjalainen 4:c449bead5cf3 316 *
Mika Karjalainen 4:c449bead5cf3 317 * @code
Mika Karjalainen 4:c449bead5cf3 318 uint32_t app_ns_core_idle(uint8_t event, uint32_t sleep_time)
Mika Karjalainen 4:c449bead5cf3 319 {
Mika Karjalainen 4:c449bead5cf3 320 //CPU in idle
Mika Karjalainen 4:c449bead5cf3 321 __WFI();
Mika Karjalainen 4:c449bead5cf3 322 return 0;
Mika Karjalainen 4:c449bead5cf3 323 }
Mika Karjalainen 4:c449bead5cf3 324 * @endcode
Mika Karjalainen 4:c449bead5cf3 325 * \return 0, Init OK
Mika Karjalainen 4:c449bead5cf3 326 * \return -1, Null Pointer parameter
Mika Karjalainen 4:c449bead5cf3 327 * \return ZIGBEE_IP_INVALID_PART, Platform is not valid to Run ZigBeeIP Library
Mika Karjalainen 4:c449bead5cf3 328 */
Mika Karjalainen 4:c449bead5cf3 329 extern int8_t net_init_core(void);
Mika Karjalainen 4:c449bead5cf3 330
Mika Karjalainen 4:c449bead5cf3 331
Mika Karjalainen 4:c449bead5cf3 332
Mika Karjalainen 4:c449bead5cf3 333 /**
Mika Karjalainen 4:c449bead5cf3 334 * \brief Create network interface base to IDLE state.
Mika Karjalainen 4:c449bead5cf3 335 * \param type Generates network interface type.
Mika Karjalainen 4:c449bead5cf3 336 * \param phy_driver_id Unique PHY device driver ID. PHY driver needs to be allocated first.
Mika Karjalainen 12:acef6f596835 337 * \param interface_name_ptr String pointer to interface name. Need to end to ‘\0’ character. Max length 32 characters including NULL at end.
Mika Karjalainen 4:c449bead5cf3 338 *
Mika Karjalainen 4:c449bead5cf3 339 * \return >=0 Interface ID (0-127). Application needs to save this information.
Mika Karjalainen 4:c449bead5cf3 340 * \return -1 Unsupported interface type.
Mika Karjalainen 4:c449bead5cf3 341 * \return -2 Driver is already associated to other interface.
Mika Karjalainen 4:c449bead5cf3 342 * \return -3 No memory for interface.
Mika Karjalainen 4:c449bead5cf3 343 */
Mika Karjalainen 4:c449bead5cf3 344 extern int8_t arm_nwk_interface_init(net_interface_type_e type, uint8_t phy_driver_id, char * interface_name_ptr);
Mika Karjalainen 4:c449bead5cf3 345
Mika Karjalainen 4:c449bead5cf3 346 /**
Mika Karjalainen 4:c449bead5cf3 347 * \brief Set network interface bootsrap setup.
Mika Karjalainen 4:c449bead5cf3 348 *
Mika Karjalainen 4:c449bead5cf3 349 * \param nwk_interface_id Network interface ID
Mika Karjalainen 4:c449bead5cf3 350 * \param bootstrap_mode Selected Bootstrap mode:
Mika Karjalainen 4:c449bead5cf3 351 * * NET_6LOWPAN_BORDER_ROUTER, Initialize Border router basic setup
Mika Karjalainen 4:c449bead5cf3 352 * * NET_6LOWPAN_ROUTER, Enable normal 6LoWPAN ND and RPL to bootstrap
Mika Karjalainen 4:c449bead5cf3 353 * * NET_6LOWPAN_HOST, Enable normal 6LoWPAN ND only to bootstrap
Mika Karjalainen 4:c449bead5cf3 354 * * NET_6LOWPAN_SLEEPY_HOST, Enable normal 6LoWPAN ND only to bootstrap
Mika Karjalainen 4:c449bead5cf3 355 *
Mika Karjalainen 4:c449bead5cf3 356 * \param enable_mle_protocol Value 0x01 Enable MLE protocol & Value 0x00 Disable MLE for bootstrap
Mika Karjalainen 4:c449bead5cf3 357 * \param br_setup Pointer for border Router basic setup only checked when bootstrap_mode is NET_6LOWPAN_BORDER_ROUTER.
Mika Karjalainen 4:c449bead5cf3 358 *
Mika Karjalainen 4:c449bead5cf3 359 * \return >=0 Bootstrap mode set OK.
Mika Karjalainen 4:c449bead5cf3 360 * \return -1 Unknown network ID.
Mika Karjalainen 4:c449bead5cf3 361 * \return -2 Unsupported bootstrap type in this library.
Mika Karjalainen 4:c449bead5cf3 362 * \return -3 No Memory for 6LoWPAN stack.
Mika Karjalainen 4:c449bead5cf3 363 * \return -4 Null pointer parameter
Mika Karjalainen 4:c449bead5cf3 364 */
Mika Karjalainen 4:c449bead5cf3 365 extern int8_t arm_nwk_interface_configure_6lowpan_bootstrap_set(int8_t nwk_interface_id, net_6lowpan_mode_e bootstrap_mode, uint8_t enable_mle_protocol);
Mika Karjalainen 4:c449bead5cf3 366
Mika Karjalainen 4:c449bead5cf3 367 /**
Mika Karjalainen 4:c449bead5cf3 368 * \brief Set configured network interface Global address mode (Border router bootstrap mode can't set this).
Mika Karjalainen 4:c449bead5cf3 369 *
Mika Karjalainen 4:c449bead5cf3 370 * \param nwk_interface_id Network interface ID
Mika Karjalainen 4:c449bead5cf3 371 * \param mode efine 6LoWPAN Global Address register mode::
Mika Karjalainen 4:c449bead5cf3 372 * * NET_6LOWPAN_GP64_ADDRESS, Interface register only GP64
Mika Karjalainen 4:c449bead5cf3 373 * * NET_6LOWPAN_GP16_ADDRESS, Interface register only GP16
Mika Karjalainen 12:acef6f596835 374 * * NET_6LOWPAN_MULTI_GP_ADDRESS, Interface register GP16 and GP64 address’s. GP16 is primary address and GP64 is secondary.
Mika Karjalainen 4:c449bead5cf3 375 *
Mika Karjalainen 4:c449bead5cf3 376 * \param short_address_base Short address base. If application defines value 0-0xffd 6LoWPAN try to register GP16 address using that address. 0xfffe and 0xffff will generate random 16-bit short address.
Mika Karjalainen 4:c449bead5cf3 377 * Border Router device will define here Short Address if it want to use that.
Mika Karjalainen 4:c449bead5cf3 378 * \param define_new_short_address_at_DAD This parameter is only checked when mode is not NET_6LOWPAN_GP64_ADDRESS and short_address_base is 0-0xffd. Recommend value is 1 that will enable automatic new address definition at Duplicate Address Detection(DAD). Value 0 will generate Duplicate Adreress Detection error for interface bootstrap.
Mika Karjalainen 4:c449bead5cf3 379 Border Router Device will not check that part.
Mika Karjalainen 4:c449bead5cf3 380 *
Mika Karjalainen 4:c449bead5cf3 381 * \return >=0 Bootstrap mode set OK.
Mika Karjalainen 4:c449bead5cf3 382 * \return -1 Unknown network ID.
Mika Karjalainen 4:c449bead5cf3 383 * \return -2 Illegal for Border Router
Mika Karjalainen 4:c449bead5cf3 384 * \return -3 No Memory for 6LoWPAN stack.
Mika Karjalainen 4:c449bead5cf3 385 */
Mika Karjalainen 4:c449bead5cf3 386 extern int8_t arm_nwk_6lowpan_gp_address_mode(int8_t nwk_interface_id, net_6lowpan_gp_address_mode_e mode, uint16_t short_address_base, uint8_t define_new_short_address_at_DAD);
Mika Karjalainen 4:c449bead5cf3 387
Mika Karjalainen 4:c449bead5cf3 388 extern int8_t arm_nwk_6lowpan_link_scan_paramameter_set(int8_t nwk_interface_id, uint32_t channel_mask, uint8_t scan_time);
Mika Karjalainen 4:c449bead5cf3 389
Mika Karjalainen 4:c449bead5cf3 390 extern int8_t arm_nwk_6lowpan_link_panid_filter_for_nwk_scan(int8_t nwk_interface_id, uint16_t pan_id_filter);
Mika Karjalainen 4:c449bead5cf3 391
Mika Karjalainen 4:c449bead5cf3 392 /**
Mika Karjalainen 4:c449bead5cf3 393 * \brief Get current used channel.
Mika Karjalainen 4:c449bead5cf3 394 *
Mika Karjalainen 4:c449bead5cf3 395 * \return 11-26 = Active channel
Mika Karjalainen 4:c449bead5cf3 396 * \return 0 = Radio is closed
Mika Karjalainen 4:c449bead5cf3 397 */
Mika Karjalainen 4:c449bead5cf3 398 extern uint8_t arm_net_get_current_channel(int8_t nwk_interface_id);
Mika Karjalainen 4:c449bead5cf3 399
Mika Karjalainen 4:c449bead5cf3 400 /**
Mika Karjalainen 4:c449bead5cf3 401 * \brief A function to read pan ID filter.
Mika Karjalainen 4:c449bead5cf3 402 * \return 16-bit value indicating a pan ID filter.
Mika Karjalainen 4:c449bead5cf3 403 */
Mika Karjalainen 4:c449bead5cf3 404 extern uint16_t arm_net_get_nwk_pan_id_filter(int8_t nwk_interface_id);
Mika Karjalainen 4:c449bead5cf3 405 /**
Mika Karjalainen 4:c449bead5cf3 406 * \brief Enable/Disable Network ID filter.
Mika Karjalainen 4:c449bead5cf3 407 *
Mika Karjalainen 4:c449bead5cf3 408 * \param nwk_interface_id Network interface ID.
Mika Karjalainen 4:c449bead5cf3 409 * \param nwk_id is a pointer a new network id filter NULL Disable filter.
Mika Karjalainen 4:c449bead5cf3 410 *
Mika Karjalainen 4:c449bead5cf3 411 * \return 0 on success.
Mika Karjalainen 4:c449bead5cf3 412 * \return -1 Unknown network ID.
Mika Karjalainen 4:c449bead5cf3 413 * \return -2 Interface Active.
Mika Karjalainen 4:c449bead5cf3 414 */
Mika Karjalainen 4:c449bead5cf3 415 extern int8_t arm_nwk_6lowpan_link_nwk_id_filter_for_nwk_scan(int8_t nwk_interface_id, uint8_t *nwk_id_filter);
Mika Karjalainen 4:c449bead5cf3 416 /**
Mika Karjalainen 4:c449bead5cf3 417 * \brief Enable/Disable Network protocol ID filter.
Mika Karjalainen 4:c449bead5cf3 418 *
Mika Karjalainen 4:c449bead5cf3 419 * \param nwk_interface_id Network interface ID.
Mika Karjalainen 4:c449bead5cf3 420 * \param protocol_ID is value which filter only supported network protocols (0= Zigbee1.x, 2= ZigBeeIP).
Mika Karjalainen 4:c449bead5cf3 421 *
Mika Karjalainen 4:c449bead5cf3 422 * \return 0 on success.
Mika Karjalainen 4:c449bead5cf3 423 * \return -1 Unknown network ID.
Mika Karjalainen 4:c449bead5cf3 424 * \return -2 Interface Active.
Mika Karjalainen 4:c449bead5cf3 425 */
Mika Karjalainen 4:c449bead5cf3 426 extern int8_t arm_nwk_6lowpan_link_protocol_id_filter_for_nwk_scan(int8_t nwk_interface_id, uint8_t protocol_ID);
Mika Karjalainen 4:c449bead5cf3 427
Mika Karjalainen 4:c449bead5cf3 428 /**
Mika Karjalainen 4:c449bead5cf3 429 * \brief Init & Configure interface security mode.
Mika Karjalainen 4:c449bead5cf3 430 *
Mika Karjalainen 4:c449bead5cf3 431 * \param nwk_interface_id Network interface ID.
Mika Karjalainen 4:c449bead5cf3 432 * \param mode define Link layer security mode.
Mika Karjalainen 4:c449bead5cf3 433 * NET_SEC_MODE_NO_LINK_SECURITY, No security
Mika Karjalainen 4:c449bead5cf3 434 * NET_SEC_MODE_PSK_LINK_SECURITY, Predefined PSK link layer key and ID
Mika Karjalainen 4:c449bead5cf3 435 * NET_SEC_MODE_PANA_LINK_SECURITY, Define Pana Bootstrap Network Authentication
Mika Karjalainen 4:c449bead5cf3 436 *
Mika Karjalainen 4:c449bead5cf3 437 * \param sec_level Define security level only will be checked when mode is not NET_SEC_MODE_NO_LINK_SECURITY
Mika Karjalainen 4:c449bead5cf3 438 * \param psk_key_info pointer for PSK link layer keys only checked when mode is NET_SEC_MODE_PSK_LINK_SECURITY
Mika Karjalainen 4:c449bead5cf3 439 *
Mika Karjalainen 4:c449bead5cf3 440 * \return 0 on success.
Mika Karjalainen 4:c449bead5cf3 441 */
Mika Karjalainen 4:c449bead5cf3 442
Mika Karjalainen 4:c449bead5cf3 443 extern int8_t arm_nwk_link_layer_security_mode(int8_t nwk_interface_id, net_6lowpan_link_layer_sec_mode_e mode, uint8_t sec_level, net_link_layer_psk_security_info_s *psk_key_info);
Mika Karjalainen 4:c449bead5cf3 444 /**
Mika Karjalainen 4:c449bead5cf3 445 * \brief Init & Configure interface PANA network Client.
Mika Karjalainen 4:c449bead5cf3 446 *
Mika Karjalainen 4:c449bead5cf3 447 * \param nwk_interface_id Network interface ID.
Mika Karjalainen 4:c449bead5cf3 448 * \param cipher_mode define TLS 1.2 Cipher mode PSK, ECC or both.
Mika Karjalainen 4:c449bead5cf3 449 * \param psk_key_id PSK KEY id for PSK Setup
Mika Karjalainen 4:c449bead5cf3 450 *
Mika Karjalainen 4:c449bead5cf3 451 * \return 0 on success.
Mika Karjalainen 4:c449bead5cf3 452 * \return -1 Unknown network ID.
Mika Karjalainen 4:c449bead5cf3 453 * \return -2 Interface Active.
Mika Karjalainen 4:c449bead5cf3 454 */
Mika Karjalainen 4:c449bead5cf3 455 extern int8_t arm_pana_client_library_init(int8_t nwk_interface_id, net_tls_cipher_e cipher_mode, uint32_t psk_key_id);
Mika Karjalainen 4:c449bead5cf3 456
Mika Karjalainen 4:c449bead5cf3 457 /**
Mika Karjalainen 4:c449bead5cf3 458 * \brief Init & Configure interface PANA network Server.
Mika Karjalainen 4:c449bead5cf3 459 *
Mika Karjalainen 4:c449bead5cf3 460 * \param nwk_interface_id Network interface ID.
Mika Karjalainen 4:c449bead5cf3 461 * \param cipher_mode define TLS 1.2 Cipher mode PSK, ECC or both.
Mika Karjalainen 4:c449bead5cf3 462 * \param key_material pointer
Mika Karjalainen 4:c449bead5cf3 463 *
Mika Karjalainen 4:c449bead5cf3 464 * \return 0 on success.
Mika Karjalainen 4:c449bead5cf3 465 * \return -1 Unknown network ID.
Mika Karjalainen 4:c449bead5cf3 466 * \return -2 Interface Active.
Mika Karjalainen 4:c449bead5cf3 467 */
Mika Karjalainen 4:c449bead5cf3 468 extern int8_t arm_pana_server_library_init(int8_t nwk_interface_id, net_tls_cipher_e cipher_mod, uint8_t *key_material, uint32_t time_period_before_activate_key);
Mika Karjalainen 4:c449bead5cf3 469
Mika Karjalainen 4:c449bead5cf3 470 /**
Mika Karjalainen 4:c449bead5cf3 471 * \brief Client Manually Pana client key Pull for test purpose.
Mika Karjalainen 4:c449bead5cf3 472 *
Mika Karjalainen 4:c449bead5cf3 473 * \param nwk_interface_id Network interface ID.
Mika Karjalainen 4:c449bead5cf3 474 *
Mika Karjalainen 4:c449bead5cf3 475 * \return 0 on success.
Mika Karjalainen 4:c449bead5cf3 476 * \return -1 Unknown network ID.
Mika Karjalainen 4:c449bead5cf3 477 */
Mika Karjalainen 4:c449bead5cf3 478 extern int8_t arm_pana_client_key_pull(int8_t nwk_interface_id);
Mika Karjalainen 4:c449bead5cf3 479
Mika Karjalainen 4:c449bead5cf3 480
Mika Karjalainen 4:c449bead5cf3 481 /**
Mika Karjalainen 4:c449bead5cf3 482 * \brief Trig Network Key Update process
Mika Karjalainen 4:c449bead5cf3 483 *
Mika Karjalainen 4:c449bead5cf3 484 * Function will deliver new network key to all ZigBee Routers which have registered GP address to server.
Mika Karjalainen 4:c449bead5cf3 485 * Function call always trig new key-id. Key delivery will be started between 300ms interval between nodes.
Mika Karjalainen 4:c449bead5cf3 486 * This function does not cause any traffic if Server does not have any Routers device sessions.
Mika Karjalainen 4:c449bead5cf3 487 *
Mika Karjalainen 4:c449bead5cf3 488 *\param network_key_material pointer to new 128-bit key material or NULL generate random key.
Mika Karjalainen 4:c449bead5cf3 489 *
Mika Karjalainen 4:c449bead5cf3 490 * \return 0 Key Update process OK
Mika Karjalainen 4:c449bead5cf3 491 * \return -1 Pana server is not Initialized yet
Mika Karjalainen 4:c449bead5cf3 492 * \return -2 Old Key Update still active
Mika Karjalainen 4:c449bead5cf3 493 * \return -3 Memory allocation fail
Mika Karjalainen 4:c449bead5cf3 494 */
Mika Karjalainen 4:c449bead5cf3 495 extern int8_t arm_pana_server_key_update(int8_t nwk_interface_id, uint8_t * network_key_material);
Mika Karjalainen 4:c449bead5cf3 496
Mika Karjalainen 4:c449bead5cf3 497 extern int8_t arm_pana_activate_new_key(int8_t nwk_interface_id);
Mika Karjalainen 4:c449bead5cf3 498
Mika Karjalainen 4:c449bead5cf3 499
Mika Karjalainen 4:c449bead5cf3 500 /**
Mika Karjalainen 4:c449bead5cf3 501 * \brief Read Pana server security key material
Mika Karjalainen 4:c449bead5cf3 502 *
Mika Karjalainen 4:c449bead5cf3 503 * previous_active_network_key is information is only valid when current_active_key_index is bigger than 1.
Mika Karjalainen 4:c449bead5cf3 504 *
Mika Karjalainen 4:c449bead5cf3 505 *\param key pointer for store keymaterial information.
Mika Karjalainen 4:c449bead5cf3 506 *
Mika Karjalainen 4:c449bead5cf3 507 * \return 0 Key Read OK
Mika Karjalainen 4:c449bead5cf3 508 * \return -1 Pana server key material not available
Mika Karjalainen 4:c449bead5cf3 509 */
Mika Karjalainen 4:c449bead5cf3 510 extern int8_t arm_network_key_get(int8_t interface_id, ns_keys_t *key);
Mika Karjalainen 4:c449bead5cf3 511 /**
Mika Karjalainen 4:c449bead5cf3 512 * \brief Start network interface bootstrap.
Mika Karjalainen 4:c449bead5cf3 513 *
Mika Karjalainen 4:c449bead5cf3 514 * \param nwk_interface_id Network interface ID
Mika Karjalainen 4:c449bead5cf3 515 *
Mika Karjalainen 4:c449bead5cf3 516 *
Mika Karjalainen 4:c449bead5cf3 517 * \return >=0 Bootstrap Start OK.
Mika Karjalainen 4:c449bead5cf3 518 * \return -1 Unknown network ID.
Mika Karjalainen 4:c449bead5cf3 519 * \return -2 Not configured.
Mika Karjalainen 4:c449bead5cf3 520 * \return -3 Active.
Mika Karjalainen 4:c449bead5cf3 521 */
Mika Karjalainen 4:c449bead5cf3 522 extern int8_t arm_nwk_interface_up(int8_t nwk_interface_id);
Mika Karjalainen 4:c449bead5cf3 523 /**
Mika Karjalainen 4:c449bead5cf3 524 * \brief Stop and set interface to idle.
Mika Karjalainen 4:c449bead5cf3 525 *
Mika Karjalainen 4:c449bead5cf3 526 * \param nwk_interface_id Network interface ID
Mika Karjalainen 4:c449bead5cf3 527 *
Mika Karjalainen 4:c449bead5cf3 528 *
Mika Karjalainen 4:c449bead5cf3 529 * \return >=0 Process OK.
Mika Karjalainen 4:c449bead5cf3 530 * \return -1 Unknown network ID.
Mika Karjalainen 4:c449bead5cf3 531 * \return -3 Not ActiveActive.
Mika Karjalainen 4:c449bead5cf3 532 */
Mika Karjalainen 4:c449bead5cf3 533 extern int8_t arm_nwk_interface_down(int8_t nwk_interface_id);
Mika Karjalainen 4:c449bead5cf3 534
Mika Karjalainen 4:c449bead5cf3 535 /**
Mika Karjalainen 4:c449bead5cf3 536 * \brief Define Border Router MAC & 6LoWPAN ND setup for selected interface
Mika Karjalainen 4:c449bead5cf3 537 *
Mika Karjalainen 4:c449bead5cf3 538 * \param nwk_interface_id Network interface ID
Mika Karjalainen 4:c449bead5cf3 539 * \param border_router_setup_ptr Pointer to MAC & 6LoWPAN ND setup
Mika Karjalainen 4:c449bead5cf3 540 *
Mika Karjalainen 4:c449bead5cf3 541 */
Mika Karjalainen 4:c449bead5cf3 542 extern int8_t arm_nwk_6lowpan_border_router_init(int8_t nwk_interface_id, border_router_setup_s *border_router_setup_ptr);
Mika Karjalainen 4:c449bead5cf3 543 /**
Mika Karjalainen 4:c449bead5cf3 544 * \brief Add context at 6Lowpan interface configure state
Mika Karjalainen 4:c449bead5cf3 545 *
Mika Karjalainen 4:c449bead5cf3 546 *
Mika Karjalainen 4:c449bead5cf3 547 * \param Network Interface ID
Mika Karjalainen 4:c449bead5cf3 548 * \param c_id_flags bit 5 indicate compress support and bit 0-3 context ID
Mika Karjalainen 4:c449bead5cf3 549 * \param context_len Context length in bits need to be 64-128
Mika Karjalainen 4:c449bead5cf3 550 * \param ttl contexts time to live value in minutes
Mika Karjalainen 4:c449bead5cf3 551 * \param context_ptr pointer to full 128-bit memory area.
Mika Karjalainen 4:c449bead5cf3 552 *
Mika Karjalainen 4:c449bead5cf3 553 * \return 0 context update OK
Mika Karjalainen 4:c449bead5cf3 554 * \return -1 No memory for new Context
Mika Karjalainen 4:c449bead5cf3 555 * \return -2 Border Router base not allocated
Mika Karjalainen 4:c449bead5cf3 556 * \return -3 Given parameter fail (c_id_flags > 0x1f or contex_len < 64)
Mika Karjalainen 4:c449bead5cf3 557 * \
Mika Karjalainen 4:c449bead5cf3 558 */
Mika Karjalainen 4:c449bead5cf3 559 extern int8_t arm_nwk_6lowpan_border_router_context_update(int8_t nwk_interface_id, uint8_t c_id_flags, uint8_t context_len, uint16_t ttl, uint8_t *context_ptr);
Mika Karjalainen 4:c449bead5cf3 560 /**
Mika Karjalainen 4:c449bead5cf3 561 * \brief Update Run time configured context
Mika Karjalainen 4:c449bead5cf3 562 *
Mika Karjalainen 4:c449bead5cf3 563 * Function can change contexts Compress state or Time to live value.
Mika Karjalainen 4:c449bead5cf3 564 * Function will trig New ABRO version number, which indicates that ND parameters are updated.
Mika Karjalainen 4:c449bead5cf3 565 *
Mika Karjalainen 4:c449bead5cf3 566 * \param Network Interface ID
Mika Karjalainen 4:c449bead5cf3 567 * \param c_id context ID stack will check first 4 bits , supported values 0-15
Mika Karjalainen 4:c449bead5cf3 568 * \param compress_mode 0=Compress disabled otherwise compress enabled
Mika Karjalainen 4:c449bead5cf3 569 * \param ttl contexts time to live value in minutes
Mika Karjalainen 4:c449bead5cf3 570 *
Mika Karjalainen 4:c449bead5cf3 571 * \return 0 Update OK
Mika Karjalainen 4:c449bead5cf3 572 * \return -1 Update fail by Router state
Mika Karjalainen 4:c449bead5cf3 573 *
Mika Karjalainen 4:c449bead5cf3 574 */
Mika Karjalainen 4:c449bead5cf3 575 extern int8_t arm_nwk_6lowpan_border_router_context_parameter_update(int8_t nwk_interface_id, uint8_t c_id, uint8_t compress_mode, uint16_t ttl);
Mika Karjalainen 4:c449bead5cf3 576 /**
Mika Karjalainen 4:c449bead5cf3 577 * \brief Delete Allocated Context by id
Mika Karjalainen 4:c449bead5cf3 578 *
Mika Karjalainen 4:c449bead5cf3 579 * \param Network Interface ID
Mika Karjalainen 4:c449bead5cf3 580 * \param c_id 4-bit context id which will be deleted
Mika Karjalainen 4:c449bead5cf3 581 *
Mika Karjalainen 4:c449bead5cf3 582 * \return 0 Context Delete OK.
Mika Karjalainen 4:c449bead5cf3 583 * \return -1 Delete process fail.
Mika Karjalainen 4:c449bead5cf3 584 */
Mika Karjalainen 4:c449bead5cf3 585 extern int8_t arm_nwk_6lowpan_border_router_context_remove_by_id(int8_t nwk_interface_id, uint8_t c_id);
Mika Karjalainen 4:c449bead5cf3 586 /**
Mika Karjalainen 4:c449bead5cf3 587 * \brief Update ND ABRO version number
Mika Karjalainen 4:c449bead5cf3 588 *
Mika Karjalainen 4:c449bead5cf3 589 * \param Network Interface ID
Mika Karjalainen 4:c449bead5cf3 590 *
Mika Karjalainen 4:c449bead5cf3 591 * \return 0 ABRO version update OK
Mika Karjalainen 4:c449bead5cf3 592 * \return -1 ABRO update fail( Interface is not Up yet or Border Router base is not allocated)
Mika Karjalainen 4:c449bead5cf3 593 */
Mika Karjalainen 4:c449bead5cf3 594 extern int8_t arm_nwk_6lowpan_border_router_configure_push(int8_t nwk_interface_id);
Mika Karjalainen 4:c449bead5cf3 595
Mika Karjalainen 4:c449bead5cf3 596 extern int8_t arm_nwk_6lowpan_border_route_nd_default_prefix_timeout_set(int8_t nwk_interface_id, uint32_t time);
Mika Karjalainen 4:c449bead5cf3 597
Mika Karjalainen 4:c449bead5cf3 598 /**
Mika Karjalainen 4:c449bead5cf3 599 * \brief A function to read network layer configurations.
Mika Karjalainen 4:c449bead5cf3 600 * \param network_params is a pointer to the structure to where the network layer configs are written to.
Mika Karjalainen 4:c449bead5cf3 601 * \return 0 on success.
Mika Karjalainen 4:c449bead5cf3 602 * \return -1 if PAN coordinator is not known.
Mika Karjalainen 4:c449bead5cf3 603 */
Mika Karjalainen 4:c449bead5cf3 604 int8_t arm_nwk_param_read(int8_t interface_id, link_layer_setups_s * network_params);
Mika Karjalainen 4:c449bead5cf3 605
Mika Karjalainen 4:c449bead5cf3 606
Mika Karjalainen 4:c449bead5cf3 607 /**
Mika Karjalainen 4:c449bead5cf3 608 * \brief A function to read MAC PAN-ID, Short address & EUID64
Mika Karjalainen 4:c449bead5cf3 609 * \param mac_params is a pointer to the structure to where the mac address are written to.
Mika Karjalainen 4:c449bead5cf3 610 * \return 0 on success.
Mika Karjalainen 4:c449bead5cf3 611 * \return -1 .
Mika Karjalainen 4:c449bead5cf3 612 */
Mika Karjalainen 4:c449bead5cf3 613 int8_t arm_nwk_mac_address_read(int8_t interface_id, link_layer_address_s * mac_params);
Mika Karjalainen 4:c449bead5cf3 614
Mika Karjalainen 4:c449bead5cf3 615
Mika Karjalainen 4:c449bead5cf3 616 /**
Mika Karjalainen 4:c449bead5cf3 617 * \brief A function to read 6LoWPAN ND border router address and NWK prefix
Mika Karjalainen 4:c449bead5cf3 618 * \param mac_params is a pointer to the structure to where the mac address are written to.
Mika Karjalainen 4:c449bead5cf3 619 * \return 0 on success.
Mika Karjalainen 4:c449bead5cf3 620 * \return -1 .
Mika Karjalainen 4:c449bead5cf3 621 */
Mika Karjalainen 4:c449bead5cf3 622 int8_t arm_nwk_nd_address_read(int8_t interface_id, network_layer_address_s * nd_params);
Mika Karjalainen 4:c449bead5cf3 623
Mika Karjalainen 4:c449bead5cf3 624
Mika Karjalainen 4:c449bead5cf3 625 /**
Mika Karjalainen 4:c449bead5cf3 626 * \brief A function to read networking address informations.
Mika Karjalainen 4:c449bead5cf3 627 * \param addr_id identifies the address information type to be read.
Mika Karjalainen 4:c449bead5cf3 628 * \param address is a pointer to a structure to where the address information is written to.
Mika Karjalainen 4:c449bead5cf3 629 * \return 0 on success, -1 on failure.
Mika Karjalainen 4:c449bead5cf3 630 */
Mika Karjalainen 4:c449bead5cf3 631 extern int8_t arm_net_address_get(int8_t nwk_interface_id, net_address_t addr_id, uint8_t *address);
Mika Karjalainen 4:c449bead5cf3 632
Mika Karjalainen 4:c449bead5cf3 633 /** Border Router ND NVM update types */
Mika Karjalainen 4:c449bead5cf3 634 #define ND_PROXY_CONTEXT_NVM_UPDATE 0 /* ND Context Update, 20 bytes data behind pointer */
Mika Karjalainen 4:c449bead5cf3 635 #define ND_PROXY_CONTEXT_FLAGS_NVM_UPDATE 1 /* ND Context Update flags update */
Mika Karjalainen 4:c449bead5cf3 636 #define ND_PROXY_CONTEXT_NVM_REMOVE 2 /* ND Context Removed */
Mika Karjalainen 4:c449bead5cf3 637 #define ND_PROXY_PREFIX_NVM_UPDATE 3 /* ND Prefix Update */
Mika Karjalainen 4:c449bead5cf3 638 #define ND_PROXY_ABRO_VERSION_NVM_UPDATE 4 /* ND ABRO version updated */
Mika Karjalainen 4:c449bead5cf3 639 /**
Mika Karjalainen 4:c449bead5cf3 640 * \brief Border Router ND setup NVM update callback set
Mika Karjalainen 4:c449bead5cf3 641 *
Mika Karjalainen 4:c449bead5cf3 642 * \param passed_fptr function pointer to ND NVM update process
Mika Karjalainen 4:c449bead5cf3 643 *
Mika Karjalainen 4:c449bead5cf3 644 * \return 0 ND NVM operation Init OK.
Mika Karjalainen 4:c449bead5cf3 645 * \return -1 No memory for NVM buffer.
Mika Karjalainen 4:c449bead5cf3 646 */
Mika Karjalainen 4:c449bead5cf3 647 extern int8_t border_router_nd_nvm_callback_set(void (*passed_fptr)(uint8_t ,uint8_t *));
Mika Karjalainen 4:c449bead5cf3 648 /**
Mika Karjalainen 4:c449bead5cf3 649 * \brief Load context from NVM at ZigBeeIP interface configure state
Mika Karjalainen 4:c449bead5cf3 650 *
Mika Karjalainen 4:c449bead5cf3 651 *
Mika Karjalainen 4:c449bead5cf3 652 * \param Network Interface ID
Mika Karjalainen 4:c449bead5cf3 653 * \param context_data pointer to proper builded 20 bytes update array.
Mika Karjalainen 4:c449bead5cf3 654 *
Mika Karjalainen 4:c449bead5cf3 655 * \return 0 context reload OK
Mika Karjalainen 4:c449bead5cf3 656 * \return <0 Load fail.
Mika Karjalainen 4:c449bead5cf3 657 */
Mika Karjalainen 4:c449bead5cf3 658 extern int8_t arm_nwk_6lowpan_border_router_nd_context_load(int8_t nwk_interface_id, uint8_t * contex_data); //NVM
Mika Karjalainen 4:c449bead5cf3 659
Mika Karjalainen 4:c449bead5cf3 660 extern int8_t arm_bootstrap_certificate_chain_set(arm_certificate_chain_entry_s *chain_info);
Mika Karjalainen 4:c449bead5cf3 661 extern int8_t arm_network_certificate_chain_set(arm_certificate_chain_entry_s *chain_info);
Mika Karjalainen 4:c449bead5cf3 662 extern int8_t arm_transport_certificate_chain_set(arm_certificate_chain_entry_s *chain_info);
Mika Karjalainen 4:c449bead5cf3 663
Mika Karjalainen 4:c449bead5cf3 664 /**
Mika Karjalainen 4:c449bead5cf3 665 * \brief Get the library version information.
Mika Karjalainen 4:c449bead5cf3 666 *
Mika Karjalainen 4:c449bead5cf3 667 * \param *ptr Pointer where the data is stored. Required size is 20 bytes.
Mika Karjalainen 4:c449bead5cf3 668 *
Mika Karjalainen 4:c449bead5cf3 669 *
Mika Karjalainen 4:c449bead5cf3 670 * The array containing the version information has the following structure.
Mika Karjalainen 4:c449bead5cf3 671 *
Mika Karjalainen 4:c449bead5cf3 672 * | Platform type | Version | Build ID |
Mika Karjalainen 4:c449bead5cf3 673 * | :-----------: | :----------------: |
Mika Karjalainen 4:c449bead5cf3 674 * | 1 byte | 1 byte | 4 bytes |
Mika Karjalainen 4:c449bead5cf3 675 *
Mika Karjalainen 4:c449bead5cf3 676 * Example how to read library version information is described below:
Mika Karjalainen 4:c449bead5cf3 677 *
Mika Karjalainen 4:c449bead5cf3 678 * @code
Mika Karjalainen 4:c449bead5cf3 679 uint8_t i;
Mika Karjalainen 4:c449bead5cf3 680 uint8_t app_version_info[6];
Mika Karjalainen 4:c449bead5cf3 681 net_get_version_information(app_version_info);
Mika Karjalainen 4:c449bead5cf3 682 debug("Platform Type: ");
Mika Karjalainen 4:c449bead5cf3 683 debug_hex(app_version_info[0]);
Mika Karjalainen 4:c449bead5cf3 684 debug(", Version: ");
Mika Karjalainen 4:c449bead5cf3 685 debug_hex(app_version_info[1]);
Mika Karjalainen 4:c449bead5cf3 686 debug(" ,Number:0x");
Mika Karjalainen 4:c449bead5cf3 687 for(i=2; i<6; i++)
Mika Karjalainen 4:c449bead5cf3 688 {
Mika Karjalainen 4:c449bead5cf3 689 debug_hex(app_version_info[i]);
Mika Karjalainen 4:c449bead5cf3 690 }
Mika Karjalainen 4:c449bead5cf3 691 debug("\r\n");
Mika Karjalainen 4:c449bead5cf3 692 * @endcode
Mika Karjalainen 4:c449bead5cf3 693 *
Mika Karjalainen 4:c449bead5cf3 694 */
Mika Karjalainen 4:c449bead5cf3 695 extern void net_get_version_information(uint8_t *ptr);
jusu_81 11:1b7aaf37a131 696 #ifdef __cplusplus
jusu_81 11:1b7aaf37a131 697 }
jusu_81 11:1b7aaf37a131 698 #endif
Mika Karjalainen 4:c449bead5cf3 699 #endif /* NET_INTERFACE_H_ */