diff options
Diffstat (limited to 'libqcdm/src')
-rw-r--r-- | libqcdm/src/commands.c | 32 | ||||
-rw-r--r-- | libqcdm/src/error.c | 4 | ||||
-rw-r--r-- | libqcdm/src/error.h | 4 |
3 files changed, 39 insertions, 1 deletions
diff --git a/libqcdm/src/commands.c b/libqcdm/src/commands.c index a3052007..e757cef4 100644 --- a/libqcdm/src/commands.c +++ b/libqcdm/src/commands.c @@ -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]); diff --git a/libqcdm/src/error.c b/libqcdm/src/error.c index 695f6a55..bf16b56a 100644 --- a/libqcdm/src/error.c +++ b/libqcdm/src/error.c @@ -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 } }; diff --git a/libqcdm/src/error.h b/libqcdm/src/error.h index 47a55e51..7098fcbe 100644 --- a/libqcdm/src/error.h +++ b/libqcdm/src/error.h @@ -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 ()) |