1 #ifndef _INC_SBE_PROMFORMAT_H_ 2 #define _INC_SBE_PROMFORMAT_H_ 3 4 /*----------------------------------------------------------------------------- 5 * sbe_promformat.h - Contents of seeprom used by dvt and manufacturing tests 6 * 7 * Copyright (C) 2002-2005 SBE, Inc. 8 * 9 * This program is free software; you can redistribute it and/or modify 10 * it under the terms of the GNU General Public License as published by 11 * the Free Software Foundation; either version 2 of the License, or 12 * (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * For further information, contact via email: support@sbei.com 20 * SBE, Inc. San Ramon, California U.S.A. 21 * 22 *----------------------------------------------------------------------------- 23 */ 24 25 26 /*** 27 * PMCC4 SAMPLE EEPROM IMAGE 28 * 29 * eeprom[00]: 01 11 76 07 01 00 a0 d6 30 * eeprom[08]: 22 34 56 3e 5b c1 1c 3e 31 * eeprom[16]: 5b e1 b6 00 00 00 01 00 32 * eeprom[24]: 00 08 46 d3 7b 5e a8 fb 33 * eeprom[32]: f7 ef df bf 7f 55 00 01 34 * eeprom[40]: 02 04 08 10 20 40 80 ff 35 * eeprom[48]: fe fd fb f7 ef df bf 7f 36 * 37 ***/ 38 39 40 /*------------------------------------------------------------------------ 41 * Type 1 Format 42 * byte: 43 * 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 44 * ------------------------------------------------------------------------- 45 * 01 11 76 SS SS 00 0A D6 <SERIAL NUM> <Create TIME> <Heatrun TIME> 46 * SBE SUB SERIAL # (BCD) (time_t) (time_t) 47 * ID VENDOR (format) (format) 48 * 49 * 19 20 21 22 23 24 25 26 50 * Heat Run Heat Run 51 * Iterations Errors 52 *------------------------------------------------------------------------ 53 * 54 * 55 * 56 * Type 2 Format - Added length, CRC in fixed position 57 * byte: 58 * 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 59 * ------------------------------------------------------------------------- 60 * 02 00 1A CC CC CC CC 11 76 07 03 00 0A D6 <SERIAL NUM> 61 * Payload SBE Crc32 SUB System System SERIAL/MAC 62 * Length VENDOR ID ID 63 * 64 * 17 18 19 20 21 22 23 24 25 26 27 28 29 39 31 32 65 * -------------------------------------------------------------------------- 66 * <Create TIME> <Heatrun TIME> Heat Run Heat Run 67 * (time_t) (time_t) Iterations Errors 68 * 69 */ 70 71 #define STRUCT_OFFSET(type, symbol) ((long)&(((type *)0)->symbol)) 72 73 /*------------------------------------------------------------------------ 74 * Historically different Prom format types. 75 * 76 * For diagnostic and failure purposes, do not create a type 0x00 or a 77 * type 0xff 78 *------------------------------------------------------------------------ 79 */ 80 #define PROM_FORMAT_Unk (-1) 81 #define PROM_FORMAT_TYPE1 1 82 #define PROM_FORMAT_TYPE2 2 83 84 85 /****** bit fields for a type 1 formatted seeprom **************************/ 86 typedef struct 87 { 88 char type; /* 0x00 */ 89 char Id[2]; /* 0x01-0x02 */ 90 char SubId[2]; /* 0x03-0x04 */ 91 char Serial[6]; /* 0x05-0x0a */ 92 char CreateTime[4]; /* 0x0b-0x0e */ 93 char HeatRunTime[4]; /* 0x0f-0x12 */ 94 char HeatRunIterations[4]; /* 0x13-0x16 */ 95 char HeatRunErrors[4]; /* 0x17-0x1a */ 96 char Crc32[4]; /* 0x1b-0x1e */ 97 } FLD_TYPE1; 98 99 100 /****** bit fields for a type 2 formatted seeprom **************************/ 101 typedef struct 102 { 103 char type; /* 0x00 */ 104 char length[2]; /* 0x01-0x02 */ 105 char Crc32[4]; /* 0x03-0x06 */ 106 char Id[2]; /* 0x07-0x08 */ 107 char SubId[2]; /* 0x09-0x0a */ 108 char Serial[6]; /* 0x0b-0x10 */ 109 char CreateTime[4]; /* 0x11-0x14 */ 110 char HeatRunTime[4]; /* 0x15-0x18 */ 111 char HeatRunIterations[4]; /* 0x19-0x1c */ 112 char HeatRunErrors[4]; /* 0x1d-0x20 */ 113 } FLD_TYPE2; 114 115 116 117 /***** this union allows us to access the seeprom as an array of bytes ***/ 118 /***** or as individual fields ***/ 119 120 #define SBE_EEPROM_SIZE 128 121 #define SBE_MFG_INFO_SIZE sizeof(FLD_TYPE2) 122 123 typedef union 124 { 125 char bytes[128]; 126 FLD_TYPE1 fldType1; 127 FLD_TYPE2 fldType2; 128 } PROMFORMAT; 129 130 #endif /*** _INC_SBE_PROMFORMAT_H_ ***/ 131