*
* The SELPHY ES-series printers from Canon requires intelligent buffering
* of the raw spool data in order to keep the printer from locking up.
*
* Known supported printers:
*
* SELPHY ES1, SELPHY ES2, SELPHY ES30
*
* Supported but untested:
*
* SELPHY ES20, SELPHY ES3
* SELPHY CP-760 and all other CP-series printers EXCEPT for CP-790
*
* NOT currently supported:
*
* SELPHY ES40, CP-790
* (They use different stream formats, and may have different readbacks;
* I will update this as needed and as I get hardware to test..)
/*
Selphy ES1:
Init func: 40 00 [typeA] [pgcode] 00 00 00 00 00 00 00 00
Plane func: 40 01 [typeB] [plane] [length, 32-bit LE] 00 00 00 00
TypeA codes are 0x10 for Color papers, 0x20 for B&W papers.
TypeB codes are 0x01 for Color papers, 0x02 for B&W papers.
Plane codes are 0x01, 0x03, 0x07 for Y, M, and C, respectively.
B&W Jobs have a single plane code of 0x01.
'P' papers pgcode of 0x11 and a plane length of 2227456 bytes
'CP_L' pgcode of 0x12 and a plane length of 1601600 bytes.
'Card' pgcode of 0x13 and a plane length of 698880 bytes.
Readback values seen:
02 00 00 00 02 01 [pg] 01 00 00 00 00 [idle, waiting for init seq]
04 00 00 00 02 01 [pg] 01 00 00 00 00 [init received, not ready..]
04 00 01 00 02 01 [pg] 01 00 00 00 00 [waiting for Y data]
04 00 03 00 02 01 [pg] 01 00 00 00 00 [waiting for M data]
04 00 07 00 02 01 [pg] 01 00 00 00 00 [waiting for C data]
04 00 00 00 02 01 [pg] 01 00 00 00 00 [all data sent; not ready..]
05 00 00 00 02 01 [pg] 01 00 00 00 00 [?? transitions to this]
06 00 00 00 02 01 [pg] 01 00 00 00 00 [?? transitions to this]
02 00 00 00 02 01 [pg] 01 00 00 00 00 [..transitions back to idle]
Readbacks for other paper types are currently unknown.
Known paper types for all ES printers: P, Pbw, C, Cl
Additional types for ES3/30/40: Pg, Ps
Known pg codes: 0x01 -- P-size
0x03 -- C-size
P* sizes are 100x148mm "postcards"
CP_L sizes are 89x119mm "labels"
Card sizes are 54x86mm "cards"
*/
/*
Selphy ES2/20:
Init func: 40 00 [pgcode] 00 02 00 00 [type] 00 00 00 [pg2] [length, 32-bit LE]
Plane func: 40 01 [plane] 00 00 00 00 00 00 00 00 00
Type codes are 0x00 for Color papers, 0x01 for B&W papers.
Plane codes are 0x01, 0x02, 0x03 for Y, M, and C, respectively.
B&W Jobs have a single plane code of 0x01.
'P' papers pgcode of 0x01 and a plane length of 2227456 bytes
'CP_L' pgcode of 0x02 and a plane length of 1601600 bytes.
'Card' pgcode of 0x03 and a plane length of 698880 bytes.
pg2 is 0x00 for all media types except for 'Card', which is 0x01.
Readback values seen:
02 00 00 00 [pg] 00 [pg2] [xx] 00 00 00 00 [idle, waiting for init seq]
03 00 01 00 [pg] 00 [pg2] [xx] 00 00 00 00 [init complete, ready for Y]
04 00 01 00 [pg] 00 [pg2] [xx] 00 00 00 00 [? paper loaded]
05 00 01 00 [pg] 00 [pg2] [xx] 00 00 00 00 [? transitions to this]
06 00 03 00 [pg] 00 [pg2] [xx] 00 00 00 00 [ready for M]
08 00 03 00 [pg] 00 [pg2] [xx] 00 00 00 00 [? transitions to this]
09 00 07 00 [pg] 00 [pg2] [xx] 00 00 00 00 [ready for C]
09 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transitions to this]
0b 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transisions to this]
0c 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transitions to this]
0f 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transitions to this]
13 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [? transitions to this]
02 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [back to idle, waiting for init seq]
[xx] can be 0x00 or 0xff, depending on if a print job has completed or not.
14 00 00 00 [pg] 00 [pg2] 00 00 00 00 00 [out of paper/ink]
14 00 01 00 [pg] 00 [pg2] 00 01 00 00 00 [out of paper/ink]
[pg] is: 0x01 for P-paper
0x03 for C-paper
[pg2] is: 0x00 for P-paper
0x01 for C-paper (label)
*/
/*
Selphy ES3/30:
Init func: 40 00 [pgcode] [type] 00 00 00 00 00 00 00 00 [length, 32-bit LE]
Plane func: 40 01 [plane] 00 00 00 00 00 00 00 00 00
End func: 40 20 00 00 00 00 00 00 00 00 00 00
Type codes are 0x00 for Color papers, 0x01 for B&W papers.
Plane codes are 0x01, 0x02, 0x03 for Y, M, and C, respectively.
B&W Jobs have a single plane code of 0x01.
'P' papers pgcode of 0x01 and a plane length of 2227456 bytes.
'CP_L' pgcode of 0x02 and a plane length of 1601600 bytes.
'Card' pgcode of 0x03 and a plane length of 698880 bytes.
Readback values seen with standard 'P-Color' and 'C-Label' cartridges:
00 ff 00 00 ff ff ff ff 00 00 00 00 [idle, waiting for init seq]
01 ff 01 00 ff ff ff ff 00 00 00 00 [init complete, ready for Y]
03 ff 01 00 ff ff ff ff 00 00 00 00 [?]
03 ff 02 00 ff ff ff ff 00 00 00 00 [ready for M]
05 ff 02 00 ff ff ff ff 00 00 00 00 [?]
05 ff 03 00 ff ff ff ff 00 00 00 00 [ready for C]
07 ff 03 00 ff ff ff ff 00 00 00 00 [?]
0b ff 03 00 ff ff ff ff 00 00 00 00 [?]
13 ff 03 00 ff ff ff ff 00 00 00 00 [?]
00 ff 10 00 ff ff ff ff 00 00 00 00 [done, ready for footer]
*/
/*
Selphy ES40: (May be supported if necessary)
Init func: 40 00 [pgcode] [type] 00 00 00 00 00 00 00 00 [length, 32-bit LE]
Plane func: 40 01 [plane] 00 00 00 00 00 00 00 00 00
End func: 40 20 00 00 00 00 00 00 00 00 00 00
Type codes are 0x00 for Color papers, 0x01 for B&W papers.
Plane codes are 0x01, 0x02, 0x03 for Y, M, and C, respectively.
B&W Jobs have a single plane code of 0x01.
'P' papers pgcode of 0x00 and a plane length of 2227456 bytes.
'CP_L' pgcode of 0x01 and a plane length of 1601600 bytes.
'Card' pgcode of 0x02 and a plane length of 698880 bytes.
Readback codes are unknown.
*/
/*
Selphy CP790: (May be supported if necessary)
Init func: 40 00 [pgcode] 00 00 00 00 00 00 00 00 00 [length, 32-bit LE]
Plane func: 40 01 [plane] 00 00 00 00 00 00 00 00 00
End func: 40 20 00 00 00 00 00 00 00 00 00 00
Plane codes are 0x01, 0x02, 0x03 for Y, M, and C, respectively.
B&W Jobs have a single plane code of 0x01.
'P' papers pgcode of 0x00 and a plane length of 2227456 bytes.
'CP_L' pgcode of 0x01 and a plane length of 1601600 bytes.
'Card' pgcode of 0x02 and a plane length of 698880 bytes.
'Wide' pgcode of 0x03 and a plane length of 2976512 bytes.
Readback codes are unknown.
*/
/*
Selphy CP-XXX (except for CP-790):
Init func: 40 00 00 [pgcode] 00 00 00 00 00 00 00 00
Plane func: 40 01 00 [plane] [length, 32-bit LE] 00 00 00 00
plane codes are 0x00, 0x01, 0x02 for Y, M, and C, respectively.
'P' paper pgcode 0x01 plane length 2227456 bytes.
'CP_L' pgcode 0x02 plane length 1601600 bytes.
'Card' paper pgcode 0x03 plane length 698880 bytes.
'Wide' paper pgcode 0x04 plane length 2976512 bytes.
Known readback values from a SELPHY CP-760:
01 00 00 00 00 00 [pg] 00 00 00 00 00 [idle, waiting for init]
02 00 00 00 70 00 [pg] 00 00 00 00 00 [waiting for Y data]
04 00 00 00 00 00 [pg] 00 00 00 00 00 [waiting for M data]
08 00 00 00 00 00 [pg] 00 00 00 00 00 [waiting for C data]
10 00 00 00 00 00 [pg] 00 00 00 00 00 [?]
20 00 00 00 00 00 [pg] 00 00 00 00 00 [?]
'P' paper has a code of 0x11
'CP_L' paper has a code of 0x22
Readback codes for other paper types are unknown.
*/