1 /* 2 * Copyright (C) 2019-2020 Alibaba Group Holding Limited 3 */ 4 5 #ifndef __MESH_PROVISIONER_H_ 6 #define __MESH_PROVISIONER_H_ 7 8 9 #define DEVICE_NAME_MAX_LENGTH 28 10 #define CID_NVAL 0xFFFF 11 #define DEF_MAX_PROV_RETRY 3 12 13 14 typedef struct { 15 uint8_t uuid[16]; 16 uint8_t dev_addr[6]; 17 uint8_t addr_type; 18 uint16_t prim_unicast; 19 uint16_t oob_info; 20 uint16_t net_idx; 21 uint8_t element_num; 22 uint8_t bearer; 23 uint8_t flags; 24 uint32_t iv_index; 25 uint8_t *node_name; 26 } mesh_node_t; 27 28 29 typedef enum { 30 BT_MESH_EVENT_RECV_UNPROV_DEV_ADV, 31 BT_MESH_EVENT_PROV_COMP, 32 BT_MESH_EVENT_FOUND_DEV_TIMEOUT, 33 BT_MESH_EVENT_PROV_FAILD, 34 BT_MESH_EVENT_OOB_INPUT_NUM, 35 BT_MESH_EVENT_OOB_INPUT_STRING, 36 BT_MESH_EVENT_OOB_INPUT_STATIC_OOB, 37 } mesh_provisioner_event_en; 38 39 40 41 typedef void (*provisioner_cb)(mesh_provisioner_event_en event, void *p_arg); 42 43 typedef struct { 44 uint8_t *uuid; 45 uint8_t uuid_length; 46 uint8_t filter_start; 47 } uuid_filter_t; 48 49 typedef struct { 50 uint16_t unicast_addr_local; 51 uint16_t unicast_addr_start; 52 uint8_t attention_time; 53 provisioner_cb cb; 54 } provisioner_config_t; 55 56 typedef struct { 57 const struct bt_mesh_provisioner *provisioner; 58 } ble_mesh_provisioner_t; 59 60 int ble_mesh_provisioner_init(provisioner_config_t *param); 61 62 int ble_mesh_provisioner_enable(); 63 64 int ble_mesh_provisioner_disable(); 65 66 int ble_mesh_provisioner_dev_filter(uint8_t enable, uuid_filter_t *filter); 67 68 int ble_mesh_provisioner_show_dev(uint8_t enable, uint32_t timeout); 69 70 int ble_mesh_provisioner_dev_add(mesh_node_t *node, uint8_t add_appkey); 71 72 int ble_mesh_provisioner_get_add_appkey_flag(u16_t unicast_addr); 73 74 int ble_mesh_provisioner_dev_del(uint8_t addr[6], uint8_t addr_type, uint8_t uuid[16]); 75 76 int ble_mesh_provisioner_OOB_input_num(uint32_t num); 77 78 int ble_mesh_provisioner_OOB_input_string(const char *str); 79 80 int ble_mesh_provisioner_static_OOB_set(const uint8_t *oob, uint16_t oob_size); 81 82 mesh_node_t *ble_mesh_provisioner_get_node_info(u16_t unicast_addr); 83 84 const ble_mesh_provisioner_t *ble_mesh_provisioner_get_provisioner_data(); 85 86 #endif 87 88