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;
|
||||
}
|
||||
|
||||
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,
|
||||
"Unexpected DM command response (expected %d, got %d)",
|
||||
cmd, buf[0]);
|
||||
|
@@ -70,6 +70,10 @@ qcdm_command_error_get_type (void)
|
||||
ENUM_ENTRY (QCDM_COMMAND_MALFORMED_RESPONSE, "QcdmCommandMalformedResponse"),
|
||||
ENUM_ENTRY (QCDM_COMMAND_UNEXPECTED, "QcdmCommandUnexpected"),
|
||||
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 }
|
||||
};
|
||||
|
||||
|
@@ -36,6 +36,10 @@ enum {
|
||||
QCDM_COMMAND_MALFORMED_RESPONSE = 0,
|
||||
QCDM_COMMAND_UNEXPECTED = 1,
|
||||
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 ())
|
||||
|
Reference in New Issue
Block a user