BLE Gatt Server Socket write implemetation
[platform/core/connectivity/bluetooth-frwk.git] / bt-oal / oal-gatt.c
index 081f4cf..9d195e2 100644 (file)
@@ -152,6 +152,8 @@ static void cb_gatts_request_write(int conn_id, int trans_id, bt_bdaddr_t *bda,
                                        bool need_rsp, bool is_prep, uint8_t* value);
 static void cb_gatts_response_confirmation(int status, int handle);
 
+static void cb_gatts_acquire_write(int fd, int conn_id, int trans_id, int attr_handle, bt_bdaddr_t*);
+
 static void cb_indication_confirmation(int conn_id, int trans_id, int attr_handle, bt_bdaddr_t *bda);
 static void cb_gatts_connection(int conn_id, int server_if, int connected, bt_bdaddr_t *bda);
 
@@ -188,6 +190,7 @@ static const btgatt_server_callbacks_t btgatt_server_callbacks = {
 #ifdef TIZEN_BT_HAL
        cb_notifcation_changed,
 #endif
+       cb_gatts_acquire_write
 };
 
 /* Forward declaration for GATT client callbacks */
@@ -788,7 +791,22 @@ oal_status_t gatts_get_att_mtu(int conn_id, int *mtu)
        BT_INFO("Current ATT MTU Size: %d", *mtu);
        return OAL_STATUS_SUCCESS;
 }
+oal_status_t gatt_send_response_acquire(int conn_id, int trans_id,
+               int status, int fd, int mtu , void * fdlist)
+{
+       int ret = OAL_STATUS_SUCCESS;
+
+       API_TRACE("Server Send Response : ConnId = %d, TransId = %d,  %d", conn_id, trans_id, fd);
+       CHECK_OAL_GATT_ENABLED();
+
+       ret = gatt_api->server->send_response_acquire(conn_id, trans_id, status, fd, mtu, fdlist);
+       if (ret != BT_STATUS_SUCCESS) {
+               BT_ERR("GATT Server Send Response failed: %s", status2string(ret));
+               return convert_to_oal_status(ret);
+       }
+       return OAL_STATUS_SUCCESS;
 
+}
 oal_status_t gatts_add_service(int instance_id, oal_gatt_srvc_id_t *gatt_serv_id,
                int num_handles)
 {
@@ -1252,6 +1270,22 @@ static void cb_gatts_request_write(int conn_id, int trans_id,
        send_event(OAL_EVENT_GATTS_REQUEST_WRITE, event, sizeof(event_gatts_srvc_write_attr_t));
 }
 
+static void cb_gatts_acquire_write(int mtu, int conn_id, int trans_id, int attr_handle , bt_bdaddr_t *bda)
+
+{
+       BT_INFO("BTGATT SERVER REQUEST ACQUIRE WRITE conn_id:%d", conn_id);
+
+       event_gatts_srvc_acquire_attr_t* event = g_new0(event_gatts_srvc_acquire_attr_t, 1);
+
+       event->attr_trans.attr_handle = attr_handle;
+       event->attr_trans.conn_id = conn_id;
+       event->attr_trans.trans_id = trans_id;
+       event->mtu = mtu;
+       memcpy(event->address.addr, bda->address, BT_ADDRESS_BYTES_NUM);
+
+       send_event(OAL_EVENT_GATTS_REQUEST_ACQUIRE_WRITE, event, sizeof(event_gatts_srvc_acquire_attr_t));
+}
+
 static void cb_gatts_response_confirmation(int status, int handle)
 {
        BT_INFO("BTGATT SERVER RESPONSE CONFIRMATION CB, status:%d, handle:%d", status, handle);