update status of 6014
[comedilib.git] / include / comedilib_scxi.h
1 #include <comedilib.h>
2
3 #define SLOT0_INTERVAL  1200
4 #define FAST_INTERVAL   1200
5 #define MEDIUM_INTERVAL 10000
6 #define SLOW_INTERVAL   30000
7
8 #define SCXI_LINE_MOSI 0
9 #define SCXI_LINE_DA   1
10 #define SCXI_LINE_SS   2
11 #define SCXI_LINE_MISO 4
12
13 #define SCXI_DIO_NONE 0
14 #define SCXI_DIO_DO   1
15 #define SCXI_DIO_DI   2
16
17 #define SCXI_AIO_NONE 0
18 #define SCXI_AIO_AO   1
19 #define SCXI_AIO_AI   2
20
21 #define REG_PARK 0x0FFFF
22
23 struct scxi_board_struct {
24         unsigned int device_id;
25         char name[12];
26         int modclass;
27         unsigned int clock_interval;
28         int dio_type, aio_type, channels, status_reg, data_reg;
29         int config_reg, eeprom_reg, gain_reg;
30 };
31
32 typedef struct scxi_board_struct scxi_board_t;
33
34 const scxi_board_t scxi_boards[] = {
35         { 0, "unknown\0", 2, SLOW_INTERVAL, 0, 0, 0, 0, 0, 0, 0, 0 },
36         { 0xffffffff, "empty\0", 2, SLOW_INTERVAL, 0, 0, 0, 0, 0, 0, 0, 0 },
37         { 0x06, "SCXI-1100\0", 1, FAST_INTERVAL, SCXI_DIO_NONE, SCXI_AIO_AI, 32,
38                 0x00, 0x00, 0x00, 0x00, 0x00 },
39         { 0x1e, "SCXI-1102\0", 2, FAST_INTERVAL, SCXI_DIO_NONE, SCXI_AIO_AI, 32,
40                 0x02, 0x05, 0x01, 0x03, 0x04 },
41         //{ 0x14, "SCXI-1124\0", 2, SLOW_INTERVAL, SCXI_DIO_NONE, SCXI_AIO_AO, 6,
42         //      0x02, 0x08, 0x00, 0x03, 0x00 },
43 };
44
45 #define n_scxi_boards ((sizeof(scxi_boards)/sizeof(scxi_boards[0])))
46
47 struct scxi_module_struct {
48         comedi_t *dev;
49         unsigned int board;
50         unsigned int dio_subdev, ser_subdev;
51         unsigned int chassis, slot;
52 };
53
54 typedef struct scxi_module_struct scxi_mod_t;
55
56 #ifdef __cplusplus
57 extern "C" {
58 #endif
59
60 void comedi_scxi_close(scxi_mod_t *mod);
61 scxi_mod_t *comedi_scxi_open(comedi_t *dev, unsigned short chassis_address, unsigned short mod_slot);
62 int comedi_scxi_register_readwrite(scxi_mod_t *mod, unsigned short address, unsigned int num_bytes,
63                             unsigned char *data_out, unsigned char *data_in);
64
65 #ifdef __cplusplus
66 }
67 #endif