diff options
-rw-r--r-- | libqcdm/src/commands.c | 7 | ||||
-rw-r--r-- | libqcdm/src/error.c | 1 | ||||
-rw-r--r-- | libqcdm/src/error.h | 1 |
3 files changed, 9 insertions, 0 deletions
diff --git a/libqcdm/src/commands.c b/libqcdm/src/commands.c index 11a1a38b..e4918617 100644 --- a/libqcdm/src/commands.c +++ b/libqcdm/src/commands.c @@ -119,6 +119,8 @@ bin2hexstr (const guint8 *bytes, int len) return result; } +/**********************************************************************/ + static gboolean check_command (const char *buf, gsize len, guint8 cmd, gsize min_len, GError **error) { @@ -154,6 +156,11 @@ check_command (const char *buf, gsize len, guint8 cmd, gsize min_len, GError **e "DM command %d not allowed in the current device mode", cmd); return FALSE; + case DIAG_CMD_BAD_SPC_MODE: + g_set_error (error, QCDM_COMMAND_ERROR, QCDM_COMMAND_SPC_LOCKED, + "DM command %d not allowed because the Service Programming Code is locked", + cmd); + return FALSE; default: break; } diff --git a/libqcdm/src/error.c b/libqcdm/src/error.c index e3b97a04..994608e9 100644 --- a/libqcdm/src/error.c +++ b/libqcdm/src/error.c @@ -75,6 +75,7 @@ qcdm_command_error_get_type (void) ENUM_ENTRY (QCDM_COMMAND_NOT_ACCEPTED, "QcdmCommandNotAccepted"), ENUM_ENTRY (QCDM_COMMAND_BAD_MODE, "QcdmCommandBadMode"), ENUM_ENTRY (QCDM_COMMAND_NVCMD_FAILED, "QcdmCommandNvCmdFailed"), + ENUM_ENTRY (QCDM_COMMAND_SPC_LOCKED, "QcdmCommandSpcLocked"), { 0, 0, 0 } }; diff --git a/libqcdm/src/error.h b/libqcdm/src/error.h index 7a02ae2c..f0b05349 100644 --- a/libqcdm/src/error.h +++ b/libqcdm/src/error.h @@ -41,6 +41,7 @@ enum { QCDM_COMMAND_NOT_ACCEPTED = 5, QCDM_COMMAND_BAD_MODE = 6, QCDM_COMMAND_NVCMD_FAILED = 7, + QCDM_COMMAND_SPC_LOCKED = 8, }; #define QCDM_COMMAND_ERROR (qcdm_command_error_quark ()) |