]> granicus.if.org Git - esp-idf/commitdiff
component/bt : add write type
authorTian Hao <tianhao@espressif.com>
Tue, 29 Nov 2016 09:27:12 +0000 (17:27 +0800)
committerTian Hao <tianhao@espressif.com>
Tue, 29 Nov 2016 09:27:12 +0000 (17:27 +0800)
components/bt/bluedroid/api/esp_gattc_api.c
components/bt/bluedroid/api/include/esp_gatt_defs.h
components/bt/bluedroid/api/include/esp_gattc_api.h
components/bt/bluedroid/btc/profile/std/gatt/btc_gattc.c
components/bt/bluedroid/btc/profile/std/include/btc_gattc.h

index 656bfb83b8ffa4b811a30aa73e152297f73dabd0..6c2fd340b5cd88206687c567f45434302d7b66b5 100644 (file)
 #include "btc_manage.h"
 #include "btc_gattc.h"
 
-/*******************************************************************************
-**
-** @function        esp_ble_gattc_app_register_callback
-**
-** @brief           This function is called to register application callbacks
-**                  with GATTC module.
-**
-** @param[in]       callback - pointer to the application callback function.
-**
-** @return          ESP_OK - success, other - failed
-**
-*******************************************************************************/
 esp_err_t esp_ble_gattc_register_callback(esp_profile_cb_t callback)
 {
     if (callback == NULL) {
@@ -40,18 +28,6 @@ esp_err_t esp_ble_gattc_register_callback(esp_profile_cb_t callback)
     return ESP_OK;
 }
 
-/*******************************************************************************
-**
-** @function        esp_ble_gattc_app_register
-**
-** @brief           This function is called to register application
-**                  with GATTC module.
-**
-** @param[in]       app_id : Application Identitfy (UUID), for different application
-**
-** @return          ESP_OK - success, other - failed
-**
-*******************************************************************************/
 esp_err_t esp_ble_gattc_app_register(uint16_t app_id)
 {
     btc_msg_t msg;
@@ -69,18 +45,6 @@ esp_err_t esp_ble_gattc_app_register(uint16_t app_id)
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-/*******************************************************************************
-**
-** @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
-**
-*******************************************************************************/
 esp_err_t esp_ble_gattc_app_unregister(esp_gatt_if_t gatt_if)
 {
     btc_msg_t msg;
@@ -94,20 +58,6 @@ esp_err_t esp_ble_gattc_app_unregister(esp_gatt_if_t gatt_if)
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-/*******************************************************************************
-**
-** @function        esp_ble_gattc_conn
-**
-** @brief           Open a direct connection or add a background auto connection
-**                  bd address
-**
-** @param[in]       gatt_if: application identity.
-** @param[in]       remote_bda: remote device BD address.
-** @param[in]       is_direct: direct connection or background auto connection
-**
-** @return          ESP_OK - success, other - failed
-**
-*******************************************************************************/
 esp_err_t esp_ble_gattc_open(esp_gatt_if_t gatt_if, esp_bd_addr_t remote_bda, bool is_direct)
 {
     btc_msg_t msg;
@@ -123,17 +73,6 @@ esp_err_t esp_ble_gattc_open(esp_gatt_if_t gatt_if, esp_bd_addr_t remote_bda, bo
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-/*******************************************************************************
-**
-** @function        esp_ble_gattc_close
-**
-** @brief           Close a connection to a GATT server.
-**
-** @param[in]       conn_id: connection ID to be closed.
-**
-** @return          ESP_OK - success, other - failed
-**
-*******************************************************************************/
 esp_err_t esp_ble_gattc_close (uint16_t conn_id)
 {
     btc_msg_t msg;
@@ -147,20 +86,6 @@ esp_err_t esp_ble_gattc_close (uint16_t conn_id)
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-
-/*******************************************************************************
-**
-** @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          ESP_OK - success, other - failed
-**
-*******************************************************************************/
 esp_err_t esp_ble_gattc_config_mtu (uint16_t conn_id, uint16_t mtu)
 {
     btc_msg_t msg;
@@ -179,22 +104,6 @@ esp_err_t esp_ble_gattc_config_mtu (uint16_t conn_id, uint16_t mtu)
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-/*******************************************************************************
-**
-** @function        esp_ble_gattc_search_service
-**
-** @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]       filter_uuid: a UUID of the service application is interested in.
-**                  If Null, discover for all services.
-**
-** @return          ESP_OK - success, other - failed
-**
-*******************************************************************************/
 esp_err_t esp_ble_gattc_search_service(uint16_t conn_id, esp_bt_uuid_t *filter_uuid)
 {
     btc_msg_t msg;
@@ -214,24 +123,6 @@ esp_err_t esp_ble_gattc_search_service(uint16_t conn_id, esp_bt_uuid_t *filter_u
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-
-/****************************************************************************************************
-**
-** @function        esp_ble_gattc_get_characteristic
-**
-** @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: serivce ID
-**
-** @param[in]       start_char_id:  the start characteristic ID
-**
-** @return          ESP_OK - success, other - failed
-**
-*****************************************************************************************************/
-
 esp_err_t esp_ble_gattc_get_characteristic(uint16_t conn_id,
         esp_gatt_srvc_id_t *srvc_id,
         esp_gatt_id_t *start_char_id)
@@ -255,23 +146,6 @@ esp_err_t esp_ble_gattc_get_characteristic(uint16_t conn_id,
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-
-/****************************************************************************************************
-**
-** @function        esp_ble_gattc_get_descriptor
-**
-** @brief           This function is called to find the descriptor 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_id: Characteristic ID, if NULL find the first available
-**                  characteristic.
-** @param[in]       start_descr_id:  the sctart descriptor id
-**
-** @return          ESP_OK - success, other - failed
-**
-*****************************************************************************************************/
 esp_err_t esp_ble_gattc_get_descriptor(uint16_t conn_id,
                                        esp_gatt_srvc_id_t *srvc_id,
                                        esp_gatt_id_t *char_id,
@@ -299,23 +173,6 @@ esp_err_t esp_ble_gattc_get_descriptor(uint16_t conn_id,
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-
-/****************************************************************************************************
-**
-** @function        esp_ble_gattc_get_include_service
-**
-** @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]       start_incl_srvc_id: the start include service id
-**
-** @return          ESP_OK - success, other - failed
-**
-*****************************************************************************************************/
-
-
 esp_err_t esp_ble_gattc_get_included_service(uint16_t conn_id,
         esp_gatt_srvc_id_t *srvc_id,
         esp_gatt_srvc_id_t *start_incl_srvc_id)
@@ -340,21 +197,6 @@ esp_err_t esp_ble_gattc_get_included_service(uint16_t conn_id,
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-/*******************************************************************************
-**
-** @function        esp_ble_gattc_read_char
-**
-** @brief           This function is called to read a service's characteristics of
-**                  the given characteritisc ID.UTH_REQ_NO_SCATTERNET
-**
-** @param[in]       conn_id - connection ID.
-** @param[in]       srvc_id - service ID.
-** @param[in]       char_id - characteritic ID to read.
-** @param[in]       auth_req - authenticate request type
-**
-** @return          ESP_OK - success, other - failed
-**
-*******************************************************************************/
 esp_err_t esp_ble_gattc_read_char (uint16_t conn_id, esp_gatt_srvc_id_t *srvc_id,
                                    esp_gatt_id_t *char_id, esp_gatt_auth_req_t auth_req)
 {
@@ -372,20 +214,6 @@ esp_err_t esp_ble_gattc_read_char (uint16_t conn_id, esp_gatt_srvc_id_t *srvc_id
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-/*******************************************************************************
-**
-** @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]       srvc_id - service ID.
-** @param[in]       descr_id - characteritic descriptor ID to read.
-** @param[in]       auth_req - authenticate request type
-**
-** @return          ESP_OK - success, other - failed
-**
-*******************************************************************************/
 esp_err_t esp_ble_gattc_read_char_descr (uint16_t conn_id,
         esp_gatt_srvc_id_t *srvc_id,
         esp_gatt_id_t  *char_id,
@@ -407,26 +235,12 @@ esp_err_t esp_ble_gattc_read_char_descr (uint16_t conn_id,
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-/*******************************************************************************
-**
-** @function        esp_ble_gattc_write_char
-**
-** @brief           This function is called to write characteristic value.
-**
-** @param[in]       conn_id - connection ID.
-** @param[in]       srvc_id - service ID.
-** @param[in]       char_id - characteristic ID to write.
-** @param[in]       value_len: length of the value to be written.
-** @param[in]       value - the value to be written.
-**
-** @return          ESP_OK - success, other - failed
-**
-*******************************************************************************/
 esp_err_t esp_ble_gattc_write_char( uint16_t conn_id,
                                     esp_gatt_srvc_id_t *srvc_id,
                                     esp_gatt_id_t *char_id,
                                     uint16_t value_len,
                                     uint8_t *value,
+                                                                       esp_gatt_write_type_t write_type,
                                     esp_gatt_auth_req_t auth_req)
 {
     btc_msg_t msg;
@@ -440,33 +254,19 @@ esp_err_t esp_ble_gattc_write_char( uint16_t conn_id,
     memcpy(&arg.write_char.char_id, char_id, sizeof(esp_gatt_id_t));
     arg.write_char.value_len = value_len > ESP_GATT_MAX_ATTR_LEN ? ESP_GATT_MAX_ATTR_LEN : value_len;
     arg.write_char.value = value;
+    arg.write_char.write_type = write_type;
     arg.write_char.auth_req = auth_req;
 
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), btc_gattc_arg_deep_copy) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-/*******************************************************************************
-**
-** @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]       srvc_id - service ID.
-** @param[in]       char_id - characteristic ID.
-** @param[in]       descr_id - characteristic descriptor ID to write.
-** @param[in]       value_len: length of the value to be written.
-** @param[in]       value - the value to be written.
-**
-** @return          ESP_OK - success, other - failed
-**
-*******************************************************************************/
 esp_err_t esp_ble_gattc_write_char_descr (uint16_t conn_id,
         esp_gatt_srvc_id_t *srvc_id,
         esp_gatt_id_t *char_id,
         esp_gatt_id_t *descr_id,
         uint16_t value_len,
         uint8_t *value,
+               esp_gatt_write_type_t write_type,
         esp_gatt_auth_req_t auth_req)
 {
     btc_msg_t msg;
@@ -481,26 +281,12 @@ esp_err_t esp_ble_gattc_write_char_descr (uint16_t conn_id,
     memcpy(&arg.write_descr.descr_id, descr_id, sizeof(esp_gatt_id_t));
     arg.write_descr.value_len = value_len > ESP_GATT_MAX_ATTR_LEN ? ESP_GATT_MAX_ATTR_LEN : value_len;
     arg.write_descr.value = value;
+    arg.write_descr.write_type = write_type;
     arg.write_descr.auth_req = auth_req;
 
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), btc_gattc_arg_deep_copy) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-/*******************************************************************************
-**
-** @function        esp_ble_gattc_prepare_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]       value_len: length of the value to be written.
-** @param[in]       value - the value to be written.
-**
-** @return          ESP_OK - success, other - failed
-**
-*******************************************************************************/
 esp_err_t esp_ble_gattc_prepare_write(uint16_t conn_id,
                                       esp_gatt_srvc_id_t *srvc_id,
                                       esp_gatt_id_t *char_id,
@@ -527,20 +313,6 @@ esp_err_t esp_ble_gattc_prepare_write(uint16_t conn_id,
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), btc_gattc_arg_deep_copy) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-
-
-/*******************************************************************************
-**
-** @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          ESP_OK - success, other - failed
-**
-*******************************************************************************/
 esp_err_t esp_ble_gattc_execute_write (uint16_t conn_id, bool is_execute)
 {
     btc_msg_t msg;
@@ -555,22 +327,6 @@ esp_err_t esp_ble_gattc_execute_write (uint16_t conn_id, bool is_execute)
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-
-
-/*******************************************************************************
-**
-** @function        esp_ble_gattc_register_for_notify
-**
-** @brief           This function is called to register for notification of a service.
-**
-** @param[in]       gatt_if - gatt interface id.
-** @param[in]       bda - target GATT server.
-** @param[in]       srvc_id - pointer to GATT service ID.
-** @param[in]       char_id - pointer to GATT characteristic ID.
-**
-** @return          OK if registration succeed, otherwise failed.
-**
-*******************************************************************************/
 esp_gatt_status_t esp_ble_gattc_register_for_notify (esp_gatt_if_t gatt_if,
         esp_bd_addr_t server_bda,
         esp_gatt_srvc_id_t *srvc_id,
@@ -590,22 +346,6 @@ esp_gatt_status_t esp_ble_gattc_register_for_notify (esp_gatt_if_t gatt_if,
     return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
 }
 
-
-
-/*******************************************************************************
-**
-** @function        esp_ble_gattc_unregister_ntf
-**
-** @brief           This function is called to de-register for notification of a service.
-**
-** @param[in]       gatt_if - gatt interface id.
-** @param[in]       bda - target GATT server.
-** @param[in]       srvc_id - pointer to GATT service ID.
-** @param[in]       char_id - pointer to GATT characteristic ID.
-**
-** @return          OK if deregistration succeed, otherwise failed.
-**
-*******************************************************************************/
 esp_gatt_status_t esp_ble_gattc_unregister_for_notify (esp_gatt_if_t gatt_if,
         esp_bd_addr_t server_bda,
         esp_gatt_srvc_id_t *srvc_id,
index 134ae21099a7fd179aa9cdc4aefe892d72d8cb1a..c4a16e00e05bb2495c2ac6ba3a4057239fc8cc4e 100644 (file)
@@ -161,6 +161,14 @@ typedef union {
     uint16_t            handle;                                                                /*!< Gatt attribute handle */
 } esp_gatt_rsp_t;
 
+/**
+  * @brief Gatt write type
+  */
+typedef enum {
+       ESP_GATT_WRITE_TYPE_NO_RSP      =       1,                                              /*!< Gatt write attribute need no response */
+       ESP_GATT_WRITE_TYPE_RSP,                                                                /*!< Gatt write attribute need remote response */
+} esp_gatt_write_type_t;
+
 typedef uint32_t    esp_gatt_if_t;                                                     /* Gatt interface type, different application on GATT client use different gatt_if */
 
 #endif /* __ESP_GATT_DEFS_H__ */
index 64d5ac5b2daa444129257af9afc8b0db6b3c0113..f7328df50401179574c59b6695f5fb755364ba69 100644 (file)
@@ -469,6 +469,8 @@ esp_err_t esp_ble_gattc_read_char_descr (uint16_t conn_id,
 ** @param[in]       char_id : characteristic ID to write.
 ** @param[in]       value_len: length of the value to be written.
 ** @param[in]       value : the value to be written.
+** @param[in]       write_type : the type of attribute write operation.
+** @param[in]       auth_req : authentication request.
 **
 ** @return          ESP_OK - success, other - failed
 **
@@ -478,6 +480,7 @@ esp_err_t esp_ble_gattc_write_char( uint16_t conn_id,
                                     esp_gatt_id_t *char_id,
                                     uint16_t value_len,
                                     uint8_t *value,
+                                                                       esp_gatt_write_type_t write_type,
                                     esp_gatt_auth_req_t auth_req);
 
 
@@ -493,6 +496,9 @@ esp_err_t esp_ble_gattc_write_char( uint16_t conn_id,
 ** @param[in]       descr_id : characteristic descriptor ID to write.
 ** @param[in]       value_len: length of the value to be written.
 ** @param[in]       value : the value to be written.
+** @param[in]       write_type : the type of attribute write operation.
+** @param[in]       auth_req : authentication request.
+**
 **
 ** @return          ESP_OK - success, other - failed
 **
@@ -503,6 +509,7 @@ esp_err_t esp_ble_gattc_write_char_descr (uint16_t conn_id,
         esp_gatt_id_t *descr_id,
         uint16_t value_len,
         uint8_t *value,
+               esp_gatt_write_type_t write_type,
         esp_gatt_auth_req_t auth_req);
 
 
@@ -518,6 +525,7 @@ esp_err_t esp_ble_gattc_write_char_descr (uint16_t conn_id,
 ** @param[in]       offset : offset of the write value.
 ** @param[in]       value_len: length of the value to be written.
 ** @param[in]       value : the value to be written.
+** @param[in]       auth_req : authentication request.
 **
 ** @return          ESP_OK - success, other - failed
 **
index 8a5ae00788a8f5b710f3bb77cd41b237bb074c83..92cd5001db45ffb234816b3271e8d626f99afaa2 100644 (file)
@@ -346,15 +346,13 @@ static void btc_gattc_read_char_descr(btc_ble_gattc_args_t *arg)
 
 static void btc_gattc_write_char(btc_ble_gattc_args_t *arg)
 {
-    //TODO: check the write type
     tBTA_GATTC_CHAR_ID in_char_id;
-    tBTA_GATTC_WRITE_TYPE write_type = BTA_GATTC_TYPE_WRITE;
 
     btc_to_bta_srvc_id(&in_char_id.srvc_id, &arg->write_char.service_id);
     btc_to_bta_gatt_id(&in_char_id.char_id, &arg->write_char.char_id);
 
     BTA_GATTC_WriteCharValue(arg->write_char.conn_id, &in_char_id,
-                             write_type,
+                             arg->write_char.write_type,
                              arg->write_char.value_len,
                              arg->write_char.value,
                              arg->write_char.auth_req);
@@ -362,10 +360,8 @@ static void btc_gattc_write_char(btc_ble_gattc_args_t *arg)
 
 static void btc_gattc_write_char_descr(btc_ble_gattc_args_t *arg)
 {
-    //TODO: check the write type
     tBTA_GATTC_CHAR_DESCR_ID in_char_descr_id;
     tBTA_GATT_UNFMT descr_val;
-    tBTA_GATTC_WRITE_TYPE write_type = BTA_GATTC_TYPE_WRITE;
     btc_to_bta_srvc_id(&in_char_descr_id.char_id.srvc_id, &arg->write_descr.service_id);
     btc_to_bta_gatt_id(&in_char_descr_id.char_id.char_id, &arg->write_descr.char_id);
     btc_to_bta_gatt_id(&in_char_descr_id.descr_id, &arg->write_descr.descr_id);
@@ -374,7 +370,7 @@ static void btc_gattc_write_char_descr(btc_ble_gattc_args_t *arg)
     descr_val.p_value = arg->write_descr.value;
 
     BTA_GATTC_WriteCharDescr(arg->write_descr.conn_id, &in_char_descr_id,
-                             write_type, &descr_val,
+                             arg->write_descr.write_type, &descr_val,
                              arg->write_descr.auth_req);
 }
 
index 0768b1d0abbb67bdc90b5f3d0d89fa686fdd252e..4bca4ae5ab052542b2fdfec3b7925724096270ad 100644 (file)
@@ -131,6 +131,7 @@ typedef union {
         esp_gatt_srvc_id_t service_id;
         esp_gatt_id_t char_id;
         uint8_t *value;
+               esp_gatt_write_type_t write_type;
         esp_gatt_auth_req_t auth_req;
     } write_char;
     //BTC_GATTC_ACT_WRITE_CHAR_DESCR,
@@ -141,6 +142,7 @@ typedef union {
         esp_gatt_id_t char_id;
         esp_gatt_id_t descr_id;
         uint8_t *value;
+               esp_gatt_write_type_t write_type;
         esp_gatt_auth_req_t auth_req;
     } write_descr;
     //BTC_GATTC_ACT_PREPARE_WRITE,