diff --git a/android/mcaptest.c b/android/mcaptest.c
index 1362be0..a323164 100644
--- a/android/mcaptest.c
+++ b/android/mcaptest.c
static int ccpsm = 0x1003, dcpsm = 0x1005;
static struct mcap_instance *mcap = NULL;
+static struct mcap_mdl *mdl = NULL;
+static uint16_t mdlid;
static int control_mode = MODE_LISTEN;
printf("MCL uncached unsupported\n");
}
+static void connect_mdl_cb(struct mcap_mdl *mdl, GError *gerr, gpointer data)
+{
+ mdlid = mcap_mdl_get_mdlid(mdl);
+
+ printf("MDL %d connected\n", mdlid);
+}
+
+static void create_mdl_cb(struct mcap_mdl *mcap_mdl, uint8_t type, GError *gerr,
+ gpointer data)
+{
+ GError *err = NULL;
+
+ if (gerr) {
+ printf("MDL error: %s\n", gerr->message);
+
+ return;
+ }
+
+ if (mdl)
+ mcap_mdl_unref(mdl);
+
+ mdl = mcap_mdl_ref(mcap_mdl);
+
+ if (!mcap_connect_mdl(mdl, L2CAP_MODE_ERTM, dcpsm, connect_mdl_cb, NULL,
+ NULL, &err)) {
+ printf("Error connecting to mdl: %s\n", err->message);
+ g_error_free(err);
+ }
+}
+
+static void create_mcl_cb(struct mcap_mcl *mcl, GError *err, gpointer data)
+{
+ GError *gerr = NULL;
+
+ if (err) {
+ printf("Could not connect MCL: %s\n", err->message);
+
+ return;
+ }
+
+ mcap_create_mdl(mcl, 1, 0, create_mdl_cb, NULL, NULL, &gerr);
+ if (gerr) {
+ printf("Could not connect MDL: %s\n", gerr->message);
+ g_error_free(gerr);
+ }
+}
+
static void usage(void)
{
printf("mcaptest - MCAP testing ver %s\n", VERSION);
{ "data_ch", 1, 0, 'D' },
{ 0, 0, 0, 0 }
};
-
int main(int argc, char *argv[])
{
GError *err = NULL;
bdaddr_t src, dst;
int opt;
+ char bdastr[18];
hci_devba(0, &src);
bacpy(&dst, BDADDR_ANY);
switch (control_mode) {
case MODE_CONNECT:
+ ba2str(&dst, bdastr);
+ printf("Connecting to %s\n", bdastr);
+
+ mcap_create_mcl(mcap, &dst, ccpsm, create_mcl_cb, NULL, NULL,
+ &err);
+
+ if (err) {
+ printf("MCAP create error %s\n", err->message);
+ g_error_free(err);
+
+ exit(1);
+ }
+
+ break;
case MODE_NONE:
default:
goto done;