shinkos2145: Update backend with a complete list of all error codes.

This commit is contained in:
Solomon Peachy 2015-02-24 23:39:57 -05:00
parent 5863e7bd30
commit c8aa3c47da
1 changed files with 108 additions and 154 deletions

View File

@ -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,