From: Andrei Emeltchenko <andrei.emeltchenko@xxxxxxxxx> --- test/l2test.c | 43 +++++++++++++++++++++++++++++++++++++------ 1 files changed, 37 insertions(+), 6 deletions(-) diff --git a/test/l2test.c b/test/l2test.c index 3b606d2..e719c65 100644 --- a/test/l2test.c +++ b/test/l2test.c @@ -112,6 +112,30 @@ static int reliable = 0; static int timestamp = 0; static int defer_setup = 0; +static struct { + char *name; + int flag; +} l2cap_modes[] = { + { "basic", L2CAP_MODE_BASIC }, + /* Not implemented + { "flowctl", L2CAP_MODE_FLOWCTL }, + { "retrans", L2CAP_MODE_RETRANS }, + */ + { "ertm", L2CAP_MODE_ERTM }, + { "streaming", L2CAP_MODE_STREAMING }, + { 0 } +}; + +static void list_l2cap_modes(void) +{ + int i; + + printf("l2test - L2CAP testing\n" + "List L2CAP modes:\n"); + for (i=0; l2cap_modes[i].name; i++) + printf("\t%s\n", l2cap_modes[i].name); +} + static float tv2fl(struct timeval tv) { return (float)tv.tv_sec + (float)(tv.tv_usec/1000000.0); @@ -1083,7 +1107,7 @@ static void usage(void) "\t[-N num] send num frames (default = infinite)\n" "\t[-C num] send num frames before delay (default = 1)\n" "\t[-D milliseconds] delay after sending num frames (default = 0)\n" - "\t[-X mode] select retransmission/flow-control mode\n" + "\t[-X mode] l2cap mode (help for list, default = basic)\n" "\t[-F fcs] use CRC16 check (default = 1)\n" "\t[-Q num] Max Transmit value (default = 3)\n" "\t[-Z size] Transmission Window size (default = 63)\n" @@ -1100,7 +1124,7 @@ static void usage(void) int main(int argc, char *argv[]) { struct sigaction sa; - int opt, sk, mode = RECV, need_addr = 0; + int opt, sk, i, mode = RECV, need_addr = 0; bacpy(&bdaddr, BDADDR_ANY); @@ -1218,10 +1242,17 @@ int main(int argc, char *argv[]) break; case 'X': - if (strcasecmp(optarg, "ertm") == 0) - rfcmode = L2CAP_MODE_ERTM; - else - rfcmode = atoi(optarg); + rfcmode = -1; + + for (i = 0; l2cap_modes[i].name; i++) + if (!strcasecmp(l2cap_modes[i].name, optarg)) + rfcmode = l2cap_modes[i].flag; + + if (!strcasecmp(optarg, "help") || rfcmode == -1) { + list_l2cap_modes(); + exit(1); + } + break; case 'F': -- 1.7.4.1 -- 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