* [PATCH v2 2/2] android/gatt: Add stubs for GATT commands handlers
2014-03-03 14:51 [PATCH v2 1/2] android/gatt: Add initial files Grzegorz Kolodziejczyk
@ 2014-03-03 14:51 ` Grzegorz Kolodziejczyk
2014-03-03 15:16 ` [PATCH v2 1/2] android/gatt: Add initial files Szymon Janc
1 sibling, 0 replies; 3+ messages in thread
From: Grzegorz Kolodziejczyk @ 2014-03-03 14:51 UTC (permalink / raw)
To: linux-bluetooth
Add empty handlers for GATT IPC commands.
---
android/gatt.c | 417 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 416 insertions(+), 1 deletion(-)
diff --git a/android/gatt.c b/android/gatt.c
index f577446..ce85af4 100644
--- a/android/gatt.c
+++ b/android/gatt.c
@@ -28,17 +28,432 @@
#include <stdbool.h>
#include <stdlib.h>
#include <stdint.h>
+#include <glib.h>
#include "ipc.h"
#include "lib/bluetooth.h"
#include "gatt.h"
+#include "src/log.h"
+#include "hal-msg.h"
+
+static struct ipc *hal_ipc = NULL;
+static bdaddr_t adapter_addr;
+
+static void handle_client_register(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT, HAL_OP_GATT_CLIENT_REGISTER,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_client_unregister(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_UNREGISTER, HAL_STATUS_FAILED);
+}
+
+static void handle_client_scan(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT, HAL_OP_GATT_CLIENT_SCAN,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_client_connect(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT, HAL_OP_GATT_CLIENT_CONNECT,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_client_disconnect(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_DISCONNECT, HAL_STATUS_FAILED);
+}
+
+static void handle_client_listen(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT, HAL_OP_GATT_CLIENT_LISTEN,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_client_refresh(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT, HAL_OP_GATT_CLIENT_REFRESH,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_client_search_service(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_SEARCH_SERVICE, HAL_STATUS_FAILED);
+}
+
+static void handle_client_get_included_service(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_GET_INCLUDED_SERVICE,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_client_get_characteristic(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_GET_CHARACTERISTIC,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_client_get_descriptor(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_GET_DESCRIPTOR, HAL_STATUS_FAILED);
+}
+
+static void handle_client_read_characteristic(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_READ_CHARACTERISTIC,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_client_write_characteristic(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_WRITE_CHARACTERISTIC,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_client_read_descriptor(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_READ_DESCRIPTOR, HAL_STATUS_FAILED);
+}
+
+static void handle_client_write_descriptor(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_WRITE_DESCRIPTOR, HAL_STATUS_FAILED);
+}
+
+static void handle_client_execute_write(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_EXECUTE_WRITE, HAL_STATUS_FAILED);
+}
+
+static void handle_client_register_for_notification(const void *buf,
+ uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_REGISTER_FOR_NOTIFICATION,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_client_deregister_for_notification(const void *buf,
+ uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_DEREGISTER_FOR_NOTIFICATION,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_client_read_remote_rssi(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_READ_REMOTE_RSSI, HAL_STATUS_FAILED);
+}
+
+static void handle_client_get_device_type(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_GET_DEVICE_TYPE, HAL_STATUS_FAILED);
+}
+
+static void handle_client_set_adv_data(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_SET_ADV_DATA, HAL_STATUS_FAILED);
+}
+
+static void handle_client_test_command(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_CLIENT_TEST_COMMAND, HAL_STATUS_FAILED);
+}
+
+static void handle_server_register(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT, HAL_OP_GATT_SERVER_REGISTER,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_server_unregister(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_SERVER_UNREGISTER, HAL_STATUS_FAILED);
+}
+
+static void handle_server_connect(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT, HAL_OP_GATT_SERVER_CONNECT,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_server_disconnect(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_SERVER_DISCONNECT, HAL_STATUS_FAILED);
+}
+
+static void handle_server_add_service(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_SERVER_ADD_SERVICE, HAL_STATUS_FAILED);
+}
+
+static void handle_server_add_included_service(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_SERVER_ADD_INC_SERVICE, HAL_STATUS_FAILED);
+}
+
+static void handle_server_add_characteristic(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_SERVER_ADD_CHARACTERISTIC,
+ HAL_STATUS_FAILED);
+}
+
+static void handle_server_add_descriptor(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_SERVER_ADD_DESCRIPTOR, HAL_STATUS_FAILED);
+}
+
+static void handle_server_start_service(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_SERVER_START_SERVICE, HAL_STATUS_FAILED);
+}
+
+static void handle_server_stop_service(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_SERVER_STOP_SERVICE, HAL_STATUS_FAILED);
+}
+
+static void handle_server_delete_service(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_SERVER_DELETE_SERVICE, HAL_STATUS_FAILED);
+}
+
+static void handle_server_send_indication(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_SERVER_SEND_INDICATION, HAL_STATUS_FAILED);
+}
+
+static void handle_server_send_response(const void *buf, uint16_t len)
+{
+ DBG("");
+
+ ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT,
+ HAL_OP_GATT_SERVER_SEND_RESPONSE, HAL_STATUS_FAILED);
+}
+
+static const struct ipc_handler cmd_handlers[] = {
+ /* HAL_OP_GATT_CLIENT_REGISTER */
+ {handle_client_register, false,
+ sizeof(struct hal_cmd_gatt_client_register)},
+ /* HAL_OP_GATT_CLIENT_UNREGISTER */
+ {handle_client_unregister, false,
+ sizeof(struct hal_cmd_gatt_client_unregister)},
+ /* HAL_OP_GATT_CLIENT_SCAN */
+ {handle_client_scan, false,
+ sizeof(struct hal_cmd_gatt_client_scan)},
+ /* HAL_OP_GATT_CLIENT_CONNECT */
+ {handle_client_connect, false,
+ sizeof(struct hal_cmd_gatt_client_connect)},
+ /* HAL_OP_GATT_CLIENT_DISCONNECT */
+ {handle_client_disconnect, false,
+ sizeof(struct hal_cmd_gatt_client_disconnect)},
+ /* HAL_OP_GATT_CLIENT_LISTEN */
+ {handle_client_listen, false,
+ sizeof(struct hal_cmd_gatt_client_listen)},
+ /* HAL_OP_GATT_CLIENT_REFRESH */
+ {handle_client_refresh, false,
+ sizeof(struct hal_cmd_gatt_client_refresh)},
+ /* HAL_OP_GATT_CLIENT_SEARCH_SERVICE */
+ {handle_client_search_service, true,
+ sizeof(struct hal_cmd_gatt_client_search_service)},
+ /* HAL_OP_GATT_CLIENT_GET_INCLUDED_SERVICE */
+ {handle_client_get_included_service, true,
+ sizeof(struct hal_cmd_gatt_client_get_included_service)},
+ /* HAL_OP_GATT_CLIENT_GET_CHARACTERISTIC */
+ {handle_client_get_characteristic, true,
+ sizeof(struct hal_cmd_gatt_client_get_characteristic)},
+ /* HAL_OP_GATT_CLIENT_GET_DESCRIPTOR */
+ {handle_client_get_descriptor, true,
+ sizeof(struct hal_cmd_gatt_client_get_descriptor)},
+ /* HAL_OP_GATT_CLIENT_READ_CHARACTERISTIC */
+ {handle_client_read_characteristic, false,
+ sizeof(struct hal_cmd_gatt_client_read_characteristic)},
+ /* HAL_OP_GATT_CLIENT_WRITE_CHARACTERISTIC */
+ {handle_client_write_characteristic, true,
+ sizeof(struct hal_cmd_gatt_client_write_characteristic)},
+ /* HAL_OP_GATT_CLIENT_READ_DESCRIPTOR */
+ {handle_client_read_descriptor, false,
+ sizeof(struct hal_cmd_gatt_client_read_descriptor)},
+ /* HAL_OP_GATT_CLIENT_WRITE_DESCRIPTOR */
+ {handle_client_write_descriptor, true,
+ sizeof(struct hal_cmd_gatt_client_write_descriptor)},
+ /* HAL_OP_GATT_CLIENT_EXECUTE_WRITE */
+ {handle_client_execute_write, false,
+ sizeof(struct hal_cmd_gatt_client_execute_write)},
+ /* HAL_OP_GATT_CLIENT_REGISTER_FOR_NOTIFICATION */
+ {handle_client_register_for_notification, false,
+ sizeof(struct hal_cmd_gatt_client_register_for_notification)},
+ /* HAL_OP_GATT_CLIENT_DEREGISTER_FOR_NOTIFICATION */
+ {handle_client_deregister_for_notification, false,
+ sizeof(struct hal_cmd_gatt_client_deregister_for_notification)},
+ /* HAL_OP_GATT_CLIENT_READ_REMOTE_RSSI */
+ {handle_client_read_remote_rssi, false,
+ sizeof(struct hal_cmd_gatt_client_read_remote_rssi)},
+ /* HAL_OP_GATT_CLIENT_GET_DEVICE_TYPE */
+ {handle_client_get_device_type, false,
+ sizeof(struct hal_cmd_gatt_client_get_device_type)},
+ /* HAL_OP_GATT_CLIENT_SET_ADV_DATA */
+ {handle_client_set_adv_data, true,
+ sizeof(struct hal_cmd_gatt_client_set_adv_data)},
+ /* HAL_OP_GATT_CLIENT_TEST_COMMAND */
+ {handle_client_test_command, false,
+ sizeof(struct hal_cmd_gatt_client_test_command)},
+ /* HAL_OP_GATT_SERVER_REGISTER */
+ {handle_server_register, false,
+ sizeof(struct hal_cmd_gatt_server_register)},
+ /* HAL_OP_GATT_SERVER_UNREGISTER */
+ {handle_server_unregister, false,
+ sizeof(struct hal_cmd_gatt_server_unregister)},
+ /* HAL_OP_GATT_SERVER_CONNECT */
+ {handle_server_connect, false,
+ sizeof(struct hal_cmd_gatt_server_connect)},
+ /* HAL_OP_GATT_SERVER_DISCONNECT */
+ {handle_server_disconnect, false,
+ sizeof(struct hal_cmd_gatt_server_disconnect)},
+ /* HAL_OP_GATT_SERVER_ADD_SERVICE */
+ {handle_server_add_service, false,
+ sizeof(struct hal_cmd_gatt_server_add_service)},
+ /* HAL_OP_GATT_SERVER_ADD_INC_SERVICE */
+ {handle_server_add_included_service, false,
+ sizeof(struct hal_cmd_gatt_server_add_inc_service)},
+ /* HAL_OP_GATT_SERVER_ADD_CHARACTERISTIC */
+ {handle_server_add_characteristic, false,
+ sizeof(struct hal_cmd_gatt_server_add_characteristic)},
+ /* HAL_OP_GATT_SERVER_ADD_DESCRIPTOR */
+ {handle_server_add_descriptor, false,
+ sizeof(struct hal_cmd_gatt_server_add_descriptor)},
+ /* HAL_OP_GATT_SERVER_START_SERVICE */
+ {handle_server_start_service, false,
+ sizeof(struct hal_cmd_gatt_server_start_service)},
+ /* HAL_OP_GATT_SERVER_STOP_SERVICE */
+ {handle_server_stop_service, false,
+ sizeof(struct hal_cmd_gatt_server_stop_service)},
+ /* HAL_OP_GATT_SERVER_DELETE_SERVICE */
+ {handle_server_delete_service, false,
+ sizeof(struct hal_cmd_gatt_server_delete_service)},
+ /* HAL_OP_GATT_SERVER_SEND_INDICATION */
+ {handle_server_send_indication, true,
+ sizeof(struct hal_cmd_gatt_server_send_indication)},
+ /* HAL_OP_GATT_SERVER_SEND_RESPONSE */
+ {handle_server_send_response, true,
+ sizeof(struct hal_cmd_gatt_server_send_response)},
+};
bool bt_gatt_register(struct ipc *ipc, const bdaddr_t *addr)
{
- return false;
+ DBG("");
+
+ bacpy(&adapter_addr, addr);
+
+ hal_ipc = ipc;
+
+ ipc_register(hal_ipc, HAL_SERVICE_ID_GATT, cmd_handlers,
+ G_N_ELEMENTS(cmd_handlers));
+
+ return true;
}
void bt_gatt_unregister(void)
{
+ DBG("");
+ ipc_unregister(hal_ipc, HAL_SERVICE_ID_GATT);
+ hal_ipc = NULL;
}
--
1.8.5.2
^ permalink raw reply related [flat|nested] 3+ messages in thread