diff options
author | Andrei Emeltchenko <andrei.emeltchenko@intel.com> | 2014-06-27 18:16:05 +0300 |
---|---|---|
committer | Szymon Janc <szymon.janc@tieto.com> | 2014-06-29 14:17:19 +0200 |
commit | 3a7ee97b14a29286672fe893a8b149aa783e3dd6 (patch) | |
tree | 911dc1fc81ecb8087057ba029ef88d63951287c9 /android/health.c | |
parent | ea49265918cc8bad1856a3e65922d82dca97d88a (diff) | |
download | bluez-3a7ee97b14a29286672fe893a8b149aa783e3dd6.tar.gz |
android/health: Refactor channel creation
Avoid using app_id when we shall use app structure itself. Otherwise we
end up with unnecessary searches for app and problems for incoming
connections.
Diffstat (limited to 'android/health.c')
-rw-r--r-- | android/health.c | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/android/health.c b/android/health.c index 16d9fdb40..fdbc73172 100644 --- a/android/health.c +++ b/android/health.c @@ -1539,46 +1539,42 @@ static struct health_device *create_device(struct health_app *app, return NULL; } + dev->app_id = app->id; + return dev; } -static struct health_device *get_device(uint16_t app_id, const uint8_t *addr) +static struct health_app *get_app(uint16_t app_id) +{ + return queue_find(apps, match_app_by_id, INT_TO_PTR(app_id)); +} + +static struct health_device *get_device(struct health_app *app, + const uint8_t *addr) { - struct health_app *app; struct health_device *dev; bdaddr_t bdaddr; - app = queue_find(apps, match_app_by_id, INT_TO_PTR(app_id)); - if (!app) - return NULL; - android2bdaddr(addr, &bdaddr); dev = queue_find(app->devices, match_dev_by_addr, &bdaddr); if (dev) return dev; - dev = create_device(app, addr); - if (dev) - dev->app_id = app_id; - - return dev; + return create_device(app, addr); } -static struct health_channel *create_channel(uint16_t app_id, +static struct health_channel *create_channel(struct health_app *app, uint8_t mdep_index, struct health_device *dev) { - struct health_app *app; struct mdep_cfg *mdep; struct health_channel *channel; uint8_t index; static unsigned int channel_id = 1; - if (!dev) - return NULL; + DBG("mdep %u", mdep_index); - app = queue_find(apps, match_app_by_id, INT_TO_PTR(app_id)); - if (!app) + if (!dev || !app) return NULL; index = mdep_index + 1; @@ -1604,7 +1600,7 @@ static struct health_channel *create_channel(uint16_t app_id, return channel; } -static struct health_channel *get_channel(uint16_t app_id, +static struct health_channel *get_channel(struct health_app *app, uint8_t mdep_index, struct health_device *dev) { @@ -1620,7 +1616,7 @@ static struct health_channel *get_channel(uint16_t app_id, if (channel) return channel; - return create_channel(app_id, mdep_index, dev); + return create_channel(app, index, dev); } static void bt_health_connect_channel(const void *buf, uint16_t len) @@ -1629,14 +1625,19 @@ static void bt_health_connect_channel(const void *buf, uint16_t len) struct hal_rsp_health_connect_channel rsp; struct health_device *dev = NULL; struct health_channel *channel = NULL; + struct health_app *app; DBG(""); - dev = get_device(cmd->app_id, cmd->bdaddr); + app = get_app(cmd->app_id); + if (!app) + goto fail; + + dev = get_device(app, cmd->bdaddr); if (!dev) goto fail; - channel = get_channel(cmd->app_id, cmd->mdep_index, dev); + channel = get_channel(app, cmd->mdep_index, dev); if (!channel) goto fail; |