From: Santiago Carot-Nemesio <sancane@gmail.com>
To: linux-bluetooth@vger.kernel.org
Cc: Santiago Carot-Nemesio <sancane@gmail.com>
Subject: [PATCH 56/60] Use a generic function to send commands with variable parameters
Date: Thu, 22 Jul 2010 10:58:13 +0200 [thread overview]
Message-ID: <1279789097-2420-8-git-send-email-sancane@gmail.com> (raw)
In-Reply-To: <1279789097-2420-7-git-send-email-sancane@gmail.com>
Future commands added to MCAP specification may use a variable
parameters greater than one Byte. This patch sets the fixed
part of a mcap response and append at the end of the command
the variable parameter depending of length provided.
---
mcap/mcap.c | 159 +++++++++++++++++++++++--------------------------
mcap/mcap.h | 14 +----
mcap/mcap_internal.h | 1 +
mcap/mcap_sync.c | 23 -------
4 files changed, 79 insertions(+), 118 deletions(-)
diff --git a/mcap/mcap.c b/mcap/mcap.c
index a91f4b1..869b6e7 100644
--- a/mcap/mcap.c
+++ b/mcap/mcap.c
@@ -36,7 +36,6 @@
#define RESPONSE_TIMER 2 /* seconds */
#define MAX_CACHED 10 /* 10 devices */
-#define MIN_RSP_LEN 4 /* 4 Bytes */
#define MCAP_ERROR g_quark_from_static_string("mcap-error-quark")
@@ -307,46 +306,28 @@ int mcap_send_data(int sock, const uint8_t *buf, uint32_t size)
return 0;
}
-static int send4B_cmd(struct mcap_mcl *mcl, uint8_t oc, uint8_t rc,
- uint16_t mdl)
+static int mcap_send_cmd(struct mcap_mcl *mcl, uint8_t oc, uint8_t rc, uint16_t mdl,
+ uint8_t *data, size_t len)
{
+ mcap_rsp *cmd;
uint8_t *rsp;
- mcap4B_rsp *rsp_err;
- int sent = -1;
+ int sock, sent;
+ if (mcl->cc == NULL)
+ return -1;
- rsp = g_malloc0(sizeof(mcap4B_rsp));
-
- rsp_err = (mcap4B_rsp *)rsp;
- rsp_err->op = oc;
- rsp_err->rc = rc;
- rsp_err->mdl = htons (mdl);
-
- if (mcl->cc)
- sent = mcap_send_data(g_io_channel_unix_get_fd(mcl->cc), rsp,
- sizeof(mcap4B_rsp));
- g_free(rsp);
- return sent;
-}
-
-static int send5B_cmd(struct mcap_mcl *mcl, uint8_t oc, uint8_t rc,
- uint16_t mdl, uint8_t param)
-{
- uint8_t *rsp;
- mcap5B_rsp *suc;
- int sent = -1;
+ sock = g_io_channel_unix_get_fd(mcl->cc);
- rsp = g_malloc0(sizeof(mcap5B_rsp));
+ rsp = g_malloc(sizeof(mcap_rsp) + len);
+ cmd = (mcap_rsp *)rsp;
+ cmd->op = oc;
+ cmd->rc = rc;
+ cmd->mdl = htons(mdl);
- suc = (mcap5B_rsp *)rsp;
- suc->op = oc;
- suc->rc = rc;
- suc->mdl = htons(mdl);
- suc->param = param;
+ if (data && (len > 0))
+ memcpy(rsp + sizeof(mcap_rsp), data, len);
- if (mcl->cc)
- sent = mcap_send_data(g_io_channel_unix_get_fd(mcl->cc), rsp,
- sizeof(mcap5B_rsp));
+ sent = mcap_send_data(sock, rsp, sizeof(mcap_rsp) + len);
g_free(rsp);
return sent;
}
@@ -371,7 +352,6 @@ static uint16_t generate_mdlid(struct mcap_mcl *mcl)
struct mcap_mdl *mdl;
do {
- DBG("Testing %d", mdlid);
mdl = get_mdl(mcl, mdlid);
if (!mdl) {
mcl->next_mdl = (mdlid % MCAP_MDLID_FINAL) + 1;
@@ -957,8 +937,10 @@ static void process_md_create_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
uint8_t rsp;
if (len != sizeof(mcap_md_create_mdl_req)) {
- send4B_cmd(mcl, MCAP_MD_CREATE_MDL_RSP,
- MCAP_INVALID_PARAM_VALUE, MCAP_MDLID_RESERVED);
+ mcap_send_cmd(mcl, MCAP_MD_CREATE_MDL_RSP,
+ MCAP_INVALID_PARAM_VALUE,
+ MCAP_MDLID_RESERVED,
+ NULL, 0);
return;
}
@@ -966,15 +948,15 @@ static void process_md_create_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
mdl_id = ntohs(req->mdl);
if ((mdl_id < MCAP_MDLID_INITIAL) || (mdl_id > MCAP_MDLID_FINAL)) {
- send4B_cmd(mcl, MCAP_MD_CREATE_MDL_RSP, MCAP_INVALID_MDL,
- mdl_id);
+ mcap_send_cmd(mcl, MCAP_MD_CREATE_MDL_RSP, MCAP_INVALID_MDL,
+ mdl_id, NULL, 0);
return;
}
mdep_id = req->mdep;
if (mdep_id > MCAP_MDEPID_FINAL) {
- send4B_cmd(mcl, MCAP_MD_CREATE_MDL_RSP, MCAP_INVALID_MDEP,
- mdl_id);
+ mcap_send_cmd(mcl, MCAP_MD_CREATE_MDL_RSP, MCAP_INVALID_MDEP,
+ mdl_id, NULL, 0);
return;
}
@@ -982,7 +964,8 @@ static void process_md_create_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
if (mdl && (mdl->state == MDL_WAITING || mdl->state == MDL_DELETING )) {
/* Creation request arrives for a MDL that is being managed
* at current moment */
- send4B_cmd(mcl, MCAP_MD_CREATE_MDL_RSP, MCAP_MDL_BUSY, mdl_id);
+ mcap_send_cmd(mcl, MCAP_MD_CREATE_MDL_RSP, MCAP_MDL_BUSY,
+ mdl_id, NULL, 0);
return;
}
@@ -999,12 +982,13 @@ static void process_md_create_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
/* Remote device set default configuration but upper profile */
/* has changed it. Protocol Error: force closing the MCL by */
/* remote device using UNSPECIFIED_ERROR response */
- send4B_cmd(mcl, MCAP_MD_CREATE_MDL_RSP, MCAP_UNSPECIFIED_ERROR,
- mdl_id);
+ mcap_send_cmd(mcl, MCAP_MD_CREATE_MDL_RSP,
+ MCAP_UNSPECIFIED_ERROR, mdl_id, NULL, 0);
return;
}
if (rsp != MCAP_SUCCESS) {
- send4B_cmd(mcl, MCAP_MD_CREATE_MDL_RSP, rsp, mdl_id);
+ mcap_send_cmd(mcl, MCAP_MD_CREATE_MDL_RSP, rsp, mdl_id,
+ NULL, 0);
return;
}
@@ -1023,7 +1007,8 @@ static void process_md_create_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
mdl->state = MDL_WAITING;
mcl->state = MCL_PENDING;
- send5B_cmd(mcl, MCAP_MD_CREATE_MDL_RSP, MCAP_SUCCESS, mdl_id, conf);
+ mcap_send_cmd(mcl, MCAP_MD_CREATE_MDL_RSP, MCAP_SUCCESS, mdl_id,
+ &conf, 1);
}
static void process_md_reconnect_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
@@ -1035,8 +1020,10 @@ static void process_md_reconnect_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
uint8_t rsp;
if (len != sizeof(mcap_md_req)) {
- send4B_cmd(mcl, MCAP_MD_RECONNECT_MDL_RSP,
- MCAP_INVALID_PARAM_VALUE, MCAP_MDLID_RESERVED);
+ mcap_send_cmd(mcl, MCAP_MD_RECONNECT_MDL_RSP,
+ MCAP_INVALID_PARAM_VALUE,
+ MCAP_MDLID_RESERVED,
+ NULL, 0);
return;
}
@@ -1045,14 +1032,14 @@ static void process_md_reconnect_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
mdl = get_mdl(mcl, mdl_id);
if (!mdl) {
- send4B_cmd(mcl, MCAP_MD_RECONNECT_MDL_RSP,
- MCAP_INVALID_MDL, mdl_id);
+ mcap_send_cmd(mcl, MCAP_MD_RECONNECT_MDL_RSP, MCAP_INVALID_MDL,
+ mdl_id, NULL, 0);
return;
} else if (mdl->state == MDL_WAITING || mdl->state == MDL_DELETING ) {
/* Creation request arrives for a MDL that is being managed
* at current moment */
- send4B_cmd(mcl, MCAP_MD_RECONNECT_MDL_RSP, MCAP_MDL_BUSY,
- mdl_id);
+ mcap_send_cmd(mcl, MCAP_MD_RECONNECT_MDL_RSP, MCAP_MDL_BUSY,
+ mdl_id, NULL, 0);
return;
}
@@ -1062,7 +1049,8 @@ static void process_md_reconnect_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
return;
if (rsp != MCAP_SUCCESS) {
- send4B_cmd(mcl, MCAP_MD_RECONNECT_MDL_RSP, rsp, mdl_id);
+ mcap_send_cmd(mcl, MCAP_MD_RECONNECT_MDL_RSP, rsp, mdl_id,
+ NULL, 0);
return;
}
@@ -1071,7 +1059,8 @@ static void process_md_reconnect_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
mdl->state = MDL_WAITING;
mcl->state = MCL_PENDING;
- send4B_cmd(mcl, MCAP_MD_RECONNECT_MDL_RSP, MCAP_SUCCESS, mdl_id);
+ mcap_send_cmd(mcl, MCAP_MD_RECONNECT_MDL_RSP, MCAP_SUCCESS, mdl_id,
+ NULL, 0);
}
static void process_md_abort_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
@@ -1083,8 +1072,8 @@ static void process_md_abort_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
uint16_t mdl_id;
if (len != sizeof(mcap_md_req)) {
- send4B_cmd(mcl, MCAP_MD_ABORT_MDL_RSP,
- MCAP_INVALID_PARAM_VALUE, MCAP_MDLID_RESERVED);
+ mcap_send_cmd(mcl, MCAP_MD_ABORT_MDL_RSP,
+ MCAP_INVALID_PARAM_VALUE, MCAP_MDLID_RESERVED, NULL, 0);
return;
}
@@ -1107,14 +1096,15 @@ static void process_md_abort_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
}
if (!abrt) {
- send4B_cmd(mcl, MCAP_MD_ABORT_MDL_RSP, MCAP_INVALID_MDL,
- mdl_id);
+ mcap_send_cmd(mcl, MCAP_MD_ABORT_MDL_RSP, MCAP_INVALID_MDL,
+ mdl_id, NULL, 0);
return;
}
mcl->cb->mdl_aborted(abrt, mcl->cb->user_data);
abrt->state = MDL_CLOSED;
- send4B_cmd(mcl, MCAP_MD_ABORT_MDL_RSP, MCAP_SUCCESS, mdl_id);
+ mcap_send_cmd(mcl, MCAP_MD_ABORT_MDL_RSP, MCAP_SUCCESS, mdl_id,
+ NULL, 0);
}
static void process_md_delete_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
@@ -1127,8 +1117,8 @@ static void process_md_delete_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
GSList *l;
if (len != sizeof(mcap_md_req)) {
- send4B_cmd(mcl, MCAP_MD_ABORT_MDL_RSP,
- MCAP_INVALID_PARAM_VALUE, MCAP_MDLID_RESERVED);
+ mcap_send_cmd(mcl, MCAP_MD_ABORT_MDL_RSP,
+ MCAP_INVALID_PARAM_VALUE, MCAP_MDLID_RESERVED, NULL, 0);
return;
}
@@ -1146,8 +1136,8 @@ static void process_md_delete_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
}
if ((mdlid < MCAP_MDLID_INITIAL) || (mdlid > MCAP_MDLID_FINAL)) {
- send4B_cmd(mcl, MCAP_MD_CREATE_MDL_RSP, MCAP_INVALID_MDL,
- mdlid);
+ mcap_send_cmd(mcl, MCAP_MD_CREATE_MDL_RSP, MCAP_INVALID_MDL,
+ mdlid, NULL, 0);
return;
}
@@ -1160,8 +1150,8 @@ static void process_md_delete_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
}
if (!mdl || (mdl->state == MDL_WAITING)) {
- send4B_cmd(mcl, MCAP_MD_DELETE_MDL_RSP, MCAP_INVALID_MDL,
- mdlid);
+ mcap_send_cmd(mcl, MCAP_MD_DELETE_MDL_RSP, MCAP_INVALID_MDL,
+ mdlid, NULL, 0);
return;
}
mcl->mdls = g_slist_remove(mcl->mdls, mdl);
@@ -1170,7 +1160,8 @@ static void process_md_delete_mdl_req(struct mcap_mcl *mcl, uint8_t *cmd,
mcap_delete_mdl(mdl, ¬ify);
resp:
- send4B_cmd(mcl, MCAP_MD_DELETE_MDL_RSP, MCAP_SUCCESS, mdlid);
+ mcap_send_cmd(mcl, MCAP_MD_DELETE_MDL_RSP, MCAP_SUCCESS, mdlid,
+ NULL, 0);
}
static void invalid_req_state(struct mcap_mcl *mcl, uint8_t *cmd, uint32_t len)
@@ -1183,7 +1174,7 @@ static void invalid_req_state(struct mcap_mcl *mcl, uint8_t *cmd, uint32_t len)
* response if it is possible */
mdlr = len < sizeof(mcap_md_req) ? MCAP_MDLID_RESERVED :
ntohs(((mcap_md_req *)cmd)->mdl);
- send4B_cmd(mcl, cmd[0]+1, MCAP_INVALID_OPERATION, mdlr);
+ mcap_send_cmd(mcl, cmd[0]+1, MCAP_INVALID_OPERATION, mdlr, NULL, 0);
}
/* Function used to process commands depending of MCL state */
@@ -1237,7 +1228,7 @@ static gboolean check_err_rsp(struct mcap_mcl *mcl, uint8_t *cmd,
gint err = MCAP_ERROR_FAILED;
gboolean close = FALSE;
uint16_t rmdl, smdl;
- mcap4B_rsp *rsp;
+ mcap_rsp *rsp;
char *msg;
if (cmd[0] == MCAP_ERROR_RSP) {
@@ -1247,7 +1238,7 @@ static gboolean check_err_rsp(struct mcap_mcl *mcl, uint8_t *cmd,
}
/* Check if the response matches with the last request */
- if ((rlen < MIN_RSP_LEN) || ((mcl->lcmd[0] + 1) != cmd[0])) {
+ if ((rlen < sizeof(mcap_rsp)) || ((mcl->lcmd[0] + 1) != cmd[0])) {
msg = "Protocol error";
close = TRUE;
goto fail;
@@ -1259,7 +1250,7 @@ static gboolean check_err_rsp(struct mcap_mcl *mcl, uint8_t *cmd,
goto fail;
}
- rsp = (mcap4B_rsp *)cmd;
+ rsp = (mcap_rsp *)cmd;
smdl = ntohs(cmdlast->mdl);
rmdl = ntohs(rsp->mdl);
if (rmdl != smdl) {
@@ -1304,12 +1295,12 @@ static gboolean process_md_create_mdl_rsp(struct mcap_mcl *mcl,
uint8_t conf = cmdlast->conf;
gboolean close = FALSE;
GError *gerr = NULL;
- mcap5B_rsp *rsp;
+ uint8_t *param;
g_free(mcl->priv_data);
mcl->priv_data = NULL;
- close = check_err_rsp(mcl, cmd, len, sizeof(mcap4B_rsp), &gerr);
+ close = check_err_rsp(mcl, cmd, len, sizeof(mcap_rsp) + 1, &gerr);
g_free(mcl->lcmd);
mcl->lcmd = NULL;
mcl->req = MCL_AVAILABLE;
@@ -1317,23 +1308,23 @@ static gboolean process_md_create_mdl_rsp(struct mcap_mcl *mcl,
if (gerr)
goto fail;
- if (len < sizeof(mcap5B_rsp)) {
+ if (len < sizeof(mcap_rsp)) {
g_set_error(&gerr, MCAP_ERROR, MCAP_ERROR_FAILED,
"Protocol error");
close = TRUE;
goto fail;
}
- rsp = (mcap5B_rsp *)cmd;
+ param = cmd + sizeof(mcap_rsp);
/* Check if preferences changed */
- if ((conf != 0x00) && (rsp->param != conf)) {
+ if ((conf != 0x00) && (*param != conf)) {
g_set_error(&gerr, MCAP_ERROR, MCAP_ERROR_FAILED,
"Configuration changed");
close = TRUE;
goto fail;
}
- connect_cb(mdl, rsp->param, gerr, user_data);
+ connect_cb(mdl, *param, gerr, user_data);
return close;
fail:
connect_cb(NULL, 0, gerr, user_data);
@@ -1351,14 +1342,14 @@ static gboolean process_md_reconnect_mdl_rsp(struct mcap_mcl *mcl,
mcap_mdl_operation_cb reconn_cb = reconn->cb.op;
gpointer user_data = reconn->user_data;
struct mcap_mdl *mdl = reconn->mdl;
- mcap4B_rsp *rsp = (mcap4B_rsp *)cmd;
+ mcap_rsp *rsp = (mcap_rsp *)cmd;
GError *gerr = NULL;
gboolean close = FALSE;
g_free(mcl->priv_data);
mcl->priv_data = NULL;
- close = check_err_rsp(mcl, cmd, len, sizeof(mcap4B_rsp), &gerr);
+ close = check_err_rsp(mcl, cmd, len, sizeof(mcap_rsp), &gerr);
g_free(mcl->lcmd);
mcl->lcmd = NULL;
@@ -1390,14 +1381,14 @@ static gboolean process_md_abort_mdl_rsp(struct mcap_mcl *mcl,
mcap_mdl_notify_cb abrt_cb = abrt->cb.notify;
gpointer user_data = abrt->user_data;
struct mcap_mdl *mdl = abrt->mdl;
- mcap4B_rsp *rsp = (mcap4B_rsp *)cmd;
+ mcap_rsp *rsp = (mcap_rsp *)cmd;
GError *gerr = NULL;
gboolean close = FALSE;
g_free(mcl->priv_data);
mcl->priv_data = NULL;
- close = check_err_rsp(mcl, cmd, len, sizeof(mcap4B_rsp), &gerr);
+ close = check_err_rsp(mcl, cmd, len, sizeof(mcap_rsp), &gerr);
g_free(mcl->lcmd);
mcl->lcmd = NULL;
@@ -1406,7 +1397,7 @@ static gboolean process_md_abort_mdl_rsp(struct mcap_mcl *mcl,
abrt_cb(gerr, user_data);
shutdown_mdl(mdl);
- if ((len >= MIN_RSP_LEN) && (rsp->rc == MCAP_INVALID_MDL)) {
+ if ((len >= sizeof(mcap_rsp)) && (rsp->rc == MCAP_INVALID_MDL)) {
mcl->mdls = g_slist_remove(mcl->mdls, mdl);
g_free(mdl);
}
@@ -1447,7 +1438,7 @@ static gboolean process_md_delete_mdl_rsp(struct mcap_mcl *mcl, uint8_t *cmd,
g_free(mcl->priv_data);
mcl->priv_data = NULL;
- close = check_err_rsp(mcl, cmd, len, sizeof(mcap4B_rsp), &gerr);
+ close = check_err_rsp(mcl, cmd, len, sizeof(mcap_rsp), &gerr);
g_free(mcl->lcmd);
mcl->lcmd = NULL;
@@ -1517,8 +1508,8 @@ static void proc_cmd(struct mcap_mcl *mcl, uint8_t *cmd, uint32_t len)
(cmd[0] > MCAP_MD_DELETE_MDL_RSP &&
cmd[0] < MCAP_MD_SYNC_CAP_REQ)) {
error("Unknown cmd received (op code = %d)", cmd[0]);
- send4B_cmd(mcl, MCAP_ERROR_RSP, MCAP_INVALID_OP_CODE,
- MCAP_MDLID_RESERVED);
+ mcap_send_cmd(mcl, MCAP_ERROR_RSP, MCAP_INVALID_OP_CODE,
+ MCAP_MDLID_RESERVED, NULL, 0);
return;
}
diff --git a/mcap/mcap.h b/mcap/mcap.h
index 0299f42..9b95473 100644
--- a/mcap/mcap.h
+++ b/mcap/mcap.h
@@ -106,18 +106,10 @@ typedef struct {
*/
typedef struct {
- uint8_t op;
- uint8_t rc;
+ uint8_t op;
+ uint8_t rc;
uint16_t mdl;
-} __attribute__ ((packed)) mcap4B_rsp;
-
-typedef struct {
- uint8_t op;
- uint8_t rc;
- uint16_t mdl;
- uint8_t param;
-} __attribute__ ((packed)) mcap5B_rsp;
-
+} __attribute__ ((packed)) mcap_rsp;
/*
* MCAP Clock Synchronization Protocol
diff --git a/mcap/mcap_internal.h b/mcap/mcap_internal.h
index 9dacc12..7f16ab7 100644
--- a/mcap/mcap_internal.h
+++ b/mcap/mcap_internal.h
@@ -114,6 +114,7 @@ struct mcap_mdl {
};
int mcap_send_data(int sock, const uint8_t *buf, uint32_t size);
+
void proc_sync_cmd(struct mcap_mcl *mcl, uint8_t *cmd, uint32_t len);
#endif /* __MCAP_INTERNAL_H */
diff --git a/mcap/mcap_sync.c b/mcap/mcap_sync.c
index 76f1377..569a40a 100644
--- a/mcap/mcap_sync.c
+++ b/mcap/mcap_sync.c
@@ -33,27 +33,6 @@
#include "mcap_lib.h"
#include "mcap_internal.h"
-static int send_unsupported_req(struct mcap_mcl *mcl, uint8_t oc)
-{
- uint8_t *rsp;
- mcap4B_rsp *rsp_err;
- int sent;
-
-
- rsp = g_malloc0(sizeof(mcap4B_rsp));
-
- rsp_err = (mcap4B_rsp *)rsp;
- rsp_err->op = oc;
- rsp_err->rc = MCAP_REQUEST_NOT_SUPPORTED;
- rsp_err->mdl = htons (MCAP_MDLID_RESERVED);
-
- sent = mcap_send_data(g_io_channel_unix_get_fd(mcl->cc),
- rsp,
- sizeof(mcap4B_rsp));
- g_free(rsp);
- return sent;
-}
-
void proc_sync_cmd(struct mcap_mcl *mcl, uint8_t *cmd, uint32_t len)
{
switch (cmd[0]) {
@@ -61,7 +40,6 @@ void proc_sync_cmd(struct mcap_mcl *mcl, uint8_t *cmd, uint32_t len)
DBG("TODO: received MCAP_MD_SYNC_CAP_REQ: %d",
MCAP_MD_SYNC_CAP_REQ);
/* Not implemented yet. Reply with unsupported request */
- send_unsupported_req(mcl, cmd[0]);
break;
case MCAP_MD_SYNC_CAP_RSP:
DBG("TODO: received MCAP_MD_SYNC_CAP_RSP: %d",
@@ -71,7 +49,6 @@ void proc_sync_cmd(struct mcap_mcl *mcl, uint8_t *cmd, uint32_t len)
DBG("TODO: received MCAP_MD_SYNC_SET_REQ: %d",
MCAP_MD_SYNC_SET_REQ);
/* Not implemented yet. Reply with unsupported request */
- send_unsupported_req(mcl, cmd[0]);
break;
case MCAP_MD_SYNC_SET_RSP:
DBG("TODO: received MCAP_MD_SYNC_SET_RSP: %d",
--
1.6.3.3
next prev parent reply other threads:[~2010-07-22 8:58 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-22 8:51 MCAP Patches Santiago Carot-Nemesio
2010-07-22 8:51 ` [PATCH 01/60] Initial support for MCAP Santiago Carot-Nemesio
2010-07-22 8:51 ` [PATCH 02/60] Initial work to create MCAP instances Santiago Carot-Nemesio
2010-07-22 8:51 ` [PATCH 03/60] Initial work to process incomming connection of MCLs Santiago Carot-Nemesio
2010-07-22 8:51 ` [PATCH 04/60] Process events over Control Channels Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 05/60] Save and restore state of MCLs Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 06/60] Release MCAP instances Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 07/60] Process md_create_mdl_req in CONNECTED state Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 08/60] Process md_reconnect_mdl_req " Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 09/60] Process md_delete_mdl_req " Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 10/60] Process md_abort_mdl_req in PENDING state Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 11/60] Process commands in ACTIVE state Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 12/60] Managing connection of Data Channels Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 13/60] Enable connect operation to a remote MCAP instances Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 14/60] Implement set callbacks operation over MCLs Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 15/60] Implement function to send md_create_mdl_req Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 16/60] Implement function to send md_reconnect_mdl_req Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 17/60] Implement function to send md_delete_mdl_req Santiago Carot-Nemesio
2010-07-22 8:52 ` [PATCH 18/60] Implement function to send md_abort_mdl_req Santiago Carot-Nemesio
2010-07-22 8:56 ` [PATCH 19/60] Process response to std. op. codes Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 20/60] Process md_create_mdl_rsp Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 21/60] Process md_reconnect_mdl_rsp Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 22/60] Process md_abort_mdl_rsp Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 23/60] Process md_delete_mdl_rsp Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 24/60] Enable connection of Data Channel with remote MCAP instances Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 25/60] Initial support for clock synchronization protocol Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 26/60] Free memory when a unref operation happens over a cached MCL Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 27/60] Fix wrong response code rejecting reconnections Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 28/60] Solve a non initialized memory segmentation fault Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 29/60] Fix missed state transition in MCAP Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 30/60] Fix missed state transition in MCAP on reconnections Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 31/60] Fix MCAP bug processing responses Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 32/60] Fix MCL transitions when responses are not success Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 33/60] Change error messagge Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 34/60] Add macro to get minimum command length for respones Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 35/60] Remove magic number to check commands of 5 Bytes Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 36/60] Set MDL to closed when abort operation takes place Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 37/60] Remove MDL when delete operation fails with INVALID_MDL response code Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 38/60] Don't delete aborted MDLS Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 39/60] Fix double memory free on simultaneus deletion of MDLs Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 40/60] Fix memory leak when double deletion happens and response code isn't SUCCESS Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 41/60] Solve a bug when both sides request a creation of data channel with the same mdlid Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 42/60] Move assignment of data channel configuration Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 43/60] Acceptor should not resend commands Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 44/60] Restore state after INITIATOR ignore a request Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 45/60] Fix double reconnection problem using the same mdlid Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 46/60] Process received command in base to previous request sent Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 47/60] Random generation of first mdlid used as based to create data channels Jose Antonio Santos Cadenas
2010-07-22 8:56 ` [PATCH 48/60] Notify MCL closed when there is a pending callback Jose Antonio Santos Cadenas
2010-07-22 8:58 ` [PATCH 49/60] Restore state in MCL whenever an error takes place Santiago Carot-Nemesio
2010-07-22 8:58 ` [PATCH 50/60] Check control channel before calling to g_io_channel_unix_get_fd Santiago Carot-Nemesio
2010-07-22 8:58 ` [PATCH 51/60] Change name for callback used to report status of delete and abort operations Santiago Carot-Nemesio
2010-07-22 8:58 ` [PATCH 52/60] Avoid double insertion of the same MDL in an MCL Santiago Carot-Nemesio
2010-07-22 8:58 ` [PATCH 53/60] Send error response when an unknown command is received Santiago Carot-Nemesio
2010-07-22 8:58 ` [PATCH 54/60] Set MDL state to closed when a connection failed Santiago Carot-Nemesio
2010-07-22 8:58 ` [PATCH 55/60] Change the get_addres function to match with other bluez functions Santiago Carot-Nemesio
2010-07-22 8:58 ` Santiago Carot-Nemesio [this message]
2010-07-22 8:58 ` [PATCH 57/60] Set Gerror at the end of the output paremeters list Santiago Carot-Nemesio
2010-07-22 8:58 ` [PATCH 58/60] Return a proper UNIX error instead of -1 in mcap_mdl_get_fd Santiago Carot-Nemesio
2010-07-22 8:58 ` [PATCH 59/60] Remove "req" word from MCAP API Santiago Carot-Nemesio
2010-07-22 8:58 ` [PATCH 60/60] Change variable name for MCAP Instances Santiago Carot-Nemesio
2010-07-22 23:37 ` [PATCH 29/60] Fix missed state transition in MCAP Gustavo F. Padovan
2010-07-22 23:40 ` Gustavo F. Padovan
2010-07-22 23:31 ` [PATCH 27/60] Fix wrong response code rejecting reconnections Gustavo F. Padovan
2010-07-23 0:09 ` [PATCH 19/60] Process response to std. op. codes Gustavo F. Padovan
2010-07-23 0:07 ` [PATCH 18/60] Implement function to send md_abort_mdl_req Gustavo F. Padovan
2010-07-23 9:24 ` Santiago Carot-Nemesio
2010-07-23 18:07 ` Gustavo F. Padovan
2010-07-22 23:47 ` [PATCH 16/60] Implement function to send md_reconnect_mdl_req Gustavo F. Padovan
2010-07-23 9:49 ` Santiago Carot-Nemesio
2010-07-23 9:58 ` Johan Hedberg
2010-07-23 10:31 ` Luiz Augusto von Dentz
2010-07-23 10:44 ` José Antonio Santos Cadenas
2010-07-23 11:30 ` Elvis Pfützenreuter
2010-07-23 17:17 ` Santiago Carot-Nemesio
2010-07-23 18:05 ` Gustavo F. Padovan
2010-07-23 18:01 ` Gustavo F. Padovan
2010-07-22 23:54 ` [PATCH 12/60] Managing connection of Data Channels Gustavo F. Padovan
2010-07-23 9:23 ` Santiago Carot-Nemesio
2010-07-22 23:50 ` [PATCH 10/60] Process md_abort_mdl_req in PENDING state Gustavo F. Padovan
2010-07-23 8:00 ` Santiago Carot-Nemesio
2010-07-22 23:36 ` MCAP Patches Gustavo F. Padovan
2010-07-23 8:25 ` José Antonio Santos Cadenas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1279789097-2420-8-git-send-email-sancane@gmail.com \
--to=sancane@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).