1 #include "prf_defs.h" 2 /* 3 * SPDX-FileCopyrightText: 2015-2021 Espressif Systems (Shanghai) CO LTD 4 * 5 * SPDX-License-Identifier: Apache-2.0 6 */ 7 8 9 #if (BUT_PROFILE_CFG) 10 #include "common/bt_target.h" 11 #include "stack/gatt_api.h" 12 #include "stack/gattdefs.h" 13 #include "esp_gatt_api.h" 14 15 #define KEY_SUCCESS GATT_SUCCESS 16 #define KEY_ILLEGAL_PARAM GATT_ILLEGAL_PARAMETER 17 #define KEY_NO_RESOURCES GATT_NO_RESOURCES 18 19 //define the key serivce uuid 20 #define ATT_SVC_BUTTON 0xFFFF 21 //define the key Char uuid 22 #define ATT_CHAR_BUTTON_WIT 0xFF01 23 #define ATT_CHAR_BUTTON_NTF 0xFF02 24 25 #define BUTTON_PRESS_NTF_CFG 0x01 26 27 #define BUTTON_VAL_MAX_LEN (10) 28 29 #define BUTT_MAX_APPS GATT_CL_MAX_LCB 30 31 #define BUT_MAX_STRING_DATA 7 32 33 typedef void (*but_prf_cb_t)(uint8_t app_id, uint8_t event, uint16_t len, uint8_t *value); 34 35 #ifndef BUT_MAX_INT_NUM 36 #define BUT_MAX_INT_NUM 4 37 #endif 38 39 enum { 40 RECEIVE_NET_PASSWD_EVT, 41 RECEIVE_NET_SSD_EVT, 42 RECEIVE_EVT_MAX 43 }; 44 45 /// button Service Attributes Indexes 46 enum { 47 KEY_IDX_SVC, 48 KEY_IDX_BUTTON_WIT_CHAR, 49 KEY_IDX_BUTTON_WIT_VAL, 50 KEY_IDX_BUTTON_NTF_CHAR, 51 KEY_IDX_BUTTON_NTF_VAL, 52 KEY_IDX_BUTTON_NTF_CFG, 53 54 KEY_IDX_NB, 55 }; 56 57 typedef struct { 58 BD_ADDR remote_bda; 59 BOOLEAN need_rsp; 60 uint16_t clt_cfg; 61 } but_write_data_t; 62 63 typedef struct { 64 BOOLEAN in_use; 65 BOOLEAN congest; 66 uint16_t conn_id; 67 BOOLEAN connected; 68 BD_ADDR remote_bda; 69 uint32_t trans_id; 70 uint8_t cur_srvc_id; 71 72 } but_clcb_t; 73 74 75 typedef struct { 76 uint8_t app_id; 77 uint16_t but_wirt_hdl; 78 uint16_t but_ntf_hdl; 79 uint16_t but_cfg_hdl; 80 81 but_prf_cb_t p_cback; 82 83 } but_inst_t; 84 85 86 /* service engine control block */ 87 typedef struct { 88 but_clcb_t clcb; /* connection link*/ 89 esp_gatt_if_t gatt_if; 90 BOOLEAN enabled; 91 BOOLEAN is_primery; 92 but_inst_t button_inst; 93 uint8_t inst_id; 94 } button_env_cb_t; 95 96 void Button_CreateService(void); 97 98 but_clcb_t *button_env_clcb_alloc(uint16_t conn_id, BD_ADDR bda); 99 100 uint16_t button_env_find_conn_id_by_bd_adddr(BD_ADDR bda); 101 102 BOOLEAN button_env_clcb_dealloc(uint16_t conn_id); 103 104 esp_gatt_status_t button_init(but_prf_cb_t call_back); 105 106 void button_disable(uint16_t connid); 107 108 void button_msg_notify(uint16_t len, uint8_t *button_msg); 109 110 extern button_env_cb_t button_cb_env; 111 112 #endif ///BUT_PROFILE_CFG 113