Go to the documentation of this file.
44 #define BIT10 (1 << 10)
45 #define BIT11 (1 << 11)
46 #define BIT12 (1 << 12)
47 #define BIT13 (1 << 13)
48 #define BIT14 (1 << 14)
49 #define BIT15 (1 << 15)
51 #define EPSON_RESET_LOW_WIDTH_MS (100)
52 #define EPSON_RESET_DELAY_MS (3000) // G570PR20 has max delay of 3000 msecs
55 #define DEG2RAD (3.14159 / 180.0) // Degrees to radians
56 #define RAD2DEG (180.0 / 3.14159) // Radians to degrees
57 #define MG2MPS2 (9.80665 / 1000.0) // milli-G to meters/sec^2
58 #define MPS22MG (1000.0 / 9.80665) // meters/sec^2 to milli-G
86 #define ADDR_MODE_CTRL_LO 0x02 // MODE_CTRL Byte0 (W0)
87 #define ADDR_MODE_CTRL_HI 0x03 // MODE_CTRL Byte1 (W0)
88 #define ADDR_DIAG_STAT 0x04 // DIAG_STAT Byte0 (W0)
89 #define ADDR_FLAG 0x06 // FLAG(ND/EA) (W0)
90 #define ADDR_GPIO 0x08 // GPIO (W0)
91 #define ADDR_COUNT 0x0A // COUNT (W0)
92 #define ADDR_RANGE_OVER 0x0C // RANGE_OVER (W0)
93 #define ADDR_TEMP_HIGH 0x0E // TEMPC HIGH (W0)
94 #define ADDR_TEMP_LOW 0x10 // TEMPC LOW (W0)
95 #define ADDR_XGYRO_HIGH 0x12 // XGYRO HIGH (W0)
96 #define ADDR_XGYRO_LOW 0x14 // XGYRO LOW (W0)
97 #define ADDR_YGYRO_HIGH 0x16 // YGYRO HIGH (W0)
98 #define ADDR_YGYRO_LOW 0x18 // YGYRO LOW (W0)
99 #define ADDR_ZGYRO_HIGH 0x1A // ZGYRO HIGH (W0)
100 #define ADDR_ZGYRO_LOW 0x1C // ZGYRO LOW (W0)
101 #define ADDR_XACCL_HIGH 0x1E // XACCL HIGH (W0)
102 #define ADDR_XACCL_LOW 0x20 // XACCL LOW (W0)
103 #define ADDR_YACCL_HIGH 0x22 // YACCL HIGH (W0)
104 #define ADDR_YACCL_LOW 0x24 // YACCL LOW (W0)
105 #define ADDR_ZACCL_HIGH 0x26 // ZACCL HIGH (W0)
106 #define ADDR_ZACCL_LOW 0x28 // ZACCL LOW (W0)
108 #define ADDR_RT_DIAG 0x2B // RT_DIAG LOW (W0)
110 #define ADDR_ID 0x4C // ID LOW (W0)
111 #define ADDR_QTN0_HIGH 0x50 // QTN0 HIGH (W0)
112 #define ADDR_QTN0_LOW 0x52 // QTN0 LOW (W0)
113 #define ADDR_QTN1_HIGH 0x54 // QTN1 HIGH (W0)
114 #define ADDR_QTN1_LOW 0x56 // QTN1 LOW (W0)
115 #define ADDR_QTN2_HIGH 0x58 // QTN2 HIGH (W0)
116 #define ADDR_QTN2_LOW 0x5A // QTN2 LOW (W0)
117 #define ADDR_QTN3_HIGH 0x5C // QTN3 HIGH (W0)
118 #define ADDR_QTN3_LOW 0x5E // QTN3 LOW (W0)
120 #define ADDR_ANG1_HIGH 0x64 // ANG1 HIGH (W0)
121 #define ADDR_ANG1_LOW 0x66 // ANG1 LOW (W0)
122 #define ADDR_ANG2_HIGH 0x68 // ANG2 HIGH (W0)
123 #define ADDR_ANG2_LOW 0x6A // ANG2 LOW (W0)
124 #define ADDR_ANG3_HIGH 0x6C // ANG3 HIGH (W0)
125 #define ADDR_ANG3_LOW 0x6E // ANG3 LOW (W0)
127 #define ADDR_XDLTA_HIGH 0x64 // XDLTA HIGH (W0)
128 #define ADDR_XDLTA_LOW 0x66 // XDLTA LOW (W0)
129 #define ADDR_YDLTA_HIGH 0x68 // YDLTA HIGH (W0)
130 #define ADDR_YDLTA_LOW 0x6A // YDLTA LOW (W0)
131 #define ADDR_ZDLTA_HIGH 0x6C // ZDLTA HIGH (W0)
132 #define ADDR_ZDLTA_LOW 0x6E // ZDLTA LOW (W0)
133 #define ADDR_XDLTV_HIGH 0x70 // XDLTV HIGH (W0)
134 #define ADDR_XDLTV_LOW 0x72 // XDLTV LOW (W0)
135 #define ADDR_YDLTV_HIGH 0x74 // YDLTV HIGH (W0)
136 #define ADDR_YDLTV_LOW 0x76 // YDLTV LOW (W0)
137 #define ADDR_ZDLTV_HIGH 0x78 // ZDLTV HIGH (W0)
138 #define ADDR_ZDLTV_LOW 0x7A // ZDLTV LOW (W0)
141 #define ADDR_SIG_CTRL_LO 0x00 // SIG_CTRL Byte0 (W1)
142 #define ADDR_SIG_CTRL_HI 0x01 // SIG_CTRL Byte1 (W1)
143 #define ADDR_MSC_CTRL_LO 0x02 // MSC_CTRL Byte0 (W1)
144 #define ADDR_MSC_CTRL_HI 0x03 // MSC_CTRL Byte1 (W1)
145 #define ADDR_SMPL_CTRL_LO 0x04 // SMPL_CTRL Byte0 (W1)
146 #define ADDR_SMPL_CTRL_HI 0x05 // SMPL_CTRL Byte1 (W1)
147 #define ADDR_FILTER_CTRL_LO 0x06 // FILTER_CTRL Byte0 (W1)
148 #define ADDR_FILTER_CTRL_HI 0x07 // FILTER_CTRL Byte1 (W1)
149 #define ADDR_UART_CTRL_LO 0x08 // UART_CTRL Byte0 (W1)
150 #define ADDR_UART_CTRL_HI 0x09 // UART_CTRL Byte1 (W1)
151 #define ADDR_GLOB_CMD_LO 0x0A // GLOB_CMD Byte0 (W1)
152 #define ADDR_GLOB_CMD_HI 0x0B // GLOB_CMD Byte1 (W1)
153 #define ADDR_BURST_CTRL1_LO 0x0C // BURST_CTRL1 Byte0 (W1)
154 #define ADDR_BURST_CTRL1_HI 0x0D // BURST_CTRL1 Byte1 (W1)
155 #define ADDR_BURST_CTRL2_LO 0x0E // BURST_CTRL2 Byte0 (W1)
156 #define ADDR_BURST_CTRL2_HI 0x0F // BURST_CTRL2 Byte1 (W1)
157 #define ADDR_POL_CTRL_LO 0x10 // POL_CTRL Byte0 (W1)
158 #define ADDR_POL_CTRL_HI 0x11 // POL_CTRL Byte1 (W1)
160 #define ADDR_DLT_CTRL_LO 0x12 // DLT_CTRL Byte0 (W1)
161 #define ADDR_DLT_CTRL_HI 0x13 // DLT_CTRL Byte1 (W1)
162 #define ADDR_GLOB_CMD3_LO 0x12 // GLOB_CMD3 Byte0 (W1) Same address as DLT_CTRL
163 #define ADDR_GLOB_CMD3_HI 0x13 // GLOB_CMD3 Byte1 (W1) Same address as DLT_CTRL
165 #define ADDR_ATTI_CTRL_LO 0x14 // ATTI_CTRL Byte0 (W1)
166 #define ADDR_ATTI_CTRL_HI 0x15 // ATTI_CTRL Byte1 (W1)
167 #define ADDR_GLOB_CMD2_LO 0x16 // ATTI_GLOB_CMD2 Byte0 (W1)
168 #define ADDR_GLOB_CMD2_HI 0x17 // ATTI_GLOB_CMD2 Byte1 (W1)
172 #define ADDR_R_MATRIX_M11_LO 0x38 // R_MATRIX_M11 Byte0 (W1)
173 #define ADDR_R_MATRIX_M11_HI 0x39 // R_MATRIX_M11 Byte1 (W1)
174 #define ADDR_R_MATRIX_M12_LO 0x3A // R_MATRIX_M12 Byte0 (W1)
175 #define ADDR_R_MATRIX_M12_HI 0x3B // R_MATRIX_M12 Byte1 (W1)
176 #define ADDR_R_MATRIX_M13_LO 0x3C // R_MATRIX_M13 Byte0 (W1)
177 #define ADDR_R_MATRIX_M13_HI 0x3D // R_MATRIX_M13 Byte1 (W1)
178 #define ADDR_R_MATRIX_M21_LO 0x3E // R_MATRIX_M21 Byte0 (W1)
179 #define ADDR_R_MATRIX_M21_HI 0x3F // R_MATRIX_M21 Byte1 (W1)
180 #define ADDR_R_MATRIX_M22_LO 0x40 // R_MATRIX_M22 Byte0 (W1)
181 #define ADDR_R_MATRIX_M22_HI 0x41 // R_MATRIX_M22 Byte1 (W1)
182 #define ADDR_R_MATRIX_M23_LO 0x42 // R_MATRIX_M23 Byte0 (W1)
183 #define ADDR_R_MATRIX_M23_HI 0x43 // R_MATRIX_M23 Byte1 (W1)
184 #define ADDR_R_MATRIX_M31_LO 0x44 // R_MATRIX_M31 Byte0 (W1)
185 #define ADDR_R_MATRIX_M31_HI 0x45 // R_MATRIX_M31 Byte1 (W1)
186 #define ADDR_R_MATRIX_M32_LO 0x46 // R_MATRIX_M32 Byte0 (W1)
187 #define ADDR_R_MATRIX_M32_HI 0x47 // R_MATRIX_M32 Byte1 (W1)
188 #define ADDR_R_MATRIX_M33_LO 0x48 // R_MATRIX_M33 Byte0 (W1)
189 #define ADDR_R_MATRIX_M33_HI 0x49 // R_MATRIX_M33 Byte1 (W1)
192 #define R_MATRIX_A_M11_LO 0x4A // R_MATRIX_A_M11 Byte0 (W1)
193 #define R_MATRIX_A_M11_HI 0x4B // R_MATRIX_A_M11 Byte1 (W1)
194 #define R_MATRIX_A_M12_LO 0x4C // R_MATRIX_A_M12 Byte0 (W1)
195 #define R_MATRIX_A_M12_HI 0x4D // R_MATRIX_A_M12 Byte1 (W1)
196 #define R_MATRIX_A_M13_LO 0x4E // R_MATRIX_A_M13 Byte0 (W1)
197 #define R_MATRIX_A_M13_HI 0x4F // R_MATRIX_A_M13 Byte1 (W1)
198 #define R_MATRIX_A_M21_LO 0x50 // R_MATRIX_A_M21 Byte0 (W1)
199 #define R_MATRIX_A_M21_HI 0x51 // R_MATRIX_A_M21 Byte1 (W1)
200 #define R_MATRIX_A_M22_LO 0x52 // R_MATRIX_A_M22 Byte0 (W1)
201 #define R_MATRIX_A_M22_HI 0x53 // R_MATRIX_A_M22 Byte1 (W1)
202 #define R_MATRIX_A_M23_LO 0x54 // R_MATRIX_A_M23 Byte0 (W1)
203 #define R_MATRIX_A_M23_HI 0x55 // R_MATRIX_A_M23 Byte1 (W1)
204 #define R_MATRIX_A_M31_LO 0x56 // R_MATRIX_A_M31 Byte0 (W1)
205 #define R_MATRIX_A_M31_HI 0x57 // R_MATRIX_A_M31 Byte1 (W1)
206 #define R_MATRIX_A_M32_LO 0x58 // R_MATRIX_A_M32 Byte0 (W1)
207 #define R_MATRIX_A_M32_HI 0x59 // R_MATRIX_A_M32 Byte1 (W1)
208 #define R_MATRIX_A_M33_LO 0x5A // R_MATRIX_A_M33 Byte0 (W1)
209 #define R_MATRIX_A_M33_HI 0x5B // R_MATRIX_A_M33 Byte1 (W1)
211 #define ADDR_PROD_ID1 0x6A // PROD_ID1(W1)
212 #define ADDR_PROD_ID2 0x6C // PROD_ID2(W1)
213 #define ADDR_PROD_ID3 0x6E // PROD_ID3(W1)
214 #define ADDR_PROD_ID4 0x70 // PROD_ID4(W1)
215 #define ADDR_VERSION 0x72 // VERSION(W1)
216 #define ADDR_SERIAL_NUM1 0x74 // SERIAL_NUM1(W1)
217 #define ADDR_SERIAL_NUM2 0x76 // SERIAL_NUM2(W1)
218 #define ADDR_SERIAL_NUM3 0x78 // SERIAL_NUM3(W1)
219 #define ADDR_SERIAL_NUM4 0x7A // SERIAL_NUM4(W1)
220 #define ADDR_WIN_CTRL 0x7E // WIN_CTRL(W0 or W1)
225 #define CMD_BURST 0x80 // Write value to Issue Burst Read
226 #define CMD_SAMPLING 0x01 // Write value for MODE_CMD_HI to begin sampling
227 #define CMD_CONFIG 0x02 // Write value for MODE_CMD_HI to stop sampling
230 #define CMD_RATE2000 0x00 // TAP>=0
231 #define CMD_RATE1000 0x01 // TAP>=2
232 #define CMD_RATE500 0x02 // TAP>=4
233 #define CMD_RATE250 0x03 // TAP>=8
234 #define CMD_RATE125 0x04 // TAP>=16
235 #define CMD_RATE62_5 0x05 // TAP>=32
236 #define CMD_RATE31_25 0x06 // TAP>=64
237 #define CMD_RATE15_625 0x07 // TAP=128
238 #define CMD_RATE400 0x08 // TAP>=8
239 #define CMD_RATE200 0x09 // TAP>=16
240 #define CMD_RATE100 0x0A // TAP>=32
241 #define CMD_RATE80 0x0B // TAP>=32
242 #define CMD_RATE50 0x0C // TAP>=64
243 #define CMD_RATE40 0x0D // TAP>=64
244 #define CMD_RATE25 0x0E // TAP=128
245 #define CMD_RATE20 0x0F // TAP=128
248 #define CMD_FLTAP0 0x00
249 #define CMD_FLTAP2 0x01
250 #define CMD_FLTAP4 0x02
251 #define CMD_FLTAP8 0x03
252 #define CMD_FLTAP16 0x04
253 #define CMD_FLTAP32 0x05
254 #define CMD_FLTAP64 0x06
255 #define CMD_FLTAP128 0x07
256 #define CMD_FIRTAP32FC50 0x08
257 #define CMD_FIRTAP32FC100 0x09
258 #define CMD_FIRTAP32FC200 0x0A
259 #define CMD_FIRTAP32FC400 0x0B
260 #define CMD_FIRTAP64FC50 0x0C
261 #define CMD_FIRTAP64FC100 0x0D
262 #define CMD_FIRTAP64FC200 0x0E
263 #define CMD_FIRTAP64FC400 0x0F
264 #define CMD_FIRTAP128FC50 0x10
265 #define CMD_FIRTAP128FC100 0x11
266 #define CMD_FIRTAP128FC200 0x12
267 #define CMD_FIRTAP128FC400 0x13
270 #define CMD_ATM_MODEA 0x00
271 #define CMD_ATM_MODEB 0x10
272 #define CMD_ATM_MODEC 0x20
275 #define VAL_SAMPLING_MODE 0x00
276 #define VAL_CONFIG_MODE 0x04
415 void writeByte(
unsigned char,
unsigned char,
unsigned int);
418 unsigned short read16(
unsigned char,
unsigned int);
419 unsigned short registerRead16(
unsigned char,
unsigned char,
unsigned int);
int sensorSelfTest(const struct EpsonProperties *)
struct EpsonProperties epson_sensors[G_UNKNOWN+1]
int sensorDataReadBurstNOptions(const struct EpsonProperties *, const struct EpsonOptions *, struct EpsonData *)
unsigned short registerRead16(unsigned char, unsigned char, unsigned int)
void registerWriteByte(unsigned char, unsigned char, unsigned char, unsigned int)
int delay_atti_profile_ms
int sensorInitialBackup(const struct EpsonProperties *)
char * sensorGetSerialId(char *serial_id)
unsigned short read16(unsigned char, unsigned int)
void sensorDummyWrite(void)
unsigned int sensorDataByteLength(const struct EpsonProperties *, const struct EpsonOptions *)
void sensorDumpRegisters(const struct EpsonProperties *)
void sensorReset(const struct EpsonProperties *)
int sensorGetDeviceModel(struct EpsonProperties *, char *prod_id, char *serial_id)
int sensorFlashTest(const struct EpsonProperties *)
int sensorInitOptions(const struct EpsonProperties *, struct EpsonOptions *)
void writeByte(unsigned char, unsigned char, unsigned int)
int sensorFlashBackup(const struct EpsonProperties *)
char * sensorGetProductId(char *prod_id)