1 | #include <stdio.h>
|
---|
2 | #include "rcc_error/rcc_error.h"
|
---|
3 | #include "vme_rcc/vme_rcc.h"
|
---|
4 |
|
---|
5 | //******************************************************************************
|
---|
6 | //Constants
|
---|
7 | //******************************************************************************
|
---|
8 |
|
---|
9 | #define NMAX_V560_MODULES 10 //maximum 65535, probably more than enough...
|
---|
10 | #define V560_CHANNELS 16
|
---|
11 |
|
---|
12 | //******************************************************************************
|
---|
13 | //Type definitions
|
---|
14 | //******************************************************************************
|
---|
15 |
|
---|
16 | //This struct maps the memory of a v560 module.
|
---|
17 | typedef struct {
|
---|
18 | // Variable name //Adress offset //Read-/Write-Mode
|
---|
19 | u_short threshold_ch[V560_CHANNELS]; //0x00-0x1E //w
|
---|
20 | u_short dummy1[16]; //0x20-0x3E //none
|
---|
21 | u_short output_width[2]; //0x40-0x42 //w
|
---|
22 | u_short dead_time[2]; //0x44-0x46 //w
|
---|
23 | u_short majority_threshold; //0x48 //w
|
---|
24 | u_short pattern_inhibit; //0x4A //w
|
---|
25 | u_short test_pulse; //0x4C //w
|
---|
26 | u_short dummy2[86]; //0x4E-0xF8 //none
|
---|
27 | u_short fixed_code; //0xFA //r
|
---|
28 | u_short manufacturer_type; //0xFC //r
|
---|
29 | u_short version_serialnumber; //0xFE //r
|
---|
30 | } v560_registers_t;
|
---|
31 |
|
---|
32 | //This struct contains the information necessary to handle one module
|
---|
33 | typedef struct {
|
---|
34 | v560_registers_t* registers; //contains the virtual address of the module
|
---|
35 | int master_mapping; //contains the handle of the module
|
---|
36 | char present; //0 if module not present, 1 if present
|
---|
37 | } v560_module_t;
|
---|
38 |
|
---|
39 | //******************************************************************************
|
---|
40 | //Global Variables
|
---|
41 | //******************************************************************************
|
---|
42 |
|
---|
43 | v560_module_t v560_modules[NMAX_V560_MODULES];
|
---|
44 |
|
---|
45 | //******************************************************************************
|
---|
46 | //Function Definitions
|
---|
47 | //******************************************************************************
|
---|
48 |
|
---|
49 | VME_ErrorCode_t V560_Open(void)
|
---|
50 | {
|
---|
51 | printf("V560_Open() was called.\n");
|
---|
52 | return VME_SUCCESS;
|
---|
53 | }
|
---|
54 |
|
---|
55 | //******************************************************************************
|
---|
56 |
|
---|
57 | int V560_Set_Threshold(u_short module, u_char channel, u_short threshold)
|
---|
58 | {
|
---|
59 | printf("V560_Set_Threshold(module %i, channel %i, threshold %i) was called.\n", module, channel, threshold);
|
---|
60 | return 0;
|
---|
61 | }
|
---|
62 |
|
---|
63 | //******************************************************************************
|
---|
64 |
|
---|
65 | int V560_Set_Pattern_Inhibit(u_short module, u_char channels[16])
|
---|
66 | {
|
---|
67 | //create the pattern of inhibit
|
---|
68 | u_short pattern = 0;
|
---|
69 | int i;
|
---|
70 | for(i=0; i<16; i++) {
|
---|
71 | if(channels[i]!=0) {
|
---|
72 | switch(i) {
|
---|
73 | case 0: pattern |= 0x0001; break;
|
---|
74 | case 1: pattern |= 0x0002; break;
|
---|
75 | case 2: pattern |= 0x0004; break;
|
---|
76 | case 3: pattern |= 0x0008; break;
|
---|
77 | case 4: pattern |= 0x0010; break;
|
---|
78 | case 5: pattern |= 0x0020; break;
|
---|
79 | case 6: pattern |= 0x0040; break;
|
---|
80 | case 7: pattern |= 0x0080; break;
|
---|
81 | case 8: pattern |= 0x0100; break;
|
---|
82 | case 9: pattern |= 0x0200; break;
|
---|
83 | case 10: pattern |= 0x0400; break;
|
---|
84 | case 11: pattern |= 0x0800; break;
|
---|
85 | case 12: pattern |= 0x1000; break;
|
---|
86 | case 13: pattern |= 0x2000; break;
|
---|
87 | case 14: pattern |= 0x4000; break;
|
---|
88 | case 15: pattern |= 0x8000; break;
|
---|
89 | }
|
---|
90 | }
|
---|
91 | }
|
---|
92 | printf("v560_pattern_inhibit(module %i, pattern %04x) was called.\n", module, pattern);
|
---|
93 | return 0;
|
---|
94 | }
|
---|
95 |
|
---|
96 | //******************************************************************************
|
---|
97 |
|
---|
98 | int V560_Set_Output_Width(u_short module, u_char channel_block, u_short width)
|
---|
99 | {
|
---|
100 | printf("V560_Set_Output_Width(module %i, channel block %i, width %i) was called.\n", module, channel_block, width);
|
---|
101 | return 0;
|
---|
102 | }
|
---|
103 |
|
---|
104 | //******************************************************************************
|
---|
105 |
|
---|
106 | int V560_Set_Dead_Time(u_short module, u_char channel_block, u_short dead_time)
|
---|
107 | {
|
---|
108 | printf("V560_Set_Dead_Time(module %i, channel block %i, dead time %i) was called.\n", module, channel_block, dead_time);
|
---|
109 | return 0;
|
---|
110 | }
|
---|
111 |
|
---|
112 | //******************************************************************************
|
---|
113 |
|
---|
114 | int V560_Set_Majority_Level(u_short module, u_short majority_level)
|
---|
115 | {
|
---|
116 | printf("V560_Set_Majority_Level(module %i, majority_level %i) was called.\n", module, majority_level);
|
---|
117 | return 0;
|
---|
118 | }
|
---|
119 |
|
---|
120 | //******************************************************************************
|
---|
121 |
|
---|
122 | int V560_Test_Pulse(u_short module)
|
---|
123 | {
|
---|
124 | printf("V560_Test_Pulse(module %i) was called.\n", module);
|
---|
125 | return 0;
|
---|
126 | }
|
---|
127 |
|
---|
128 | //******************************************************************************
|
---|
129 |
|
---|
130 | int V560_Print_Info(void)
|
---|
131 | {
|
---|
132 | printf("V560_Print_Info() was called.\n");
|
---|
133 | return 0;
|
---|
134 | }
|
---|
135 |
|
---|
136 | //******************************************************************************
|
---|
137 |
|
---|
138 | VME_ErrorCode_t V560_Close(void)
|
---|
139 | {
|
---|
140 | printf("V560_Close() was called.\n");
|
---|
141 | return VME_SUCCESS;
|
---|
142 | }
|
---|
143 |
|
---|
144 | //******************************************************************************
|
---|