From: Andrei Emeltchenko <andrei.emeltchenko@xxxxxxxxx> RFCOMM default channel is the same like in other BlueZ code, it is defined in src/profile.c --- android/socket.c | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/android/socket.c b/android/socket.c index e580036..9c94c03 100644 --- a/android/socket.c +++ b/android/socket.c @@ -35,13 +35,54 @@ #include "ipc.h" #include "socket.h" +#define OPP_DEFAULT_CHANNEL 9 +#define PBAP_DEFAULT_CHANNEL 15 + static bdaddr_t adapter_addr; +static struct { + uint8_t uuid[16]; + uint8_t channel; +} uuid_to_chan[] = { + { + .uuid = { + 0x00, 0x00, 0x11, 0x2F, 0x00, 0x00, 0x10, 0x00, + 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB + }, + .channel = PBAP_DEFAULT_CHANNEL, + }, { + .uuid = { + 0x00, 0x00, 0x11, 0x05, 0x00, 0x00, 0x10, 0x00, + 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB + }, + .channel = OPP_DEFAULT_CHANNEL + } +}; + +static int get_rfcomm_default_chan(const uint8_t *uuid) +{ + unsigned int i; + + for (i = 0; i < G_N_ELEMENTS(uuid_to_chan); i++) { + if (!memcmp(uuid_to_chan[i].uuid, uuid, 16)) + return uuid_to_chan[i].channel; + } + + return -ENOENT; +} + static int handle_listen(void *buf) { - DBG("Not implemented"); + int hal_fd; + int chan; - return -1; + DBG(""); + + chan = get_rfcomm_default_chan(cmd->uuid); + if (chan < 0) + return chan; + + return hal_fd; } static int handle_connect(void *buf) -- 1.7.10.4 -- 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