diff --git a/README.SELPHY b/README.SELPHY index 771c33f..9eae794 100644 --- a/README.SELPHY +++ b/README.SELPHY @@ -309,6 +309,8 @@ Plane func: 40 01 00 [plane] [length, 32-bit LE] 00 00 00 00 End func: 00 00 00 00 # NOTE: CP900 only, and not necessary! + Error clear: 40 10 00 00 00 00 00 00 00 00 00 00 # CP800. Others? + plane codes are 0x00, 0x01, 0x02 for Y, M, and C, respectively. 'P' papers pgcode 0x01 plane length 2227456 bytes. @@ -332,7 +334,8 @@ [rr] is error code: 0x00 no error 0x01 paper out - 0x08 when ribbon is depleted + 0x04 ribbon problem + 0x08 ribbon depleted [ss] is either 0x00 or 0x70. Unsure as to its significance; perhaps it means paper or ribbon is already set to go? diff --git a/selphy_print.c b/selphy_print.c index 4a10b5f..ae7399a 100644 --- a/selphy_print.c +++ b/selphy_print.c @@ -105,6 +105,7 @@ struct printer_data { int16_t ready_m_readback[READBACK_LEN]; int16_t ready_c_readback[READBACK_LEN]; int16_t done_c_readback[READBACK_LEN]; + int16_t clear_error[READBACK_LEN]; int16_t paper_codes[256]; int16_t pgcode_offset; /* Offset into printjob for paper type */ int16_t paper_code_offset; /* Offset in readback for paper type */ @@ -132,6 +133,7 @@ struct printer_data printers[P_END] = { .ready_m_readback = { 0x04, 0x00, 0x03, 0x00, 0x02, 0x01, -1, 0x01, 0x00, 0x00, 0x00, 0x00 }, .ready_c_readback = { 0x04, 0x00, 0x07, 0x00, 0x02, 0x01, -1, 0x01, 0x00, 0x00, 0x00, 0x00 }, .done_c_readback = { 0x04, 0x00, 0x00, 0x00, 0x02, 0x01, -1, 0x01, 0x00, 0x00, 0x00, 0x00 }, + // .clear_error // .paper_codes .pgcode_offset = 3, .paper_code_offset = 6, @@ -146,6 +148,7 @@ struct printer_data printers[P_END] = { .ready_m_readback = { 0x06, 0x00, 0x03, 0x00, -1, 0x00, -1, -1, 0x00, 0x00, 0x00, 0x00 }, .ready_c_readback = { 0x09, 0x00, 0x07, 0x00, -1, 0x00, -1, -1, 0x00, 0x00, 0x00, 0x00 }, .done_c_readback = { 0x09, 0x00, 0x00, 0x00, -1, 0x00, -1, -1, 0x00, 0x00, 0x00, 0x00 }, + // .clear_error // .paper_codes .pgcode_offset = 2, .paper_code_offset = 4, @@ -160,6 +163,7 @@ struct printer_data printers[P_END] = { .ready_m_readback = { 0x03, 0xff, 0x02, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }, .ready_c_readback = { 0x05, 0xff, 0x03, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }, .done_c_readback = { 0x00, 0xff, 0x10, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }, + // .clear_error // .paper_codes .pgcode_offset = 2, .paper_code_offset = -1, @@ -174,6 +178,7 @@ struct printer_data printers[P_END] = { .ready_m_readback = { 0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -1 }, .ready_c_readback = { 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -1 }, .done_c_readback = { 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -1 }, + // .clear_error // .paper_codes .pgcode_offset = 2, .paper_code_offset = 11, @@ -188,6 +193,7 @@ struct printer_data printers[P_END] = { .ready_m_readback = { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, -1, 0x00, 0x00, 0x00, 0x00, -1 }, .ready_c_readback = { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, -1, 0x00, 0x00, 0x00, 0x00, -1 }, .done_c_readback = { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, -1, 0x00, 0x00, 0x00, 0x00, -1 }, + .clear_error = { 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // .paper_codes .pgcode_offset = 3, .paper_code_offset = 6, @@ -203,6 +209,7 @@ struct printer_data printers[P_END] = { .ready_c_readback = { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, .done_c_readback = { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // .paper_codes + // .clear_error .pgcode_offset = -1, .paper_code_offset = -1, .error_offset = 2,