APPL_TRACE_ERROR("Unable to start app.: Unknown interface =%d",p_msg->int_start_if.client_if );
}
}
+
/*******************************************************************************
**
** Function bta_gattc_deregister
tBTA_GATTC_RCB *p_clreg;
BOOLEAN rt = TRUE;
#if BTA_GATT_DEBUG == TRUE
- APPL_TRACE_DEBUG("bta_gattc_hdl_event: Event [%s]", gattc_evt_code(p_msg->event));
+ APPL_TRACE_DEBUG("bta_gattc_hdl_event: Event [%s]\n", gattc_evt_code(p_msg->event));
#endif
switch (p_msg->event)
{
}
else
{
- APPL_TRACE_DEBUG("Ignore unknown conn ID: %d", p_msg->layer_specific);
+ APPL_TRACE_DEBUG("Ignore unknown conn ID: %d\n", p_msg->layer_specific);
}
break;
** Returns True the deallocation is successful
**
*******************************************************************************/
-/*
+
BOOLEAN button_env_clcb_dealloc(UINT16 conn_id)
{
UINT8 i_clcb = 0;
tBUT_CLCB *p_clcb = NULL;
- for(i_clcb = 0, p_clcb = &button_cb_env.clcb; i_clcb < BUTT_MAX_APPS; i_clcb++, p_clcb++)
+ for(i_clcb = 0, p_clcb = &button_cb_env.clcb; i_clcb < 1; i_clcb++, p_clcb++)
{
if(p_clcb->in_use && p_clcb->connected && (p_clcb->conn_id == conn_id))
{
- unsigned j;
- for(j = 0; j < ARRAY_SIZE(p_clcb->button_value.data_string);j++)
- {
- if(p_clcb->button_value.data_string[j])
- {
- GKI_freebuf(p_clcb->button_value.data_string[j]);
- }
- }
memset(p_clcb, 0, sizeof(tBUT_CLCB));
return TRUE;
}
}
return FALSE;
-}*/
-
+}
/*******************************************************************************
**
return GATT_SUCCESS;
}
+void button_disable(UINT16 connid)
+{
+ button_env_clcb_dealloc(connid);
+}
+
+
void button_msg_notify(UINT8 len, UINT8 *button_msg)
{
BOOLEAN conn_status = button_cb_env.clcb.connected;
tGATT_STATUS button_init(tBU_CBACK *call_back);
+void button_disable(UINT16 connid);
+
void button_msg_notify(UINT8 len, UINT8 *button_msg);
extern tBUTTON_CB_ENV button_cb_env;
WX_IDX_AIRSYNC_READ_VAL,\r
WX_IDX_AIRSYNC_NTF_CFG,\r
\r
- KEY_IDX_NB,\r
+ WX_IDX_NB,\r
};\r
\r
typedef struct\r
{\r
tBTA_GATTS_IF server_if ;\r
tBT_UUID uuid = {LEN_UUID_16, {ATT_SVC_AIRSYNC}};\r
- UINT16 num_handle = KEY_IDX_NB;\r
+ UINT16 num_handle = WX_IDX_NB;\r
UINT8 inst = 0x00;\r
server_if = airsync_cb_env.gatt_if;\r
airsync_cb_env.inst_id = inst;\r
tBTA_GATTS_IF server_if ;
tBT_UUID uuid = {LEN_UUID_16, {ATT_SVC_HID}};
//the number of the hid device attributes in the hid service.
- UINT16 num_handle = HIDD_LE_IDX_NB+5;
+ UINT16 num_handle = HIDD_LE_IDX_NB;
UINT8 inst = 0x00;
server_if = hidd_le_env.gatt_if;
hidd_le_env.inst_id = inst;
#define ATT_UUID_128_LEN 0x0010
#define ATT_UUID_32_LEN 0x0004
-#define WX_AIRSYNC_CFG 0
-#define BUT_PROFILE_CFG 0
+#define WX_AIRSYNC_CFG 1
+#define BUT_PROFILE_CFG 1
#define HIDD_LE_PROFILE_CFG 1
/*
BOOLEAN rt = FALSE;
UINT8 rl_mask = btm_cb.ble_ctr_cb.rl_state;
- BTM_TRACE_DEBUG("%s btm_cb.ble_ctr_cb.privacy_mode = %d", __func__,
+ BTM_TRACE_DEBUG("%s btm_cb.ble_ctr_cb.privacy_mode = %d\n", __func__,
btm_cb.ble_ctr_cb.privacy_mode);
/* if controller does not support RPA offloading or privacy 1.2, skip */
if (controller_get_interface()->get_ble_resolving_list_max_size() == 0)
return FALSE;
- BTM_TRACE_DEBUG("%s btm_cb.ble_ctr_cb.privacy_mode = %d",
+ BTM_TRACE_DEBUG("%s btm_cb.ble_ctr_cb.privacy_mode = %d\n",
__func__, btm_cb.ble_ctr_cb.privacy_mode);
/* only add RPA enabled device into resolving list */
p_dev_rec->ble.static_addr_type = p_dev_rec->ble.ble_addr_type;
}
- BTM_TRACE_DEBUG("%s:adding device to controller resolving list", __func__);
+ BTM_TRACE_DEBUG("%s:adding device to controller resolving list\n", __func__);
// use identical IRK for now
rt = btsnd_hcic_ble_add_device_resolving_list(p_dev_rec->ble.static_addr_type,
p_dev_rec->ble.static_addr, peer_irk, local_irk);
}
else
{
- BTM_TRACE_ERROR("Device already in Resolving list");
+ BTM_TRACE_ERROR("Device already in Resolving list\n");
rt = TRUE;
}
}
else
{
- BTM_TRACE_DEBUG("Device not a RPA enabled device");
+ BTM_TRACE_DEBUG("Device not a RPA enabled device\n");
}
return rt;
}
{
UINT8 rl_mask = btm_cb.ble_ctr_cb.rl_state;
- BTM_TRACE_EVENT ("%s", __func__);
+ BTM_TRACE_EVENT ("%s\n", __func__);
if (rl_mask)
{
if (!btm_ble_disable_resolving_list (rl_mask, FALSE))
}
else
{
- BTM_TRACE_DEBUG("Device not in resolving list");
+ BTM_TRACE_DEBUG("Device not in resolving list\n");
}
/* if resolving list has been turned on, re-enable it */
--- /dev/null
+/**\r
+ ****************************************************************************************\r
+ *\r
+ * @file bt_app_api.c\r
+ *\r
+ * @brief Application entry point\r
+ *\r
+ * Copyright (C) Espressif 2016\r
+ * Created by Yulong at 2016/10/17\r
+ *\r
+ *\r
+ ****************************************************************************************\r
+ */\r
+\r
+#include "bt_app_api.h"\r
+\r
+\r
+ \r
+\r
*******************************************************************************
*********
*/
-#if 0
#include <stdint.h>
#include <string.h>
#include <stdbool.h>
#include "allocator.h"
#include "button_pro.h"
+#include "app_button_int.h"
+
+
+/*******************************************************************************
+**
+** Function ble_but_prf_hdl_event
+**
+** Description button profile main event handling function.
+**
+**
+** Returns BOOLEAN
+**
+*******************************************************************************/
+BOOLEAN ble_but_prf_hdl_event(BT_HDR *msg_data)
+{
+ UINT16 connid = 0;
+ switch(msg_data->event)
+ {
+ case BLE_BUT_CREATE_DB_REQ_EVT:
+ Button_CreateService();
+ break;
+ case BLE_BUT_VAL_SEND_CFM_EVT:
+ break;
+ case BLE_BUT_SET_CHAR_VAL_REQ_EVT:
+ button_msg_notify(msg_data->len,msg_data->data);
+ break;
+ case BLE_BUT_ENABLE_REQ_EVT:
+ button_init(NULL);
+ break;
+ case BLE_BUT_DISABLE_IND_EVT:
+ button_disable(connid);
+ break;
+ case BLE_BUT_CHAR_WRITE_IND_EVT:
+
+ break;
+ case BLE_BUT_ERROR_IND_EVT:
+ break;
+ default:
+ break;
+ }
+}
+
+
+
+#if 0
+
#define GPIO_INUM 8
#define TABLE_ELEMENT_CNT(table) ((sizeof(table))/(sizeof(table[0])));
app_key_env key_press;
DIS_SrInit(dis_attr_mask);
*/
/*instantiate a battery service*/
- //bas_register();
+ bas_register();
/*instantiate the driver for button profile*/
//app_button_init();
#if (BUT_PROFILE_CFG)
--- /dev/null
+/**\r
+ \r
+*******************************************************************************\r
+*********\r
+*\r
+* @file app_button_int.h\r
+*\r
+* @brief button Service Application entry point\r
+*\r
+* Copyright (C) ESPRESSSIF 2016\r
+* Created by Yulong at 2016/10/17\r
+* \r
+*******************************************************************************\r
+**********/\r
+\r
+#include "prf_defs.h"\r
+#include "bt_prf_sys.h"\r
+#include "bt_types.h"\r
+\r
+#if (BUT_PROFILE_CFG)\r
+\r
+/// Messages for Device Information Service Server\r
+enum\r
+{\r
+ ///Add a BUTTON instance into the database\r
+ BLE_BUT_CREATE_DB_REQ_EVT = BT_PRF_SYS_EVT_START(PRF_ID_BUT_LE),\r
+ ///Send key value confirm to APP so stable values can be erased\r
+ ///if correctly sent.\r
+ BLE_BUT_VAL_SEND_CFM_EVT,\r
+ ///Set the value of an attribute\r
+ BLE_BUT_SET_CHAR_VAL_REQ_EVT,\r
+ \r
+ ///Start the button notify Service Task - at connection\r
+ BLE_BUT_ENABLE_REQ_EVT,\r
+\r
+ /// Inform the application that the profile service role task has been disabled after a disconnection\r
+ BLE_BUT_DISABLE_IND_EVT,\r
+ /// Inform the application that the profile service has been reiceivd the charateristic write commamd from Client\r
+ BLE_BUT_CHAR_WRITE_IND_EVT,\r
+ ///Error indication to Host\r
+ BLE_BUT_ERROR_IND_EVT,\r
+};\r
+\r
+/// Parameters of the @ref KEY_CREATE_DB_REQ message\r
+typedef struct\r
+{\r
+ ///Database configuration\r
+ uint16_t features;\r
+}tBUT_CRT_DB_REQ;\r
+\r
+/// Parameters of the @ref KEY_CREATE_DB_CFM message\r
+typedef struct\r
+{\r
+ ///Status\r
+ uint8_t status;\r
+}tBUT_CRT_DB_CFM;\r
+\r
+///Parameters of the @ref key_CFG_INDNTF_IND message\r
+typedef struct\r
+{\r
+ ///Connection handle\r
+ uint16_t conhdl;\r
+ ///Stop/notify/indicate value to configure into the peer characteristic\r
+ uint16_t cfg_val;\r
+ /// characteristics\r
+ uint8_t char_code;\r
+}tBUT_CFG_NTF_IND;\r
+\r
+\r
+/// Parameters of the @ref KEY_SET_CHAR_VAL_REQ message - shall be dynamically allocated\r
+typedef struct \r
+{\r
+ /// Characteristic Code\r
+ //uint8_t char_code;\r
+ uint8_t conhdl;\r
+ uint8_t key_val_len;\r
+ uint8_t key_val[2];\r
+}tBUT_SND_CHAR_VAL_REQ;\r
+\r
+/// Parameters of the @ref KEY_ENABLE_REQ message\r
+typedef struct\r
+{\r
+ ///Connection handle\r
+ uint16_t conhdl;\r
+ /// security level: b0= nothing, b1=unauthenticated, b2=authenticated, b3=authorized; b1 or b2 and b3 can go together\r
+ uint8_t sec_lvl;\r
+ ///Type of connection\r
+ uint8_t con_type;\r
+}tBUT_ENABLE_REQ;\r
+\r
+///Parameters of the @ref KEY_VAL_SEND_CFM message\r
+typedef struct\r
+{\r
+ ///Connection handle\r
+ uint16_t conhdl;\r
+ ///Status\r
+ uint8_t status;\r
+}tBUT_VAL_SND_CFM;\r
+\r
+\r
+/// Parameters of the @ref KEY_DISABLE_IND message\r
+typedef struct \r
+{\r
+ ///Connection handle\r
+ uint16_t conhdl;\r
+}tBUT_DISABLE_IND;\r
+\r
+\r
+\r
+BOOLEAN ble_but_prf_hdl_event(BT_HDR *msg_data);\r
+\r
+\r
+\r
+#endif ///BUT_PROFILE_CFG\r
+\r
+\r
+\r
#define __APP_WECHAT_UTIL_H__\r
\r
#include "prf_defs.h"\r
-if (WX_AIRSYNC_CFG)\r
+#if (WX_AIRSYNC_CFG)\r
#include <stdint.h>\r
#include <string.h>\r
\r