qcdm: handle more command error responses
This commit is contained in:
@@ -32,7 +32,37 @@ check_command (const char *buf, gsize len, guint8 cmd, gsize min_len, GError **e
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buf[0] != (guint8) cmd) {
|
switch (buf[0]) {
|
||||||
|
case DIAG_CMD_BAD_CMD:
|
||||||
|
g_set_error (error, QCDM_COMMAND_ERROR, QCDM_COMMAND_BAD_COMMAND,
|
||||||
|
"DM command %d unknown or unimplemented by the device",
|
||||||
|
cmd);
|
||||||
|
return FALSE;
|
||||||
|
case DIAG_CMD_BAD_PARM:
|
||||||
|
g_set_error (error, QCDM_COMMAND_ERROR, QCDM_COMMAND_BAD_PARAMETER,
|
||||||
|
"DM command %d contained invalid parameter",
|
||||||
|
cmd);
|
||||||
|
return FALSE;
|
||||||
|
case DIAG_CMD_BAD_LEN:
|
||||||
|
g_set_error (error, QCDM_COMMAND_ERROR, QCDM_COMMAND_BAD_LENGTH,
|
||||||
|
"DM command %d was the wrong size",
|
||||||
|
cmd);
|
||||||
|
return FALSE;
|
||||||
|
case DIAG_CMD_BAD_DEV:
|
||||||
|
g_set_error (error, QCDM_COMMAND_ERROR, QCDM_COMMAND_NOT_ACCEPTED,
|
||||||
|
"DM command %d was not accepted by the device",
|
||||||
|
cmd);
|
||||||
|
return FALSE;
|
||||||
|
case DIAG_CMD_BAD_MODE:
|
||||||
|
g_set_error (error, QCDM_COMMAND_ERROR, QCDM_COMMAND_BAD_MODE,
|
||||||
|
"DM command %d not allowed in the current device mode",
|
||||||
|
cmd);
|
||||||
|
return FALSE;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (buf[0] != cmd) {
|
||||||
g_set_error (error, QCDM_COMMAND_ERROR, QCDM_COMMAND_UNEXPECTED,
|
g_set_error (error, QCDM_COMMAND_ERROR, QCDM_COMMAND_UNEXPECTED,
|
||||||
"Unexpected DM command response (expected %d, got %d)",
|
"Unexpected DM command response (expected %d, got %d)",
|
||||||
cmd, buf[0]);
|
cmd, buf[0]);
|
||||||
|
@@ -70,6 +70,10 @@ qcdm_command_error_get_type (void)
|
|||||||
ENUM_ENTRY (QCDM_COMMAND_MALFORMED_RESPONSE, "QcdmCommandMalformedResponse"),
|
ENUM_ENTRY (QCDM_COMMAND_MALFORMED_RESPONSE, "QcdmCommandMalformedResponse"),
|
||||||
ENUM_ENTRY (QCDM_COMMAND_UNEXPECTED, "QcdmCommandUnexpected"),
|
ENUM_ENTRY (QCDM_COMMAND_UNEXPECTED, "QcdmCommandUnexpected"),
|
||||||
ENUM_ENTRY (QCDM_COMMAND_BAD_LENGTH, "QcdmCommandBadLength"),
|
ENUM_ENTRY (QCDM_COMMAND_BAD_LENGTH, "QcdmCommandBadLength"),
|
||||||
|
ENUM_ENTRY (QCDM_COMMAND_BAD_COMMAND, "QcdmCommandBadCommand"),
|
||||||
|
ENUM_ENTRY (QCDM_COMMAND_BAD_PARAMETER, "QcdmCommandBadParameter"),
|
||||||
|
ENUM_ENTRY (QCDM_COMMAND_NOT_ACCEPTED, "QcdmCommandNotAccepted"),
|
||||||
|
ENUM_ENTRY (QCDM_COMMAND_BAD_MODE, "QcdmCommandBadMode"),
|
||||||
{ 0, 0, 0 }
|
{ 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -36,6 +36,10 @@ enum {
|
|||||||
QCDM_COMMAND_MALFORMED_RESPONSE = 0,
|
QCDM_COMMAND_MALFORMED_RESPONSE = 0,
|
||||||
QCDM_COMMAND_UNEXPECTED = 1,
|
QCDM_COMMAND_UNEXPECTED = 1,
|
||||||
QCDM_COMMAND_BAD_LENGTH = 2,
|
QCDM_COMMAND_BAD_LENGTH = 2,
|
||||||
|
QCDM_COMMAND_BAD_COMMAND = 3,
|
||||||
|
QCDM_COMMAND_BAD_PARAMETER = 4,
|
||||||
|
QCDM_COMMAND_NOT_ACCEPTED = 5,
|
||||||
|
QCDM_COMMAND_BAD_MODE = 6
|
||||||
};
|
};
|
||||||
|
|
||||||
#define QCDM_COMMAND_ERROR (qcdm_command_error_quark ())
|
#define QCDM_COMMAND_ERROR (qcdm_command_error_quark ())
|
||||||
|
Reference in New Issue
Block a user