From: Tian Hao Date: Fri, 4 Nov 2016 18:48:16 +0000 (+0800) Subject: component/bt : cleanup the liscence header X-Git-Tag: v1.0~2^2~58 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=aa6fe0414887d0238c0d1fbc64f39de8528bf8b9;p=esp-idf component/bt : cleanup the liscence header --- diff --git a/components/bt/bluedroid/profiles/core/bt_prf_sys_main.c b/components/bt/bluedroid/profiles/core/bt_prf_sys_main.c index 90d3fc1bd0..e1b34254dd 100644 --- a/components/bt/bluedroid/profiles/core/bt_prf_sys_main.c +++ b/components/bt/bluedroid/profiles/core/bt_prf_sys_main.c @@ -1,17 +1,18 @@ -/** - **************************************************************************************** - * - * @file bt_prf_sys_main.c - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/10/13 - * - * - **************************************************************************************** - */ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #include "thread.h" #include "bt_prf_sys.h" #include "fixed_queue.h" diff --git a/components/bt/bluedroid/profiles/core/bt_prf_task.c b/components/bt/bluedroid/profiles/core/bt_prf_task.c index eb0edb9308..cf5c441778 100644 --- a/components/bt/bluedroid/profiles/core/bt_prf_task.c +++ b/components/bt/bluedroid/profiles/core/bt_prf_task.c @@ -1,16 +1,16 @@ -/** - **************************************************************************************** - * - * @file bt_prf_task.c - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/10/11 - * - * - **************************************************************************************** - */ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #include "bt_prf_task.h" #include "bt_prf_sys.h" diff --git a/components/bt/bluedroid/profiles/core/bt_profile_act.c b/components/bt/bluedroid/profiles/core/bt_profile_act.c index a0a4b813f9..934ee0f416 100644 --- a/components/bt/bluedroid/profiles/core/bt_profile_act.c +++ b/components/bt/bluedroid/profiles/core/bt_profile_act.c @@ -1,16 +1,16 @@ -/** - **************************************************************************************** - * - * @file bt_profile_act.c - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/10/13 - * - * - **************************************************************************************** - */ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. diff --git a/components/bt/bluedroid/profiles/core/include/bt_prf_evt.h b/components/bt/bluedroid/profiles/core/include/bt_prf_evt.h index 3af0939b86..a0fafde08c 100644 --- a/components/bt/bluedroid/profiles/core/include/bt_prf_evt.h +++ b/components/bt/bluedroid/profiles/core/include/bt_prf_evt.h @@ -1,16 +1,16 @@ -/** - **************************************************************************************** - * - * @file bt_prf_task.h - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/10/12 - * - * - **************************************************************************************** - */ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #include diff --git a/components/bt/bluedroid/profiles/core/include/bt_prf_sys.h b/components/bt/bluedroid/profiles/core/include/bt_prf_sys.h index 7f10b13b4c..57ed50679c 100644 --- a/components/bt/bluedroid/profiles/core/include/bt_prf_sys.h +++ b/components/bt/bluedroid/profiles/core/include/bt_prf_sys.h @@ -1,16 +1,16 @@ -/** - **************************************************************************************** - * - * @file bt_prf_sys.h - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/10/12 - * - * - **************************************************************************************** - */ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #ifndef _PROFILE_SYS_H__ #define _PROFILE_SYS_H__ diff --git a/components/bt/bluedroid/profiles/core/include/bt_prf_task.h b/components/bt/bluedroid/profiles/core/include/bt_prf_task.h index d2d9a4bce0..5db370ce69 100644 --- a/components/bt/bluedroid/profiles/core/include/bt_prf_task.h +++ b/components/bt/bluedroid/profiles/core/include/bt_prf_task.h @@ -1,24 +1,24 @@ -/** - **************************************************************************************** - * - * @file bt_prf_task.h - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/10/11 - * - * - **************************************************************************************** - */ - -#include -#include "bt_defs.h" -#include "fixed_queue.h" - -#ifndef BT_PRF_TASK_H__ -#define BT_PRF_TASK_H__ - +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include "bt_defs.h" +#include "fixed_queue.h" + +#ifndef BT_PRF_TASK_H__ +#define BT_PRF_TASK_H__ + /* Functions provided by bt_prf_task.c ************************************ */ diff --git a/components/bt/bluedroid/profiles/esp/ble_button/button_pro.c b/components/bt/bluedroid/profiles/esp/ble_button/button_pro.c index 9620ac8395..55f9a8b502 100644 --- a/components/bt/bluedroid/profiles/esp/ble_button/button_pro.c +++ b/components/bt/bluedroid/profiles/esp/ble_button/button_pro.c @@ -1,16 +1,16 @@ -/** - **************************************************************************************** - * - * @file button_pro.c - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/8/18 - * - * - **************************************************************************************** - */ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #include diff --git a/components/bt/bluedroid/profiles/esp/include/button_pro.h b/components/bt/bluedroid/profiles/esp/include/button_pro.h index 8e95a0d99b..67d4de4e45 100644 --- a/components/bt/bluedroid/profiles/esp/include/button_pro.h +++ b/components/bt/bluedroid/profiles/esp/include/button_pro.h @@ -1,17 +1,18 @@ -/** - **************************************************************************************** - * - * @file button_pro.h - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/8/18 - * - * - **************************************************************************************** - */ #include "prf_defs.h" +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #if (BUT_PROFILE_CFG) #include "bt_target.h" diff --git a/components/bt/bluedroid/profiles/esp/include/wx_airsync_prf.h b/components/bt/bluedroid/profiles/esp/include/wx_airsync_prf.h index 74d5dae9f1..89d65282d4 100644 --- a/components/bt/bluedroid/profiles/esp/include/wx_airsync_prf.h +++ b/components/bt/bluedroid/profiles/esp/include/wx_airsync_prf.h @@ -1,16 +1,16 @@ -/** - **************************************************************************************** - * - * @file wx_airsync_prf.h - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/9/29 - * - * - **************************************************************************************** - */ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #include "prf_defs.h" diff --git a/components/bt/bluedroid/profiles/esp/wechat_AirSync/wx_airsync_prf.c b/components/bt/bluedroid/profiles/esp/wechat_AirSync/wx_airsync_prf.c index d970821bb3..ac7efe58d4 100644 --- a/components/bt/bluedroid/profiles/esp/wechat_AirSync/wx_airsync_prf.c +++ b/components/bt/bluedroid/profiles/esp/wechat_AirSync/wx_airsync_prf.c @@ -1,17 +1,18 @@ -/** - **************************************************************************************** - * - * @file wx_airsync_prf.c - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/9/29 - * - * - **************************************************************************************** - */ #include "wx_airsync_prf.h" +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #if (WX_AIRSYNC_CFG) diff --git a/components/bt/bluedroid/profiles/std/battery/battery_prf.c b/components/bt/bluedroid/profiles/std/battery/battery_prf.c index 383bd5dfd9..ed32ff2f09 100644 --- a/components/bt/bluedroid/profiles/std/battery/battery_prf.c +++ b/components/bt/bluedroid/profiles/std/battery/battery_prf.c @@ -1,9 +1,18 @@ -/*************************************************************** -* * -* * This file is for battery service based on bta layer -* * -***************************************************************/ #include +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #include #include #include diff --git a/components/bt/bluedroid/profiles/std/hid_le/hid_le_prf.c b/components/bt/bluedroid/profiles/std/hid_le/hid_le_prf.c index 550dcf7168..9978524dd2 100644 --- a/components/bt/bluedroid/profiles/std/hid_le/hid_le_prf.c +++ b/components/bt/bluedroid/profiles/std/hid_le/hid_le_prf.c @@ -1,17 +1,18 @@ -/** - **************************************************************************************** - * - * @file hid_le_prf.c - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/9/7 - * - * - **************************************************************************************** - */ #include +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #include "hid_le_prf.h" #include "prf_defs.h" diff --git a/components/bt/bluedroid/profiles/std/include/hid_le_prf.h b/components/bt/bluedroid/profiles/std/include/hid_le_prf.h index 3c17edbbfd..15591ed1ae 100644 --- a/components/bt/bluedroid/profiles/std/include/hid_le_prf.h +++ b/components/bt/bluedroid/profiles/std/include/hid_le_prf.h @@ -1,16 +1,16 @@ -/** - **************************************************************************************** - * - * @file button_pro.c - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/9/7 - * - * - **************************************************************************************** - */ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #include "prf_defs.h" diff --git a/components/bt/bluedroid/profiles/std/include/prf_defs.h b/components/bt/bluedroid/profiles/std/include/prf_defs.h index dab333aadb..8b9ed62ef2 100644 --- a/components/bt/bluedroid/profiles/std/include/prf_defs.h +++ b/components/bt/bluedroid/profiles/std/include/prf_defs.h @@ -1,17 +1,18 @@ -/** - **************************************************************************************** - * - * @file prf_defs.h - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/9/8 - * - * - **************************************************************************************** - */ #ifndef PRF_DEFS_H_ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #define PRF_DEFS_H_ #include "bta_api.h" diff --git a/components/bt/bluedroid/stack_api/bt_app_api.c b/components/bt/bluedroid/stack_api/bt_app_api.c index fe309254e4..7b23880d1b 100644 --- a/components/bt/bluedroid/stack_api/bt_app_api.c +++ b/components/bt/bluedroid/stack_api/bt_app_api.c @@ -1,1236 +1,1236 @@ -/** - **************************************************************************************** - * - * @file bt_app_api.c - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/10/17 - * - * - **************************************************************************************** - */ - -#include "bt_app_api.h" -#include "btm_ble_api.h" -//#include "btm_ble_int.h" - - - -/******************************************************************************* -** -** @function esp_ble_config_adv_data -** -** @brief This function is called to override the BTA default ADV parameters. -** -** @param[in] adv_data: Pointer to User defined ADV data structure. This -** memory space can not be freed until p_adv_data_cback -** is received. -** @param[in|out] adv_data_cback: set adv data complete callback. -** -** @return None -** -*******************************************************************************/ -void esp_ble_config_adv_data (esp_ble_adv_data_cfg_t *adv_data, - esp_ble_set_adv_data_cmpl_cb_t *adv_data_cback) -{ - if(adv_data != NULL) - { - ble_config_adv_data(adv_data, adv_data_cback); - }else{ - LOG_ERROR("The adv_data is NULL\n"); - } - - if(++adv_data != NULL) - { - ble_set_scan_rsp(adv_data, NULL); - } - -} - - -/******************************************************************************* -** -** @function esp_ble_start_advertising -** -** @brief This function is called to start advertising. -** -** @param[in] esp_ble_adv_params_all_t: ointer to User defined adv_params data structure. -** -** @return None -** -*******************************************************************************/ -void esp_ble_start_advertising (esp_ble_adv_params_all_t *ble_adv_params) -{ - if (!API_BLE_ISVALID_PARAM(ble_adv_params->adv_int_min, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX) || - !API_BLE_ISVALID_PARAM(ble_adv_params->adv_int_max, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX)) - { - LOG_ERROR("Invalid advertisting interval parameters.\n"); - return ; - } - - if ((ble_adv_params->adv_type < API_NON_DISCOVERABLE) && - (ble_adv_params->adv_type > API_BROADCASTER_MODE) ) - { - LOG_ERROR("Invalid advertisting type parameters.\n"); - return; - } - - if ((ble_adv_params->adv_filter_policy < ADV_ALLOW_SCAN_ANY_CON_ANY) && - (ble_adv_params->adv_filter_policy > ADV_ALLOW_SCAN_WLST_CON_WLST) ) - { - LOG_ERROR("Invalid advertisting type parameters.\n"); - return; - } - - LOG_ERROR("API_Ble_AppStartAdvertising\n"); - - /// - BTA_DmSetBleAdvParamsAll(ble_adv_params->adv_int_min, - ble_adv_params->adv_int_max, - ble_adv_params->adv_type, - ble_adv_params->addr_type_own, - ble_adv_params->channel_map, - ble_adv_params->adv_filter_policy, - ble_adv_params->p_dir_bda); - - -} - - -/******************************************************************************* -** -** @function esp_ble_set_scan_params -** -** @brief This function is called to set scan parameters -** -** @param[in] esp_ble_scan_params: Pointer to User defined scan_params data structure. This -** memory space can not be freed until scan_param_setup_cback -** @param[in] client_if: Client interface ID -** @param[in|out] scan_param_setup_status_cback - Set scan param status callback -** -** @return None -** -*******************************************************************************/ -void esp_ble_set_scan_params (esp_ble_scan_params *scan_params, esp_gattc_if_t client_if, - esp_scan_param_setup_cb_t scan_param_setup_cback) -{ - if (API_BLE_ISVALID_PARAM(scan_params->scan_intv, BTM_BLE_SCAN_INT_MIN, BTM_BLE_SCAN_INT_MAX) && - API_BLE_ISVALID_PARAM(scan_params->scan_win, BTM_BLE_SCAN_WIN_MIN, BTM_BLE_SCAN_WIN_MAX) && - (scan_params->scan_type == BTM_BLE_SCAN_MODE_ACTI || scan_params->scan_type == BTM_BLE_SCAN_MODE_PASS)) - { - BTA_DmSetBleScanFilterParams(client_if, - scan_params->scan_intv, - scan_params->scan_win, - scan_params->scan_type, - scan_params->scan_fil_policy, - scan_params->addr_type_own, - scan_param_setup_cback); - } -} - - -/******************************************************************************* -** -** @function esp_ble_start_scanning -** -** @brief This procedure keep the device scanning the peer device whith advertising on the air -** -** @param[in] duration: Keeping the scaning time, the unit is second. -** @param[in|out] results_cb: The scanning function callback when the peer device has been scan -** which advertising on the air -** -** @return None -** -*******************************************************************************/ -void esp_ble_start_scanning (UINT8 duration, esp_dm_search_cb_t *results_cb) -{ - if((duration != 0) && (results_cb != NULL)) - { - ///Start scan the device - BTA_DmBleObserve(true, duration, results_cb); - }else{ - LOG_ERROR("The scan duration or p_results_cb invalid\n"); - } -} - - -/******************************************************************************* -** -** @function esp_ble_stop_advertising -** -** @brief This function is called to stop advertising. -** -** @param None -** -** @return None -** -*******************************************************************************/ -void esp_ble_stop_advertising (void) -{ - bool stop_adv = false; - - BTA_DmBleBroadcast(stop_adv); -} - - -/******************************************************************************* -** -** @function esp_ble_update_conn_params -** -** @brief Update connection parameters, can only be used when connection is up. -** -** @param[in] bd_addr - BD address of the peer -** @param[in] min_int - minimum connection interval, [0x0004~ 0x4000] -** @param[in] max_int - maximum connection interval, [0x0004~ 0x4000] -** @param[in] latency - slave latency [0 ~ 500] -** @param[in] timeout - supervision timeout [0x000a ~ 0xc80] -** -** @return None -** -*******************************************************************************/ -void esp_ble_update_conn_params (BD_ADDR bd_addr, uint16_t min_int, - uint16_t max_int, uint16_t latency, uint16_t timeout) -{ - if (min_int > max_int){ - min_int = max_int; - } - - if (min_int < BTM_BLE_CONN_INT_MIN || max_int > BTM_BLE_CONN_INT_MAX){ - LOG_ERROR("Invalid interval value.\n"); - } - - BTA_DmBleUpdateConnectionParams(bd_addr, min_int, max_int, - latency, timeout); - -} - - - -/******************************************************************************* -** -** @function esp_ble_set_pkt_data_len -** -** @brief This function is to set maximum LE data packet size -** -** @return None -** -** -*******************************************************************************/ -void esp_ble_set_pkt_data_len (BD_ADDR remote_device, uint16_t tx_data_length) -{ - if (tx_data_length > BTM_BLE_DATA_SIZE_MAX){ - tx_data_length = BTM_BLE_DATA_SIZE_MAX; - }else if (tx_data_length < BTM_BLE_DATA_SIZE_MIN){ - tx_data_length = BTM_BLE_DATA_SIZE_MIN; - } - - BTA_DmBleSetDataLength(remote_device, tx_data_length); -} - - - -/******************************************************************************* -** -** @function esp_ble_set_rand_addr -** -** @brief This function set the random address for the appliction -** -** @param[in] rand_addr: the random address whith should be setting -** -** @return None -** -** -*******************************************************************************/ -void esp_ble_set_rand_addr (BD_ADDR rand_addr) -{ - if (rand_addr != NULL){ - BTA_DmSetRandAddress(rand_addr); - }else{ - LOG_ERROR("Invalid randrom address.\n"); - } -} - - -/******************************************************************************* -** -** @function esp_ble_config_local_privacy -** -** @brief Enable/disable privacy on the local device -** -** @param[in] privacy_enable - enable/disabe privacy on remote device. -** -** @return None -** -*******************************************************************************/ -void esp_ble_config_local_privacy (BOOLEAN privacy_enable) -{ - BTA_DmBleConfigLocalPrivacy(privacy_enable); -} - - -/******************************************************************************* -** @function esp_gattc_disable -** @brief This function is called by application to disable GATTC module -** -** @param NULL -** -** @return None. -** -*******************************************************************************/ -void esp_gattc_disable(void) -{ - // TODO: This API funciton didn't finish, will be added it in future -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_app_register -** -** @brief This function is called to register application callbacks -** with GATTC module. -** -** @param[in] app_uuid - applicaiton UUID -** @param[in] client_cb - pointer to the application callback function. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_app_register(esp_bt_uuid_t *app_uuid, esp_gattc_cb_t *client_cb) -{ - if (app_uuid != NULL) - { - BTA_GATTC_AppRegister(app_uuid, client_cb); - }else{ - LOG_ERROR("The app uuid invalid.\n"); - } -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_app_unregister -** -** @brief This function is called to unregister an application -** from GATTC module. -** -** @param[in] client_if - client interface identifier. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_app_unregister(esp_gattc_if_t client_if) -{ - BTA_GATTC_AppDeregister(client_if); -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_conn -** -** @brief Open a direct connection or add a background auto connection -** bd address -** -** @param[in] client_if: server interface. -** @param[in] remote_bda: remote device BD address. -** @param[in] is_direct: direct connection or background auto connection -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_conn(esp_gattc_if_t client_if, BD_ADDR remote_bda, BOOLEAN is_direct) -{ - tBTA_GATT_TRANSPORT transport = BTA_GATT_TRANSPORT_LE; - if(remote_bda == NULL ){ - LOG_ERROR("Invaild address data \n"); - return; - } - - BTA_GATTC_Open(client_if, remote_bda, is_direct, transport); - - - - -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_cancel_conn -** -** @brief Cancel a direct open connection or remove a background auto connection -** bd address -** -** @param[in] client_if: server interface. -** @param[in] remote_bda: remote device BD address. -** @param[in] is_direct: direct connection or background auto connection -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_cancel_conn (esp_gattc_if_t client_if, BD_ADDR remote_bda, BOOLEAN is_direct) -{ - if(remote_bda == NULL ){ - LOG_ERROR("Invaild address data \n"); - return; - } - - BTA_GATTC_CancelOpen(client_if, remote_bda, is_direct); -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_close -** -** @brief Close a connection to a GATT server. -** -** @param[in] conn_id: connectino ID to be closed. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_close (uint16_t conn_id) -{ - BTA_GATTC_Close(conn_id); -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_config_mtu -** -** @brief Configure the MTU size in the GATT channel. This can be done -** only once per connection. -** -** @param[in] conn_id: connection ID. -** mtu: desired MTU size to use. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the mtu value invalid -** -*******************************************************************************/ -esp_gatt_status_t esp_ble_gattc_config_mtu (uint16_t conn_id, uint16_t mtu) -{ - if ((mtu < GATT_DEF_BLE_MTU_SIZE) || (mtu > GATT_MAX_MTU_SIZE)){ - LOG_ERROR("Invalid MTU parameters\n"); - return ESP_GATT_ILLEGAL_PARAMETER; - } - - BTA_GATTC_ConfigureMTU (conn_id, mtu); - -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_svc_search_req -** -** @brief This function is called to request a GATT service discovery -** on a GATT server. This function report service search result -** by a callback event, and followed by a service search complete -** event. -** -** @param[in] conn_id: connection ID. -** @param[in] srvc_uuid: a UUID of the service application is interested in. -** If Null, discover for all services. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_svc_search_req (uint16_t conn_id, esp_bt_uuid_t *srvc_uuid) -{ - BTA_GATTC_ServiceSearchRequest(conn_id, srvc_uuid); -} - - -/**************************************************************************************************** -** -** @function esp_ble_gattc_get_first_char -** -** @brief This function is called to find the first characteristic of the -** service on the given server. -** -** @param[in] conn_id: connection ID which identify the server. -** @param[in] srvc_id: the service ID of which the characteristic is belonged to. -** @param[in] char_uuid_cond: Characteristic UUID, if NULL find the first available -** characteristic. -** @param[in] char_result: output parameter which will store the GATT -** characteristic ID. -** @param[in] property: output parameter to carry the characteristic property. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the srvc_id or char_result parameter is NULL. -** -*****************************************************************************************************/ -esp_gatt_status_t esp_ble_gattc_get_first_char (uint16_t conn_id, esp_gatt_srvc_id_t *srvc_id, - esp_bt_uuid_t *char_uuid_cond, - esp_gattc_char_id_t *char_result, - esp_gatt_char_prop_t *property) -{ - esp_gatt_status_t status = 0; - - if (!srvc_id || !char_result){ - return ESP_GATT_ILLEGAL_PARAMETER; - } - - status = BTA_GATTC_GetFirstChar (conn_id, srvc_id, char_uuid_cond, - char_result, property); - - return status; - - -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_get_first_char_descr -** -** @brief This function is called to find the first characteristic descriptor of the -** characteristic on the given server. -** -** @param[in] conn_id: connection ID which identify the server. -** @param[in] char_id: the characteristic ID of which the descriptor is belonged to. -** @param[in] descr_uuid_cond: Characteristic Descr UUID, if NULL find the first available -** characteristic. -** @param[in] descr_result: output parameter which will store the GATT -** characteristic descriptor ID. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the char_id or descr_result parameter is NULL. -** -*******************************************************************************/ -esp_gatt_status_t esp_ble_gattc_get_first_char_descr (uint16_t conn_id, esp_gattc_char_id_t *char_id, - esp_bt_uuid_t *descr_uuid_cond, - esp_gattc_char_descr_id_t *descr_result) -{ - esp_gatt_status_t status; - - if (!char_id || !descr_result){ - return ESP_GATT_ILLEGAL_PARAMETER; - } - - status = BTA_GATTC_GetFirstCharDescr (conn_id, char_id, descr_uuid_cond, descr_result); - - return status; - -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_get_next_char -** -** @brief This function is called to find the next characteristic of the -** service on the given server. -** -** @param[in] conn_id: connection ID which identify the server. -** @param[in] start_char_id: start the characteristic search from the next record -** after the one identified by char_id. -** @param[in] char_uuid_cond: Characteristic UUID, if NULL find the first available -** characteristic. -** @param[in] char_result: output parameter which will store the GATT -** characteristic ID. -** @param[in] property: output parameter to carry the characteristic property. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the start_char_id or char_result parameter is NULL. -** -*******************************************************************************/ - -esp_gatt_status_t esp_ble_gattc_get_next_char (uint16_t conn_id, - esp_gattc_char_id_t *start_char_id, - esp_bt_uuid_t *char_uuid_cond, - esp_gattc_char_id_t *char_result, - esp_gatt_char_prop_t *property) -{ - - esp_gatt_status_t status; - - if (!start_char_id || !char_result){ - return ESP_GATT_ILLEGAL_PARAMETER; - } - - status = BTA_GATTC_GetNextChar(conn_id, start_char_id, char_uuid_cond, - char_result, property); - - return status; - -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_get_next_char_descr -** -** @brief This function is called to find the next characteristic descriptor -** of the characterisctic. -** -** @param[in] conn_id: connection ID which identify the server. -** @param[in] start_descr_id: start the descriptor search from the next record -** after the one identified by p_start_descr_id. -** @param[in] descr_uuid_cond: Characteristic descriptor UUID, if NULL find -** the first available characteristic descriptor. -** @param[in] descr_result: output parameter which will store the GATT -** characteristic descriptor ID. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the start_descr_id or descr_result parameter is NULL. -** -*******************************************************************************/ - -esp_gatt_status_t esp_ble_gattc_get_next_char_descr (uint16_t conn_id, - esp_gattc_char_descr_id_t *start_descr_id, - esp_bt_uuid_t *descr_uuid_cond, - esp_gattc_char_descr_id_t *descr_result) -{ - esp_gatt_status_t status; - - if (!start_descr_id || !descr_result){ - return ESP_GATT_ILLEGAL_PARAMETER; - } - - status = BTA_GATTC_GetNextCharDescr (conn_id, start_descr_id, descr_uuid_cond, descr_result); - - return status; - -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_get_first_inclu_srvc -** -** @brief This function is called to find the first included service of the -** service on the given server. -** -** @param[in] conn_id: connection ID which identify the server. -** @param[in] srvc_id: the service ID of which the characteristic is belonged to. -** @param[in] uuid_cond: Characteristic UUID, if NULL find the first available -** characteristic. -** @param[in] result: output parameter which will store the GATT ID -** of the included service found. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the srvc_id or result parameter is NULL. -** -*******************************************************************************/ -esp_gatt_status_t esp_ble_gattc_get_first_inclu_srvc (uint16_t conn_id, esp_gatt_srvc_id_t *srvc_id, - esp_bt_uuid_t *uuid_cond, esp_gattc_incl_srvc_id_t *result) -{ - - esp_gatt_status_t status; - - if (!srvc_id || !result){ - return ESP_GATT_ILLEGAL_PARAMETER; - } - - status = BTA_GATTC_GetFirstIncludedService(conn_id, srvc_id, uuid_cond, result); - - return status; -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_get_next_inclu_srvc -** -** @brief This function is called to find the next included service of the -** service on the given server. -** -** @param[in] conn_id: connection ID which identify the server. -** @param[in] start_id: start the search from the next record -** after the one identified by p_start_id. -** @param[in] uuid_cond: Included service UUID, if NULL find the first available -** included service. -** @param[in] result: output parameter which will store the GATT ID -** of the included service found. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the p_char_id or p_descr_result parameter is NULL. - -*******************************************************************************/ -esp_gatt_status_t esp_ble_gattc_get_next_inclu_srvc (uint16_t conn_id, - esp_gattc_incl_srvc_id_t *start_id, - esp_bt_uuid_t *uuid_cond, - esp_gattc_incl_srvc_id_t *result) -{ - esp_gatt_status_t status; - - if (!start_id || !result){ - return ESP_GATT_ILLEGAL_PARAMETER; - } - - status = BTA_GATTC_GetNextIncludedService(conn_id, start_id, uuid_cond, result); - - return status; -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_read_char -** -** @brief This function is called to read a service's characteristics of -** the given characteritisc ID. -** -** @param[in] conn_id - connectino ID. -** @param[in] char_id - characteritic ID to read. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_read_char (uint16_t conn_id, esp_gattc_char_id_t *char_id, - esp_gatt_auth_req_t auth_req) -{ - BTA_GATTC_ReadCharacteristic(conn_id, char_id, auth_req); -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_read_char_descr -** -** @brief This function is called to read a characteristics descriptor. -** -** @param[in] conn_id - connection ID. -** @param[in] descr_id - characteritic descriptor ID to read. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_read_char_descr (uint16_t conn_id, - esp_gattc_char_descr_id_t *descr_id, - esp_gatt_auth_req_t auth_req) -{ - BTA_GATTC_ReadCharDescr (conn_id, descr_id, auth_req); -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_read_multi -** -** @brief This function is called to read multiple characteristic or -** characteristic descriptors. -** -** @param[in] conn_id - connectino ID. -** @param[in] read_multi - pointer to the read multiple parameter. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_read_multi (uint16_t conn_id, esp_gattc_multi_t *read_multi, - esp_gatt_auth_req_t auth_req) -{ - BTA_GATTC_ReadMultiple(conn_id, read_multi, auth_req); -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_write_char_val -** -** @brief This function is called to write characteristic value. -** -** @param[in] conn_id - connection ID. -** @param[in] char_id - characteristic ID to write. -** @param[in] write_type - type of write. -** @param[in] len: length of the data to be written. -** @param[in] value - the value to be written. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_write_char_val ( uint16_t conn_id, - esp_gattc_char_id_t *char_id, - esp_gattc_write_type_t write_type, - uint16_t len, - uint8_t *value, - esp_gatt_auth_req_t auth_req) -{ - BTA_GATTC_WriteCharValue (conn_id, char_id, write_type, len, value, auth_req); -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_write_char_descr -** -** @brief This function is called to write characteristic descriptor value. -** -** @param[in] conn_id - connection ID -** @param[in] char_descr_id - characteristic descriptor ID to write. -** @param[in] write_type - write type. -** @param[in] data - the value to be written. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_write_char_descr (uint16_t conn_id, - esp_gattc_char_descr_id_t *char_descr_id, - esp_gattc_write_type_t write_type, - esp_gatt_unfmt_t *data, - esp_gatt_auth_req_t auth_req) -{ - BTA_GATTC_WriteCharDescr (conn_id, char_descr_id, write_type, data, auth_req); -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_prepa_write -** -** @brief This function is called to prepare write a characteristic value. -** -** @param[in] conn_id - connection ID. -** @param[in] char_id - GATT characteritic ID of the service. -** @param[in] offset - offset of the write value. -** @param[in] len: length of the data to be written. -** @param[in] value - the value to be written. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_prepa_write (uint16_t conn_id, esp_gattc_char_id_t *char_id, - uint16_t offset, uint16_t len, uint8_t *value, - esp_gatt_auth_req_t auth_req) -{ - BTA_GATTC_PrepareWrite (conn_id, char_id, offset, len, value, auth_req); -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_execu_write -** -** @brief This function is called to execute write a prepare write sequence. -** -** @param[in] conn_id - connection ID. -** @param[in] is_execute - execute or cancel. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_execu_write (uint16_t conn_id, BOOLEAN is_execute) -{ - BTA_GATTC_ExecuteWrite (conn_id, is_execute); -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_send_ind_cfm -** -** @brief This function is called to send handle value confirmation. -** -** @param[in] conn_id - connection ID. -** @param[in] char_id - characteristic ID to confirm. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_send_ind_cfm (uint16_t conn_id, esp_gattc_char_id_t *char_id) -{ - BTA_GATTC_SendIndConfirm (conn_id, char_id); -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_register_ntf -** -** @brief This function is called to register for notification of a service. -** -** @param[in] client_if - client interface. -** @param[in] bda - target GATT server. -** @param[in] char_id - pointer to GATT characteristic ID. -** -** @return OK if registration succeed, otherwise failed. -** -*******************************************************************************/ -esp_gatt_status_t esp_ble_gattc_register_ntf (esp_gattc_if_t client_if, - BD_ADDR bda, - esp_gattc_char_id_t *char_id) -{ - esp_gatt_status_t status = ESP_GATT_ILLEGAL_PARAMETER; - status = BTA_GATTC_RegisterForNotifications (client_if, bda, char_id); - - return status; -} - - -/******************************************************************************* -** -** @function esp_ble_gattc_unregister_ntf -** -** @brief This function is called to de-register for notification of a service. -** -** @param[in] client_if - client interface. -** @param[in] bda - target GATT server. -** @param[in] char_id - pointer to GATT characteristic ID. -** -** @return OK if deregistration succeed, otherwise failed. -** -*******************************************************************************/ -tBTA_GATT_STATUS esp_ble_gattc_unregister_ntf (esp_gattc_if_t client_if, - BD_ADDR bda, - esp_gattc_char_id_t *char_id) -{ - esp_gatt_status_t status = ESP_GATT_ILLEGAL_PARAMETER; - status = BTA_GATTC_DeregisterForNotifications (client_if, bda, char_id); - - return status; -} - - -/******************************************************************************* -** -** @function esp_ble_gatts_disale -** -** @brief This function is called to disable GATTS module -** -** @param[in] None. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_disale(void) -{ - BTA_GATTS_Disable(); -} - - -/******************************************************************************* -** -** @function esp_ble_gatts_app_register -** -** @brief This function is called to register application callbacks -** with BTA GATTS module. -** -** @param[in] app_uuid - applicaiton UUID -** @param[in] cback - pointer to the application callback function. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_app_register(esp_bt_uuid_t *app_uuid, esp_gatts_cb_t *cback) -{ - BTA_GATTS_AppRegister(app_uuid, cback); -} - - -/******************************************************************************* -** -** @function esp_ble_gatts_app_unregister -** -** @brief un-register with GATT Server. -** -** @param[in] server_if: service interface id. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_app_unregister(esp_gatts_if_t server_if) -{ - BTA_GATTS_AppDeregister(server_if); -} - - -/******************************************************************************* -** -** @function esp_ble_gatts_create_srvc -** -** @brief Create a service. When service creation is done, a callback -** event BTA_GATTS_CREATE_SRVC_EVT is called to report status -** and service ID to the profile. The service ID obtained in -** the callback function needs to be used when adding included -** service and characteristics/descriptors into the service. -** -** @param[in] server_if: Profile ID this service is belonged to. -** @param[in] service_uuid: service UUID. -** @param[in] inst: instance ID number of this service. -** @param[in] num_handle: numble of handle requessted for this service. -** @param[in] is_primary: is this service a primary one or not. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_create_srvc(esp_gatts_if_t server_if, esp_bt_uuid_t *service_uuid, uint8_t inst, - uint16_t num_handle, BOOLEAN is_primary) -{ - BTA_GATTS_CreateService(server_if, service_uuid, inst, num_handle, is_primary); -} - - -/******************************************************************************* -** -** @function esp_ble_gatts_add_inclu_srvc -** -** @brief This function is called to add an included service. After included -** service is included, a callback event BTA_GATTS_ADD_INCL_SRVC_EVT -** is reported the included service ID. -** -** @param[in] service_id: service ID to which this included service is to -** be added. -** @param[in] included_service_id: the service ID to be included. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_add_inclu_srvc (uint16_t service_id, uint16_t included_service_id) -{ - BTA_GATTS_AddIncludeService(service_id, included_service_id); -} - -/******************************************************************************* -** -** @function esp_ble_gatts_add_char -** -** @brief This function is called to add a characteristic into a service. -** -** @param[in] service_id: service ID to which this included service is to -** be added. -** @param[in] char_uuid : Characteristic UUID. -** @param[in] perm : Characteristic value declaration attribute permission. -** @param[in] property : Characteristic Properties -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_add_char (uint16_t service_id, esp_bt_uuid_t *char_uuid, - esp_gatt_perm_t perm, esp_gatt_char_prop_t property) -{ - BTA_GATTS_AddCharacteristic (service_id, char_uuid, perm, property); -} - - -/******************************************************************************* -** -** @function esp_ble_gatts_add_char_descr -** -** @brief This function is called to add characteristic descriptor. When -** it's done, a callback event BTA_GATTS_ADD_DESCR_EVT is called -** to report the status and an ID number for this descriptor. -** -** @param[in] service_id: service ID to which this charatceristic descriptor is to -** be added. -** @param[in] perm: descriptor access permission. -** @param[in] descr_uuid: descriptor UUID. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_add_char_descr (uint16_t service_id, - esp_gatt_perm_t perm, - esp_bt_uuid_t * descr_uuid) -{ - BTA_GATTS_AddCharDescriptor (service_id, perm, descr_uuid); -} - - -/******************************************************************************* -** -** @function esp_ble_gatts_dele_srvc -** -** @brief This function is called to delete a service. When this is done, -** a callback event BTA_GATTS_DELETE_EVT is report with the status. -** -** @param[in] service_id: service_id to be deleted. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_dele_srvc (uint16_t service_id) -{ - BTA_GATTS_DeleteService(service_id); -} - - -/******************************************************************************* -** -** @function esp_ble_gatts_start_srvc -** -** @brief This function is called to start a service. -** -** @param[in] service_id: the service ID to be started. -** @param[in] sup_transport: supported trasnport. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_start_srvc(uint16_t service_id) -{ - tBTA_GATT_TRANSPORT transport = BT_TRANSPORT_LE; - BTA_GATTS_StartService(service_id, transport); -} - -/******************************************************************************* -** -** @function esp_ble_gatts_stop_srvc -** -** @brief This function is called to stop a service. -** -** @param[in] service_id - service to be topped. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_stop_srvc(uint16_t service_id) -{ - BTA_GATTS_StopService(service_id); -} - - -/******************************************************************************* -** -** @function esp_ble_gatts_hdl_val_indica -** -** @brief This function is called to read a characteristics descriptor. -** -** @param[in] bda - remote device bd address to indicate. -** @param[in] attr_id - attribute ID to indicate. -** @param[in] data_len - indicate data length. -** @param[in] data: data to indicate. -** @param[in] need_confirm - if this indication expects a confirmation or not. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_hdl_val_indica (uint16_t conn_id, uint16_t attr_id, uint16_t data_len, - uint8_t *data, BOOLEAN need_confirm) -{ - BTA_GATTS_HandleValueIndication (conn_id, attr_id, data_len, data, need_confirm); -} - - -/******************************************************************************* -** -** @function esp_ble_gatts_send_rsp -** -** @brief This function is called to send a response to a request. -** -** @param[in] conn_id - connection identifier. -** @param[in] trans_id - transaction ID. -** @param[in] status - response status -** @param[in] msg - response data. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_send_rsp (uint16_t conn_id, uint32_t trans_id, - esp_gatt_status_t status, esp_gatts_rsp_t *msg) -{ - BTA_GATTS_SendRsp (conn_id, trans_id, status, msg); -} - - -/******************************************************************************* -** -** @function esp_ble_gatts_conn -** -** @brief Open a direct open connection or add a background auto connection -** bd address -** -** @param[in] server_if: server interface. -** @param[in] remote_bda: remote device BD address. -** @param[in] is_direct: direct connection or background auto connection -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_conn (esp_gatts_if_t server_if, BD_ADDR remote_bda, BOOLEAN is_direct) -{ - tBTA_GATT_TRANSPORT transport = BT_TRANSPORT_LE; - BTA_GATTS_Open(server_if, remote_bda, is_direct, transport); -} - - -/******************************************************************************* -** -** @function esp_ble_gatts_cancel_conn -** -** @brief Cancel a direct open connection or remove a background auto connection -** bd address -** -** @param[in] server_if: server interface. -** @param[in] remote_bda: remote device BD address. -** @param[in] is_direct: direct connection or background auto connection -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_cancel_conn (esp_gatts_if_t server_if, BD_ADDR remote_bda, BOOLEAN is_direct) -{ - BTA_GATTS_CancelOpen(server_if, remote_bda, is_direct); -} - - -/******************************************************************************* -** -** @function esp_ble_gatts_close -** -** @param[in] Close a connection a remote device. -** -** @param[in] conn_id: connectino ID to be closed. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_close(uint16_t conn_id) -{ - BTA_GATTS_Close(conn_id); -} - - -/******************************************************************************* -** -** @function esp_prf_app_register -** -** @brief This function is called to register application callbacks -** with BTA GATTS module. -** -** @param[in] p_app_uuid - applicaiton UUID -** @param[in] p_cback - pointer to the application callback function. -** -** @return None -** -*******************************************************************************/ -void esp_prf_app_register(uint8_t prf_id, void *p_cback) -{ - //tBTA_GATTS_API_REG *p_buf; - - /* register with BTA system manager */ - if (bt_prf_sys_is_register(PRF_ID_SYS) == FALSE) - { - bt_prf_sys_register(PRF_ID_SYS, NULL); - } - -// if ((p_buf = (tBTA_GATTS_API_REG *) GKI_getbuf(sizeof(tBTA_GATTS_API_REG))) != NULL) -// { -// p_buf->hdr.event = BTA_GATTS_API_REG_EVT; - -// if (p_app_uuid != NULL) -// memcpy(&p_buf->app_uuid, p_app_uuid, sizeof(tBT_UUID)); -// p_buf->p_cback = p_cback; - -// bta_sys_sendmsg(p_buf); -// } - return; -} - - - - - +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "bt_app_api.h" +#include "btm_ble_api.h" +//#include "btm_ble_int.h" + + + +/******************************************************************************* +** +** @function esp_ble_config_adv_data +** +** @brief This function is called to override the BTA default ADV parameters. +** +** @param[in] adv_data: Pointer to User defined ADV data structure. This +** memory space can not be freed until p_adv_data_cback +** is received. +** @param[in|out] adv_data_cback: set adv data complete callback. +** +** @return None +** +*******************************************************************************/ +void esp_ble_config_adv_data (esp_ble_adv_data_cfg_t *adv_data, + esp_ble_set_adv_data_cmpl_cb_t *adv_data_cback) +{ + if(adv_data != NULL) + { + ble_config_adv_data(adv_data, adv_data_cback); + }else{ + LOG_ERROR("The adv_data is NULL\n"); + } + + if(++adv_data != NULL) + { + ble_set_scan_rsp(adv_data, NULL); + } + +} + + +/******************************************************************************* +** +** @function esp_ble_start_advertising +** +** @brief This function is called to start advertising. +** +** @param[in] esp_ble_adv_params_all_t: ointer to User defined adv_params data structure. +** +** @return None +** +*******************************************************************************/ +void esp_ble_start_advertising (esp_ble_adv_params_all_t *ble_adv_params) +{ + if (!API_BLE_ISVALID_PARAM(ble_adv_params->adv_int_min, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX) || + !API_BLE_ISVALID_PARAM(ble_adv_params->adv_int_max, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX)) + { + LOG_ERROR("Invalid advertisting interval parameters.\n"); + return ; + } + + if ((ble_adv_params->adv_type < API_NON_DISCOVERABLE) && + (ble_adv_params->adv_type > API_BROADCASTER_MODE) ) + { + LOG_ERROR("Invalid advertisting type parameters.\n"); + return; + } + + if ((ble_adv_params->adv_filter_policy < ADV_ALLOW_SCAN_ANY_CON_ANY) && + (ble_adv_params->adv_filter_policy > ADV_ALLOW_SCAN_WLST_CON_WLST) ) + { + LOG_ERROR("Invalid advertisting type parameters.\n"); + return; + } + + LOG_ERROR("API_Ble_AppStartAdvertising\n"); + + /// + BTA_DmSetBleAdvParamsAll(ble_adv_params->adv_int_min, + ble_adv_params->adv_int_max, + ble_adv_params->adv_type, + ble_adv_params->addr_type_own, + ble_adv_params->channel_map, + ble_adv_params->adv_filter_policy, + ble_adv_params->p_dir_bda); + + +} + + +/******************************************************************************* +** +** @function esp_ble_set_scan_params +** +** @brief This function is called to set scan parameters +** +** @param[in] esp_ble_scan_params: Pointer to User defined scan_params data structure. This +** memory space can not be freed until scan_param_setup_cback +** @param[in] client_if: Client interface ID +** @param[in|out] scan_param_setup_status_cback - Set scan param status callback +** +** @return None +** +*******************************************************************************/ +void esp_ble_set_scan_params (esp_ble_scan_params *scan_params, esp_gattc_if_t client_if, + esp_scan_param_setup_cb_t scan_param_setup_cback) +{ + if (API_BLE_ISVALID_PARAM(scan_params->scan_intv, BTM_BLE_SCAN_INT_MIN, BTM_BLE_SCAN_INT_MAX) && + API_BLE_ISVALID_PARAM(scan_params->scan_win, BTM_BLE_SCAN_WIN_MIN, BTM_BLE_SCAN_WIN_MAX) && + (scan_params->scan_type == BTM_BLE_SCAN_MODE_ACTI || scan_params->scan_type == BTM_BLE_SCAN_MODE_PASS)) + { + BTA_DmSetBleScanFilterParams(client_if, + scan_params->scan_intv, + scan_params->scan_win, + scan_params->scan_type, + scan_params->scan_fil_policy, + scan_params->addr_type_own, + scan_param_setup_cback); + } +} + + +/******************************************************************************* +** +** @function esp_ble_start_scanning +** +** @brief This procedure keep the device scanning the peer device whith advertising on the air +** +** @param[in] duration: Keeping the scaning time, the unit is second. +** @param[in|out] results_cb: The scanning function callback when the peer device has been scan +** which advertising on the air +** +** @return None +** +*******************************************************************************/ +void esp_ble_start_scanning (UINT8 duration, esp_dm_search_cb_t *results_cb) +{ + if((duration != 0) && (results_cb != NULL)) + { + ///Start scan the device + BTA_DmBleObserve(true, duration, results_cb); + }else{ + LOG_ERROR("The scan duration or p_results_cb invalid\n"); + } +} + + +/******************************************************************************* +** +** @function esp_ble_stop_advertising +** +** @brief This function is called to stop advertising. +** +** @param None +** +** @return None +** +*******************************************************************************/ +void esp_ble_stop_advertising (void) +{ + bool stop_adv = false; + + BTA_DmBleBroadcast(stop_adv); +} + + +/******************************************************************************* +** +** @function esp_ble_update_conn_params +** +** @brief Update connection parameters, can only be used when connection is up. +** +** @param[in] bd_addr - BD address of the peer +** @param[in] min_int - minimum connection interval, [0x0004~ 0x4000] +** @param[in] max_int - maximum connection interval, [0x0004~ 0x4000] +** @param[in] latency - slave latency [0 ~ 500] +** @param[in] timeout - supervision timeout [0x000a ~ 0xc80] +** +** @return None +** +*******************************************************************************/ +void esp_ble_update_conn_params (BD_ADDR bd_addr, uint16_t min_int, + uint16_t max_int, uint16_t latency, uint16_t timeout) +{ + if (min_int > max_int){ + min_int = max_int; + } + + if (min_int < BTM_BLE_CONN_INT_MIN || max_int > BTM_BLE_CONN_INT_MAX){ + LOG_ERROR("Invalid interval value.\n"); + } + + BTA_DmBleUpdateConnectionParams(bd_addr, min_int, max_int, + latency, timeout); + +} + + + +/******************************************************************************* +** +** @function esp_ble_set_pkt_data_len +** +** @brief This function is to set maximum LE data packet size +** +** @return None +** +** +*******************************************************************************/ +void esp_ble_set_pkt_data_len (BD_ADDR remote_device, uint16_t tx_data_length) +{ + if (tx_data_length > BTM_BLE_DATA_SIZE_MAX){ + tx_data_length = BTM_BLE_DATA_SIZE_MAX; + }else if (tx_data_length < BTM_BLE_DATA_SIZE_MIN){ + tx_data_length = BTM_BLE_DATA_SIZE_MIN; + } + + BTA_DmBleSetDataLength(remote_device, tx_data_length); +} + + + +/******************************************************************************* +** +** @function esp_ble_set_rand_addr +** +** @brief This function set the random address for the appliction +** +** @param[in] rand_addr: the random address whith should be setting +** +** @return None +** +** +*******************************************************************************/ +void esp_ble_set_rand_addr (BD_ADDR rand_addr) +{ + if (rand_addr != NULL){ + BTA_DmSetRandAddress(rand_addr); + }else{ + LOG_ERROR("Invalid randrom address.\n"); + } +} + + +/******************************************************************************* +** +** @function esp_ble_config_local_privacy +** +** @brief Enable/disable privacy on the local device +** +** @param[in] privacy_enable - enable/disabe privacy on remote device. +** +** @return None +** +*******************************************************************************/ +void esp_ble_config_local_privacy (BOOLEAN privacy_enable) +{ + BTA_DmBleConfigLocalPrivacy(privacy_enable); +} + + +/******************************************************************************* +** @function esp_gattc_disable +** @brief This function is called by application to disable GATTC module +** +** @param NULL +** +** @return None. +** +*******************************************************************************/ +void esp_gattc_disable(void) +{ + // TODO: This API funciton didn't finish, will be added it in future +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_app_register +** +** @brief This function is called to register application callbacks +** with GATTC module. +** +** @param[in] app_uuid - applicaiton UUID +** @param[in] client_cb - pointer to the application callback function. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_app_register(esp_bt_uuid_t *app_uuid, esp_gattc_cb_t *client_cb) +{ + if (app_uuid != NULL) + { + BTA_GATTC_AppRegister(app_uuid, client_cb); + }else{ + LOG_ERROR("The app uuid invalid.\n"); + } +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_app_unregister +** +** @brief This function is called to unregister an application +** from GATTC module. +** +** @param[in] client_if - client interface identifier. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_app_unregister(esp_gattc_if_t client_if) +{ + BTA_GATTC_AppDeregister(client_if); +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_conn +** +** @brief Open a direct connection or add a background auto connection +** bd address +** +** @param[in] client_if: server interface. +** @param[in] remote_bda: remote device BD address. +** @param[in] is_direct: direct connection or background auto connection +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_conn(esp_gattc_if_t client_if, BD_ADDR remote_bda, BOOLEAN is_direct) +{ + tBTA_GATT_TRANSPORT transport = BTA_GATT_TRANSPORT_LE; + if(remote_bda == NULL ){ + LOG_ERROR("Invaild address data \n"); + return; + } + + BTA_GATTC_Open(client_if, remote_bda, is_direct, transport); + + + + +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_cancel_conn +** +** @brief Cancel a direct open connection or remove a background auto connection +** bd address +** +** @param[in] client_if: server interface. +** @param[in] remote_bda: remote device BD address. +** @param[in] is_direct: direct connection or background auto connection +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_cancel_conn (esp_gattc_if_t client_if, BD_ADDR remote_bda, BOOLEAN is_direct) +{ + if(remote_bda == NULL ){ + LOG_ERROR("Invaild address data \n"); + return; + } + + BTA_GATTC_CancelOpen(client_if, remote_bda, is_direct); +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_close +** +** @brief Close a connection to a GATT server. +** +** @param[in] conn_id: connectino ID to be closed. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_close (uint16_t conn_id) +{ + BTA_GATTC_Close(conn_id); +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_config_mtu +** +** @brief Configure the MTU size in the GATT channel. This can be done +** only once per connection. +** +** @param[in] conn_id: connection ID. +** mtu: desired MTU size to use. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the mtu value invalid +** +*******************************************************************************/ +esp_gatt_status_t esp_ble_gattc_config_mtu (uint16_t conn_id, uint16_t mtu) +{ + if ((mtu < GATT_DEF_BLE_MTU_SIZE) || (mtu > GATT_MAX_MTU_SIZE)){ + LOG_ERROR("Invalid MTU parameters\n"); + return ESP_GATT_ILLEGAL_PARAMETER; + } + + BTA_GATTC_ConfigureMTU (conn_id, mtu); + +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_svc_search_req +** +** @brief This function is called to request a GATT service discovery +** on a GATT server. This function report service search result +** by a callback event, and followed by a service search complete +** event. +** +** @param[in] conn_id: connection ID. +** @param[in] srvc_uuid: a UUID of the service application is interested in. +** If Null, discover for all services. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_svc_search_req (uint16_t conn_id, esp_bt_uuid_t *srvc_uuid) +{ + BTA_GATTC_ServiceSearchRequest(conn_id, srvc_uuid); +} + + +/**************************************************************************************************** +** +** @function esp_ble_gattc_get_first_char +** +** @brief This function is called to find the first characteristic of the +** service on the given server. +** +** @param[in] conn_id: connection ID which identify the server. +** @param[in] srvc_id: the service ID of which the characteristic is belonged to. +** @param[in] char_uuid_cond: Characteristic UUID, if NULL find the first available +** characteristic. +** @param[in] char_result: output parameter which will store the GATT +** characteristic ID. +** @param[in] property: output parameter to carry the characteristic property. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the srvc_id or char_result parameter is NULL. +** +*****************************************************************************************************/ +esp_gatt_status_t esp_ble_gattc_get_first_char (uint16_t conn_id, esp_gatt_srvc_id_t *srvc_id, + esp_bt_uuid_t *char_uuid_cond, + esp_gattc_char_id_t *char_result, + esp_gatt_char_prop_t *property) +{ + esp_gatt_status_t status = 0; + + if (!srvc_id || !char_result){ + return ESP_GATT_ILLEGAL_PARAMETER; + } + + status = BTA_GATTC_GetFirstChar (conn_id, srvc_id, char_uuid_cond, + char_result, property); + + return status; + + +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_get_first_char_descr +** +** @brief This function is called to find the first characteristic descriptor of the +** characteristic on the given server. +** +** @param[in] conn_id: connection ID which identify the server. +** @param[in] char_id: the characteristic ID of which the descriptor is belonged to. +** @param[in] descr_uuid_cond: Characteristic Descr UUID, if NULL find the first available +** characteristic. +** @param[in] descr_result: output parameter which will store the GATT +** characteristic descriptor ID. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the char_id or descr_result parameter is NULL. +** +*******************************************************************************/ +esp_gatt_status_t esp_ble_gattc_get_first_char_descr (uint16_t conn_id, esp_gattc_char_id_t *char_id, + esp_bt_uuid_t *descr_uuid_cond, + esp_gattc_char_descr_id_t *descr_result) +{ + esp_gatt_status_t status; + + if (!char_id || !descr_result){ + return ESP_GATT_ILLEGAL_PARAMETER; + } + + status = BTA_GATTC_GetFirstCharDescr (conn_id, char_id, descr_uuid_cond, descr_result); + + return status; + +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_get_next_char +** +** @brief This function is called to find the next characteristic of the +** service on the given server. +** +** @param[in] conn_id: connection ID which identify the server. +** @param[in] start_char_id: start the characteristic search from the next record +** after the one identified by char_id. +** @param[in] char_uuid_cond: Characteristic UUID, if NULL find the first available +** characteristic. +** @param[in] char_result: output parameter which will store the GATT +** characteristic ID. +** @param[in] property: output parameter to carry the characteristic property. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the start_char_id or char_result parameter is NULL. +** +*******************************************************************************/ + +esp_gatt_status_t esp_ble_gattc_get_next_char (uint16_t conn_id, + esp_gattc_char_id_t *start_char_id, + esp_bt_uuid_t *char_uuid_cond, + esp_gattc_char_id_t *char_result, + esp_gatt_char_prop_t *property) +{ + + esp_gatt_status_t status; + + if (!start_char_id || !char_result){ + return ESP_GATT_ILLEGAL_PARAMETER; + } + + status = BTA_GATTC_GetNextChar(conn_id, start_char_id, char_uuid_cond, + char_result, property); + + return status; + +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_get_next_char_descr +** +** @brief This function is called to find the next characteristic descriptor +** of the characterisctic. +** +** @param[in] conn_id: connection ID which identify the server. +** @param[in] start_descr_id: start the descriptor search from the next record +** after the one identified by p_start_descr_id. +** @param[in] descr_uuid_cond: Characteristic descriptor UUID, if NULL find +** the first available characteristic descriptor. +** @param[in] descr_result: output parameter which will store the GATT +** characteristic descriptor ID. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the start_descr_id or descr_result parameter is NULL. +** +*******************************************************************************/ + +esp_gatt_status_t esp_ble_gattc_get_next_char_descr (uint16_t conn_id, + esp_gattc_char_descr_id_t *start_descr_id, + esp_bt_uuid_t *descr_uuid_cond, + esp_gattc_char_descr_id_t *descr_result) +{ + esp_gatt_status_t status; + + if (!start_descr_id || !descr_result){ + return ESP_GATT_ILLEGAL_PARAMETER; + } + + status = BTA_GATTC_GetNextCharDescr (conn_id, start_descr_id, descr_uuid_cond, descr_result); + + return status; + +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_get_first_inclu_srvc +** +** @brief This function is called to find the first included service of the +** service on the given server. +** +** @param[in] conn_id: connection ID which identify the server. +** @param[in] srvc_id: the service ID of which the characteristic is belonged to. +** @param[in] uuid_cond: Characteristic UUID, if NULL find the first available +** characteristic. +** @param[in] result: output parameter which will store the GATT ID +** of the included service found. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the srvc_id or result parameter is NULL. +** +*******************************************************************************/ +esp_gatt_status_t esp_ble_gattc_get_first_inclu_srvc (uint16_t conn_id, esp_gatt_srvc_id_t *srvc_id, + esp_bt_uuid_t *uuid_cond, esp_gattc_incl_srvc_id_t *result) +{ + + esp_gatt_status_t status; + + if (!srvc_id || !result){ + return ESP_GATT_ILLEGAL_PARAMETER; + } + + status = BTA_GATTC_GetFirstIncludedService(conn_id, srvc_id, uuid_cond, result); + + return status; +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_get_next_inclu_srvc +** +** @brief This function is called to find the next included service of the +** service on the given server. +** +** @param[in] conn_id: connection ID which identify the server. +** @param[in] start_id: start the search from the next record +** after the one identified by p_start_id. +** @param[in] uuid_cond: Included service UUID, if NULL find the first available +** included service. +** @param[in] result: output parameter which will store the GATT ID +** of the included service found. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the p_char_id or p_descr_result parameter is NULL. + +*******************************************************************************/ +esp_gatt_status_t esp_ble_gattc_get_next_inclu_srvc (uint16_t conn_id, + esp_gattc_incl_srvc_id_t *start_id, + esp_bt_uuid_t *uuid_cond, + esp_gattc_incl_srvc_id_t *result) +{ + esp_gatt_status_t status; + + if (!start_id || !result){ + return ESP_GATT_ILLEGAL_PARAMETER; + } + + status = BTA_GATTC_GetNextIncludedService(conn_id, start_id, uuid_cond, result); + + return status; +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_read_char +** +** @brief This function is called to read a service's characteristics of +** the given characteritisc ID. +** +** @param[in] conn_id - connectino ID. +** @param[in] char_id - characteritic ID to read. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_read_char (uint16_t conn_id, esp_gattc_char_id_t *char_id, + esp_gatt_auth_req_t auth_req) +{ + BTA_GATTC_ReadCharacteristic(conn_id, char_id, auth_req); +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_read_char_descr +** +** @brief This function is called to read a characteristics descriptor. +** +** @param[in] conn_id - connection ID. +** @param[in] descr_id - characteritic descriptor ID to read. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_read_char_descr (uint16_t conn_id, + esp_gattc_char_descr_id_t *descr_id, + esp_gatt_auth_req_t auth_req) +{ + BTA_GATTC_ReadCharDescr (conn_id, descr_id, auth_req); +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_read_multi +** +** @brief This function is called to read multiple characteristic or +** characteristic descriptors. +** +** @param[in] conn_id - connectino ID. +** @param[in] read_multi - pointer to the read multiple parameter. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_read_multi (uint16_t conn_id, esp_gattc_multi_t *read_multi, + esp_gatt_auth_req_t auth_req) +{ + BTA_GATTC_ReadMultiple(conn_id, read_multi, auth_req); +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_write_char_val +** +** @brief This function is called to write characteristic value. +** +** @param[in] conn_id - connection ID. +** @param[in] char_id - characteristic ID to write. +** @param[in] write_type - type of write. +** @param[in] len: length of the data to be written. +** @param[in] value - the value to be written. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_write_char_val ( uint16_t conn_id, + esp_gattc_char_id_t *char_id, + esp_gattc_write_type_t write_type, + uint16_t len, + uint8_t *value, + esp_gatt_auth_req_t auth_req) +{ + BTA_GATTC_WriteCharValue (conn_id, char_id, write_type, len, value, auth_req); +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_write_char_descr +** +** @brief This function is called to write characteristic descriptor value. +** +** @param[in] conn_id - connection ID +** @param[in] char_descr_id - characteristic descriptor ID to write. +** @param[in] write_type - write type. +** @param[in] data - the value to be written. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_write_char_descr (uint16_t conn_id, + esp_gattc_char_descr_id_t *char_descr_id, + esp_gattc_write_type_t write_type, + esp_gatt_unfmt_t *data, + esp_gatt_auth_req_t auth_req) +{ + BTA_GATTC_WriteCharDescr (conn_id, char_descr_id, write_type, data, auth_req); +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_prepa_write +** +** @brief This function is called to prepare write a characteristic value. +** +** @param[in] conn_id - connection ID. +** @param[in] char_id - GATT characteritic ID of the service. +** @param[in] offset - offset of the write value. +** @param[in] len: length of the data to be written. +** @param[in] value - the value to be written. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_prepa_write (uint16_t conn_id, esp_gattc_char_id_t *char_id, + uint16_t offset, uint16_t len, uint8_t *value, + esp_gatt_auth_req_t auth_req) +{ + BTA_GATTC_PrepareWrite (conn_id, char_id, offset, len, value, auth_req); +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_execu_write +** +** @brief This function is called to execute write a prepare write sequence. +** +** @param[in] conn_id - connection ID. +** @param[in] is_execute - execute or cancel. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_execu_write (uint16_t conn_id, BOOLEAN is_execute) +{ + BTA_GATTC_ExecuteWrite (conn_id, is_execute); +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_send_ind_cfm +** +** @brief This function is called to send handle value confirmation. +** +** @param[in] conn_id - connection ID. +** @param[in] char_id - characteristic ID to confirm. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_send_ind_cfm (uint16_t conn_id, esp_gattc_char_id_t *char_id) +{ + BTA_GATTC_SendIndConfirm (conn_id, char_id); +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_register_ntf +** +** @brief This function is called to register for notification of a service. +** +** @param[in] client_if - client interface. +** @param[in] bda - target GATT server. +** @param[in] char_id - pointer to GATT characteristic ID. +** +** @return OK if registration succeed, otherwise failed. +** +*******************************************************************************/ +esp_gatt_status_t esp_ble_gattc_register_ntf (esp_gattc_if_t client_if, + BD_ADDR bda, + esp_gattc_char_id_t *char_id) +{ + esp_gatt_status_t status = ESP_GATT_ILLEGAL_PARAMETER; + status = BTA_GATTC_RegisterForNotifications (client_if, bda, char_id); + + return status; +} + + +/******************************************************************************* +** +** @function esp_ble_gattc_unregister_ntf +** +** @brief This function is called to de-register for notification of a service. +** +** @param[in] client_if - client interface. +** @param[in] bda - target GATT server. +** @param[in] char_id - pointer to GATT characteristic ID. +** +** @return OK if deregistration succeed, otherwise failed. +** +*******************************************************************************/ +tBTA_GATT_STATUS esp_ble_gattc_unregister_ntf (esp_gattc_if_t client_if, + BD_ADDR bda, + esp_gattc_char_id_t *char_id) +{ + esp_gatt_status_t status = ESP_GATT_ILLEGAL_PARAMETER; + status = BTA_GATTC_DeregisterForNotifications (client_if, bda, char_id); + + return status; +} + + +/******************************************************************************* +** +** @function esp_ble_gatts_disale +** +** @brief This function is called to disable GATTS module +** +** @param[in] None. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_disale(void) +{ + BTA_GATTS_Disable(); +} + + +/******************************************************************************* +** +** @function esp_ble_gatts_app_register +** +** @brief This function is called to register application callbacks +** with BTA GATTS module. +** +** @param[in] app_uuid - applicaiton UUID +** @param[in] cback - pointer to the application callback function. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_app_register(esp_bt_uuid_t *app_uuid, esp_gatts_cb_t *cback) +{ + BTA_GATTS_AppRegister(app_uuid, cback); +} + + +/******************************************************************************* +** +** @function esp_ble_gatts_app_unregister +** +** @brief un-register with GATT Server. +** +** @param[in] server_if: service interface id. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_app_unregister(esp_gatts_if_t server_if) +{ + BTA_GATTS_AppDeregister(server_if); +} + + +/******************************************************************************* +** +** @function esp_ble_gatts_create_srvc +** +** @brief Create a service. When service creation is done, a callback +** event BTA_GATTS_CREATE_SRVC_EVT is called to report status +** and service ID to the profile. The service ID obtained in +** the callback function needs to be used when adding included +** service and characteristics/descriptors into the service. +** +** @param[in] server_if: Profile ID this service is belonged to. +** @param[in] service_uuid: service UUID. +** @param[in] inst: instance ID number of this service. +** @param[in] num_handle: numble of handle requessted for this service. +** @param[in] is_primary: is this service a primary one or not. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_create_srvc(esp_gatts_if_t server_if, esp_bt_uuid_t *service_uuid, uint8_t inst, + uint16_t num_handle, BOOLEAN is_primary) +{ + BTA_GATTS_CreateService(server_if, service_uuid, inst, num_handle, is_primary); +} + + +/******************************************************************************* +** +** @function esp_ble_gatts_add_inclu_srvc +** +** @brief This function is called to add an included service. After included +** service is included, a callback event BTA_GATTS_ADD_INCL_SRVC_EVT +** is reported the included service ID. +** +** @param[in] service_id: service ID to which this included service is to +** be added. +** @param[in] included_service_id: the service ID to be included. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_add_inclu_srvc (uint16_t service_id, uint16_t included_service_id) +{ + BTA_GATTS_AddIncludeService(service_id, included_service_id); +} + +/******************************************************************************* +** +** @function esp_ble_gatts_add_char +** +** @brief This function is called to add a characteristic into a service. +** +** @param[in] service_id: service ID to which this included service is to +** be added. +** @param[in] char_uuid : Characteristic UUID. +** @param[in] perm : Characteristic value declaration attribute permission. +** @param[in] property : Characteristic Properties +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_add_char (uint16_t service_id, esp_bt_uuid_t *char_uuid, + esp_gatt_perm_t perm, esp_gatt_char_prop_t property) +{ + BTA_GATTS_AddCharacteristic (service_id, char_uuid, perm, property); +} + + +/******************************************************************************* +** +** @function esp_ble_gatts_add_char_descr +** +** @brief This function is called to add characteristic descriptor. When +** it's done, a callback event BTA_GATTS_ADD_DESCR_EVT is called +** to report the status and an ID number for this descriptor. +** +** @param[in] service_id: service ID to which this charatceristic descriptor is to +** be added. +** @param[in] perm: descriptor access permission. +** @param[in] descr_uuid: descriptor UUID. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_add_char_descr (uint16_t service_id, + esp_gatt_perm_t perm, + esp_bt_uuid_t * descr_uuid) +{ + BTA_GATTS_AddCharDescriptor (service_id, perm, descr_uuid); +} + + +/******************************************************************************* +** +** @function esp_ble_gatts_dele_srvc +** +** @brief This function is called to delete a service. When this is done, +** a callback event BTA_GATTS_DELETE_EVT is report with the status. +** +** @param[in] service_id: service_id to be deleted. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_dele_srvc (uint16_t service_id) +{ + BTA_GATTS_DeleteService(service_id); +} + + +/******************************************************************************* +** +** @function esp_ble_gatts_start_srvc +** +** @brief This function is called to start a service. +** +** @param[in] service_id: the service ID to be started. +** @param[in] sup_transport: supported trasnport. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_start_srvc(uint16_t service_id) +{ + tBTA_GATT_TRANSPORT transport = BT_TRANSPORT_LE; + BTA_GATTS_StartService(service_id, transport); +} + +/******************************************************************************* +** +** @function esp_ble_gatts_stop_srvc +** +** @brief This function is called to stop a service. +** +** @param[in] service_id - service to be topped. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_stop_srvc(uint16_t service_id) +{ + BTA_GATTS_StopService(service_id); +} + + +/******************************************************************************* +** +** @function esp_ble_gatts_hdl_val_indica +** +** @brief This function is called to read a characteristics descriptor. +** +** @param[in] bda - remote device bd address to indicate. +** @param[in] attr_id - attribute ID to indicate. +** @param[in] data_len - indicate data length. +** @param[in] data: data to indicate. +** @param[in] need_confirm - if this indication expects a confirmation or not. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_hdl_val_indica (uint16_t conn_id, uint16_t attr_id, uint16_t data_len, + uint8_t *data, BOOLEAN need_confirm) +{ + BTA_GATTS_HandleValueIndication (conn_id, attr_id, data_len, data, need_confirm); +} + + +/******************************************************************************* +** +** @function esp_ble_gatts_send_rsp +** +** @brief This function is called to send a response to a request. +** +** @param[in] conn_id - connection identifier. +** @param[in] trans_id - transaction ID. +** @param[in] status - response status +** @param[in] msg - response data. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_send_rsp (uint16_t conn_id, uint32_t trans_id, + esp_gatt_status_t status, esp_gatts_rsp_t *msg) +{ + BTA_GATTS_SendRsp (conn_id, trans_id, status, msg); +} + + +/******************************************************************************* +** +** @function esp_ble_gatts_conn +** +** @brief Open a direct open connection or add a background auto connection +** bd address +** +** @param[in] server_if: server interface. +** @param[in] remote_bda: remote device BD address. +** @param[in] is_direct: direct connection or background auto connection +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_conn (esp_gatts_if_t server_if, BD_ADDR remote_bda, BOOLEAN is_direct) +{ + tBTA_GATT_TRANSPORT transport = BT_TRANSPORT_LE; + BTA_GATTS_Open(server_if, remote_bda, is_direct, transport); +} + + +/******************************************************************************* +** +** @function esp_ble_gatts_cancel_conn +** +** @brief Cancel a direct open connection or remove a background auto connection +** bd address +** +** @param[in] server_if: server interface. +** @param[in] remote_bda: remote device BD address. +** @param[in] is_direct: direct connection or background auto connection +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_cancel_conn (esp_gatts_if_t server_if, BD_ADDR remote_bda, BOOLEAN is_direct) +{ + BTA_GATTS_CancelOpen(server_if, remote_bda, is_direct); +} + + +/******************************************************************************* +** +** @function esp_ble_gatts_close +** +** @param[in] Close a connection a remote device. +** +** @param[in] conn_id: connectino ID to be closed. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_close(uint16_t conn_id) +{ + BTA_GATTS_Close(conn_id); +} + + +/******************************************************************************* +** +** @function esp_prf_app_register +** +** @brief This function is called to register application callbacks +** with BTA GATTS module. +** +** @param[in] p_app_uuid - applicaiton UUID +** @param[in] p_cback - pointer to the application callback function. +** +** @return None +** +*******************************************************************************/ +void esp_prf_app_register(uint8_t prf_id, void *p_cback) +{ + //tBTA_GATTS_API_REG *p_buf; + + /* register with BTA system manager */ + if (bt_prf_sys_is_register(PRF_ID_SYS) == FALSE) + { + bt_prf_sys_register(PRF_ID_SYS, NULL); + } + +// if ((p_buf = (tBTA_GATTS_API_REG *) GKI_getbuf(sizeof(tBTA_GATTS_API_REG))) != NULL) +// { +// p_buf->hdr.event = BTA_GATTS_API_REG_EVT; + +// if (p_app_uuid != NULL) +// memcpy(&p_buf->app_uuid, p_app_uuid, sizeof(tBT_UUID)); +// p_buf->p_cback = p_cback; + +// bta_sys_sendmsg(p_buf); +// } + return; +} + + + + + diff --git a/components/bt/bluedroid/stack_api/bt_app_sec.c b/components/bt/bluedroid/stack_api/bt_app_sec.c index 7662e6e68f..fa4831650d 100644 --- a/components/bt/bluedroid/stack_api/bt_app_sec.c +++ b/components/bt/bluedroid/stack_api/bt_app_sec.c @@ -1,108 +1,108 @@ -/** - **************************************************************************************** - * - * @file bt_app_sec.c - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/10/13 - * - * - **************************************************************************************** - */ - -#include "bt_app_sec.h" -#include // standard library -#include - - - -extern void srand (unsigned int seed); -extern int random (void); - -/// Application Security Environment Structure -tAPP_SEC_ENV app_sec_env; - - -/******************************************************************************* -** -** Function app_ble_sec_gen_tk -** -** Description This function is called to generate the ble tk -** -** Returns the generate tk value -** -*******************************************************************************/ -UINT32 app_ble_sec_gen_tk(void) -{ - // Generate a PIN Code (Between 100000 and 999999) - return (100000 + (random()%900000)); -} - -/******************************************************************************* -** -** Function app_ble_sec_gen_ltk -** -** Description This function is called to generate the ble ltk -** -** Returns NULL -** -*******************************************************************************/ -void app_ble_sec_gen_ltk(UINT8 key_size) -{ - // Counter - UINT8 i; - app_sec_env.key_size = key_size; - - // Randomly generate the LTK and the Random Number - for (i = 0; i < RAND_NB_LEN; i++) - { - app_sec_env.rand_nb.nb[i] = random()%256; - } - - // Randomly generate the end of the LTK - for (i = 0; i < SEC_KEY_LEN; i++) - { - app_sec_env.ltk.key[i] = (((key_size) < (16 - i)) ? 0 : random()%256); - } - - // Randomly generate the EDIV - app_sec_env.ediv = random()%65536; -} - - -/******************************************************************************* -** -** Function app_ble_sec_init -** -** Description This function is init the security env and function -** -** Returns NULL -** -*******************************************************************************/ -void app_ble_sec_init() -{ - // Reset Security Environment - memset(&app_sec_env, 0, sizeof(app_sec_env)); -} - - -/******************************************************************************* -** -** Function app_ble_security_start -** -** Description This function is called by the slave when the seurity start -** -** Returns NULL -** -*******************************************************************************/ -void app_ble_security_start(void) -{ - -} - - - - - +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "bt_app_sec.h" +#include // standard library +#include + + + +extern void srand (unsigned int seed); +extern int random (void); + +/// Application Security Environment Structure +tAPP_SEC_ENV app_sec_env; + + +/******************************************************************************* +** +** Function app_ble_sec_gen_tk +** +** Description This function is called to generate the ble tk +** +** Returns the generate tk value +** +*******************************************************************************/ +UINT32 app_ble_sec_gen_tk(void) +{ + // Generate a PIN Code (Between 100000 and 999999) + return (100000 + (random()%900000)); +} + +/******************************************************************************* +** +** Function app_ble_sec_gen_ltk +** +** Description This function is called to generate the ble ltk +** +** Returns NULL +** +*******************************************************************************/ +void app_ble_sec_gen_ltk(UINT8 key_size) +{ + // Counter + UINT8 i; + app_sec_env.key_size = key_size; + + // Randomly generate the LTK and the Random Number + for (i = 0; i < RAND_NB_LEN; i++) + { + app_sec_env.rand_nb.nb[i] = random()%256; + } + + // Randomly generate the end of the LTK + for (i = 0; i < SEC_KEY_LEN; i++) + { + app_sec_env.ltk.key[i] = (((key_size) < (16 - i)) ? 0 : random()%256); + } + + // Randomly generate the EDIV + app_sec_env.ediv = random()%65536; +} + + +/******************************************************************************* +** +** Function app_ble_sec_init +** +** Description This function is init the security env and function +** +** Returns NULL +** +*******************************************************************************/ +void app_ble_sec_init() +{ + // Reset Security Environment + memset(&app_sec_env, 0, sizeof(app_sec_env)); +} + + +/******************************************************************************* +** +** Function app_ble_security_start +** +** Description This function is called by the slave when the seurity start +** +** Returns NULL +** +*******************************************************************************/ +void app_ble_security_start(void) +{ + +} + + + + + diff --git a/components/bt/bluedroid/stack_api/bt_gap_api.c b/components/bt/bluedroid/stack_api/bt_gap_api.c index 47ab0730bb..65feb289bb 100644 --- a/components/bt/bluedroid/stack_api/bt_gap_api.c +++ b/components/bt/bluedroid/stack_api/bt_gap_api.c @@ -1,3 +1,17 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #include "bt_gap_api.h" #include "bta_api.h" #include "bt_trace.h" diff --git a/components/bt/bluedroid/stack_api/bt_sdp_api.c b/components/bt/bluedroid/stack_api/bt_sdp_api.c index 6cee6650d3..66330bb295 100644 --- a/components/bt/bluedroid/stack_api/bt_sdp_api.c +++ b/components/bt/bluedroid/stack_api/bt_sdp_api.c @@ -1,3 +1,17 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #include "bt_sdp_api.h" diff --git a/components/bt/bluedroid/stack_api/include/bt_app_api.h b/components/bt/bluedroid/stack_api/include/bt_app_api.h index dfc2335b47..fc557e3aa3 100644 --- a/components/bt/bluedroid/stack_api/include/bt_app_api.h +++ b/components/bt/bluedroid/stack_api/include/bt_app_api.h @@ -1,924 +1,924 @@ -/** - **************************************************************************************** - * - * @file bt_app_api.h - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/10/13 - * - * - **************************************************************************************** - */ - -#include "bt_types.h" -#include "bt_app_defs.h" -#include "bta_gatt_api.h" -#include "bt_prf_sys.h" - - -/******************************************************************************* -** -** @function esp_ble_config_adv_data -** -** @brief This function is called to override the BTA default ADV parameters. -** -** @param[in] adv_data: Pointer to User defined ADV data structure. This -** memory space can not be freed until p_adv_data_cback -** is received. -** @param[in|out] adv_data_cback: set adv data complete callback. -** -** @return None -** -*******************************************************************************/ -void esp_ble_config_adv_data (esp_ble_adv_data_cfg_t *adv_data, - esp_ble_set_adv_data_cmpl_cb_t *adv_data_cback); - - - -/******************************************************************************* -** -** @function esp_ble_set_scan_params -** -** @brief This function is called to set scan parameters -** -** @param[in] esp_ble_scan_params: Pointer to User defined scan_params data structure. This -** memory space can not be freed until scan_param_setup_cback -** @param[in] client_if: Client interface ID -** @param[in|out] scan_param_setup_status_cback - Set scan param status callback -** -** @return None -** -*******************************************************************************/ -void esp_ble_set_scan_params (esp_ble_scan_params *scan_params, esp_gattc_if_t client_if, - esp_scan_param_setup_cb_t scan_param_setup_cback); - - -/******************************************************************************* -** -** @function esp_ble_start_scanning -** -** @brief This procedure keep the device scanning the peer device whith advertising on the air -** -** @param[in] duration: Keeping the scaning time, the unit is second. -** @param[in|out] results_cb: The scanning function callback when the peer device has been scan -** which advertising on the air -** -** @return None -** -*******************************************************************************/ -void esp_ble_start_scanning (UINT8 duration, esp_dm_search_cb_t *results_cb); - - - -/******************************************************************************* -** -** @function esp_ble_start_advertising -** -** @brief This function is called to start advertising. -** -** @param[in] esp_ble_adv_params_all_t: ointer to User defined adv_params data structure. -** -** @return None -** -*******************************************************************************/ -void esp_ble_start_advertising (esp_ble_adv_params_all_t *ble_adv_params); - - - -/******************************************************************************* -** -** @function esp_ble_stop_advertising -** -** @brief This function is called to stop advertising. -** -** @param None -** -** @return None -** -*******************************************************************************/ -void esp_ble_stop_advertising (void); - - - -/******************************************************************************* -** -** @function esp_ble_update_conn_params -** -** @brief Update connection parameters, can only be used when connection is up. -** -** @param[in] bd_addr - BD address of the peer -** @param[in] min_int - minimum connection interval, [0x0004~ 0x4000] -** @param[in] max_int - maximum connection interval, [0x0004~ 0x4000] -** @param[in] latency - slave latency [0 ~ 500] -** @param[in] timeout - supervision timeout [0x000a ~ 0xc80] -** -** @return None -** -*******************************************************************************/ -void esp_ble_update_conn_params (BD_ADDR bd_addr, uint16_t min_int, - uint16_t max_int, uint16_t latency, uint16_t timeout); - - -/******************************************************************************* -** -** @function esp_ble_set_pkt_data_len -** -** @brief This function is to set maximum LE data packet size -** -** @return None -** -** -*******************************************************************************/ -void esp_ble_set_pkt_data_len (BD_ADDR remote_device, uint16_t tx_data_length); - - - -/******************************************************************************* -** -** @function esp_ble_set_rand_addr -** -** @brief This function set the random address for the appliction -** -** @param[in] rand_addr: the random address whith should be setting -** -** @return None -** -** -*******************************************************************************/ -void esp_ble_set_rand_addr (BD_ADDR rand_addr); - - - -/******************************************************************************* -** -** @function esp_ble_config_local_privacy -** -** @brief Enable/disable privacy on the local device -** -** @param[in] privacy_enable - enable/disabe privacy on remote device. -** -** @return None -** -*******************************************************************************/ -void esp_ble_config_local_privacy (BOOLEAN privacy_enable); - - - -/******************************************************************************* -** @function esp_gattc_disable -** @brief This function is called by application to disable GATTC module -** -** @param NULL -** -** @return None. -** -*******************************************************************************/ -void esp_gattc_disable(void); - - -/******************************************************************************* -** -** @function esp_ble_gattc_app_register -** -** @brief This function is called to register application callbacks -** with GATTC module. -** -** @param[in] app_uuid - applicaiton UUID -** @param[in] client_cb - pointer to the application callback function. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_app_register(esp_bt_uuid_t *app_uuid, esp_gattc_cb_t *client_cb); - - -/******************************************************************************* -** -** @function esp_ble_gattc_app_unregister -** -** @brief This function is called to unregister an application -** from GATTC module. -** -** @param[in] client_if - client interface identifier. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_app_unregister(esp_gattc_if_t client_if); - - -/******************************************************************************* -** -** @function esp_ble_gattc_conn -** -** @brief Open a direct connection or add a background auto connection -** bd address -** -** @param[in] client_if: server interface. -** @param[in] remote_bda: remote device BD address. -** @param[in] is_direct: direct connection or background auto connection -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_conn(esp_gattc_if_t client_if, BD_ADDR remote_bda, BOOLEAN is_direct); - - - -/******************************************************************************* -** -** @function esp_ble_gattc_cancel_conn -** -** @brief Cancel a direct open connection or remove a background auto connection -** bd address -** -** @param[in] client_if: server interface. -** @param[in] remote_bda: remote device BD address. -** @param[in] is_direct: direct connection or background auto connection -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_cancel_conn (esp_gattc_if_t client_if, BD_ADDR remote_bda, BOOLEAN is_direct); - - -/******************************************************************************* -** -** @function esp_ble_gattc_close -** -** @brief Close a connection to a GATT server. -** -** @param[in] conn_id: connectino ID to be closed. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_close (uint16_t conn_id); - - - -/******************************************************************************* -** -** @function esp_ble_gattc_config_mtu -** -** @brief Configure the MTU size in the GATT channel. This can be done -** only once per connection. -** -** @param[in] conn_id: connection ID. -** mtu: desired MTU size to use. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the mtu value invalid -** -*******************************************************************************/ -esp_gatt_status_t esp_ble_gattc_config_mtu (uint16_t conn_id, uint16_t mtu); - - -/******************************************************************************* -** -** @function esp_ble_gattc_svc_search_req -** -** @brief This function is called to request a GATT service discovery -** on a GATT server. This function report service search result -** by a callback event, and followed by a service search complete -** event. -** -** @param[in] conn_id: connection ID. -** @param[in] srvc_uuid: a UUID of the service application is interested in. -** If Null, discover for all services. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_svc_search_req (uint16_t conn_id, esp_bt_uuid_t *srvc_uuid); - - -/**************************************************************************************************** -** -** @function esp_ble_gattc_get_first_char -** -** @brief This function is called to find the first characteristic of the -** service on the given server. -** -** @param[in] conn_id: connection ID which identify the server. -** @param[in] srvc_id: the service ID of which the characteristic is belonged to. -** @param[in] char_uuid_cond: Characteristic UUID, if NULL find the first available -** characteristic. -** @param[in] char_result: output parameter which will store the GATT -** characteristic ID. -** @param[in] property: output parameter to carry the characteristic property. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the srvc_id or char_result parameter is NULL. -** -*****************************************************************************************************/ -esp_gatt_status_t esp_ble_gattc_get_first_char (uint16_t conn_id, esp_gatt_srvc_id_t *srvc_id, - esp_bt_uuid_t *char_uuid_cond, - esp_gattc_char_id_t *char_result, - esp_gatt_char_prop_t *property); - - -/******************************************************************************* -** -** @function esp_ble_gattc_get_first_char_descr -** -** @brief This function is called to find the first characteristic descriptor of the -** characteristic on the given server. -** -** @param[in] conn_id: connection ID which identify the server. -** @param[in] char_id: the characteristic ID of which the descriptor is belonged to. -** @param[in] descr_uuid_cond: Characteristic Descr UUID, if NULL find the first available -** characteristic. -** @param[in] descr_result: output parameter which will store the GATT -** characteristic descriptor ID. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the char_id or descr_result parameter is NULL. -** -*******************************************************************************/ -esp_gatt_status_t esp_ble_gattc_get_first_char_descr (uint16_t conn_id, esp_gattc_char_id_t *char_id, - esp_bt_uuid_t *descr_uuid_cond, - esp_gattc_char_descr_id_t *descr_result); - - -/******************************************************************************* -** -** @function esp_ble_gattc_get_next_inclu_srvc -** -** @brief This function is called to find the next included service of the -** service on the given server. -** -** @param[in] conn_id: connection ID which identify the server. -** @param[in] start_id: start the search from the next record -** after the one identified by p_start_id. -** @param[in] uuid_cond: Included service UUID, if NULL find the first available -** included service. -** @param[in] result: output parameter which will store the GATT ID -** of the included service found. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the p_char_id or p_descr_result parameter is NULL. - -*******************************************************************************/ -esp_gatt_status_t esp_ble_gattc_get_next_inclu_srvc (uint16_t conn_id, - esp_gattc_incl_srvc_id_t *start_id, - esp_bt_uuid_t *uuid_cond, - esp_gattc_incl_srvc_id_t *result); - - -/******************************************************************************* -** -** @function esp_ble_gattc_get_next_char -** -** @brief This function is called to find the next characteristic of the -** service on the given server. -** -** @param[in] conn_id: connection ID which identify the server. -** @param[in] start_char_id: start the characteristic search from the next record -** after the one identified by char_id. -** @param[in] char_uuid_cond: Characteristic UUID, if NULL find the first available -** characteristic. -** @param[in] char_result: output parameter which will store the GATT -** characteristic ID. -** @param[in] property: output parameter to carry the characteristic property. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the start_char_id or char_result parameter is NULL. -** -*******************************************************************************/ -esp_gatt_status_t esp_ble_gattc_get_next_char (uint16_t conn_id, - esp_gattc_char_id_t *start_char_id, - esp_bt_uuid_t *char_uuid_cond, - esp_gattc_char_id_t *char_result, - esp_gatt_char_prop_t *property); - - -/******************************************************************************* -** -** @function esp_ble_gattc_get_next_char_descr -** -** @brief This function is called to find the next characteristic descriptor -** of the characterisctic. -** -** @param[in] conn_id: connection ID which identify the server. -** @param[in] start_descr_id: start the descriptor search from the next record -** after the one identified by p_start_descr_id. -** @param[in] descr_uuid_cond: Characteristic descriptor UUID, if NULL find -** the first available characteristic descriptor. -** @param[in] descr_result: output parameter which will store the GATT -** characteristic descriptor ID. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the start_descr_id or descr_result parameter is NULL. -** -*******************************************************************************/ -esp_gatt_status_t esp_ble_gattc_get_next_char_descr (uint16_t conn_id, - esp_gattc_char_descr_id_t *start_descr_id, - esp_bt_uuid_t *descr_uuid_cond, - esp_gattc_char_descr_id_t *descr_result); - - -/******************************************************************************* -** -** @function esp_ble_gattc_get_first_inclu_srvc -** -** @brief This function is called to find the first included service of the -** service on the given server. -** -** @param[in] conn_id: connection ID which identify the server. -** @param[in] srvc_id: the service ID of which the characteristic is belonged to. -** @param[in] uuid_cond: Characteristic UUID, if NULL find the first available -** characteristic. -** @param[in] result: output parameter which will store the GATT ID -** of the included service found. -** -** @return Command status code: -** - @ref ESP_GATT_OK: If request succeeds -** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the srvc_id or result parameter is NULL. -** -*******************************************************************************/ -esp_gatt_status_t esp_ble_gattc_get_first_inclu_srvc (uint16_t conn_id, esp_gatt_srvc_id_t *srvc_id, - esp_bt_uuid_t *uuid_cond, esp_gattc_incl_srvc_id_t *result); - - -/******************************************************************************* -** -** @function esp_ble_gattc_read_char -** -** @brief This function is called to read a service's characteristics of -** the given characteritisc ID. -** -** @param[in] conn_id - connectino ID. -** @param[in] char_id - characteritic ID to read. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_read_char (uint16_t conn_id, esp_gattc_char_id_t *char_id, - esp_gatt_auth_req_t auth_req); - - - -/******************************************************************************* -** -** @function esp_ble_gattc_read_char_descr -** -** @brief This function is called to read a characteristics descriptor. -** -** @param[in] conn_id - connection ID. -** @param[in] descr_id - characteritic descriptor ID to read. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_read_char_descr (uint16_t conn_id, - esp_gattc_char_descr_id_t *descr_id, - esp_gatt_auth_req_t auth_req); - - - -/******************************************************************************* -** -** @function esp_ble_gattc_read_multi -** -** @brief This function is called to read multiple characteristic or -** characteristic descriptors. -** -** @param[in] conn_id - connectino ID. -** @param[in] read_multi - pointer to the read multiple parameter. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_read_multi (uint16_t conn_id, esp_gattc_multi_t *read_multi, - esp_gatt_auth_req_t auth_req); - - - -/******************************************************************************* -** -** @function esp_ble_gattc_write_char_val -** -** @brief This function is called to write characteristic value. -** -** @param[in] conn_id - connection ID. -** @param[in] char_id - characteristic ID to write. -** @param[in] write_type - type of write. -** @param[in] len: length of the data to be written. -** @param[in] value - the value to be written. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_write_char_val ( uint16_t conn_id, - esp_gattc_char_id_t *char_id, - esp_gattc_write_type_t write_type, - uint16_t len, - uint8_t *value, - esp_gatt_auth_req_t auth_req); - - -/******************************************************************************* -** -** @function esp_ble_gattc_write_char_descr -** -** @brief This function is called to write characteristic descriptor value. -** -** @param[in] conn_id - connection ID -** @param[in] char_descr_id - characteristic descriptor ID to write. -** @param[in] write_type - write type. -** @param[in] data - the value to be written. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_write_char_descr (uint16_t conn_id, - esp_gattc_char_descr_id_t *char_descr_id, - esp_gattc_write_type_t write_type, - esp_gatt_unfmt_t *data, - esp_gatt_auth_req_t auth_req); - - - -/******************************************************************************* -** -** @function esp_ble_gattc_prepa_write -** -** @brief This function is called to prepare write a characteristic value. -** -** @param[in] conn_id - connection ID. -** @param[in] char_id - GATT characteritic ID of the service. -** @param[in] offset - offset of the write value. -** @param[in] len: length of the data to be written. -** @param[in] value - the value to be written. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_prepa_write (uint16_t conn_id, esp_gattc_char_id_t *char_id, - uint16_t offset, uint16_t len, uint8_t *value, - esp_gatt_auth_req_t auth_req); - - - -/******************************************************************************* -** -** @function esp_ble_gattc_execu_write -** -** @brief This function is called to execute write a prepare write sequence. -** -** @param[in] conn_id - connection ID. -** @param[in] is_execute - execute or cancel. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_execu_write (uint16_t conn_id, BOOLEAN is_execute); - - - -/******************************************************************************* -** -** @function esp_ble_gattc_send_ind_cfm -** -** @brief This function is called to send handle value confirmation. -** -** @param[in] conn_id - connection ID. -** @param[in] char_id - characteristic ID to confirm. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gattc_send_ind_cfm (uint16_t conn_id, esp_gattc_char_id_t *char_id); - - - - -/******************************************************************************* -** -** @function esp_ble_gattc_register_ntf -** -** @brief This function is called to register for notification of a service. -** -** @param[in] client_if - client interface. -** @param[in] bda - target GATT server. -** @param[in] char_id - pointer to GATT characteristic ID. -** -** @return OK if registration succeed, otherwise failed. -** -*******************************************************************************/ -esp_gatt_status_t esp_ble_gattc_register_ntf (esp_gattc_if_t client_if, - BD_ADDR bda, - esp_gattc_char_id_t *char_id); - - - -/******************************************************************************* -** -** @function esp_ble_gattc_unregister_ntf -** -** @brief This function is called to de-register for notification of a service. -** -** @param[in] client_if - client interface. -** @param[in] bda - target GATT server. -** @param[in] char_id - pointer to GATT characteristic ID. -** -** @return OK if deregistration succeed, otherwise failed. -** -*******************************************************************************/ -tBTA_GATT_STATUS esp_ble_gattc_unregister_ntf (esp_gattc_if_t client_if, - BD_ADDR bda, - esp_gattc_char_id_t *char_id); - - -/******************************************************************************* -** -** @function esp_ble_gatts_disale -** -** @brief This function is called to disable GATTS module -** -** @param[in] None. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_disale(void); - - - - -/******************************************************************************* -** -** @function esp_ble_gatts_app_register -** -** @brief This function is called to register application callbacks -** with BTA GATTS module. -** -** @param[in] app_uuid - applicaiton UUID -** @param[in] cback - pointer to the application callback function. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_app_register(esp_bt_uuid_t *app_uuid, esp_gatts_cb_t *cback); - - - -/******************************************************************************* -** -** @function esp_ble_gatts_app_unregister -** -** @brief un-register with GATT Server. -** -** @param[in] server_if: service interface id. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_app_unregister(esp_gatts_if_t server_if); - - - -/******************************************************************************* -** -** @function esp_ble_gatts_create_srvc -** -** @brief Create a service. When service creation is done, a callback -** event BTA_GATTS_CREATE_SRVC_EVT is called to report status -** and service ID to the profile. The service ID obtained in -** the callback function needs to be used when adding included -** service and characteristics/descriptors into the service. -** -** @param[in] server_if: Profile ID this service is belonged to. -** @param[in] service_uuid: service UUID. -** @param[in] inst: instance ID number of this service. -** @param[in] num_handle: numble of handle requessted for this service. -** @param[in] is_primary: is this service a primary one or not. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_create_srvc(esp_gatts_if_t server_if, esp_bt_uuid_t *service_uuid, uint8_t inst, - uint16_t num_handle, BOOLEAN is_primary); - - - -/******************************************************************************* -** -** @function esp_ble_gatts_add_inclu_srvc -** -** @brief This function is called to add an included service. After included -** service is included, a callback event BTA_GATTS_ADD_INCL_SRVC_EVT -** is reported the included service ID. -** -** @param[in] service_id: service ID to which this included service is to -** be added. -** @param[in] included_service_id: the service ID to be included. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_add_inclu_srvc (uint16_t service_id, uint16_t included_service_id); - - - -/******************************************************************************* -** -** @function esp_ble_gatts_add_char -** -** @brief This function is called to add a characteristic into a service. -** -** @param[in] service_id: service ID to which this included service is to -** be added. -** @param[in] char_uuid : Characteristic UUID. -** @param[in] perm : Characteristic value declaration attribute permission. -** @param[in] property : Characteristic Properties -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_add_char (uint16_t service_id, esp_bt_uuid_t *char_uuid, - esp_gatt_perm_t perm, esp_gatt_char_prop_t property); - - - - -/******************************************************************************* -** -** @function esp_ble_gatts_add_char_descr -** -** @brief This function is called to add characteristic descriptor. When -** it's done, a callback event BTA_GATTS_ADD_DESCR_EVT is called -** to report the status and an ID number for this descriptor. -** -** @param[in] service_id: service ID to which this charatceristic descriptor is to -** be added. -** @param[in] perm: descriptor access permission. -** @param[in] descr_uuid: descriptor UUID. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_add_char_descr (uint16_t service_id, - esp_gatt_perm_t perm, - esp_bt_uuid_t * descr_uuid); - - - -/******************************************************************************* -** -** @function esp_ble_gatts_dele_srvc -** -** @brief This function is called to delete a service. When this is done, -** a callback event BTA_GATTS_DELETE_EVT is report with the status. -** -** @param[in] service_id: service_id to be deleted. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_dele_srvc (uint16_t service_id); - - - -/******************************************************************************* -** -** @function esp_ble_gatts_start_srvc -** -** @brief This function is called to start a service. -** -** @param[in] service_id: the service ID to be started. -** @param[in] sup_transport: supported trasnport. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_start_srvc(uint16_t service_id); - - - -/******************************************************************************* -** -** @function esp_ble_gatts_stop_srvc -** -** @brief This function is called to stop a service. -** -** @param[in] service_id - service to be topped. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_stop_srvc(uint16_t service_id); - - - -/******************************************************************************* -** -** @function esp_ble_gatts_hdl_val_indica -** -** @brief This function is called to read a characteristics descriptor. -** -** @param[in] bda - remote device bd address to indicate. -** @param[in] attr_id - attribute ID to indicate. -** @param[in] data_len - indicate data length. -** @param[in] data: data to indicate. -** @param[in] need_confirm - if this indication expects a confirmation or not. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_hdl_val_indica (uint16_t conn_id, uint16_t attr_id, uint16_t data_len, - uint8_t *data, BOOLEAN need_confirm); - - -/******************************************************************************* -** -** @function esp_ble_gatts_send_rsp -** -** @brief This function is called to send a response to a request. -** -** @param[in] conn_id - connection identifier. -** @param[in] trans_id - transaction ID. -** @param[in] status - response status -** @param[in] msg - response data. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_send_rsp (uint16_t conn_id, uint32_t trans_id, - esp_gatt_status_t status, esp_gatts_rsp_t *msg); - - -/******************************************************************************* -** -** @function esp_ble_gatts_conn -** -** @brief Open a direct open connection or add a background auto connection -** bd address -** -** @param[in] server_if: server interface. -** @param[in] remote_bda: remote device BD address. -** @param[in] is_direct: direct connection or background auto connection -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_conn (esp_gatts_if_t server_if, BD_ADDR remote_bda, BOOLEAN is_direct); - - -/******************************************************************************* -** -** @function esp_ble_gatts_cancel_conn -** -** @brief Cancel a direct open connection or remove a background auto connection -** bd address -** -** @param[in] server_if: server interface. -** @param[in] remote_bda: remote device BD address. -** @param[in] is_direct: direct connection or background auto connection -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_cancel_conn (esp_gatts_if_t server_if, BD_ADDR remote_bda, BOOLEAN is_direct); - - -/******************************************************************************* -** -** @function esp_ble_gatts_close -** -** @brief Close a connection a remote device. -** -** @param[in] conn_id: connectino ID to be closed. -** -** @return None -** -*******************************************************************************/ -void esp_ble_gatts_close(uint16_t conn_id); - - -/******************************************************************************* -** -** @function esp_prf_app_register -** -** @brief This function is called to register application callbacks -** with BTA GATTS module. -** -** @param[in] prf_id - the profile identification -** @param[in] p_cback - pointer to the application callback function. -** -** @return None -** -*******************************************************************************/ -void esp_prf_app_register(uint8_t prf_id, void *p_cback); - - - +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "bt_types.h" +#include "bt_app_defs.h" +#include "bta_gatt_api.h" +#include "bt_prf_sys.h" + + +/******************************************************************************* +** +** @function esp_ble_config_adv_data +** +** @brief This function is called to override the BTA default ADV parameters. +** +** @param[in] adv_data: Pointer to User defined ADV data structure. This +** memory space can not be freed until p_adv_data_cback +** is received. +** @param[in|out] adv_data_cback: set adv data complete callback. +** +** @return None +** +*******************************************************************************/ +void esp_ble_config_adv_data (esp_ble_adv_data_cfg_t *adv_data, + esp_ble_set_adv_data_cmpl_cb_t *adv_data_cback); + + + +/******************************************************************************* +** +** @function esp_ble_set_scan_params +** +** @brief This function is called to set scan parameters +** +** @param[in] esp_ble_scan_params: Pointer to User defined scan_params data structure. This +** memory space can not be freed until scan_param_setup_cback +** @param[in] client_if: Client interface ID +** @param[in|out] scan_param_setup_status_cback - Set scan param status callback +** +** @return None +** +*******************************************************************************/ +void esp_ble_set_scan_params (esp_ble_scan_params *scan_params, esp_gattc_if_t client_if, + esp_scan_param_setup_cb_t scan_param_setup_cback); + + +/******************************************************************************* +** +** @function esp_ble_start_scanning +** +** @brief This procedure keep the device scanning the peer device whith advertising on the air +** +** @param[in] duration: Keeping the scaning time, the unit is second. +** @param[in|out] results_cb: The scanning function callback when the peer device has been scan +** which advertising on the air +** +** @return None +** +*******************************************************************************/ +void esp_ble_start_scanning (UINT8 duration, esp_dm_search_cb_t *results_cb); + + + +/******************************************************************************* +** +** @function esp_ble_start_advertising +** +** @brief This function is called to start advertising. +** +** @param[in] esp_ble_adv_params_all_t: ointer to User defined adv_params data structure. +** +** @return None +** +*******************************************************************************/ +void esp_ble_start_advertising (esp_ble_adv_params_all_t *ble_adv_params); + + + +/******************************************************************************* +** +** @function esp_ble_stop_advertising +** +** @brief This function is called to stop advertising. +** +** @param None +** +** @return None +** +*******************************************************************************/ +void esp_ble_stop_advertising (void); + + + +/******************************************************************************* +** +** @function esp_ble_update_conn_params +** +** @brief Update connection parameters, can only be used when connection is up. +** +** @param[in] bd_addr - BD address of the peer +** @param[in] min_int - minimum connection interval, [0x0004~ 0x4000] +** @param[in] max_int - maximum connection interval, [0x0004~ 0x4000] +** @param[in] latency - slave latency [0 ~ 500] +** @param[in] timeout - supervision timeout [0x000a ~ 0xc80] +** +** @return None +** +*******************************************************************************/ +void esp_ble_update_conn_params (BD_ADDR bd_addr, uint16_t min_int, + uint16_t max_int, uint16_t latency, uint16_t timeout); + + +/******************************************************************************* +** +** @function esp_ble_set_pkt_data_len +** +** @brief This function is to set maximum LE data packet size +** +** @return None +** +** +*******************************************************************************/ +void esp_ble_set_pkt_data_len (BD_ADDR remote_device, uint16_t tx_data_length); + + + +/******************************************************************************* +** +** @function esp_ble_set_rand_addr +** +** @brief This function set the random address for the appliction +** +** @param[in] rand_addr: the random address whith should be setting +** +** @return None +** +** +*******************************************************************************/ +void esp_ble_set_rand_addr (BD_ADDR rand_addr); + + + +/******************************************************************************* +** +** @function esp_ble_config_local_privacy +** +** @brief Enable/disable privacy on the local device +** +** @param[in] privacy_enable - enable/disabe privacy on remote device. +** +** @return None +** +*******************************************************************************/ +void esp_ble_config_local_privacy (BOOLEAN privacy_enable); + + + +/******************************************************************************* +** @function esp_gattc_disable +** @brief This function is called by application to disable GATTC module +** +** @param NULL +** +** @return None. +** +*******************************************************************************/ +void esp_gattc_disable(void); + + +/******************************************************************************* +** +** @function esp_ble_gattc_app_register +** +** @brief This function is called to register application callbacks +** with GATTC module. +** +** @param[in] app_uuid - applicaiton UUID +** @param[in] client_cb - pointer to the application callback function. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_app_register(esp_bt_uuid_t *app_uuid, esp_gattc_cb_t *client_cb); + + +/******************************************************************************* +** +** @function esp_ble_gattc_app_unregister +** +** @brief This function is called to unregister an application +** from GATTC module. +** +** @param[in] client_if - client interface identifier. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_app_unregister(esp_gattc_if_t client_if); + + +/******************************************************************************* +** +** @function esp_ble_gattc_conn +** +** @brief Open a direct connection or add a background auto connection +** bd address +** +** @param[in] client_if: server interface. +** @param[in] remote_bda: remote device BD address. +** @param[in] is_direct: direct connection or background auto connection +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_conn(esp_gattc_if_t client_if, BD_ADDR remote_bda, BOOLEAN is_direct); + + + +/******************************************************************************* +** +** @function esp_ble_gattc_cancel_conn +** +** @brief Cancel a direct open connection or remove a background auto connection +** bd address +** +** @param[in] client_if: server interface. +** @param[in] remote_bda: remote device BD address. +** @param[in] is_direct: direct connection or background auto connection +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_cancel_conn (esp_gattc_if_t client_if, BD_ADDR remote_bda, BOOLEAN is_direct); + + +/******************************************************************************* +** +** @function esp_ble_gattc_close +** +** @brief Close a connection to a GATT server. +** +** @param[in] conn_id: connectino ID to be closed. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_close (uint16_t conn_id); + + + +/******************************************************************************* +** +** @function esp_ble_gattc_config_mtu +** +** @brief Configure the MTU size in the GATT channel. This can be done +** only once per connection. +** +** @param[in] conn_id: connection ID. +** mtu: desired MTU size to use. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the mtu value invalid +** +*******************************************************************************/ +esp_gatt_status_t esp_ble_gattc_config_mtu (uint16_t conn_id, uint16_t mtu); + + +/******************************************************************************* +** +** @function esp_ble_gattc_svc_search_req +** +** @brief This function is called to request a GATT service discovery +** on a GATT server. This function report service search result +** by a callback event, and followed by a service search complete +** event. +** +** @param[in] conn_id: connection ID. +** @param[in] srvc_uuid: a UUID of the service application is interested in. +** If Null, discover for all services. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_svc_search_req (uint16_t conn_id, esp_bt_uuid_t *srvc_uuid); + + +/**************************************************************************************************** +** +** @function esp_ble_gattc_get_first_char +** +** @brief This function is called to find the first characteristic of the +** service on the given server. +** +** @param[in] conn_id: connection ID which identify the server. +** @param[in] srvc_id: the service ID of which the characteristic is belonged to. +** @param[in] char_uuid_cond: Characteristic UUID, if NULL find the first available +** characteristic. +** @param[in] char_result: output parameter which will store the GATT +** characteristic ID. +** @param[in] property: output parameter to carry the characteristic property. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the srvc_id or char_result parameter is NULL. +** +*****************************************************************************************************/ +esp_gatt_status_t esp_ble_gattc_get_first_char (uint16_t conn_id, esp_gatt_srvc_id_t *srvc_id, + esp_bt_uuid_t *char_uuid_cond, + esp_gattc_char_id_t *char_result, + esp_gatt_char_prop_t *property); + + +/******************************************************************************* +** +** @function esp_ble_gattc_get_first_char_descr +** +** @brief This function is called to find the first characteristic descriptor of the +** characteristic on the given server. +** +** @param[in] conn_id: connection ID which identify the server. +** @param[in] char_id: the characteristic ID of which the descriptor is belonged to. +** @param[in] descr_uuid_cond: Characteristic Descr UUID, if NULL find the first available +** characteristic. +** @param[in] descr_result: output parameter which will store the GATT +** characteristic descriptor ID. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the char_id or descr_result parameter is NULL. +** +*******************************************************************************/ +esp_gatt_status_t esp_ble_gattc_get_first_char_descr (uint16_t conn_id, esp_gattc_char_id_t *char_id, + esp_bt_uuid_t *descr_uuid_cond, + esp_gattc_char_descr_id_t *descr_result); + + +/******************************************************************************* +** +** @function esp_ble_gattc_get_next_inclu_srvc +** +** @brief This function is called to find the next included service of the +** service on the given server. +** +** @param[in] conn_id: connection ID which identify the server. +** @param[in] start_id: start the search from the next record +** after the one identified by p_start_id. +** @param[in] uuid_cond: Included service UUID, if NULL find the first available +** included service. +** @param[in] result: output parameter which will store the GATT ID +** of the included service found. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the p_char_id or p_descr_result parameter is NULL. + +*******************************************************************************/ +esp_gatt_status_t esp_ble_gattc_get_next_inclu_srvc (uint16_t conn_id, + esp_gattc_incl_srvc_id_t *start_id, + esp_bt_uuid_t *uuid_cond, + esp_gattc_incl_srvc_id_t *result); + + +/******************************************************************************* +** +** @function esp_ble_gattc_get_next_char +** +** @brief This function is called to find the next characteristic of the +** service on the given server. +** +** @param[in] conn_id: connection ID which identify the server. +** @param[in] start_char_id: start the characteristic search from the next record +** after the one identified by char_id. +** @param[in] char_uuid_cond: Characteristic UUID, if NULL find the first available +** characteristic. +** @param[in] char_result: output parameter which will store the GATT +** characteristic ID. +** @param[in] property: output parameter to carry the characteristic property. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the start_char_id or char_result parameter is NULL. +** +*******************************************************************************/ +esp_gatt_status_t esp_ble_gattc_get_next_char (uint16_t conn_id, + esp_gattc_char_id_t *start_char_id, + esp_bt_uuid_t *char_uuid_cond, + esp_gattc_char_id_t *char_result, + esp_gatt_char_prop_t *property); + + +/******************************************************************************* +** +** @function esp_ble_gattc_get_next_char_descr +** +** @brief This function is called to find the next characteristic descriptor +** of the characterisctic. +** +** @param[in] conn_id: connection ID which identify the server. +** @param[in] start_descr_id: start the descriptor search from the next record +** after the one identified by p_start_descr_id. +** @param[in] descr_uuid_cond: Characteristic descriptor UUID, if NULL find +** the first available characteristic descriptor. +** @param[in] descr_result: output parameter which will store the GATT +** characteristic descriptor ID. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the start_descr_id or descr_result parameter is NULL. +** +*******************************************************************************/ +esp_gatt_status_t esp_ble_gattc_get_next_char_descr (uint16_t conn_id, + esp_gattc_char_descr_id_t *start_descr_id, + esp_bt_uuid_t *descr_uuid_cond, + esp_gattc_char_descr_id_t *descr_result); + + +/******************************************************************************* +** +** @function esp_ble_gattc_get_first_inclu_srvc +** +** @brief This function is called to find the first included service of the +** service on the given server. +** +** @param[in] conn_id: connection ID which identify the server. +** @param[in] srvc_id: the service ID of which the characteristic is belonged to. +** @param[in] uuid_cond: Characteristic UUID, if NULL find the first available +** characteristic. +** @param[in] result: output parameter which will store the GATT ID +** of the included service found. +** +** @return Command status code: +** - @ref ESP_GATT_OK: If request succeeds +** - @ref ESP_GATT_ILLEGAL_PARAMETER: If the srvc_id or result parameter is NULL. +** +*******************************************************************************/ +esp_gatt_status_t esp_ble_gattc_get_first_inclu_srvc (uint16_t conn_id, esp_gatt_srvc_id_t *srvc_id, + esp_bt_uuid_t *uuid_cond, esp_gattc_incl_srvc_id_t *result); + + +/******************************************************************************* +** +** @function esp_ble_gattc_read_char +** +** @brief This function is called to read a service's characteristics of +** the given characteritisc ID. +** +** @param[in] conn_id - connectino ID. +** @param[in] char_id - characteritic ID to read. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_read_char (uint16_t conn_id, esp_gattc_char_id_t *char_id, + esp_gatt_auth_req_t auth_req); + + + +/******************************************************************************* +** +** @function esp_ble_gattc_read_char_descr +** +** @brief This function is called to read a characteristics descriptor. +** +** @param[in] conn_id - connection ID. +** @param[in] descr_id - characteritic descriptor ID to read. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_read_char_descr (uint16_t conn_id, + esp_gattc_char_descr_id_t *descr_id, + esp_gatt_auth_req_t auth_req); + + + +/******************************************************************************* +** +** @function esp_ble_gattc_read_multi +** +** @brief This function is called to read multiple characteristic or +** characteristic descriptors. +** +** @param[in] conn_id - connectino ID. +** @param[in] read_multi - pointer to the read multiple parameter. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_read_multi (uint16_t conn_id, esp_gattc_multi_t *read_multi, + esp_gatt_auth_req_t auth_req); + + + +/******************************************************************************* +** +** @function esp_ble_gattc_write_char_val +** +** @brief This function is called to write characteristic value. +** +** @param[in] conn_id - connection ID. +** @param[in] char_id - characteristic ID to write. +** @param[in] write_type - type of write. +** @param[in] len: length of the data to be written. +** @param[in] value - the value to be written. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_write_char_val ( uint16_t conn_id, + esp_gattc_char_id_t *char_id, + esp_gattc_write_type_t write_type, + uint16_t len, + uint8_t *value, + esp_gatt_auth_req_t auth_req); + + +/******************************************************************************* +** +** @function esp_ble_gattc_write_char_descr +** +** @brief This function is called to write characteristic descriptor value. +** +** @param[in] conn_id - connection ID +** @param[in] char_descr_id - characteristic descriptor ID to write. +** @param[in] write_type - write type. +** @param[in] data - the value to be written. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_write_char_descr (uint16_t conn_id, + esp_gattc_char_descr_id_t *char_descr_id, + esp_gattc_write_type_t write_type, + esp_gatt_unfmt_t *data, + esp_gatt_auth_req_t auth_req); + + + +/******************************************************************************* +** +** @function esp_ble_gattc_prepa_write +** +** @brief This function is called to prepare write a characteristic value. +** +** @param[in] conn_id - connection ID. +** @param[in] char_id - GATT characteritic ID of the service. +** @param[in] offset - offset of the write value. +** @param[in] len: length of the data to be written. +** @param[in] value - the value to be written. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_prepa_write (uint16_t conn_id, esp_gattc_char_id_t *char_id, + uint16_t offset, uint16_t len, uint8_t *value, + esp_gatt_auth_req_t auth_req); + + + +/******************************************************************************* +** +** @function esp_ble_gattc_execu_write +** +** @brief This function is called to execute write a prepare write sequence. +** +** @param[in] conn_id - connection ID. +** @param[in] is_execute - execute or cancel. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_execu_write (uint16_t conn_id, BOOLEAN is_execute); + + + +/******************************************************************************* +** +** @function esp_ble_gattc_send_ind_cfm +** +** @brief This function is called to send handle value confirmation. +** +** @param[in] conn_id - connection ID. +** @param[in] char_id - characteristic ID to confirm. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gattc_send_ind_cfm (uint16_t conn_id, esp_gattc_char_id_t *char_id); + + + + +/******************************************************************************* +** +** @function esp_ble_gattc_register_ntf +** +** @brief This function is called to register for notification of a service. +** +** @param[in] client_if - client interface. +** @param[in] bda - target GATT server. +** @param[in] char_id - pointer to GATT characteristic ID. +** +** @return OK if registration succeed, otherwise failed. +** +*******************************************************************************/ +esp_gatt_status_t esp_ble_gattc_register_ntf (esp_gattc_if_t client_if, + BD_ADDR bda, + esp_gattc_char_id_t *char_id); + + + +/******************************************************************************* +** +** @function esp_ble_gattc_unregister_ntf +** +** @brief This function is called to de-register for notification of a service. +** +** @param[in] client_if - client interface. +** @param[in] bda - target GATT server. +** @param[in] char_id - pointer to GATT characteristic ID. +** +** @return OK if deregistration succeed, otherwise failed. +** +*******************************************************************************/ +tBTA_GATT_STATUS esp_ble_gattc_unregister_ntf (esp_gattc_if_t client_if, + BD_ADDR bda, + esp_gattc_char_id_t *char_id); + + +/******************************************************************************* +** +** @function esp_ble_gatts_disale +** +** @brief This function is called to disable GATTS module +** +** @param[in] None. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_disale(void); + + + + +/******************************************************************************* +** +** @function esp_ble_gatts_app_register +** +** @brief This function is called to register application callbacks +** with BTA GATTS module. +** +** @param[in] app_uuid - applicaiton UUID +** @param[in] cback - pointer to the application callback function. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_app_register(esp_bt_uuid_t *app_uuid, esp_gatts_cb_t *cback); + + + +/******************************************************************************* +** +** @function esp_ble_gatts_app_unregister +** +** @brief un-register with GATT Server. +** +** @param[in] server_if: service interface id. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_app_unregister(esp_gatts_if_t server_if); + + + +/******************************************************************************* +** +** @function esp_ble_gatts_create_srvc +** +** @brief Create a service. When service creation is done, a callback +** event BTA_GATTS_CREATE_SRVC_EVT is called to report status +** and service ID to the profile. The service ID obtained in +** the callback function needs to be used when adding included +** service and characteristics/descriptors into the service. +** +** @param[in] server_if: Profile ID this service is belonged to. +** @param[in] service_uuid: service UUID. +** @param[in] inst: instance ID number of this service. +** @param[in] num_handle: numble of handle requessted for this service. +** @param[in] is_primary: is this service a primary one or not. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_create_srvc(esp_gatts_if_t server_if, esp_bt_uuid_t *service_uuid, uint8_t inst, + uint16_t num_handle, BOOLEAN is_primary); + + + +/******************************************************************************* +** +** @function esp_ble_gatts_add_inclu_srvc +** +** @brief This function is called to add an included service. After included +** service is included, a callback event BTA_GATTS_ADD_INCL_SRVC_EVT +** is reported the included service ID. +** +** @param[in] service_id: service ID to which this included service is to +** be added. +** @param[in] included_service_id: the service ID to be included. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_add_inclu_srvc (uint16_t service_id, uint16_t included_service_id); + + + +/******************************************************************************* +** +** @function esp_ble_gatts_add_char +** +** @brief This function is called to add a characteristic into a service. +** +** @param[in] service_id: service ID to which this included service is to +** be added. +** @param[in] char_uuid : Characteristic UUID. +** @param[in] perm : Characteristic value declaration attribute permission. +** @param[in] property : Characteristic Properties +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_add_char (uint16_t service_id, esp_bt_uuid_t *char_uuid, + esp_gatt_perm_t perm, esp_gatt_char_prop_t property); + + + + +/******************************************************************************* +** +** @function esp_ble_gatts_add_char_descr +** +** @brief This function is called to add characteristic descriptor. When +** it's done, a callback event BTA_GATTS_ADD_DESCR_EVT is called +** to report the status and an ID number for this descriptor. +** +** @param[in] service_id: service ID to which this charatceristic descriptor is to +** be added. +** @param[in] perm: descriptor access permission. +** @param[in] descr_uuid: descriptor UUID. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_add_char_descr (uint16_t service_id, + esp_gatt_perm_t perm, + esp_bt_uuid_t * descr_uuid); + + + +/******************************************************************************* +** +** @function esp_ble_gatts_dele_srvc +** +** @brief This function is called to delete a service. When this is done, +** a callback event BTA_GATTS_DELETE_EVT is report with the status. +** +** @param[in] service_id: service_id to be deleted. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_dele_srvc (uint16_t service_id); + + + +/******************************************************************************* +** +** @function esp_ble_gatts_start_srvc +** +** @brief This function is called to start a service. +** +** @param[in] service_id: the service ID to be started. +** @param[in] sup_transport: supported trasnport. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_start_srvc(uint16_t service_id); + + + +/******************************************************************************* +** +** @function esp_ble_gatts_stop_srvc +** +** @brief This function is called to stop a service. +** +** @param[in] service_id - service to be topped. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_stop_srvc(uint16_t service_id); + + + +/******************************************************************************* +** +** @function esp_ble_gatts_hdl_val_indica +** +** @brief This function is called to read a characteristics descriptor. +** +** @param[in] bda - remote device bd address to indicate. +** @param[in] attr_id - attribute ID to indicate. +** @param[in] data_len - indicate data length. +** @param[in] data: data to indicate. +** @param[in] need_confirm - if this indication expects a confirmation or not. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_hdl_val_indica (uint16_t conn_id, uint16_t attr_id, uint16_t data_len, + uint8_t *data, BOOLEAN need_confirm); + + +/******************************************************************************* +** +** @function esp_ble_gatts_send_rsp +** +** @brief This function is called to send a response to a request. +** +** @param[in] conn_id - connection identifier. +** @param[in] trans_id - transaction ID. +** @param[in] status - response status +** @param[in] msg - response data. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_send_rsp (uint16_t conn_id, uint32_t trans_id, + esp_gatt_status_t status, esp_gatts_rsp_t *msg); + + +/******************************************************************************* +** +** @function esp_ble_gatts_conn +** +** @brief Open a direct open connection or add a background auto connection +** bd address +** +** @param[in] server_if: server interface. +** @param[in] remote_bda: remote device BD address. +** @param[in] is_direct: direct connection or background auto connection +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_conn (esp_gatts_if_t server_if, BD_ADDR remote_bda, BOOLEAN is_direct); + + +/******************************************************************************* +** +** @function esp_ble_gatts_cancel_conn +** +** @brief Cancel a direct open connection or remove a background auto connection +** bd address +** +** @param[in] server_if: server interface. +** @param[in] remote_bda: remote device BD address. +** @param[in] is_direct: direct connection or background auto connection +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_cancel_conn (esp_gatts_if_t server_if, BD_ADDR remote_bda, BOOLEAN is_direct); + + +/******************************************************************************* +** +** @function esp_ble_gatts_close +** +** @brief Close a connection a remote device. +** +** @param[in] conn_id: connectino ID to be closed. +** +** @return None +** +*******************************************************************************/ +void esp_ble_gatts_close(uint16_t conn_id); + + +/******************************************************************************* +** +** @function esp_prf_app_register +** +** @brief This function is called to register application callbacks +** with BTA GATTS module. +** +** @param[in] prf_id - the profile identification +** @param[in] p_cback - pointer to the application callback function. +** +** @return None +** +*******************************************************************************/ +void esp_prf_app_register(uint8_t prf_id, void *p_cback); + + + diff --git a/components/bt/bluedroid/stack_api/include/bt_app_sec.h b/components/bt/bluedroid/stack_api/include/bt_app_sec.h index 6c003ae0c5..6b7310fd91 100644 --- a/components/bt/bluedroid/stack_api/include/bt_app_sec.h +++ b/components/bt/bluedroid/stack_api/include/bt_app_sec.h @@ -1,78 +1,78 @@ -/** - **************************************************************************************** - * - * @file bt_app_sec.h - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/10/13 - * - * - **************************************************************************************** - */ - -#include "bt_types.h" - -#define APP_SEC_IRK_FLAG (0) -#define RAND_NB_LEN 0x08 -#define SEC_KEY_LEN 0x10 - - /* - * STRUCTURES DEFINITIONS - **************************************************************************************** - */ - - - /// Generic Security key structure -typedef struct - { - /// Key value MSB -> LSB - UINT8 key[SEC_KEY_LEN]; - }smp_sec_key; - - ///Random number structure -typedef struct -{ - ///8-byte array for random number - UINT8 nb[RAND_NB_LEN]; -}rand_nb; - - typedef struct - { - // LTK - smp_sec_key ltk; - // Random Number - rand_nb rand_nb; - // EDIV - UINT16 ediv; - // LTK key size - UINT8 key_size; - - // Last paired peer address type - UINT8 peer_addr_type; - // Last paired peer address - BD_ADDR peer_addr; - - // authentication level - UINT8 auth; - - }tAPP_SEC_ENV; - - extern tAPP_SEC_ENV app_sec_env; - - /* - * GLOBAL FUNCTIONS DECLARATIONS - **************************************************************************************** - */ - -void app_ble_sec_init(void); - -void app_ble_sec_pairing_cmp_evt_send(UINT8); - -UINT32 app_ble_sec_gen_tk(void); - -void app_ble_sec_gen_ltk(UINT8 key_size); - -void app_ble_security_start(void); - +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "bt_types.h" + +#define APP_SEC_IRK_FLAG (0) +#define RAND_NB_LEN 0x08 +#define SEC_KEY_LEN 0x10 + + /* + * STRUCTURES DEFINITIONS + **************************************************************************************** + */ + + + /// Generic Security key structure +typedef struct + { + /// Key value MSB -> LSB + UINT8 key[SEC_KEY_LEN]; + }smp_sec_key; + + ///Random number structure +typedef struct +{ + ///8-byte array for random number + UINT8 nb[RAND_NB_LEN]; +}rand_nb; + + typedef struct + { + // LTK + smp_sec_key ltk; + // Random Number + rand_nb rand_nb; + // EDIV + UINT16 ediv; + // LTK key size + UINT8 key_size; + + // Last paired peer address type + UINT8 peer_addr_type; + // Last paired peer address + BD_ADDR peer_addr; + + // authentication level + UINT8 auth; + + }tAPP_SEC_ENV; + + extern tAPP_SEC_ENV app_sec_env; + + /* + * GLOBAL FUNCTIONS DECLARATIONS + **************************************************************************************** + */ + +void app_ble_sec_init(void); + +void app_ble_sec_pairing_cmp_evt_send(UINT8); + +UINT32 app_ble_sec_gen_tk(void); + +void app_ble_sec_gen_ltk(UINT8 key_size); + +void app_ble_security_start(void); + diff --git a/examples/05_ble_adv/main/app_bt.c b/examples/05_ble_adv/main/app_bt.c index 7f5dda5ec5..810b53207b 100755 --- a/examples/05_ble_adv/main/app_bt.c +++ b/examples/05_ble_adv/main/app_bt.c @@ -1,3 +1,17 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #include #include "freertos/FreeRTOS.h" #include "freertos/task.h" diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/app_client_profiles/battery_c/battery_c.c b/examples/06_bluedroid_demos/components/bluedroid_demos/app_client_profiles/battery_c/battery_c.c index 409fa828c4..f5cd9964b3 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/app_client_profiles/battery_c/battery_c.c +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/app_client_profiles/battery_c/battery_c.c @@ -1,3 +1,17 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + /*************************************************************** * * * * This file is for client to execute battery-related operation diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app.c b/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app.c index d3a4b42918..7507aa8445 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app.c +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app.c @@ -1,16 +1,16 @@ -/** - **************************************************************************************** - * - * @file bt_app.c - * - * @brief Application entry point - * - * Copyright (C) Espressif 2016 - * Created by Yulong at 2016/9/9 - * - * - **************************************************************************************** - */ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #include "bt_app_defs.h" diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_core.c b/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_core.c index 250427296a..badd92f586 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_core.c +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/app_core/bt_app_core.c @@ -1,3 +1,17 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #include #include #include diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_WX_airsync/app_airsync_md5.c b/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_WX_airsync/app_airsync_md5.c index 7271f6473a..d8ecda9b3d 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_WX_airsync/app_airsync_md5.c +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_WX_airsync/app_airsync_md5.c @@ -1,130 +1,131 @@ -/** - **************************************************************************************** - * - * @file app_airsync_md5.h - * - * @brief Application airsync md5 generation Entry Point - * - * Copyright (C) ESPRESSIF 2016 - * Created by Yulong at 2016/10/9 - * - **************************************************************************************** - */ - -#include "prf_defs.h" -#if (WX_AIRSYNC_CFG) - - -#include -#include -#include -#include "gki.h" -#include "app_airsync_md5.h" - -const uint32_t X[4][2] = {{0, 1}, {1, 5}, {5, 3}, {0, 7}}; -const uint32_t S[4][4] = {{ 7, 12, 17, 22 },{ 5, 9 , 14, 20 },{ 4, 11, 16, 23 },{ 6, 10, 15, 21 }}; -uint32_t F( uint32_t X, uint32_t Y, uint32_t Z ) -{ - return ( X & Y ) | ( ~X & Z ); -} -uint32_t G( uint32_t X, uint32_t Y, uint32_t Z ) - { - return ( X & Z ) | ( Y & ~Z ); - } -uint32_t H( uint32_t X, uint32_t Y, uint32_t Z ) -{ - return X ^ Y ^ Z; -} -uint32_t I( uint32_t X, uint32_t Y, uint32_t Z ) -{ - return Y ^ ( X | ~Z ); -} - // rotates x left s bits. -uint32_t rotate_left( uint32_t x, uint32_t s ) -{ - return ( x << s ) | ( x >> ( 32 - s ) ); -} - - // Pre-processin -uint32_t count_padding_bits ( uint32_t length ) -{ -// uint32_t div = length * BITS / BLOCK_SIZE; - uint32_t mod = length * BITS % BLOCK_SIZE; - uint32_t c_bits; - if ( mod == 0 ) - { - c_bits = MOD_SIZE; - } - else - { - c_bits = ( MOD_SIZE + BLOCK_SIZE - mod ) % BLOCK_SIZE; - } - return c_bits / BITS; -} - -MD5String append_padding_bits ( char * argv ) -{ - uint32_t msg_length = strlen ( argv ); - uint32_t bit_length = count_padding_bits ( msg_length ); - uint64_t app_length = msg_length * BITS; - MD5String string; - string.str = (char *)GKI_getbuf(msg_length + bit_length + APP_SIZE / BITS); - strncpy ( string.str, argv, msg_length ); - memset ( string.str + msg_length, 0, bit_length ); - string.str [ msg_length ] = SINGLE_ONE_BIT; - memmove ( string.str + msg_length + bit_length, (char *)&app_length, sizeof( uint64_t ) ); - string.len = msg_length + bit_length + sizeof( uint64_t ); - return string; -} - -int32_t wechat_md5 (char *argv, uint8_t *md5_32) -{ - MD5String string; - uint32_t w[16]; - uint32_t chain[4]; - uint32_t state[4]; - - uint32_t ( *auxi[ 4 ])( uint32_t, uint32_t, uint32_t ) = { F, G, H, I }; - int sIdx; - int wIdx; - string = append_padding_bits ( argv ); - chain[0] = A; - chain[1] = B; - chain[2] = C; - chain[3] = D; - for (uint32_t j = 0; j < string.len; j += BLOCK_SIZE / BITS) - { - memmove ( (char *)w, string.str + j, BLOCK_SIZE / BITS ); - memmove ( state, chain, sizeof(chain) ); - for ( uint8_t roundIdx = 0; roundIdx < 4; roundIdx++ ) - { - wIdx = X[ roundIdx ][ 0 ]; - sIdx = 0; - for (uint8_t i = 0; i < 16; i++ ) - { - state[sIdx] = state [(sIdx + 1)%4] + rotate_left( state[sIdx] +(*auxi[ roundIdx])( state[(sIdx+1) % 4], - state[(sIdx+2) % 4], - state[(sIdx+3) % 4]) + w[ wIdx ] + (uint32_t)floor((1ULL << 32) * fabs(sin( roundIdx * 16 + i + 1 )) ), - S[ roundIdx ][ i % 4 ]); - sIdx = ( sIdx + 3 ) % 4; - wIdx = ( wIdx + X[ roundIdx ][ 1 ] ) & 0xF; - } - } - chain[ 0 ] += state[ 0 ]; - chain[ 1 ] += state[ 1 ]; - chain[ 2 ] += state[ 2 ]; - chain[ 3 ] += state[ 3 ]; - } - memmove ( md5_32 + 0, (char *)&chain[0], sizeof(uint32_t) ); - memmove ( md5_32 + 4, (char *)&chain[1], sizeof(uint32_t) ); - memmove ( md5_32 + 8, (char *)&chain[2], sizeof(uint32_t) ); - memmove ( md5_32 + 12, (char *)&chain[3], sizeof(uint32_t) ); - free(string.str); - string.str = NULL; - return EXIT_SUCCESS; - -} - - -#endif ///WX_AIRSYNC_CFG - +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "prf_defs.h" +#if (WX_AIRSYNC_CFG) + + +#include +#include +#include +#include "gki.h" +#include "app_airsync_md5.h" + +const uint32_t X[4][2] = {{0, 1}, {1, 5}, {5, 3}, {0, 7}}; +const uint32_t S[4][4] = {{ 7, 12, 17, 22 },{ 5, 9 , 14, 20 },{ 4, 11, 16, 23 },{ 6, 10, 15, 21 }}; +uint32_t F( uint32_t X, uint32_t Y, uint32_t Z ) +{ + return ( X & Y ) | ( ~X & Z ); +} +uint32_t G( uint32_t X, uint32_t Y, uint32_t Z ) + { + return ( X & Z ) | ( Y & ~Z ); + } +uint32_t H( uint32_t X, uint32_t Y, uint32_t Z ) +{ + return X ^ Y ^ Z; +} +uint32_t I( uint32_t X, uint32_t Y, uint32_t Z ) +{ + return Y ^ ( X | ~Z ); +} + // rotates x left s bits. +uint32_t rotate_left( uint32_t x, uint32_t s ) +{ + return ( x << s ) | ( x >> ( 32 - s ) ); +} + + // Pre-processin +uint32_t count_padding_bits ( uint32_t length ) +{ +// uint32_t div = length * BITS / BLOCK_SIZE; + uint32_t mod = length * BITS % BLOCK_SIZE; + uint32_t c_bits; + if ( mod == 0 ) + { + c_bits = MOD_SIZE; + } + else + { + c_bits = ( MOD_SIZE + BLOCK_SIZE - mod ) % BLOCK_SIZE; + } + return c_bits / BITS; +} + +MD5String append_padding_bits ( char * argv ) +{ + uint32_t msg_length = strlen ( argv ); + uint32_t bit_length = count_padding_bits ( msg_length ); + uint64_t app_length = msg_length * BITS; + MD5String string; + string.str = (char *)GKI_getbuf(msg_length + bit_length + APP_SIZE / BITS); + strncpy ( string.str, argv, msg_length ); + memset ( string.str + msg_length, 0, bit_length ); + string.str [ msg_length ] = SINGLE_ONE_BIT; + memmove ( string.str + msg_length + bit_length, (char *)&app_length, sizeof( uint64_t ) ); + string.len = msg_length + bit_length + sizeof( uint64_t ); + return string; +} + +int32_t wechat_md5 (char *argv, uint8_t *md5_32) +{ + MD5String string; + uint32_t w[16]; + uint32_t chain[4]; + uint32_t state[4]; + + uint32_t ( *auxi[ 4 ])( uint32_t, uint32_t, uint32_t ) = { F, G, H, I }; + int sIdx; + int wIdx; + string = append_padding_bits ( argv ); + chain[0] = A; + chain[1] = B; + chain[2] = C; + chain[3] = D; + for (uint32_t j = 0; j < string.len; j += BLOCK_SIZE / BITS) + { + memmove ( (char *)w, string.str + j, BLOCK_SIZE / BITS ); + memmove ( state, chain, sizeof(chain) ); + for ( uint8_t roundIdx = 0; roundIdx < 4; roundIdx++ ) + { + wIdx = X[ roundIdx ][ 0 ]; + sIdx = 0; + for (uint8_t i = 0; i < 16; i++ ) + { + state[sIdx] = state [(sIdx + 1)%4] + rotate_left( state[sIdx] +(*auxi[ roundIdx])( state[(sIdx+1) % 4], + state[(sIdx+2) % 4], + state[(sIdx+3) % 4]) + w[ wIdx ] + (uint32_t)floor((1ULL << 32) * fabs(sin( roundIdx * 16 + i + 1 )) ), + S[ roundIdx ][ i % 4 ]); + sIdx = ( sIdx + 3 ) % 4; + wIdx = ( wIdx + X[ roundIdx ][ 1 ] ) & 0xF; + } + } + chain[ 0 ] += state[ 0 ]; + chain[ 1 ] += state[ 1 ]; + chain[ 2 ] += state[ 2 ]; + chain[ 3 ] += state[ 3 ]; + } + memmove ( md5_32 + 0, (char *)&chain[0], sizeof(uint32_t) ); + memmove ( md5_32 + 4, (char *)&chain[1], sizeof(uint32_t) ); + memmove ( md5_32 + 8, (char *)&chain[2], sizeof(uint32_t) ); + memmove ( md5_32 + 12, (char *)&chain[3], sizeof(uint32_t) ); + free(string.str); + string.str = NULL; + return EXIT_SUCCESS; + +} + + +#endif ///WX_AIRSYNC_CFG + diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_WX_airsync/app_airsync_prf.c b/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_WX_airsync/app_airsync_prf.c index 60cc8329fc..893c71dbeb 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_WX_airsync/app_airsync_prf.c +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_WX_airsync/app_airsync_prf.c @@ -1,160 +1,161 @@ -/** - **************************************************************************************** - * - * @file app_airsync_prf.c - * - * @brief Application Security Entry Point - * - * Copyright (C) ESPRESSIF 2016 - * Created by Yulong at 2016/9/30 - * - **************************************************************************************** - */ - -#include "prf_defs.h" -#if (WX_AIRSYNC_CFG) - -#include "app_airsync_prf.h" -#include "wx_airsync_prf.h" -#include "app_wechat_util.h" -#include "gki.h" -#include "mpbledemo2.h" - -/***************************************************************************** -* data handle -*****************************************************************************/ -data_info g_send_data; - -static data_info g_rcv_data; -data_handler *pDataHandler; - - -static void airsync_process_msgreceive_cb(UINT8 app_id, - UINT8 conn_id,uint8_t *pData, uint16_t length); - -///function for register all products -static void register_all_products(void) -{ - REGISTER(mpbledemo2); - // could register more products if defined -} - -void app_wechat_init(void) -{ - register_all_products(); - - data_handler_init(&m_mpbledemo2_handler,PRODUCT_TYPE_MPBLEDEMO2); - m_mpbledemo2_handler->m_data_init_func(); - m_mpbledemo2_handler->m_data_init_peripheral_func(); - - app_wechat_SetDatahandler(m_mpbledemo2_handler); -} - -int ble_wechat_indicate_data_chunk(void) -{ - uint16_t chunk_len = 0; - chunk_len = g_send_data.len - g_send_data.offset; - chunk_len = chunk_len > BLE_WECHAT_MAX_DATA_LEN?BLE_WECHAT_MAX_DATA_LEN:chunk_len; - - if(chunk_len == 0) - { - app_wechat_datahandler()->m_data_free_func(g_send_data.data,g_send_data.len); - g_send_data.data = NULL; - g_send_data.len = 0; - g_send_data.offset = 0; - return 0; - } - - g_send_data.offset += chunk_len; - return 1; -} - - - /******************************************************************************* +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "prf_defs.h" +#if (WX_AIRSYNC_CFG) + +#include "app_airsync_prf.h" +#include "wx_airsync_prf.h" +#include "app_wechat_util.h" +#include "gki.h" +#include "mpbledemo2.h" + +/***************************************************************************** +* data handle +*****************************************************************************/ +data_info g_send_data; + +static data_info g_rcv_data; +data_handler *pDataHandler; + + +static void airsync_process_msgreceive_cb(UINT8 app_id, + UINT8 conn_id,uint8_t *pData, uint16_t length); + +///function for register all products +static void register_all_products(void) +{ + REGISTER(mpbledemo2); + // could register more products if defined +} + +void app_wechat_init(void) +{ + register_all_products(); + + data_handler_init(&m_mpbledemo2_handler,PRODUCT_TYPE_MPBLEDEMO2); + m_mpbledemo2_handler->m_data_init_func(); + m_mpbledemo2_handler->m_data_init_peripheral_func(); + + app_wechat_SetDatahandler(m_mpbledemo2_handler); +} + +int ble_wechat_indicate_data_chunk(void) +{ + uint16_t chunk_len = 0; + chunk_len = g_send_data.len - g_send_data.offset; + chunk_len = chunk_len > BLE_WECHAT_MAX_DATA_LEN?BLE_WECHAT_MAX_DATA_LEN:chunk_len; + + if(chunk_len == 0) + { + app_wechat_datahandler()->m_data_free_func(g_send_data.data,g_send_data.len); + g_send_data.data = NULL; + g_send_data.len = 0; + g_send_data.offset = 0; + return 0; + } + + g_send_data.offset += chunk_len; + return 1; +} + + + /******************************************************************************* ** -** Function airsync_msgreceive_cb +** Function airsync_msgreceive_cb ** -** Description the callback function after the airsync profile have been -** receive the data from the peer device -** parms appid:the appid have been register to the gatt database -** conn_id:the current connection index -** msg_val:the airsync value receive from peer device +** Description the callback function after the airsync profile have been +** receive the data from the peer device +** parms appid:the appid have been register to the gatt database +** conn_id:the current connection index +** msg_val:the airsync value receive from peer device ** Returns NULL ** -*******************************************************************************/ -static void airsync_process_msgreceive_cb(UINT8 app_id, - UINT8 conn_id,uint8_t *pData, uint16_t length) -{ - int error_code; - int chunk_size = 0; - if(length <= BLE_WECHAT_MAX_DATA_LEN) - { - if(g_rcv_data.len == 0) - { - BpFixHead *fix_head = (BpFixHead *)pData; - g_rcv_data.len = ntohs(fix_head->nLength); - g_rcv_data.offset = 0; - g_rcv_data.data = (uint8_t *)GKI_getbuf(g_rcv_data.len); - } - - chunk_size = g_rcv_data.len - g_rcv_data.offset; - chunk_size = chunk_size < length ? chunk_size : length; - memcpy(g_rcv_data.data + g_rcv_data.offset, pData, chunk_size); - g_rcv_data.offset += chunk_size; - - if (g_rcv_data.len <= g_rcv_data.offset) - { - error_code = app_wechat_datahandler()->m_data_consume_func(g_rcv_data.data, g_rcv_data.len); - app_wechat_datahandler()->m_data_free_func(g_rcv_data.data,g_rcv_data.len); - wechat_error_chack(app_wechat_datahandler(), error_code); - g_rcv_data.len = 0; - g_rcv_data.offset = 0; - - app_wechat_datahandler()->m_data_main_process_func(); - } - - - } - - -} - - void app_wechat_SetDatahandler(data_handler* pHandler) -{ - pDataHandler = pHandler; -} - -bool ble_wechat_is_last_data_sent_out(void) -{ - return (g_send_data.len == 0 && g_send_data.offset == 0 ) || \ - (g_send_data.len != 0 && g_send_data.len == g_send_data.offset); -} - -//device sent data on the indicate characteristic -int ble_wechat_indicate_data(uint8_t *data, int len) -{ - if(data == NULL || len == 0) - { - return 0; - } - - if(!ble_wechat_is_last_data_sent_out()) - { - return 0; - } - - g_send_data.data = data; - g_send_data.len = len; - g_send_data.offset = 0; - - return (ble_wechat_indicate_data_chunk()); -} - -data_handler *app_wechat_datahandler(void) -{ - return pDataHandler; -} - - -#endif ///WX_AIRSYNC_CFG - +*******************************************************************************/ +static void airsync_process_msgreceive_cb(UINT8 app_id, + UINT8 conn_id,uint8_t *pData, uint16_t length) +{ + int error_code; + int chunk_size = 0; + if(length <= BLE_WECHAT_MAX_DATA_LEN) + { + if(g_rcv_data.len == 0) + { + BpFixHead *fix_head = (BpFixHead *)pData; + g_rcv_data.len = ntohs(fix_head->nLength); + g_rcv_data.offset = 0; + g_rcv_data.data = (uint8_t *)GKI_getbuf(g_rcv_data.len); + } + + chunk_size = g_rcv_data.len - g_rcv_data.offset; + chunk_size = chunk_size < length ? chunk_size : length; + memcpy(g_rcv_data.data + g_rcv_data.offset, pData, chunk_size); + g_rcv_data.offset += chunk_size; + + if (g_rcv_data.len <= g_rcv_data.offset) + { + error_code = app_wechat_datahandler()->m_data_consume_func(g_rcv_data.data, g_rcv_data.len); + app_wechat_datahandler()->m_data_free_func(g_rcv_data.data,g_rcv_data.len); + wechat_error_chack(app_wechat_datahandler(), error_code); + g_rcv_data.len = 0; + g_rcv_data.offset = 0; + + app_wechat_datahandler()->m_data_main_process_func(); + } + + + } + + +} + + void app_wechat_SetDatahandler(data_handler* pHandler) +{ + pDataHandler = pHandler; +} + +bool ble_wechat_is_last_data_sent_out(void) +{ + return (g_send_data.len == 0 && g_send_data.offset == 0 ) || \ + (g_send_data.len != 0 && g_send_data.len == g_send_data.offset); +} + +//device sent data on the indicate characteristic +int ble_wechat_indicate_data(uint8_t *data, int len) +{ + if(data == NULL || len == 0) + { + return 0; + } + + if(!ble_wechat_is_last_data_sent_out()) + { + return 0; + } + + g_send_data.data = data; + g_send_data.len = len; + g_send_data.offset = 0; + + return (ble_wechat_indicate_data_chunk()); +} + +data_handler *app_wechat_datahandler(void) +{ + return pDataHandler; +} + + +#endif ///WX_AIRSYNC_CFG + diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_sample_button/app_button.c b/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_sample_button/app_button.c index df280cf4f6..fc67351796 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_sample_button/app_button.c +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/app_profiles/app_sample_button/app_button.c @@ -1,20 +1,16 @@ -/** - -******************************************************************************* -********* - * - * @file app_button.c - * - * @brief button Service Application entry point - * - * Copyright (C) ESPRESSSIF 2016 - * Created by Yulong at 2016/08/24 - * - * - -******************************************************************************* -********* -*/ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. #include "prf_defs.h" diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/app_project/SampleClientProject.c b/examples/06_bluedroid_demos/components/bluedroid_demos/app_project/SampleClientProject.c index be179f501f..7e2808c39c 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/app_project/SampleClientProject.c +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/app_project/SampleClientProject.c @@ -1,3 +1,17 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + /**************************************************************************** * * This file is for gatt client. It can scan ble device, connect one device, diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/app_project/SampleServerProject.c b/examples/06_bluedroid_demos/components/bluedroid_demos/app_project/SampleServerProject.c index 485d908337..c631cac1e3 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/app_project/SampleServerProject.c +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/app_project/SampleServerProject.c @@ -1,3 +1,17 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + /*************************************************************** * * This file is for gatt server device. It instantiates BATTERY diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_airsync_md5.h b/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_airsync_md5.h index 6fe956d615..6a1e709144 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_airsync_md5.h +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_airsync_md5.h @@ -1,52 +1,39 @@ -/** - **************************************************************************************** - * - * @file app_airsync_md5.h - * - * @brief Application airsync md5 generation head Entry Point - * - * Copyright (C) ESPRESSIF 2016 - * Created by Yulong at 2016/10/9 - * - **************************************************************************************** - */ - -#ifndef __APP_AIRSYNC_MD5__ -#define __APP_AIRSYNC_MD5__ - -#include "prf_defs.h" -#if (WX_AIRSYNC_CFG) - - -#include -#include -#include -#include - -#define SINGLE_ONE_BIT 0x80 -#define BLOCK_SIZE 512 -#define MOD_SIZE 448 -#define APP_SIZE 64 -#define BITS 8 - -// MD5 Chaining Variable -#define A 0x67452301UL -#define B 0xEFCDAB89UL -#define C 0x98BADCFEUL -#define D 0x10325476UL - -typedef struct -{ - char *str; - uint32_t len; -}MD5String; - - -int32_t wechat_md5 ( char *argv, uint8_t *md5_32); - - -#endif ///WX_AIRSYNC_CFG - -#endif /// __APP_AIRSYNC_MD5__ - - +#ifndef __APP_AIRSYNC_MD5__ +#define __APP_AIRSYNC_MD5__ + +#include "prf_defs.h" +#if (WX_AIRSYNC_CFG) + + +#include +#include +#include +#include + +#define SINGLE_ONE_BIT 0x80 +#define BLOCK_SIZE 512 +#define MOD_SIZE 448 +#define APP_SIZE 64 +#define BITS 8 + +// MD5 Chaining Variable +#define A 0x67452301UL +#define B 0xEFCDAB89UL +#define C 0x98BADCFEUL +#define D 0x10325476UL + +typedef struct +{ + char *str; + uint32_t len; +}MD5String; + + +int32_t wechat_md5 ( char *argv, uint8_t *md5_32); + + +#endif ///WX_AIRSYNC_CFG + +#endif /// __APP_AIRSYNC_MD5__ + + diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_airsync_prf.h b/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_airsync_prf.h index 5e5699d56f..39d1913ddd 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_airsync_prf.h +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_airsync_prf.h @@ -1,47 +1,35 @@ -/** - **************************************************************************************** - * - * @file app_airsync_prf.h - * - * @brief Application Security Entry Point - * - * Copyright (C) ESPRESSIF 2016 - * Created by Yulong at 2016/9/30 - * - **************************************************************************************** - */ -#ifndef _APP_AIRSYNC_PRF_H__ -#define _APP_AIRSYNC_PRF_H__ - -#include "prf_defs.h" -#if (WX_AIRSYNC_CFG) - - -#include "app_wechat_util.h" -#include -#include - -#define MAGIC_NUMBER 0xFE - -/** - **************************************************************************************** - * @brief Create Wechat Database - * - **************************************************************************************** - */ -void app_wechat_create_db(void); - -void app_wechat_SetDatahandler(data_handler* pHandler); -int ble_wechat_indicate_data(uint8_t *data, int len); -int ble_wechat_indicate_data_chunk(void); -void ble_wechat_process_received_data(uint8_t* pData, uint32_t length); -data_handler* app_wechat_datahandler(void); -bool ble_wechat_is_last_data_sent_out(void); - - -#endif ///WX_AIRSYNC_CFG - -#endif ///_APP_AIRSYNC_PRF_H__ - - - +#ifndef _APP_AIRSYNC_PRF_H__ +#define _APP_AIRSYNC_PRF_H__ + +#include "prf_defs.h" +#if (WX_AIRSYNC_CFG) + + +#include "app_wechat_util.h" +#include +#include + +#define MAGIC_NUMBER 0xFE + +/** + **************************************************************************************** + * @brief Create Wechat Database + * + **************************************************************************************** + */ +void app_wechat_create_db(void); + +void app_wechat_SetDatahandler(data_handler* pHandler); +int ble_wechat_indicate_data(uint8_t *data, int len); +int ble_wechat_indicate_data_chunk(void); +void ble_wechat_process_received_data(uint8_t* pData, uint32_t length); +data_handler* app_wechat_datahandler(void); +bool ble_wechat_is_last_data_sent_out(void); + + +#endif ///WX_AIRSYNC_CFG + +#endif ///_APP_AIRSYNC_PRF_H__ + + + diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_button.h b/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_button.h index ea77c44767..dfebee0c3a 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_button.h +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_button.h @@ -1,17 +1,3 @@ -/** - **************************************************************************************** - * - * @file app_button.h - * - * @brief button Service Application entry point - * - * Copyright (C) ESPRESSIF 2016 - * Created by Yulong at 2016/02/24 - * - * - **************************************************************************************** - */ - /* * DEFINES **************************************************************************************** diff --git a/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_button_int.h b/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_button_int.h index b64a1ee32d..616497bd99 100644 --- a/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_button_int.h +++ b/examples/06_bluedroid_demos/components/bluedroid_demos/include/app_button_int.h @@ -1,131 +1,116 @@ -/** - -******************************************************************************* -********* -* -* @file app_button_int.h -* -* @brief button Service Application entry point -* -* Copyright (C) ESPRESSSIF 2016 -* Created by Yulong at 2016/10/17 -* -******************************************************************************* -**********/ - -#include "prf_defs.h" -#include "bt_prf_sys.h" -#include "bt_types.h" - -#if (BUT_PROFILE_CFG) - -/// Messages for Device Information Service Server -enum -{ - ///Add a BUTTON instance into the database - BLE_BUT_CREATE_DB_REQ_EVT = BT_PRF_SYS_EVT_START(PRF_ID_BUT_LE), - ///Send key value confirm to APP so stable values can be erased - ///if correctly sent. - BLE_BUT_VAL_SEND_CFM_EVT, - ///Set the value of an attribute - BLE_BUT_SET_CHAR_VAL_REQ_EVT, - - ///Start the button notify Service Task - at connection - BLE_BUT_ENABLE_REQ_EVT, - - /// Inform the application that the profile service role task has been disabled after a disconnection - BLE_BUT_DISABLE_IND_EVT, - /// Inform the application that the profile service has been reiceivd the charateristic write commamd from Client - BLE_BUT_CHAR_WRITE_IND_EVT, - ///Error indication to Host - BLE_BUT_ERROR_IND_EVT, -}; - -/// Parameters of the @ref KEY_CREATE_DB_REQ message -typedef struct -{ - ///Database configuration - uint16_t features; -}tBUT_CRT_DB_REQ; - -/// Parameters of the @ref KEY_CREATE_DB_CFM message -typedef struct -{ - ///Status - uint8_t status; -}tBUT_CRT_DB_CFM; - -///Parameters of the @ref key_CFG_INDNTF_IND message -typedef struct -{ - ///Connection handle - uint16_t conhdl; - ///Stop/notify/indicate value to configure into the peer characteristic - uint16_t cfg_val; - /// characteristics - uint8_t char_code; -}tBUT_CFG_NTF_IND; - - -/// Parameters of the @ref KEY_SET_CHAR_VAL_REQ message - shall be dynamically allocated -typedef struct -{ - /// Characteristic Code - //uint8_t char_code; - uint8_t conhdl; - uint8_t key_val_len; - uint8_t key_val[2]; -}tBUT_SND_CHAR_VAL_REQ; - -/// Parameters of the @ref KEY_ENABLE_REQ message -typedef struct -{ - ///Connection handle - uint16_t conhdl; - /// security level: b0= nothing, b1=unauthenticated, b2=authenticated, b3=authorized; b1 or b2 and b3 can go together - uint8_t sec_lvl; - ///Type of connection - uint8_t con_type; -}tBUT_ENABLE_REQ; - -///Parameters of the @ref KEY_VAL_SEND_CFM message -typedef struct -{ - ///Connection handle - uint16_t conhdl; - ///Status - uint8_t status; -}tBUT_VAL_SND_CFM; - - -/// Parameters of the @ref KEY_DISABLE_IND message -typedef struct -{ - ///Connection handle - uint16_t conhdl; -}tBUT_DISABLE_IND; - -typedef union -{ - uint16_t conhdl; - tBUT_CRT_DB_REQ but_crt_db_req; - tBUT_CRT_DB_CFM but_crt_db_cfm; - tBUT_CFG_NTF_IND but_cfg_ntf_ind; - tBUT_SND_CHAR_VAL_REQ but_snd_char_val_req; - tBUT_ENABLE_REQ but_enable_req; - tBUT_VAL_SND_CFM but_val_snd_cfm; - tBUT_DISABLE_IND but_disable_ind; -}tBUT_PRF_MSG; - - - -BOOLEAN ble_but_prf_hdl_event(prf_hdr_evt_t *msg_data); - -void ble_but_prf_disable(void); - - - -#endif ///BUT_PROFILE_CFG - - - +#include "prf_defs.h" +#include "bt_prf_sys.h" +#include "bt_types.h" + +#if (BUT_PROFILE_CFG) + +/// Messages for Device Information Service Server +enum +{ + ///Add a BUTTON instance into the database + BLE_BUT_CREATE_DB_REQ_EVT = BT_PRF_SYS_EVT_START(PRF_ID_BUT_LE), + ///Send key value confirm to APP so stable values can be erased + ///if correctly sent. + BLE_BUT_VAL_SEND_CFM_EVT, + ///Set the value of an attribute + BLE_BUT_SET_CHAR_VAL_REQ_EVT, + + ///Start the button notify Service Task - at connection + BLE_BUT_ENABLE_REQ_EVT, + + /// Inform the application that the profile service role task has been disabled after a disconnection + BLE_BUT_DISABLE_IND_EVT, + /// Inform the application that the profile service has been reiceivd the charateristic write commamd from Client + BLE_BUT_CHAR_WRITE_IND_EVT, + ///Error indication to Host + BLE_BUT_ERROR_IND_EVT, +}; + +/// Parameters of the @ref KEY_CREATE_DB_REQ message +typedef struct +{ + ///Database configuration + uint16_t features; +}tBUT_CRT_DB_REQ; + +/// Parameters of the @ref KEY_CREATE_DB_CFM message +typedef struct +{ + ///Status + uint8_t status; +}tBUT_CRT_DB_CFM; + +///Parameters of the @ref key_CFG_INDNTF_IND message +typedef struct +{ + ///Connection handle + uint16_t conhdl; + ///Stop/notify/indicate value to configure into the peer characteristic + uint16_t cfg_val; + /// characteristics + uint8_t char_code; +}tBUT_CFG_NTF_IND; + + +/// Parameters of the @ref KEY_SET_CHAR_VAL_REQ message - shall be dynamically allocated +typedef struct +{ + /// Characteristic Code + //uint8_t char_code; + uint8_t conhdl; + uint8_t key_val_len; + uint8_t key_val[2]; +}tBUT_SND_CHAR_VAL_REQ; + +/// Parameters of the @ref KEY_ENABLE_REQ message +typedef struct +{ + ///Connection handle + uint16_t conhdl; + /// security level: b0= nothing, b1=unauthenticated, b2=authenticated, b3=authorized; b1 or b2 and b3 can go together + uint8_t sec_lvl; + ///Type of connection + uint8_t con_type; +}tBUT_ENABLE_REQ; + +///Parameters of the @ref KEY_VAL_SEND_CFM message +typedef struct +{ + ///Connection handle + uint16_t conhdl; + ///Status + uint8_t status; +}tBUT_VAL_SND_CFM; + + +/// Parameters of the @ref KEY_DISABLE_IND message +typedef struct +{ + ///Connection handle + uint16_t conhdl; +}tBUT_DISABLE_IND; + +typedef union +{ + uint16_t conhdl; + tBUT_CRT_DB_REQ but_crt_db_req; + tBUT_CRT_DB_CFM but_crt_db_cfm; + tBUT_CFG_NTF_IND but_cfg_ntf_ind; + tBUT_SND_CHAR_VAL_REQ but_snd_char_val_req; + tBUT_ENABLE_REQ but_enable_req; + tBUT_VAL_SND_CFM but_val_snd_cfm; + tBUT_DISABLE_IND but_disable_ind; +}tBUT_PRF_MSG; + + + +BOOLEAN ble_but_prf_hdl_event(prf_hdr_evt_t *msg_data); + +void ble_but_prf_disable(void); + + + +#endif ///BUT_PROFILE_CFG + + + diff --git a/examples/06_bluedroid_demos/main/demo_main.c b/examples/06_bluedroid_demos/main/demo_main.c index fe62f89b79..7ea523c0e9 100644 --- a/examples/06_bluedroid_demos/main/demo_main.c +++ b/examples/06_bluedroid_demos/main/demo_main.c @@ -1,3 +1,17 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #include #include #include diff --git a/examples/07_blufi/components/blufi/blufi.c b/examples/07_blufi/components/blufi/blufi.c index 65ccd40302..304fcf80c0 100644 --- a/examples/07_blufi/components/blufi/blufi.c +++ b/examples/07_blufi/components/blufi/blufi.c @@ -1,3 +1,17 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + /*************************************************************** * * This file is for gatt server device. It instantiates BATTERY diff --git a/examples/07_blufi/components/blufi/blufi_task.c b/examples/07_blufi/components/blufi/blufi_task.c index daa60db6ec..49aa253bd6 100644 --- a/examples/07_blufi/components/blufi/blufi_task.c +++ b/examples/07_blufi/components/blufi/blufi_task.c @@ -1,3 +1,17 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #include #include #include diff --git a/examples/07_blufi/main/demo_main.c b/examples/07_blufi/main/demo_main.c index 54eabe93ce..ac52c8ab34 100644 --- a/examples/07_blufi/main/demo_main.c +++ b/examples/07_blufi/main/demo_main.c @@ -1,3 +1,17 @@ +// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at + +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + #include #include #include