/alps/pcitool

To get this branch, use:
bzr branch http://darksoft.org/webbzr/alps/pcitool

« back to all changes in this revision

Viewing changes to ipecamera/model.h

  • Committer: Suren A. Chilingaryan
  • Date: 2011-04-12 00:57:02 UTC
  • Revision ID: csa@dside.dyndns.org-20110412005702-ir1cch0f1feop7ay
Infrastructure for event API

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifndef _IPECAMERA_H
2
 
#define _IPECAMERA_H
 
1
#ifndef _IPECAMERA_MODEL_H
 
2
#define _IPECAMERA_MODEL_H
3
3
 
4
4
#include <stdio.h>
5
5
 
6
6
#include "pcilib.h"
 
7
#include "image.h"
7
8
 
8
9
#define IPECAMERA_REGISTER_SPACE 0xfeaffc00
9
10
#define IPECAMERA_REGISTER_WRITE (IPECAMERA_REGISTER_SPACE + 0)
10
11
#define IPECAMERA_REGISTER_READ (IPECAMERA_REGISTER_WRITE + 4)
11
12
 
12
 
#ifdef _IPECAMERA_C
 
13
#ifdef _IPECAMERA_MODEL_C
13
14
pcilib_register_bank_description_t ipecamera_register_banks[] = {
14
15
    { PCILIB_REGISTER_BANK0, 128, IPECAMERA_REGISTER_PROTOCOL, IPECAMERA_REGISTER_READ, IPECAMERA_REGISTER_WRITE, PCILIB_BIG_ENDIAN, 8, PCILIB_LITTLE_ENDIAN, "cmosis", "CMOSIS CMV2000 Registers" },
15
16
    { PCILIB_REGISTER_BANK1, 64, PCILIB_DEFAULT_PROTOCOL, IPECAMERA_REGISTER_SPACE, IPECAMERA_REGISTER_SPACE, PCILIB_BIG_ENDIAN, 32, PCILIB_LITTLE_ENDIAN, "fpga", "IPECamera Registers" },
17
18
};
18
19
 
