oak.h
来自「Linux下的无线网卡通用驱动程序」· C头文件 代码 · 共 198 行
H
198 行
#include <inttypes.h>typedef uint32_t DWORD;typedef uint16_t WORD;typedef uint8_t BYTE;/* * JBIG BIH. But note that Oak uses it little endian. */typedef struct{ DWORD opt1; DWORD xd; // Oak has this little endian DWORD yd; // Oak has this little endian DWORD l0; // Oak has this little endian DWORD opt2;} OAKBIH;/* * Oak record header. Every record starts with one of these and * the entire record is always padded out to a multiple of 16 bytes. */typedef struct{ char magic[4]; #define OAK_HDR_MAGIC "OAKT" DWORD len; // Total length of record including this header DWORD type; // Record type} OAK_HDR;/* * Note that the upper nibble of the type number encodes the class * * 0x - start/end doc * 1x - start/end page * 2x - page parameters * 3x - image data *//************************************************************************//* 0x - start/end doc *//************************************************************************//* * First record in file. * * No idea what the payload means yet. My guess is username. */#define OAK_TYPE_OTHER 0x0Dtypedef struct{ WORD unk; // Always 1 char string[64]; // "OTHER" padded with 0's // WORD pad; // "PAD_PAD_" as needed.} OAK_OTHER;typedef OAK_OTHER HDR_0D;/* * date/time record */#define OAK_TYPE_TIME 0x0Ctypedef struct{ char datetime[32]; // Date/time in string format (with NL) DWORD time_t; // Time in seconds since the Unix epoch WORD year; // e.g. 2003 WORD tm_mon; // Month-1 WORD tm_mday; // Day of month (1-31) WORD tm_hour; // Hour (0-23) WORD tm_min; // Minute (0-59) WORD tm_sec; // Second (0-59) // DWORD pad;} OAK_TIME;typedef OAK_TIME HDR_0C;/* * Filename record */#define OAK_TYPE_FILENAME 0x0Atypedef struct{ char string[64]; // "OTHER" padded with 0's} OAK_FILENAME;/* * End of document */#define OAK_TYPE_END_DOC 0x0B/************************************************************************//* 1x - start/end page *//************************************************************************/#define OAK_TYPE_START_PAGE 0x14 // No arguments#define OAK_TYPE_START_IMAGE 0x15 // No arguments#define OAK_TYPE_END_IMAGE 0x17 // No arguments#define OAK_TYPE_END_PAGE 0x18 // WORD argument (0)/************************************************************************//* 2x - page parameters *//************************************************************************/#define OAK_TYPE_SOURCE 0x28 // DWORD argument: paper source #define OAK_SOURCE_TRAY1 1 #define OAK_SOURCE_MANUAL 4 #define OAK_SOURCE_AUTO 7#define OAK_TYPE_MEDIA 0x29typedef struct{ BYTE media; // Media code #define OAK_MEDIA_AUTO 0 #define OAK_MEDIA_PLAIN 1 #define OAK_MEDIA_PREPRINTED 2 #define OAK_MEDIA_LETTERHEAD 3 #define OAK_MEDIA_GRAYTRANS 4 #define OAK_MEDIA_PREPUNCHED 5 #define OAK_MEDIA_LABELS 6 #define OAK_MEDIA_BOND 7 #define OAK_MEDIA_RECYCLED 8 #define OAK_MEDIA_COLOR 9 #define OAK_MEDIA_CARDSTOCK 10 #define OAK_MEDIA_HEAVY 11 #define OAK_MEDIA_ENVELOPE 12 #define OAK_MEDIA_LIGHT 13 #define OAK_MEDIA_TOUGH 14 BYTE unk8[3]; // Unknown, 2, 0, 0 char string[64]; // Unknown string, padd with blanks} OAK_MEDIA;#define OAK_TYPE_COPIES 0x2Atypedef struct{ DWORD copies; // Number of copies DWORD unk; // collate????} OAK_COPIES;#define OAK_TYPE_PAPER 0x2Btypedef struct{ DWORD paper; // Paper code #define OAK_PAPER_LETTER 1 // 8.5 x 11in #define OAK_PAPER_LEGAL 5 // 8.5 x 14in #define OAK_PAPER_EXECUTIVE 7 // 7.25 x 10.5in #define OAK_PAPER_A4 9 // 210 x 297mm #define OAK_PAPER_A5 11 // 148 x 210mm #define OAK_PAPER_B5_JIS 13 // 182 x 257mm #define OAK_PAPER_ENV_10 20 // 4.125 x 9.5in #define OAK_PAPER_ENV_DL 27 // 110 x 220mm #define OAK_PAPER_ENV_C5 28 // 162 x 229mm #define OAK_PAPER_ENV_B5 34 // 176 x 250mm #define OAK_PAPER_ENV_MONARCH 37 // 3.875 x 7.5in #define OAK_PAPER_B5_ISO 257 // 176 x 250mm #define OAK_PAPER_EXECUTIVE_JIS 258 // 8 x 13in #define OAK_PAPER_16K 93 // 7.75 x 10.75in #define OAK_PAPER_DOUBLE_POSTCARD 69 // 5.8 x 7.9in #define OAK_PAPER_POSTCARD 43 // 4.25 x 6in #define OAK_PAPER_CUSTOM 256 // user defined DWORD w1200; // Paper width at 1200 DPI DWORD h1200; // Paper height at 1200 DPI DWORD unk; // unknown, 0} OAK_PAPER;/************************************************************************//* 3x - JBIG image data *//************************************************************************/#define OAK_TYPE_IMAGE_COLOR 0x32#define OAK_TYPE_IMAGE_MONO 0x33typedef struct{ DWORD unk0; // Likely x offset DWORD unk1; // Likely y offset DWORD w; // width of (clipped?) image DWORD h; // height of (clipped?) image DWORD resx; // X resolution in DPI DWORD resy; // Y resolution in DPI DWORD nbits; // bits per plane, 1 or 2 char unk[16]; // always 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f} OAK_IMAGE_PLANE;typedef struct{ OAK_IMAGE_PLANE plane;} OAK_IMAGE_MONO;typedef struct{ OAK_IMAGE_PLANE plane[4];} OAK_IMAGE_COLOR;#define OAK_TYPE_IMAGE_DATA 0x3Ctypedef struct{ OAKBIH bih; // Little-endian JBIG BIH DWORD datalen; // Length of actual image data DWORD padlen; // Padded length of image data DWORD unk1C; // unknown, 000 DWORD y; // Y offset of this chunk DWORD plane; // 0=, 1=, 2=, 3=K DWORD subplane; // 0 or 1 // DWORD pad[2];} OAK_IMAGE_DATA;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?