Re: [PATCH 2/2] android/gatt: Add stubs for GATT commands handlers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Grzegorz,

On Monday 03 of March 2014 10:29:17 Grzegorz Kolodziejczyk wrote:
> Add empty handlers for GATT IPC commands.
> ---
>  android/gatt.c | 414 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
>  1 file changed, 413 insertions(+), 1 deletion(-)
> 
> diff --git a/android/gatt.c b/android/gatt.c
> index f577446..7a01d15 100644
> --- a/android/gatt.c
> +++ b/android/gatt.c
> @@ -28,17 +28,429 @@
>  #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);
> +

This seems to be missing:
hal_ipc = hal;

> +	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);
>  }
> 

-- 
Best regards, 
Szymon Janc
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux