From c8aa3c47da821bbf28d38048d9b4beb49591d0f5 Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Tue, 24 Feb 2015 23:39:57 -0500 Subject: [PATCH] shinkos2145: Update backend with a complete list of all error codes. --- backend_shinkos2145.c | 262 +++++++++++++++++------------------------- 1 file changed, 108 insertions(+), 154 deletions(-) diff --git a/backend_shinkos2145.c b/backend_shinkos2145.c index 4602001..7c73014 100644 --- a/backend_shinkos2145.c +++ b/backend_shinkos2145.c @@ -361,245 +361,199 @@ struct s2145_status_hdr { #define ERROR_PRINTER 0x11 #define ERROR_BUFFER_FULL 0x21 - -/* - - I have a list of 72 different errors that are displayed on the printer, - but it appears the list is incomplete, and there's no mapping between - category and major code numbers. Also, not all of the individual errors - have minor codes listed (particularly the "consumables") - - These are the observed error codes to date (via stored error log dumps): - - 01/16 [ controller/parameter? ] - 05/15 [ jam/reloading? ] - 05/4e [ jam/unknown ] - 05/4f [ jam/unknown? ] - 05/61 [ jam/cantload? ] - 05/62 [ jam/cantload? ] - 05/64 [ jam/unknown? ] - 06/01 [ "cover open" ] - 06/0a [ consumables ? ] - 06/0b [ consumables ? ] - - Errors logged on printer A: - - 0x01/0x16 @ 77845 - 0x06/0x0b @ 77822, 70053 - 0x05/0x64 @ 76034 - 0x05/0x61 @ 76034, 75420 - 0x05/0x62 @ 76034 - 0x05/0x4e @ 69824, 69820, 69781 - - Errors logged on printer B: - - 0x06/0x0b @ 33270 - 0x05/0x4e @ 32952, 27672 - 0x05/0x4f @ 32935, 31834 - 0x05/0x61 @ 30856, 27982 - 0x01/0x16 @ 29132 - 0x05/0x64 @ 27982 - 0x05/0x62 @ 27982 - - Errors logged on printer C: - - 0x06/0x0a @ 78014, 77948, 77943, 77938 x2, 77937, 77936, 77933, 77919 - 0x05/0x15 @ 77938 - - - */ static char *error_codes(uint8_t major, uint8_t minor) { switch(major) { - case 0x06: - switch (minor) { - case 0x01: - return "Front Cover Open"; - default: - return "Unknown"; - } -#if 0 - case 9: /* "Controller Error" */ + case 0x01: /* "Controller Error" */ switch(minor) { case 0x01: - return "Controller: 01 EEPROM"; + return "Controller: EEPROM Write Timeout"; case 0x02: - return "Controller: 02 EEPROM"; + return "Controller: EEPROM Verify"; case 0x04: - return "Controller: 04 DSP"; + return "Controller: DSP Inactive"; case 0x05: - return "Controller: 05 DSP"; + return "Controller: DSP Application Inactive"; case 0x06: - return "Controller: 06 Main FW"; + return "Controller: Main FW Data"; case 0x07: - return "Controller: 07 Main FW"; + return "Controller: Main FW Write"; case 0x08: - return "Controller: 08 DSP FW"; + return "Controller: DSP FW Data"; case 0x09: - return "Controller: 09 DSP FW"; + return "Controller: DSP FW Write"; case 0x0A: - return "Controller: 0A ASIC"; + return "Controller: 0A ASIC??"; case 0x0B: - return "Controller: 0B FPGA"; + return "Controller: 0B FPGA??"; case 0x0D: - return "Controller: 0D Tone Curve"; + return "Controller: Tone Curve Write"; case 0x16: - return "Controller: 16 Parameter Table"; + return "Controller: Invalid Parameter Table"; case 0x17: - return "Controller: 17 Parameter Table"; + return "Controller: Parameter Table Data"; case 0x18: - return "Controller: 18 Parameter Table"; + return "Controller: Parameter Table Write"; case 0x29: - return "Controller: 29 DSP Comms"; + return "Controller: DSP Communication"; case 0x2A: - return "Controller: 2A DSP Comms"; + return "Controller: DSP DMA Failure"; default: return "Controller: Unknown"; } - case 8: /* XXXX "Mechanical Error" */ + case 0x02: /* "Mechanical Error" */ switch (minor) { case 0x01: - return "Mechanical: 01 Thermal Head"; + return "Mechanical: Thermal Head (Upper Up)"; case 0x02: - return "Mechanical: 02 Thermal Head"; + return "Mechanical: Thermal Head (Head Up)"; case 0x03: - return "Mechanical: 03 Thermal Head"; + return "Mechanical: Thermal Head (Head Down)"; case 0x04: - return "Mechanical: 04 Pinch Roller"; + return "Mechanical: Pinch Roller (Initialize)"; case 0x05: - return "Mechanical: 05 Pinch Roller"; + return "Mechanical: Pinch Roller (Mode1)"; case 0x06: - return "Mechanical: 06 Pinch Roller"; + return "Mechanical: Pinch Roller (Mode2)"; case 0x07: - return "Mechanical: 07 Pinch Roller"; + return "Mechanical: Pinch Roller (Mode3)"; case 0x08: - return "Mechanical: 08 Pinch Roller"; + return "Mechanical: Pinch Roller (Mode4)"; case 0x09: - return "Mechanical: 09 Cutter"; + return "Mechanical: Cutter (Right)"; case 0x0A: - return "Mechanical: 0A Cutter"; + return "Mechanical: Cutter (Left)"; + case 0x0B: + return "Mechanical: Thermal Head (Head Down Recovery)"; default: return "Mechanical: Unknown"; } - case 2: /* XXXX "Sensor Error" */ + case 0x03: /* "Sensor Error" */ switch (minor) { case 0x01: - return "Sensor: 01 Thermal Head"; + return "Sensor: Thermal Head"; case 0x02: - return "Sensor: 02 Pinch Roller"; + return "Sensor: Pinch Roller"; case 0x03: - return "Sensor: 03 Cutter L"; + return "Sensor: Cutter Left"; case 0x04: - return "Sensor: 04 Cutter R"; + return "Sensor: Cutter Right"; case 0x05: - return "Sensor: 05 Cutter M"; + return "Sensor: Cutter Unknown"; + case 0x08: + return "Sensor: Ribbon Encoder (Supply)"; + case 0x09: + return "Sensor: Ribbon Encoder (Takeup)"; + case 0x13: + return "Sensor: Thermal Head"; default: return "Sensor: Unknown"; } - case 3: /* XXXX "Temperature Sensor Error" */ + case 0x04: /* "Temperature Sensor Error" */ switch (minor) { case 0x01: - return "Temp Sensor: 01 Thermal Head High"; + return "Temp Sensor: Thermal Head High"; case 0x02: - return "Temp Sensor: 02 Thermal Head Low"; + return "Temp Sensor: Thermal Head Low"; case 0x03: - return "Temp Sensor: 03 Environment High"; + return "Temp Sensor: Environment High"; case 0x04: - return "Temp Sensor: 04 Environment Low"; + return "Temp Sensor: Environment Low"; case 0x05: - return "Temp Sensor: 05 Warmup Timed Out"; + return "Temp Sensor: Warmup Timed Out"; default: return "Temp Sensor: Unknown"; } - - case 4: /* XXXX "Front Cover Open" */ - switch (minor) { -// case 0x01: -// return "Front Cover: 01 Cover Open"; - case 0x02: - return "Front Cover: 02 Cover Open Error"; - default: - return "Front Cover: Unknown"; - } - case 5: /* XXX "Paper Jam" */ + case 0x5: /* "Paper Jam" */ switch (minor) { case 0x01: - return "Paper Jam: 01 Loading"; + return "Paper Jam: Loading Leading Edge Off"; case 0x02: - return "Paper Jam: 02 Loading"; + return "Paper Jam: Loading Print Position On"; case 0x03: - return "Paper Jam: 03 Loading"; + return "Paper Jam: Loading Print Position Off"; case 0x04: - return "Paper Jam: 04 Loading"; + return "Paper Jam: Loading Print Position On"; case 0x05: - return "Paper Jam: 05 Loading"; + return "Paper Jam: Loading Leading Edge On"; case 0x11: - return "Paper Jam: 11 Reloading"; + return "Paper Jam: Initializing Print Position Off"; case 0x12: - return "Paper Jam: 12 Reloading"; + return "Paper Jam: Initializing Print Position On"; case 0x13: - return "Paper Jam: 13 Reloading"; + return "Paper Jam: Initializing Leading Edge On"; case 0x14: - return "Paper Jam: 14 Reloading"; + return "Paper Jam: Initializing Print Position On"; case 0x15: - return "Paper Jam: 15 Reloading"; + return "Paper Jam: Initializing Print Position Off"; case 0x16: - return "Paper Jam: 16 Reloading"; + return "Paper Jam: Initializing Print Position On"; case 0x21: - return "Paper Jam: 21 Takeup"; + return "Paper Jam: Initializing Print Position On"; case 0x22: - return "Paper Jam: 22 Takeup"; + return "Paper Jam: Rewinding Print Position On"; + case 0x40: + return "Paper Jam: Pre-Printing Print Position Off"; case 0x41: - return "Paper Jam: 41 Printing"; + return "Paper Jam: Pre-Printing Print Position Off"; case 0x42: - return "Paper Jam: 42 Printing"; + return "Paper Jam: Printing Leading Edge Off"; case 0x43: - return "Paper Jam: 43 Printing"; + return "Paper Jam: After Returning Lead Edge Off"; case 0x44: - return "Paper Jam: 44 Printing"; + return "Paper Jam: After Printing Print Position Off"; case 0x45: - return "Paper Jam: 45 Printing"; + return "Paper Jam: After Printing Print Position On"; case 0x46: - return "Paper Jam: 46 Printing"; + return "Paper Jam: After Printing Print Position On"; case 0x47: - return "Paper Jam: 47 Printing"; + return "Paper Jam: After Printing Print Position Off"; case 0x49: - return "Paper Jam: 49 Printing"; + return "Paper Jam: Printing Lost Ribbon Mark"; case 0x4A: - return "Paper Jam: 4A Ribbon Cut"; + return "Paper Jam: Printing Ribbon Cut"; + case 0x4D: + return "Paper Jam: Printing Lost M Mark"; + case 0x4E: + return "Paper Jam: Printing Lost C Mark"; + case 0x4F: + return "Paper Jam: Printing Lost OP Mark"; case 0x61: - return "Paper Jam: 61 Can't Load"; + return "Paper Jam: Initializing Lead Edge On"; case 0x62: - return "Paper Jam: 62 Can't Load"; + return "Paper Jam: Initizlizing Print Position On"; + case 0x64: + return "Paper Jam: Initizlizing Paper Size On"; default: return "Paper Jam: Unknown"; } - case 6: /* XXXX "Consumables" */ + case 0x06: /* User Error */ switch (minor) { - case 0x01: // XXX - return "Consumables: XX No Ribbon+Paper"; - case 0x02: // XXX - return "Consumables: XX No Ribbon"; - case 0x03: // XXX - return "Consumables: XX Ribbon Empty"; - case 0x04: // XXX - return "Consumables: XX Ribbon Mismatch"; - case 0x05: // XXX - return "Consumables: XX 01 Ribbon Incorrect"; - case 0x06: // XXX - return "Consumables: XX 02 Ribbon Incorrect"; - case 0x07: // XXX - return "Consumables: XX 03 Ribbon Incorrect"; - case 0x08: // XXX - return "Consumables: XX No Paper"; - case 0x09: // XXX - return "Consumables: XX Paper Empty"; - case 0x0A: // XXX - return "Consumables: XX Paper Mismatch"; + case 0x01: + return "Front Cover Open"; + case 0x02: + return "Incorrect Ribbon"; + case 0x03: + return "No Ribbon"; + case 0x04: + return "Mismatched Ribbon"; + case 0x05: + return "Mismatched Paper"; + case 0x06: + return "Paper Empty"; + case 0x08: + return "No Paper"; + case 0x09: + return "Take Out Paper"; + case 0x0A: + return "Cover Open Error"; + case 0x0B: + return "Thermal Head Damaged"; + case 0x0C: + return "Thermal Head Recovery"; default: - return "Consumables: Unknown"; + return "Unknown"; } -#endif default: return "Unknown"; } @@ -1804,7 +1758,7 @@ static int shinkos2145_query_serno(struct libusb_device_handle *dev, uint8_t end struct dyesub_backend shinkos2145_backend = { .name = "Shinko/Sinfonia CHC-S2145", - .version = "0.38", + .version = "0.39", .uri_prefix = "shinkos2145", .cmdline_usage = shinkos2145_cmdline, .cmdline_arg = shinkos2145_cmdline_arg,