CAPS Universe documentation  1.0.4
All you need to know to be successful
Data Structures | Macros | Enumerations
samsung-spl2-header.h File Reference

Various data header definitions for the SPL data protocol. More...

Go to the source code of this file.

Data Structures

struct  page_header_record
 This header record must lead each page to print. More...
 
struct  page_footer_record
 This footer record must be send once after each page to print. More...
 
struct  band_record
 Each page is divided vertically into 'bands'. This data leads each band information. More...
 
struct  comp_data_header
 This header leads the comressed data for compression algorithmus with ID 0x11. More...
 

Macros

#define TABLE_PTR_SIZE   0x40
 
#define COMP_DATA_HEADER_MARKER   0x09ABCDEF
 
#define LINES_IN_ONE_BAND   128
 
#define COMPRESS_SAMPLE_RATE   0x800
 
#define MAX_UNCOMPRESSED_BYTES   0x80
 
#define MIN_COMPRESSED_BYTES   0x2
 
#define COMPRESS_ENTRY_SIZE   0x2
 
#define RAW_ENTRY_SIZE   0x2
 
#define MAX_COMPRESSED_BYTES   0x202
 

Enumerations

enum  format_type {
  SPL_LETTER_TYPE ,
  SPL_LEGAL_TYPE ,
  SPL_DINA4_TYPE ,
  SPL_EXECUTIVE_TYPE ,
  SPL_LEDGER_TYPE ,
  SPL_DINA3_TYPE ,
  SPL_COM10_TYPE ,
  SPL_MONARCH_TYPE ,
  SPL_DINC5_TYPE ,
  SPL_DL_TYPE ,
  SPL_JISB4_TYPE ,
  SPL_JISB5_TYPE ,
  SPL_ISOB5_TYPE ,
  SPL_JPOST_TYPE = 14 ,
  SPL_JDOUBLE_TYPE ,
  SPL_DINA5_TYPE ,
  SPL_DINA6_TYPE ,
  SPL_JISB6_TYPE ,
  SPL_CUSTOM_TYPE = 21 ,
  SPL_DINC6_TYPE = 23 ,
  SPL_FOLIO_TYPE
}
 The media format types to be sent in the page header's 'ptype' member. More...
 
enum  paper_feed {
  SPL_AUTO_FEED = 1 ,
  SPL_MANUAL_FEED ,
  SPL_MULTI_FEED ,
  SPL_TOP_FEED ,
  SPL_BOTTOM_FEED ,
  SPL_ENVELOPES_FEED ,
  SPL_THIRD_FEED
}
 
enum  record_type {
  PAGE_HEADER_RECORD = 0x0 ,
  PAGE_FOOTER_RECORD = 0x1 ,
  JOB_TERMINATE = 0x9 ,
  BAND_RECORD = 0x0c
}
 

Macro Definition Documentation

◆ TABLE_PTR_SIZE

#define TABLE_PTR_SIZE   0x40

Entry count of the list of lengths of redundant data

◆ COMP_DATA_HEADER_MARKER

#define COMP_DATA_HEADER_MARKER   0x09ABCDEF

The marker's value for the compressed data header (e.g. comp_data_header::marker) Theoretical it can be used to switch the printer into big or little endian, depending how this number is stored.
Practically only little endian seems to work.

◆ LINES_IN_ONE_BAND

#define LINES_IN_ONE_BAND   128

printer accepts data in 'bands', each contains 128 lines of data

Todo:
It seems there are printers which only support 64 lines

◆ COMPRESS_SAMPLE_RATE

#define COMPRESS_SAMPLE_RATE   0x800

amount of bytes to check to calculate the pattern offsets

◆ MAX_UNCOMPRESSED_BYTES

#define MAX_UNCOMPRESSED_BYTES   0x80

max amount of bytes, an uncompressed entry can carry

Todo:
It seems there are printers which only support 64 bytes

◆ MIN_COMPRESSED_BYTES

#define MIN_COMPRESSED_BYTES   0x2

min. amount of bytes, a compressed entry can copy

◆ COMPRESS_ENTRY_SIZE

#define COMPRESS_ENTRY_SIZE   0x2

Size of a 'compress' entry (more a 'repeat' entry)

◆ RAW_ENTRY_SIZE

#define RAW_ENTRY_SIZE   0x2

Minimal size of a 'raw' data entry

◆ MAX_COMPRESSED_BYTES

#define MAX_COMPRESSED_BYTES   0x202

max. amount of bytes, a compressed entry can copy

Enumeration Type Documentation

◆ format_type

Values from: https://papersizes.io

These values are used in page_header_record::ptype.

Note
It seems these values have some impact on the OPC print width. Refer Mechanical Restrictions for details.
Enumerator
SPL_LETTER_TYPE 

US's Letter, libpaper's "letter", 216 mm x 279 mm

SPL_LEGAL_TYPE 

US's Legal, libpaper's "leagal", 216 mm x 356 mm

SPL_DINA4_TYPE 

Europeans A4, libpaper's "a4", 210 mm x 297 mm

SPL_EXECUTIVE_TYPE 

libpaper's "executive", 184 mm x 267 mm

SPL_LEDGER_TYPE 

US's Ledger, libpaper's "ledger", 432 mm × 279 mm

SPL_DINA3_TYPE 

Europeans A3, libpaper's "a3", 297 mm x 420 mm

SPL_COM10_TYPE 

No. 10, libpaper's "Comm10", 105 mm x 241 mm, Envelope

SPL_MONARCH_TYPE 

US's 7¾ Monarch, libpaper's "Monarch", 191 × 98 mm, Envelope

SPL_DINC5_TYPE 

Europeans C5 or international C5, libpaper's "c5", 229 mm × 162 mm, Envelope

SPL_DL_TYPE 

International DL, libpaper's "DL", 220 × 110 mm, Envelope

SPL_JISB4_TYPE 

Japanese JIS B4 (257 mm x 364 mm)

SPL_JISB5_TYPE 

Japanese JIS B5 (182 mm x 257 mm)

SPL_ISOB5_TYPE 

International ISO B5, libpaper's "b5", 176 mm x 250 mm

SPL_JPOST_TYPE 

FIXME

SPL_JDOUBLE_TYPE 

FIXME

SPL_DINA5_TYPE 

Europeans A5, libpaper's "a5"

SPL_DINA6_TYPE 

Europeans A6, libpaper's "a6"

SPL_JISB6_TYPE 

Japanese JIS B6 (128 mm x 182 mm)

SPL_CUSTOM_TYPE 

In this case the size must be defined via page_header_record::pwidth and page_header_record::plength

SPL_DINC6_TYPE 

Europeans/International C6, libpaper's "c6", 162 mm x 114 mm, Envelope

SPL_FOLIO_TYPE 

Books Folio, libpaper's "folio", 304.8 mm × 482.6 mm,

◆ paper_feed

enum paper_feed
Enumerator
SPL_AUTO_FEED 
SPL_MANUAL_FEED 

Maybe this one can be used to force the manual feed on a ML-2240?

SPL_MULTI_FEED 
SPL_TOP_FEED 
SPL_BOTTOM_FEED 
SPL_ENVELOPES_FEED 
SPL_THIRD_FEED 

◆ record_type

Enumerator
PAGE_HEADER_RECORD 

page_header_record

PAGE_FOOTER_RECORD 

page_footer_record

JOB_TERMINATE 
BAND_RECORD 

band_record