Hi Grzegorz, On Wednesday 12 of March 2014 10:27:37 Grzegorz Kolodziejczyk wrote: > This adds register gatt client app command handling. > --- > android/gatt.c | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 53 insertions(+), 2 deletions(-) > > diff --git a/android/gatt.c b/android/gatt.c > index ce85af4..34549dd 100644 > --- a/android/gatt.c > +++ b/android/gatt.c > @@ -31,20 +31,71 @@ > #include <glib.h> > > #include "ipc.h" > +#include "ipc-common.h" > #include "lib/bluetooth.h" > #include "gatt.h" > #include "src/log.h" > #include "hal-msg.h" > > +struct gatt_client { > + int32_t id; > + uint8_t uuid[16]; > +}; > + > static struct ipc *hal_ipc = NULL; > static bdaddr_t adapter_addr; > +static GSList *gatt_clients = NULL; > + > +static int find_client_by_uuid(gconstpointer data, gconstpointer user_data) > +{ > + const uint8_t *exp_uuid = user_data; > + const struct gatt_client *client = data; > + > + return memcmp(exp_uuid, client->uuid, sizeof(client->uuid)); > +} > > static void handle_client_register(const void *buf, uint16_t len) > { > + const struct hal_cmd_gatt_client_register *cmd = buf; > + struct hal_ev_gatt_client_register_client ev; > + struct gatt_client *client; > + static int32_t client_cnt = 1; > + uint8_t status; > + > DBG(""); > > - ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT, HAL_OP_GATT_CLIENT_REGISTER, > - HAL_STATUS_FAILED); > + if (!cmd->uuid) { > + error("gatt: no uuid received"); > + status = HAL_STATUS_FAILED; > + goto failed; > + } > + > + if (g_slist_find_custom(gatt_clients, &cmd->uuid, > + find_client_by_uuid)) { > + error("gatt: client uuid is already on list"); > + status = HAL_STATUS_FAILED; > + goto failed; > + } > + > + client = g_new0(struct gatt_client, 1); > + memcpy(client->uuid, cmd->uuid, sizeof(client->uuid)); > + > + client->id = client_cnt++; > + > + gatt_clients = g_slist_prepend(gatt_clients, client); > + > + status = HAL_STATUS_SUCCESS; > + > + ev.status = status; > + ev.client_if = client->id; > + memcpy(ev.app_uuid, client->uuid, sizeof(client->uuid)); > + > + ipc_send_notif(hal_ipc, HAL_SERVICE_ID_GATT, > + HAL_EV_GATT_CLIENT_REGISTER_CLIENT, sizeof(ev), &ev); > + > +failed: > + ipc_send_rsp(hal_ipc, HAL_SERVICE_ID_GATT, > + HAL_OP_GATT_CLIENT_REGISTER, status); > } > > static void handle_client_unregister(const void *buf, uint16_t len) > Both Patches applied. Thanks. -- 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