19
20
pcilib_register_description_t ipecamera_registers[] = {
20
 
{1,     16,     1088,   PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines",  ""},
21
 
{3,     16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start1", ""},
22
 
{5,     16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start2", ""},
23
 
{7,     16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start3", ""},
24
 
{9,     16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start4", ""},
25
 
{11,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start5", ""},
26
 
{13,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start6", ""},
27
 
{15,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start7", ""},
28
 
{17,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start8", ""},
29
 
{19,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines1", ""},
30
 
{21,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines2", ""},
31
 
{23,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines3", ""},
32
 
{25,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines4", ""},
33
 
{27,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines5", ""},
34
 
{29,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines6", ""},
35
 
{31,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines7", ""},
36
 
{33,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines8", ""},
37
 
{35,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "sub_s", ""},
38
 
{37,    16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "sub_a", ""},
39
 
{39,    1,      1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "color", ""},
40
 
{40,    2,      0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "image_flipping", ""},
41
 
{41,    2,      0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_flags", ""},
42
 
{42,    24,     1088,   PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_time", ""},
43
 
{45,    24,     1088,   PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_step", ""},
44
 
{48,    24,     1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_kp1", ""},
45
 
{51,    24,     1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_kp2", ""},
46
 
{54,    2,      1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "nr_slopes", ""},
47
 
{55,    8,      1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_seq", ""},
48
 
{56,    24,     1088,   PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_time2", ""},
49
 
{59,    24,     1088,   PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_step2", ""},
50
 
{68,    2,      1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "nr_slopes2", ""},
51
 
{69,    8,      1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_seq2", ""},
52
 
{70,    16,     1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_frames", ""},
53
 
{72,    2,      0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "output_mode", ""},
54
 
{78,    12,     85,     PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "training_pattern", ""},
55
 
{80,    18,     0x3FFFF,PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "channel_en", ""},
56
 
{89,    8,      96,     PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "vlow2", ""},
57
 
{90,    8,      96,     PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "vlow3", ""},
58
 
{100,   14,     16260,  PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "offset", ""},
59
 
{102,   2,      0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "pga", ""},
60
 
{103,   8,      32,     PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "adc_gain", ""},
61
 
{111,   1,      1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "bit_mode", ""},
62
 
{112,   2,      0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "adc_resolution", ""},
63
 
{126,   16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "temp", ""},
64
 
{0,     32,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK1, "spi_conf_input", ""},
65
 
{1,     32,     0,      PCILIB_REGISTER_R,  PCILIB_REGISTER_BANK1, "spi_conf_output", ""},
66
 
{2,     32,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK1, "spi_clk_speed", ""},
67
 
{3,     32,     0,      PCILIB_REGISTER_R,  PCILIB_REGISTER_BANK1, "firmware_version", ""},
68
 
{6,     16,     0,      PCILIB_REGISTER_R,  PCILIB_REGISTER_BANK1, "cmosis_temperature", ""},
69
 
{7,     32,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK1, "temperature_sample_timing", ""},
70
 
{0,     0,      0,      0,                  0,                     NULL, NULL}
 
21
{1,     0,      16,     1088,   PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines",  ""},
 
22
{3,     0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start1", ""},
 
23
{5,     0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start2", ""},
 
24
{7,     0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start3", ""},
 
25
{9,     0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start4", ""},
 
26
{11,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start5", ""},
 
27
{13,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start6", ""},
 
28
{15,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start7", ""},
 
29
{17,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "start8", ""},
 
30
{19,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines1", ""},
 
31
{21,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines2", ""},
 
32
{23,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines3", ""},
 
33
{25,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines4", ""},
 
34
{27,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines5", ""},
 
35
{29,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines6", ""},
 
36
{31,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines7", ""},
 
37
{33,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_lines8", ""},
 
38
{35,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "sub_s", ""},
 
39
{37,    0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "sub_a", ""},
 
40
{39,    0,      1,      1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "color", ""},
 
41
{40,    0,      2,      0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "image_flipping", ""},
 
42
{41,    0,      2,      0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_flags", ""},
 
43
{42,    0,      24,     1088,   PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_time", ""},
 
44
{45,    0,      24,     1088,   PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_step", ""},
 
45
{48,    0,      24,     1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_kp1", ""},
 
46
{51,    0,      24,     1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_kp2", ""},
 
47
{54,    0,      2,      1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "nr_slopes", ""},
 
48
{55,    0,      8,      1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_seq", ""},
 
49
{56,    0,      24,     1088,   PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_time2", ""},
 
50
{59,    0,      24,     1088,   PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_step2", ""},
 
51
{68,    0,      2,      1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "nr_slopes2", ""},
 
52
{69,    0,      8,      1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "exp_seq2", ""},
 
53
{70,    0,      16,     1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "number_frames", ""},
 
54
{72,    0,      2,      0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "output_mode", ""},
 
55
{78,    0,      12,     85,     PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "training_pattern", ""},
 
56
{80,    0,      18,     0x3FFFF,PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "channel_en", ""},
 
57
{89,    0,      8,      96,     PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "vlow2", ""},
 
58
{90,    0,      8,      96,     PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "vlow3", ""},
 
59
{100,   0,      14,     16260,  PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "offset", ""},
 
60
{102,   0,      2,      0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "pga", ""},
 
61
{103,   0,      8,      32,     PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "adc_gain", ""},
 
62
{111,   0,      1,      1,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "bit_mode", ""},
 
63
{112,   0,      2,      0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "adc_resolution", ""},
 
64
{126,   0,      16,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK0, "temp", ""},
 
65
{0,     0,      32,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK1, "spi_conf_input", ""},
 
66
{1,     0,      32,     0,      PCILIB_REGISTER_R,  PCILIB_REGISTER_BANK1, "spi_conf_output", ""},
 
67
{2,     0,      32,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK1, "spi_clk_speed", ""},
 
68
{3,     0,      32,     0,      PCILIB_REGISTER_R,  PCILIB_REGISTER_BANK1, "firmware_version", ""},
 
69
{4,     0,      32,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK1, "control", ""},
 
70
{5,     0,      32,     0,      PCILIB_REGISTER_R,  PCILIB_REGISTER_BANK1, "status", ""},
 
71
{6,     0,      16,     0,      PCILIB_REGISTER_R,  PCILIB_REGISTER_BANK1, "cmosis_temperature", ""},
 
72
{7,     0,      32,     0,      PCILIB_REGISTER_RW, PCILIB_REGISTER_BANK1, "temperature_sample_timing", ""},
 
73
{8,     0,      32,     0,      PCILIB_REGISTER_R,  PCILIB_REGISTER_BANK1, "start_address", ""},
 
74
{9,     0,      32,     0,      PCILIB_REGISTER_R,  PCILIB_REGISTER_BANK1, "end_address", ""},
 
75
{10,    0,      32,     0,      PCILIB_REGISTER_R,  PCILIB_REGISTER_BANK1, "last_write_address", ""},
 
76
{11,    0,      32,     0,      PCILIB_REGISTER_R,  PCILIB_REGISTER_BANK1, "last_write_value", ""},
 
77
{0,     0,      0,      0,      0,                  0,                     NULL, NULL}
71
78
};
72
79
 
73
80
pcilib_register_range_t ipecamera_register_ranges[] = {
80
87
extern pcilib_register_range_t ipecamera_register_ranges[];
81
88
#endif 
82
89
 
 
90
#ifdef _IPECAMERA_IMAGE_C
 
91
pcilib_event_api_description_t ipecamera_image_api = {
 
92
    ipecamera_init,
 
93
    ipecamera_free,
 
94
 
 
95
    ipecamera_reset,
 
96
    ipecamera_start,
 
97
    ipecamera_stop,
 
98
    ipecamera_trigger,
 
99
    
 
100
    ipecamera_get,
 
101
    ipecamera_return
 
102
};
 
103
#else
 
104
extern pcilib_event_api_description_t ipecamera_image_api;
 
105
#endif
 
106
 
83
107
int ipecamera_read(pcilib_t *ctx, pcilib_register_bank_description_t *bank, pcilib_register_addr_t addr, uint8_t bits, pcilib_register_value_t *value);
84
108
int ipecamera_write(pcilib_t *ctx, pcilib_register_bank_description_t *bank, pcilib_register_addr_t addr, uint8_t bits, pcilib_register_value_t value);
85
109
 
86
 
#endif /* _IPECAMERA_H */
 
110
#endif /* _IPECAMERA_MODEL_H */