Subversion Repositories f9daq

Rev

Rev 212 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 212 Rev 292
1
#include <formatio.h>
1
#include <formatio.h>
2
#include <cvirte.h>
2
#include <cvirte.h>
3
#include <userint.h>
3
#include <userint.h>
4
#include "AitGui.h"
4
#include "AitGui.h"
5
#include "XYSCAN.h"
5
#include "XYSCAN.h"
6
 
6
 
7
#include <stdbool.h>
7
#include <stdbool.h>
8
#include "AitInterface.h"
8
#include "AitInterface.h"
9
#include "AitMduManager_DEF.h"
9
#include "AitMduManager_DEF.h"
10
 
10
 
11
#include "H1D.h"
11
#include "H1D.h"
12
#include "H2D.h"
12
#include "H2D.h"
13
#include "H3D.h"
13
#include "H3D.h"
14
 
14
 
15
 
-
 
-
 
15
static int node[3];
16
typedef unsigned short ushort;
16
typedef unsigned short ushort;
17
typedef unsigned int uint;
17
typedef unsigned int uint;
18
 
18
 
19
static int ait;
19
static int ait;
20
static int xyscan;
20
static int xyscan;
21
//#define MIKRO
21
//#define MIKRO
22
 
22
 
23
#ifdef MIKRO
23
#ifdef MIKRO
24
#include "MIKRO.h"
24
#include "MIKRO.h"
25
#endif
25
#endif
26
 
26
 
-
 
27
#define uSMC_USB
-
 
28
#ifdef uSMC_USB
-
 
29
#  include "uSMC.h"
-
 
30
#  define uSMC_SERIAL_X "0000000000004925"
-
 
31
#  define uSMC_SERIAL_Y "0000000000006030"
-
 
32
#  define uSMC_SERIAL_Z "0000000000002894"
-
 
33
const char serials[3][16]= {uSMC_SERIAL_X,uSMC_SERIAL_Y,uSMC_SERIAL_Z};
-
 
34
#endif /* uSMC_USB */
-
 
35
 
27
static int daq_on;
36
static int daq_on;
28
static int plothandle[4]= {0,0,0, 0};
37
static int plothandle[4]= {0,0,0, 0};
29
static int tfID;
38
static int tfID;
30
static int controlID;
39
static int controlID;
31
static int verbose;
40
static int verbose;
32
 
41
 
33
#define MAX_THREADS 10
42
#define MAX_THREADS 10
34
 
43
 
35
static CmtThreadPoolHandle poolHandle = 0;
44
static CmtThreadPoolHandle poolHandle = 0;
36
 
45
 
37
 
46
 
38
/*
47
/*
39
 
48
 
40
x: 140000 280000
49
x: 140000 280000
41
 
50
 
42
*/
51
*/
43
 
52
 
44
//**************************** missing declarations in the library
53
//**************************** missing declarations in the library
45
char strbuf[0xFF];
54
char strbuf[0xFF];
46
 
55
 
47
int gLog=0;
56
int gLog=0;
48
 
57
 
49
int printf(const char *format, ...) {
58
int printf(const char *format, ...) {
50
  va_list aptr;
59
  va_list aptr;
51
  int ret;
60
  int ret;
52
  FILE *flog;
61
  FILE *flog;
53
 
62
 
54
  va_start(aptr, format);
63
  va_start(aptr, format);
55
  ret = vsprintf(strbuf, format, aptr);
64
  ret = vsprintf(strbuf, format, aptr);
56
  va_end(aptr);
65
  va_end(aptr);
57
  SetCtrlVal(ait,AIT_STDIO,strbuf);
66
  SetCtrlVal(ait,AIT_STDIO,strbuf);
58
 
67
 
59
  if (gLog) {
68
  if (gLog) {
60
    flog = fopen ("stdio.log", "a");
69
    flog = fopen ("stdio.log", "a");
61
    fprintf (flog, "%s", strbuf);
70
    fprintf (flog, "%s", strbuf);
62
    fclose (flog);
71
    fclose (flog);
63
  }
72
  }
64
  return(ret);
73
  return(ret);
65
}
74
}
66
 
75
 
67
 
76
 
68
 
77
 
69
static int timeout=0;    
78
static int timeout=0;    
70
int CVICALLBACK SetTimeoutCB (int panel, int control, int event,
79
int CVICALLBACK SetTimeoutCB (int panel, int control, int event,
71
                                                                                                                        void *callbackData, int eventData1, int eventData2) {
80
                                                                                                                        void *callbackData, int eventData1, int eventData2) {
72
        switch (event) {
81
        switch (event) {
73
                case EVENT_TIMER_TICK:
82
                case EVENT_TIMER_TICK:
74
                        timeout=1;
83
                        timeout=1;
75
                        printf("#### Timeout\n");
84
                        printf("#### Timeout\n");
76
                        break;
85
                        break;
77
        }
86
        }
78
        return 0;
87
        return 0;
79
}
88
}
80
 
89
 
81
 
90
 
82
 
91
 
83
static void start_timer (double tout) {
92
static void start_timer (double tout) {
84
        timeout = 0;
93
        timeout = 0;
85
  SetCtrlAttribute (ait, AIT_TIMER, ATTR_INTERVAL, tout);
94
  SetCtrlAttribute (ait, AIT_TIMER, ATTR_INTERVAL, tout);
86
  SetCtrlAttribute (ait, AIT_TIMER, ATTR_ENABLED, 1);
95
  SetCtrlAttribute (ait, AIT_TIMER, ATTR_ENABLED, 1);
87
}
96
}
88
 
97
 
89
static void stop_timer ( void ) {
98
static void stop_timer ( void ) {
90
  SetCtrlAttribute (ait, AIT_TIMER, ATTR_ENABLED, 0);
99
  SetCtrlAttribute (ait, AIT_TIMER, ATTR_ENABLED, 0);
91
  //DRSSetTimeout();
100
  //DRSSetTimeout();
92
}
101
}
93
 
102
 
94
 
103
 
95
 
104
 
96
void CVICALLBACK EndOfThread ( CmtThreadPoolHandle poolhandle,
105
void CVICALLBACK EndOfThread ( CmtThreadPoolHandle poolhandle,
97
                               CmtThreadFunctionID functionID, unsigned int event,
106
                               CmtThreadFunctionID functionID, unsigned int event,
98
                               int value, void *callbackData  ) {
107
                               int value, void *callbackData  ) {
99
 
108
 
100
  daq_on=0;
109
  daq_on=0;
101
  //SetDimming(0);
110
  //SetDimming(0);
102
  printf("End of Thread \n");
111
  printf("End of Thread \n");
103
  return ;
112
  return ;
104
 
113
 
105
}
114
}
106
 
115
 
107
int AitInit() {
116
int AitInit() {
108
  InitializeConnection();
117
  InitializeConnection();
109
  return 0;
118
  return 0;
110
}
119
}
111
 
120
 
112
 
121
 
113
int AitValidEvent() {
122
int AitValidEvent() {
114
 
123
 
115
  return 1;
124
  return 1;
116
};
125
};
117
 
126
 
118
int AitToFile(FILE *fp, int n) {
127
int AitToFile(FILE *fp, int n) {
119
        const int bsize=10000 ;
128
        const int bsize=10000 ;
120
        unsigned short a[bsize] ;
129
        unsigned short a[bsize] ;
121
        unsigned short buffer[2]={0x1};
130
        unsigned short buffer[2]={0x1};
122
        buffer[1] = (unsigned short)(n*CHANNELS*2);  
131
        buffer[1] = (unsigned short)(n*CHANNELS*2);  
123
        for (int eventNum = 0; eventNum < n; eventNum++) {
132
        for (int eventNum = 0; eventNum < n; eventNum++) {
124
               
133
               
125
    for (int channel = 0; channel < CHANNELS; channel++) {
134
    for (int channel = 0; channel < CHANNELS; channel++) {
126
                        int index = channel+ CHANNELS * eventNum;
135
                        int index = channel+ CHANNELS * eventNum;
127
                        if (index<bsize)
136
                        if (index<bsize)
128
        a[index] = ExtractAdcData(eventNum, channel);
137
        a[index] = ExtractAdcData(eventNum, channel);
129
                }
138
                }
130
        }
139
        }
131
        fwrite(buffer, 2*sizeof(short),1,fp);
140
        fwrite(buffer, 2*sizeof(short),1,fp);
132
        return fwrite(a, 1,buffer[1],fp);
141
        return fwrite(a, 1,buffer[1],fp);
133
};
142
};
134
 
143
 
135
int AitFillHistograms(int events) {
144
int AitFillHistograms(int events) {
136
  ushort rawAdcData = 0;
145
  ushort rawAdcData = 0;
137
  ushort adcData = 0;
146
  ushort adcData = 0;
138
  int channelReceived = 0;
147
  int channelReceived = 0;
139
  int channelExpected = 0;
148
  int channelExpected = 0;
140
  bool includeSaturated = 0; // cbIncludeSaturated.Checked;
149
  bool includeSaturated = 0; // cbIncludeSaturated.Checked;
141
  ushort max[CHANNELS];
150
  ushort max[CHANNELS];
142
  ushort min[CHANNELS];
151
  ushort min[CHANNELS];
143
  ushort average[CHANNELS];
152
  ushort average[CHANNELS];
144
  int  total[CHANNELS];
153
  int  total[CHANNELS];
145
  for (int i = 0; i < CHANNELS; i++) {
154
  for (int i = 0; i < CHANNELS; i++) {
146
    min[i] = 0xFFFF;
155
    min[i] = 0xFFFF;
147
    max[i] = 0;
156
    max[i] = 0;
148
    total[i] = 0;
157
    total[i] = 0;
149
  }
158
  }
150
 
159
 
151
  double threshold, xysumcut;
160
  double threshold, xysumcut;
152
  GetCtrlVal (ait, AIT_ADCTHRESHOLD, &threshold);
161
  GetCtrlVal (ait, AIT_ADCTHRESHOLD, &threshold);
153
  GetCtrlVal (ait, AIT_XYCUT, &xysumcut);
162
  GetCtrlVal (ait, AIT_XYCUT, &xysumcut);
154
 
163
 
155
  for (int eventNum = 0; eventNum < events; eventNum++) {
164
  for (int eventNum = 0; eventNum < events; eventNum++) {
156
 
165
 
157
    int sum = 0;
166
    int sum = 0;
158
    double a[4]= {0,0,0,0} ;
167
    double a[4]= {0,0,0,0} ;
159
    for (int channel = 0; channel < CHANNELS; channel++) {
168
    for (int channel = 0; channel < CHANNELS; channel++) {
160
 
169
 
161
      rawAdcData = ExtractAdcData(eventNum, channel);
170
      rawAdcData = ExtractAdcData(eventNum, channel);
162
      if (addChannelNum == true) {
171
      if (addChannelNum == true) {
163
        channelReceived = (rawAdcData >> 12) & 0xF;
172
        channelReceived = (rawAdcData >> 12) & 0xF;
164
        channelExpected = (channel & 0xF);
173
        channelExpected = (channel & 0xF);
165
        if (channelReceived != channelExpected) {
174
        if (channelReceived != channelExpected) {
166
 
175
 
167
          AddMessage("ERROR in Event %d : Expected channel %d, received %d -ANALYSIS STOPPED", eventNum, channelExpected, channelReceived);
176
          AddMessage("ERROR in Event %d : Expected channel %d, received %d -ANALYSIS STOPPED", eventNum, channelExpected, channelReceived);
168
 
177
 
169
          //EnableRegisterScanTimer(true);
178
          //EnableRegisterScanTimer(true);
170
          return eventNum;
179
          return eventNum;
171
        }
180
        }
172
      }
181
      }
173
      adcData = (ushort)(rawAdcData & 0x0FFF);    // remove channel number
182
      adcData = (ushort)(rawAdcData & 0x0FFF);    // remove channel number
174
      //if ((includeSaturated == true) || ((includeSaturated == false) && (adcData < (ADCMAX - 2))))
183
      //if ((includeSaturated == true) || ((includeSaturated == false) && (adcData < (ADCMAX - 2))))
175
 
184
 
176
      if (adcData>threshold) H1D_Fill(channel, adcData,1);
185
      if (adcData>threshold) H1D_Fill(channel, adcData,1);
177
      a[channel]=adcData;
186
      a[channel]=adcData;
178
      total[channel] = total[channel] + adcData;
187
      total[channel] = total[channel] + adcData;
179
      if (adcData > max[channel])
188
      if (adcData > max[channel])
180
        max[channel] = adcData;
189
        max[channel] = adcData;
181
      else if (adcData < min[channel])
190
      else if (adcData < min[channel])
182
        min[channel] = adcData;
191
        min[channel] = adcData;
183
 
192
 
184
      sum += adcData;
193
      sum += adcData;
185
    }
194
    }
186
    if (sum>threshold) {
195
    if (sum>threshold) {
187
      H1D_Fill(10, sum, 1 );
196
      H1D_Fill(10, sum, 1 );
188
      double x = a[0]/(a[0]+a[1]);
197
      double x = a[0]/(a[0]+a[1]);
189
      double y = a[2]/(a[2]+a[3]);
198
      double y = a[2]/(a[2]+a[3]);
190
      if (sum>xysumcut) H2D_Fill(0, x, y , 1 );
199
      if (sum>xysumcut) H2D_Fill(0, x, y , 1 );
191
    }
200
    }
192
    histogramTotalEvents++;
201
    histogramTotalEvents++;
193
  }
202
  }
194
  //tbAdcStatistics.Clear();
203
  //tbAdcStatistics.Clear();
195
  for (int channel = 0; channel < CHANNELS; channel++) {
204
  for (int channel = 0; channel < CHANNELS; channel++) {
196
    average[channel] = (ushort)(total[channel] / events);
205
    average[channel] = (ushort)(total[channel] / events);
197
 
206
 
198
    if (verbose) AddMessage(" {channel:%d}  : {min:0x%d}  {max:0x%d}  {max-min:%d}  {average:%d}\n", channel + 1, min[channel], max[channel], max[channel] - min[channel], average[channel]);
207
    if (verbose) AddMessage(" {channel:%d}  : {min:0x%d}  {max:0x%d}  {max-min:%d}  {average:%d}\n", channel + 1, min[channel], max[channel], max[channel] - min[channel], average[channel]);
199
    //if (channel < (CHANNELS - 1))
208
    //if (channel < (CHANNELS - 1))
200
    //    tbAdcStatistics.AppendText(Environment.NewLine);
209
    //    tbAdcStatistics.AppendText(Environment.NewLine);
201
 
210
 
202
  }
211
  }
203
  //SetTextboxToTop(tbAdcStatistics);
212
  //SetTextboxToTop(tbAdcStatistics);
204
  return 1;
213
  return 1;
205
};
214
};
206
 
215
 
207
 
216
 
208
int CVICALLBACK RefreshGraphs (int panel, int control, int event,
217
int CVICALLBACK RefreshGraphs (int panel, int control, int event,
209
                               void *callbackData, int eventData1, int eventData2) {
218
                               void *callbackData, int eventData1, int eventData2) {
210
  switch (event) {
219
  switch (event) {
211
    case EVENT_TIMER_TICK:
220
    case EVENT_TIMER_TICK:
212
//      if (!daq_on ) return 0;
221
//      if (!daq_on ) return 0;
213
    case EVENT_COMMIT: {
222
    case EVENT_COMMIT: {
214
                       
223
                       
215
      int ch=0;
224
      int ch=0;
216
                        int logy=0;
225
                        int logy=0;
217
                        int updateplots=0;
226
                        int updateplots=0;
218
      GetCtrlVal(ait,AIT_CH, &ch);
227
      GetCtrlVal(ait,AIT_CH, &ch);
219
                        GetCtrlVal(ait,AIT_LOGY, &logy);
228
                        GetCtrlVal(ait,AIT_LOGY, &logy);
220
                  GetCtrlVal(ait,AIT_UPDATEPLOTS, &updateplots);
229
                  GetCtrlVal(ait,AIT_UPDATEPLOTS, &updateplots);
221
                        if (!updateplots) return 0;
230
                        if (!updateplots) return 0;
222
                        if (logy){
231
                        if (logy){
223
                                SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LOG);
232
                                SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LOG);
224
                          SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LOG);
233
                          SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LOG);
225
                       
234
                       
226
                        } else {
235
                        } else {
227
                                SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LINEAR);
236
                                SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LINEAR);
228
                          SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LINEAR);
237
                          SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LINEAR);
229
                       
238
                       
230
                        }
239
                        }
231
      H1D_Draw(ch,ait,AIT_GRAPH,&plothandle[0]);
240
      H1D_Draw(ch,ait,AIT_GRAPH,&plothandle[0]);
232
      H1D_Draw(10,ait,AIT_GRAPHSUM,&plothandle[1]);
241
      H1D_Draw(10,ait,AIT_GRAPHSUM,&plothandle[1]);
233
      H2D_Draw(0,ait,AIT_GRAPHXY,&plothandle[2]);
242
      H2D_Draw(0,ait,AIT_GRAPHXY,&plothandle[2]);
234
                       
243
                       
235
 
244
 
236
    }
245
    }
237
 
246
 
238
   
247
   
239
    break;
248
    break;
240
 
249
 
241
  }
250
  }
242
  return 0;
251
  return 0;
243
}
252
}
244
 
253
 
245
 
254
 
246
 
255
 
247
int CVICALLBACK daq(void *functionData) {
256
int CVICALLBACK daq(void *functionData) {
248
 
257
 
249
 
258
 
250
  int neve;
259
  int neve;
251
  char filename[0xff];
260
  char filename[0xff];
252
        char fname[0xff];  
261
        char fname[0xff];  
253
        char pname[0xff];
262
        char pname[0xff];
254
 
263
 
255
 
264
 
256
 
265
 
257
  int pfreq;
266
  int pfreq;
258
  int enabledoutput;
267
  int enabledoutput;
259
  int neveold = 0;
268
  int neveold = 0;
260
  double rate;
269
  double rate;
261
  int *args =  (int *) functionData;
270
  int *args =  (int *) functionData;
262
 
271
 
263
  GetCtrlVal(ait, AIT_FILENAME, fname );
272
  GetCtrlVal(ait, AIT_FILENAME, fname );
264
        GetCtrlVal(ait, AIT_PATHNAME, pname );
273
        GetCtrlVal(ait, AIT_PATHNAME, pname );
265
        sprintf(filename,"%s/%s", pname, fname);
274
        sprintf(filename,"%s/%s", pname, fname);
266
 
275
 
267
  GetCtrlVal(ait,AIT_NEVE, &neve);
276
  GetCtrlVal(ait,AIT_NEVE, &neve);
268
  GetCtrlVal(ait,AIT_DEBUG, &verbose);
277
  GetCtrlVal(ait,AIT_DEBUG, &verbose);
269
  GetCtrlVal(ait,AIT_PFREQ, &pfreq);
278
  GetCtrlVal(ait,AIT_PFREQ, &pfreq);
270
  GetCtrlVal(ait,AIT_ENABLEDOUTPUT, &enabledoutput);
279
  GetCtrlVal(ait,AIT_ENABLEDOUTPUT, &enabledoutput);
271
 
280
 
272
       
281
       
273
        int range=0;
282
        int range=0;
274
        int nch = range;
283
        int nch = range;
275
        GetCtrlVal(ait,AIT_MAX, &range);  
284
        GetCtrlVal(ait,AIT_MAX, &range);  
276
        if (range>512) nch = 512;
285
        if (range>512) nch = 512;
277
 
286
 
278
               
287
               
279
  for (int i=0; i<4; i++) {
288
  for (int i=0; i<4; i++) {
280
    char name[0xFF];
289
    char name[0xFF];
281
    sprintf(name,"adc%d", i);
290
    sprintf(name,"adc%d", i);
282
               
291
               
283
    H1D_Init(i, name,name, range, 0 , range);
292
    H1D_Init(i, name,name, range, 0 , range);
284
    H1D_SetTitleX(0,"ADC");
293
    H1D_SetTitleX(0,"ADC");
285
    H1D_SetTitleY(0,"N");
294
    H1D_SetTitleY(0,"N");
286
  }
295
  }
287
  H1D_Init(10, "adcsum","adcsum", range, 0 , 4*range);
296
  H1D_Init(10, "adcsum","adcsum", range, 0 , 4*range);
288
  H1D_SetTitleX(0,"ADC");
297
  H1D_SetTitleX(0,"ADC");
289
  H1D_SetTitleY(0,"N");
298
  H1D_SetTitleY(0,"N");
290
 
299
 
291
  H2D_Init(0, "cog","Center of gravity", 256, 0 ,1, 256, 0 ,1);
300
  H2D_Init(0, "cog","Center of gravity", 256, 0 ,1, 256, 0 ,1);
292
  H2D_SetTitleX(0,"x");
301
  H2D_SetTitleX(0,"x");
293
  H2D_SetTitleY(0,"y");
302
  H2D_SetTitleY(0,"y");
294
 
303
 
295
 
304
 
296
 
305
 
297
  FILE *fp= NULL;
306
  FILE *fp= NULL;
298
 
307
 
299
  if (enabledoutput) {
308
  if (enabledoutput) {
300
    if (args[0]) fp =  fopen(filename,"wb");
309
    if (args[0]) fp =  fopen(filename,"wb");
301
    else         fp =  fopen(filename,"ab");
310
    else         fp =  fopen(filename,"ab");
302
  }
311
  }
303
 
312
 
304
 
313
 
305
 
314
 
306
 
315
 
307
 
316
 
308
  time_t t=0,told=0, tstart=0;
317
  time_t t=0,told=0, tstart=0;
309
 
318
 
310
  if (!AitInit()) {
319
  if (!AitInit()) {
311
               
320
               
312
               
321
               
313
                ReadRegisters();
322
                ReadRegisters();
314
               
323
               
315
 
324
 
316
      // Update UI
325
      // Update UI
317
      int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR);
326
      int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR);
318
 
327
 
319
      int  value = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) |
328
      int  value = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) |
320
                   ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0);
329
                   ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0);
321
      SetCtrlVal (ait, AIT_GETADCGAIN, value);
330
      SetCtrlVal (ait, AIT_GETADCGAIN, value);
322
      double valued = GetThreshold();
331
      double valued = GetThreshold();
323
      SetCtrlVal (ait, AIT_GETADCTHRESHOLD, valued);
332
      SetCtrlVal (ait, AIT_GETADCTHRESHOLD, valued);
324
      valued = GetIntegrationTime();
333
      valued = GetIntegrationTime();
325
      SetCtrlVal (ait, AIT_GETADCINTEGRATIONTIME, valued);
334
      SetCtrlVal (ait, AIT_GETADCINTEGRATIONTIME, valued);
326
      valued = GetHvVoltage(ADDR_HV_VMON);
335
      valued = GetHvVoltage(ADDR_HV_VMON);
327
      SetCtrlVal (ait, AIT_BIASMON, valued);
336
      SetCtrlVal (ait, AIT_BIASMON, valued);
328
                       
337
                       
329
                        value =
338
                        value =
330
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) |
339
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) |
331
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) |
340
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) |
332
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) |
341
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) |
333
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0);
342
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0);
334
      SetCtrlVal (ait, AIT_GETADCSUMGAIN, value);
343
      SetCtrlVal (ait, AIT_GETADCSUMGAIN, value);
335
                       
344
                       
336
 
345
 
337
               
346
               
338
    RefreshGraphs (ait, 0 , EVENT_COMMIT ,NULL, 0, 0 );
347
    RefreshGraphs (ait, 0 , EVENT_COMMIT ,NULL, 0, 0 );
339
   
348
   
340
    daq_on=1;
349
    daq_on=1;
341
                //RefreshGraphs (ait, 0 , EVENT_TIMER_TICK ,NULL, 0, 0 );    
350
                //RefreshGraphs (ait, 0 , EVENT_TIMER_TICK ,NULL, 0, 0 );    
342
    time(&tstart);
351
    time(&tstart);
343
    told=tstart;
352
    told=tstart;
344
    int i=0;
353
    int i=0;
345
    for (i=0; i<neve; i++) {
354
    for (i=0; i<neve; i++) {
346
      start_timer(1);// 1 s timeout
355
      start_timer(1);// 1 s timeout
347
      // Set ADC reset
356
      // Set ADC reset
348
      ResetAdc(true);
357
      ResetAdc(true);
349
      // Clear ADC reset
358
      // Clear ADC reset
350
      ResetAdc(false);
359
      ResetAdc(false);
351
      int eventsAcquired = Acquire(pfreq);
360
      int eventsAcquired = Acquire(pfreq);
352
                        stop_timer();
361
                        stop_timer();
353
                        if (!daq_on) break;
362
                        if (!daq_on) break;
354
                        if (timeout) {
363
                        if (timeout) {
355
                           i--;
364
                           i--;
356
                                 printf("INFO Timeout\n");
365
                                 printf("INFO Timeout\n");
357
                                 continue;
366
                                 continue;
358
                        }
367
                        }
359
      int isvalid =1;
368
      int isvalid =1;
360
      if (eventsAcquired < 1) {
369
      if (eventsAcquired < 1) {
361
        printf("Acquired events %d\n", eventsAcquired);
370
        printf("Acquired events %d\n", eventsAcquired);
362
        isvalid = 0;
371
        isvalid = 0;
363
      } else {
372
      } else {
364
        AitFillHistograms(eventsAcquired);
373
        AitFillHistograms(eventsAcquired);
365
        if (verbose) ShowEvent(1);
374
        if (verbose) ShowEvent(1);
366
      }
375
      }
367
 
376
 
368
      int nb =  ( isvalid && fp ) ? AitToFile( fp , pfreq ) : 0;
377
      int nb =  ( isvalid && fp ) ? AitToFile( fp , pfreq ) : 0;
369
      SetCtrlVal(ait,AIT_CEVE,i);
378
      SetCtrlVal(ait,AIT_CEVE,i);
370
      if (!isvalid) i--;
379
      if (!isvalid) i--;
371
     
380
     
372
      time(&t);
381
      time(&t);
373
      if (t!=told ) {
382
      if (t!=told ) {
374
        rate =  (i-neveold);
383
        rate =  (i-neveold);
375
        printf("%d events in %2.2f min (%d s) Rate %f Hz %s   ",i+1, (double)(t-tstart)/60.,(t-tstart), rate , ctime(&t));
384
        printf("%d events in %2.2f min (%d s) Rate %f Hz %s   ",i+1, (double)(t-tstart)/60.,(t-tstart), rate , ctime(&t));
376
        neveold = i;
385
        neveold = i;
377
                                RefreshGraphs (ait, 0 , EVENT_COMMIT ,NULL, 0, 0 );  
386
                                RefreshGraphs (ait, 0 , EVENT_COMMIT ,NULL, 0, 0 );  
378
        double daqBlocksize = GetAdcEventSize() * pfreq * 2.0;
387
        double daqBlocksize = GetAdcEventSize() * pfreq * 2.0;
379
        double daqTimeMs = BlockTransferTime();
388
        double daqTimeMs = BlockTransferTime();
380
        double daqTransferRate = daqBlocksize / daqTimeMs;
389
        double daqTransferRate = daqBlocksize / daqTimeMs;
381
        SetCtrlVal(ait,AIT_DAQBLOCKSIZE, daqBlocksize);
390
        SetCtrlVal(ait,AIT_DAQBLOCKSIZE, daqBlocksize);
382
        SetCtrlVal(ait,AIT_DAQTIMEMS,daqTimeMs);
391
        SetCtrlVal(ait,AIT_DAQTIMEMS,daqTimeMs);
383
        SetCtrlVal(ait,AIT_DAQTRANSFERRATE,daqTransferRate);
392
        SetCtrlVal(ait,AIT_DAQTRANSFERRATE,daqTransferRate);
384
      }
393
      }
385
      told=t;
394
      told=t;
386
 
395
 
387
 
396
 
388
 
397
 
389
    }
398
    }
390
    time(&t);
399
    time(&t);
391
    printf("%d events in %2.2f min (%d s) %s",i+1, (double)(t-tstart)/60.,t-tstart, ctime(&t));
400
    printf("%d events in %2.2f min (%d s) %s",i+1, (double)(t-tstart)/60.,t-tstart, ctime(&t));
392
 
401
 
393
  }
402
  }
394
 
403
 
395
  if (fp) fclose(fp);
404
  if (fp) fclose(fp);
396
 
405
 
397
 
406
 
398
        RefreshGraphs (ait, 0 , EVENT_TIMER_TICK ,NULL, 0, 0 );
407
        RefreshGraphs (ait, 0 , EVENT_TIMER_TICK ,NULL, 0, 0 );
399
  return 0;
408
  return 0;
400
 
409
 
401
}
410
}
402
 
411
 
403
 
412
 
404
int CVICALLBACK scan(void *functionData) {
413
int CVICALLBACK scan(void *functionData) {
405
 
414
 
406
        int dx[3]={0,0,0};
415
        int dx[3]={0,0,0};
407
        int nx[3]={0,0,0};
416
        int nx[3]={0,0,0};
408
        int x0[3]={0,0,0};
417
        int x0[3]={0,0,0};
409
        int ix[3]={0,0,0};
418
        int ix[3]={0,0,0};
410
        int idx[3]={0,0,0};  
419
        int idx[3]={0,0,0};  
411
        unsigned short size;
420
        unsigned short size;
412
        unsigned short posrec={0x2};   
421
        unsigned short posrec={0x2};   
413
        unsigned short runbuf={0x3};
422
        unsigned short runbuf={0x3};
414
       
423
       
415
        int  n[3];
424
        int  n[3];
416
        char filename[0xFF];
425
        char filename[0xFF];
417
        char fname[0xff];  
426
        char fname[0xff];  
418
        char pname[0xff];
427
        char pname[0xff];
419
        int enabledoutput;
428
        int enabledoutput;
420
       
429
       
421
        FILE *fp;
430
        FILE *fp;
422
        GetCtrlVal(ait, AIT_FILENAME, fname );
431
        GetCtrlVal(ait, AIT_FILENAME, fname );
423
        GetCtrlVal(ait, AIT_PATHNAME, pname );
432
        GetCtrlVal(ait, AIT_PATHNAME, pname );
424
        sprintf(filename,"%s/%s", pname, fname);
433
        sprintf(filename,"%s/%s", pname, fname);
425
       
434
       
426
        GetCtrlVal(ait,AIT_ENABLEDOUTPUT, &enabledoutput);
435
        GetCtrlVal(ait,AIT_ENABLEDOUTPUT, &enabledoutput);
427
        int fsize;
436
        int fsize;
428
        if ( GetFileInfo(filename,&fsize) ) {
437
        if ( GetFileInfo(filename,&fsize) ) {
429
                 MessagePopup ("Warning", "File exist. Remove it first or choose another file");
438
                 MessagePopup ("Warning", "File exist. Remove it first or choose another file");
430
           return 0;
439
           return 0;
431
        }        
440
        }        
432
        GetCtrlVal(xyscan, SCAN_STEPX, &dx[0]);
441
        GetCtrlVal(xyscan, SCAN_STEPX, &dx[0]);
433
        GetCtrlVal(xyscan, SCAN_STEPY, &dx[1]);
442
        GetCtrlVal(xyscan, SCAN_STEPY, &dx[1]);
434
        GetCtrlVal(xyscan, SCAN_NSTEPSX, &nx[0]);
443
        GetCtrlVal(xyscan, SCAN_NSTEPSX, &nx[0]);
435
        GetCtrlVal(xyscan, SCAN_NSTEPSY, &nx[1]);
444
        GetCtrlVal(xyscan, SCAN_NSTEPSY, &nx[1]);
436
        GetCtrlVal(xyscan, SCAN_STARTX, &x0[0]);
445
        GetCtrlVal(xyscan, SCAN_STARTX, &x0[0]);
437
        GetCtrlVal(xyscan, SCAN_STARTY, &x0[1]);
446
        GetCtrlVal(xyscan, SCAN_STARTY, &x0[1]);
438
 
447
 
439
       
448
       
440
        if (enabledoutput) {
449
        if (enabledoutput) {
441
                                fp =  fopen(filename,"ab");
450
                                fp =  fopen(filename,"ab");
442
                                if (fp) {
451
                                if (fp) {
443
                                         size=36;
452
                                         size=36;
444
                                         fwrite(&runbuf, sizeof(unsigned short),1 ,fp);
453
                                         fwrite(&runbuf, sizeof(unsigned short),1 ,fp);
445
                                         fwrite(&size  , sizeof(unsigned short),1 ,fp);
454
                                         fwrite(&size  , sizeof(unsigned short),1 ,fp);
446
                                         fwrite(x0    , 1,4*3 ,fp);
455
                                         fwrite(x0    , 1,4*3 ,fp);
447
                                         fwrite(dx    , 1,4*3 ,fp);
456
                                         fwrite(dx    , 1,4*3 ,fp);
448
                                         fwrite(nx    , 1,4*3 ,fp);
457
                                         fwrite(nx    , 1,4*3 ,fp);
449
                                         fclose(fp);
458
                                         fclose(fp);
450
                                }    
459
                                }    
451
        }      
460
        }      
452
       
461
       
453
  for (int j=0; j<nx[1]; j++) {
462
  for (int j=0; j<nx[1]; j++) {
454
                       
463
                       
455
         SetCtrlVal (xyscan, SCAN_IY, j);
464
         SetCtrlVal (xyscan, SCAN_IY, j);
456
         ix[1]= x0[1]+j*dx[1];
465
         ix[1]= x0[1]+j*dx[1];
457
#ifdef MIKRO
466
#ifdef MIKRO
458
                MIKRO_MoveTo(2,ix[1]);
467
                MIKRO_MoveTo(2,ix[1]);
459
                MIKRO_GetPosition(2,&n[1]);
468
                MIKRO_GetPosition(2,&n[1]);
460
                        SetCtrlVal (xyscan, SCAN_YP, n[1]);
469
            SetCtrlVal (xyscan, SCAN_YP, n[1]);
-
 
470
#endif
-
 
471
#ifdef uSMC_USB
-
 
472
                uSMC_MoveTo(node[1],ix[1]);
-
 
473
                uSMC_GetPosition(node[1],&n[1]);
-
 
474
            SetCtrlVal (xyscan, SCAN_YP, n[1]);
461
#endif          
475
#endif
-
 
476
               
-
 
477
                       
462
                       
478
                       
463
         for (int i=0; i<nx[0]; i++) {
479
         for (int i=0; i<nx[0]; i++) {
464
                SetCtrlVal (xyscan, SCAN_IX, i);  
480
                SetCtrlVal (xyscan, SCAN_IX, i);  
465
                ix[0]= x0[0]+i*dx[0];
481
                ix[0]= x0[0]+i*dx[0];
466
#ifdef MIKRO
482
#ifdef MIKRO
467
                  MIKRO_MoveTo(1,ix[0]);
483
                    MIKRO_MoveTo(1,ix[0]);
468
                        MIKRO_GetPosition(1,&n[0]);
484
                        MIKRO_GetPosition(1,&n[0]);
469
                        SetCtrlVal (xyscan, SCAN_XP, n[0]);
485
                        SetCtrlVal (xyscan, SCAN_XP, n[0]);
-
 
486
#endif          
-
 
487
#ifdef uSMC_USB
-
 
488
                    uSMC_MoveTo(node[0],ix[0]);
-
 
489
                        uSMC_GetPosition(node[0],&n[0]);
-
 
490
                        SetCtrlVal (xyscan, SCAN_XP, n[0]);
470
                       
491
#endif                  
471
       
492
       
472
                        if (enabledoutput) {
493
                        if (enabledoutput) {
473
                                fp =  fopen(filename,"ab");
494
                                fp =  fopen(filename,"ab");
474
                                if (fp) {
495
                                if (fp) {
475
                                         time_t mtime;
496
                                         time_t mtime;
476
                                         idx[0]=i;
497
                                         idx[0]=i;
477
                                         idx[1]=j;
498
                                         idx[1]=j;
478
                                         size=24+sizeof(mtime);
499
                                         size=24+sizeof(mtime);
479
                                         fwrite(&posrec, sizeof(unsigned short),1 ,fp);
500
                                         fwrite(&posrec, sizeof(unsigned short),1 ,fp);
480
                                         fwrite(&size  , sizeof(unsigned short),1 ,fp);
501
                                         fwrite(&size  , sizeof(unsigned short),1 ,fp);
481
                                         fwrite(n     , 1,4*3 ,fp);
502
                                         fwrite(n     , 1,4*3 ,fp);
482
                                         fwrite(idx    , 1,4*3 ,fp);
503
                                         fwrite(idx    , 1,4*3 ,fp);
483
                                         time(&mtime);  
504
                                         time(&mtime);  
484
                                         fwrite(&mtime  , sizeof(time_t),1 ,fp);
505
                                         fwrite(&mtime  , sizeof(time_t),1 ,fp);
485
                                         fclose(fp);
506
                                         fclose(fp);
486
                                }    
507
                                }    
487
                        }      
508
                        }      
488
                               
509
                               
489
#endif
510
 
490
                        int newfile=0;
511
                        int newfile=0;
491
                        daq(&newfile);
512
                        daq(&newfile);
492
                        if (!daq_on) break;
513
                        if (!daq_on) break;
493
                }
514
                }
494
                if (!daq_on) break;
515
                if (!daq_on) break;
495
        }
516
        }
496
 
517
 
497
        return 0;
518
        return 0;
498
}
519
}
499
 
520
 
500
 
521
 
501
int main (int argc, char *argv[]) {
522
int main (int argc, char *argv[]) {
502
        short port;
523
 
503
  if (InitCVIRTE (0, argv, 0) == 0)
524
  if (InitCVIRTE (0, argv, 0) == 0)
504
    return -1;  /* out of memory */
525
    return -1;  /* out of memory */
505
  if ((ait = LoadPanel (0, "AitGui.uir", AIT)) < 0)
526
  if ((ait = LoadPanel (0, "AitGui.uir", AIT)) < 0)
506
    return -1;
527
    return -1;
507
  if ((xyscan = LoadPanel (0, "XYSCAN.uir", SCAN)) < 0)
528
  if ((xyscan = LoadPanel (0, "XYSCAN.uir", SCAN)) < 0)
508
    return -1;
529
    return -1;
509
  SetStdioPort (CVI_STDIO_WINDOW);
530
  SetStdioPort (CVI_STDIO_WINDOW);
510
  SetSleepPolicy(VAL_SLEEP_MORE);
531
  SetSleepPolicy(VAL_SLEEP_MORE);
511
  CmtNewThreadPool (MAX_THREADS,  &poolHandle);
532
  CmtNewThreadPool (MAX_THREADS,  &poolHandle);
512
  DisplayPanel (ait);
533
  DisplayPanel (ait);
513
  DisplayPanel (xyscan);
534
  DisplayPanel (xyscan);
514
  AitInit();
535
  AitInit();
515
       
536
       
516
               
537
               
517
#ifdef MIKRO
538
#ifdef MIKRO
-
 
539
        short port;
518
        GetCtrlVal(xyscan, SCAN_PORT, &port);
540
    GetCtrlVal(xyscan, SCAN_PORT, &port);
519
        if (MIKRO_Open (port)) MessagePopup ("Error", "Mikro Port Not found !\n Change in the GUI") ;
541
        if (MIKRO_Open (port)) MessagePopup ("Error", "Mikro Port Not found !\n Change in the GUI") ;
520
        MIKRO_Init(1,0);
542
        MIKRO_Init(1,0);
521
        MIKRO_Init(2,0);
543
        MIKRO_Init(2,0);
522
#endif
544
#endif
-
 
545
#ifdef uSMC_USB
-
 
546
  uSMC_Open();
-
 
547
  for (int i=0; i<3; i++) {
-
 
548
    node[i]=uSMC_FindSerial(serials[i])+1;
-
 
549
    uSMC_Init(node[i],1);
-
 
550
  }
-
 
551
#endif /* uSMC_USB */   
523
       
552
       
524
       
553
       
525
  RunUserInterface ();
554
  RunUserInterface ();
526
       
555
       
527
#ifdef MIKRO    
556
#ifdef MIKRO    
528
        MIKRO_Close ();
557
        MIKRO_Close ();
529
#endif          
558
#endif 
-
 
559
#ifdef uSMC_USB
-
 
560
  for (int i=0; i<3; i++) uSMC_PowerOff(node[i]);
-
 
561
  uSMC_Close();
-
 
562
#endif /* uSMC_USB */   
530
  DiscardPanel (ait);
563
  DiscardPanel (ait);
531
  DiscardPanel (xyscan);
564
  DiscardPanel (xyscan);
532
  return 0;
565
  return 0;
533
}
566
}
534
 
567
 
535
int CVICALLBACK StopCB (int panel, int control, int event,
568
int CVICALLBACK StopCB (int panel, int control, int event,
536
                        void *callbackData, int eventData1, int eventData2) {
569
                        void *callbackData, int eventData1, int eventData2) {
537
  switch (event) {
570
  switch (event) {
538
    case EVENT_COMMIT:
571
    case EVENT_COMMIT:
539
      daq_on=0;
572
      daq_on=0;
540
      break;
573
      break;
541
  }
574
  }
542
  return 0;
575
  return 0;
543
}
576
}
544
 
577
 
545
 
578
 
546
int CVICALLBACK StartCB (int panel, int control, int event,
579
int CVICALLBACK StartCB (int panel, int control, int event,
547
                         void *callbackData, int eventData1, int eventData2) {
580
                         void *callbackData, int eventData1, int eventData2) {
548
  ThreadFunctionPtr mythread = NULL;
581
  ThreadFunctionPtr mythread = NULL;
549
  switch (event) {
582
  switch (event) {
550
 
583
 
551
    case EVENT_COMMIT:
584
    case EVENT_COMMIT:
552
 
585
 
553
      controlID= control;
586
      controlID= control;
554
      if (panel == ait && control == AIT_START) {
587
      if (panel == ait && control == AIT_START) {
555
        mythread = daq;
588
        mythread = daq;
556
       
589
       
557
      }
590
      }
558
                        if (panel == xyscan && control == SCAN_SCAN)   mythread = scan;  
591
                        if (panel == xyscan && control == SCAN_SCAN)   mythread = scan;  
559
      if (mythread!=NULL) {
592
      if (mythread!=NULL) {
560
        printf("New Thread panel=%d button=%d\n", panel, control);
593
        printf("New Thread panel=%d button=%d\n", panel, control);
561
 
594
 
562
        // SetDimming(1);
595
        // SetDimming(1);
563
 
596
 
564
       
597
       
565
        CmtScheduleThreadPoolFunctionAdv (poolHandle, mythread, &controlID,
598
        CmtScheduleThreadPoolFunctionAdv (poolHandle, mythread, &controlID,
566
                                          DEFAULT_THREAD_PRIORITY,
599
                                          DEFAULT_THREAD_PRIORITY,
567
                                          EndOfThread,
600
                                          EndOfThread,
568
                                          EVENT_TP_THREAD_FUNCTION_END,
601
                                          EVENT_TP_THREAD_FUNCTION_END,
569
                                          NULL, RUN_IN_SCHEDULED_THREAD,
602
                                          NULL, RUN_IN_SCHEDULED_THREAD,
570
                                          &tfID);
603
                                          &tfID);
571
      }
604
      }
572
      break;
605
      break;
573
  }
606
  }
574
  return 0;
607
  return 0;
575
}
608
}
576
 
609
 
577
 
610
 
578
 
611
 
579
int CVICALLBACK ExitCB (int panel, int control, int event,
612
int CVICALLBACK ExitCB (int panel, int control, int event,
580
                        void *callbackData, int eventData1, int eventData2) {
613
                        void *callbackData, int eventData1, int eventData2) {
581
  switch (event) {
614
  switch (event) {
582
    case EVENT_COMMIT:
615
    case EVENT_COMMIT:
583
      QuitUserInterface (0);
616
      QuitUserInterface (0);
584
      break;
617
      break;
585
  }
618
  }
586
  return 0;
619
  return 0;
587
}
620
}
588
 
621
 
589
int CVICALLBACK ReadCB (int panel, int control, int event,
622
int CVICALLBACK ReadCB (int panel, int control, int event,
590
                        void *callbackData, int eventData1, int eventData2) {
623
                        void *callbackData, int eventData1, int eventData2) {
591
  switch (event) {
624
  switch (event) {
592
    case EVENT_COMMIT:
625
    case EVENT_COMMIT:
593
 
626
 
594
 
627
 
595
 
628
 
596
      ReadRegisters();
629
      ReadRegisters();
597
      break;
630
      break;
598
  }
631
  }
599
  return 0;
632
  return 0;
600
}
633
}
601
 
634
 
602
int CVICALLBACK ChangeChannelCB (int panel, int control, int event,
635
int CVICALLBACK ChangeChannelCB (int panel, int control, int event,
603
                                 void *callbackData, int eventData1, int eventData2) {
636
                                 void *callbackData, int eventData1, int eventData2) {
604
  int ch=0;
637
  int ch=0;
605
  switch (event) {
638
  switch (event) {
606
    case EVENT_COMMIT:
639
    case EVENT_COMMIT:
607
 
640
 
608
      int logy=0;
641
      int logy=0;
609
      GetCtrlVal(ait,AIT_CH, &ch);
642
      GetCtrlVal(ait,AIT_CH, &ch);
610
                        GetCtrlVal(ait,AIT_LOGY, &logy);
643
                        GetCtrlVal(ait,AIT_LOGY, &logy);
611
                        if (logy){
644
                        if (logy){
612
                                SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LOG);
645
                                SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LOG);
613
                          SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LOG);
646
                          SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LOG);
614
                       
647
                       
615
                        } else {
648
                        } else {
616
                                SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LINEAR);
649
                                SetCtrlAttribute (ait, AIT_GRAPH, ATTR_YMAP_MODE, VAL_LINEAR);
617
                          SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LINEAR);
650
                          SetCtrlAttribute (ait, AIT_GRAPHSUM, ATTR_YMAP_MODE, VAL_LINEAR);
618
                       
651
                       
619
                        }
652
                        }
620
      H1D_Draw(ch,ait,AIT_GRAPH,&plothandle[0]);
653
      H1D_Draw(ch,ait,AIT_GRAPH,&plothandle[0]);
621
      break;
654
      break;
622
  }
655
  }
623
  return 0;
656
  return 0;
624
}
657
}
625
 
658
 
626
 
659
 
627
 
660
 
628
 
661
 
629
 
662
 
630
int CVICALLBACK InitCB (int panel, int control, int event,
663
int CVICALLBACK InitCB (int panel, int control, int event,
631
                        void *callbackData, int eventData1, int eventData2) {
664
                        void *callbackData, int eventData1, int eventData2) {
632
  switch (event) {
665
  switch (event) {
633
    case EVENT_COMMIT:
666
    case EVENT_COMMIT:
634
      AitInit();
667
      AitInit();
635
      break;
668
      break;
636
  }
669
  }
637
  return 0;
670
  return 0;
638
}
671
}
639
 
672
 
640
int CVICALLBACK QuickCB (int panel, int control, int event,
673
int CVICALLBACK QuickCB (int panel, int control, int event,
641
                         void *callbackData, int eventData1, int eventData2) {
674
                         void *callbackData, int eventData1, int eventData2) {
642
  switch (event) {
675
  switch (event) {
643
    case EVENT_COMMIT:
676
    case EVENT_COMMIT:
644
      switch (control) {
677
      switch (control) {
645
        case AIT_QUICKSETUP_1:
678
        case AIT_QUICKSETUP_1:
646
          QuickSetupContinuous();
679
          QuickSetupContinuous();
647
                                        SetCtrlVal(ait,AIT_TRGTYPE, 0);
680
                                        SetCtrlVal(ait,AIT_TRGTYPE, 0);
648
          break;
681
          break;
649
        case AIT_QUICKSETUP_2:
682
        case AIT_QUICKSETUP_2:
650
          QuickSetupDiscriminator();
683
          QuickSetupDiscriminator();
651
                                        SetCtrlVal(ait,AIT_TRGTYPE, 2);
684
                                        SetCtrlVal(ait,AIT_TRGTYPE, 2);
652
          break;
685
          break;
653
        case AIT_QUICKSETUP_3:
686
        case AIT_QUICKSETUP_3:
654
          QuickSetupTriggerOff();
687
          QuickSetupTriggerOff();
655
                            break;
688
                            break;
656
 
689
 
657
 
690
 
658
      }
691
      }
659
                        float bias = GetHvVoltage(ADDR_HV_VMON);
692
                        float bias = GetHvVoltage(ADDR_HV_VMON);
660
      SetCtrlVal (panel, AIT_BIASMON, bias);
693
      SetCtrlVal (panel, AIT_BIASMON, bias);
661
                        double  value = GetIntegrationTime();
694
                        double  value = GetIntegrationTime();
662
      SetCtrlVal (panel, AIT_GETADCINTEGRATIONTIME, value);
695
      SetCtrlVal (panel, AIT_GETADCINTEGRATIONTIME, value);
663
                        value = GetThreshold();
696
                        value = GetThreshold();
664
      SetCtrlVal (panel, AIT_GETADCTHRESHOLD, value);
697
      SetCtrlVal (panel, AIT_GETADCTHRESHOLD, value);
665
                        int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR);
698
                        int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR);
666
 
699
 
667
      int ivalue = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) |
700
      int ivalue = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) |
668
              ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0);
701
              ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0);
669
      SetCtrlVal (panel, AIT_GETADCGAIN, ivalue);
702
      SetCtrlVal (panel, AIT_GETADCGAIN, ivalue);
670
                        ivalue =
703
                        ivalue =
671
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) |
704
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) |
672
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) |
705
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) |
673
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) |
706
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) |
674
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0);
707
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0);
675
      SetCtrlVal (panel, AIT_GETADCSUMGAIN, ivalue);
708
      SetCtrlVal (panel, AIT_GETADCSUMGAIN, ivalue);
676
      break;
709
      break;
677
  }
710
  }
678
  return 0;
711
  return 0;
679
}
712
}
680
 
713
 
681
 
714
 
682
 
715
 
683
int CVICALLBACK MoveStageCB (int panel, int control, int event,
716
int CVICALLBACK MoveStageCB (int panel, int control, int event,
684
                             void *callbackData, int eventData1, int eventData2) {
717
                             void *callbackData, int eventData1, int eventData2) {
685
  int axis=0, step=1000, direction=1;
718
  int axis=0, step=1000, direction=1;
686
  switch (event) {
719
  switch (event) {
687
    case EVENT_COMMIT:
720
    case EVENT_COMMIT:
688
 
721
 
689
      if (panel == xyscan) {
722
      if (panel == xyscan) {
690
        switch (control) {
723
        switch (control) {
691
          case SCAN_BR :
724
          case SCAN_BR :
692
            axis = 1;
725
            axis = 1;
693
            direction = 1;
726
            direction = 1;
694
            GetCtrlVal(panel, SCAN_STEPX, &step);
727
            GetCtrlVal(panel, SCAN_STEPX, &step);
695
            break;
728
            break;
696
          case SCAN_BL :
729
          case SCAN_BL :
697
            axis = 1;
730
            axis = 1;
698
            direction = -1;
731
            direction = -1;
699
            GetCtrlVal(panel, SCAN_STEPX, &step);
732
            GetCtrlVal(panel, SCAN_STEPX, &step);
700
            break;
733
            break;
701
          case SCAN_BU :
734
          case SCAN_BU :
702
            axis = 2;
735
            axis = 2;
703
            direction = 1;
736
            direction = 1;
704
            GetCtrlVal(panel, SCAN_STEPY, &step);
737
            GetCtrlVal(panel, SCAN_STEPY, &step);
705
            break;
738
            break;
706
          case SCAN_BD :
739
          case SCAN_BD :
707
            axis = 2;
740
            axis = 2;
708
            direction = -1;
741
            direction = -1;
709
            GetCtrlVal(panel, SCAN_STEPY, &step);
742
            GetCtrlVal(panel, SCAN_STEPY, &step);
710
            break;
743
            break;
711
        }
744
        }
712
#ifdef MIKRO
745
#ifdef MIKRO
713
        {
746
        {
714
          int n=0;
747
          int n=0;
715
          MIKRO_MoveFor(axis,  direction*step );
748
          MIKRO_MoveFor(axis,  direction*step );
716
          MIKRO_GetPosition(axis,&n);
749
          MIKRO_GetPosition(axis,&n);
717
          if (axis == 1) SetCtrlVal (panel, SCAN_XP, n);
750
          if (axis == 1) SetCtrlVal (panel, SCAN_XP, n);
718
          if (axis == 2) SetCtrlVal (panel, SCAN_YP, n);
751
          if (axis == 2) SetCtrlVal (panel, SCAN_YP, n);
719
        }
752
        }
-
 
753
#endif // MIKRO  
-
 
754
               
-
 
755
#ifdef uSMC_USB
-
 
756
        {
-
 
757
          int n=0;
-
 
758
          uSMC_MoveFor(node[axis-1],  direction*step );
-
 
759
          uSMC_GetPosition(node[axis-1],&n);
-
 
760
          if (axis == 1) SetCtrlVal (panel, SCAN_XP, n);
-
 
761
          if (axis == 2) SetCtrlVal (panel, SCAN_YP, n);
-
 
762
        }
720
#endif // MIKRO         
763
#endif // MIKRO                 
721
      }
764
      }
722
 
765
 
723
      break;
766
      break;
724
  }
767
  }
725
  return 0;
768
  return 0;
726
}
769
}
727
 
770
 
728
 
771
 
729
 
772
 
730
 
773
 
731
 
774
 
732
int CVICALLBACK GoXCB (int panel, int control, int event,
775
int CVICALLBACK GoXCB (int panel, int control, int event,
733
                       void *callbackData, int eventData1, int eventData2) {
776
                       void *callbackData, int eventData1, int eventData2) {
734
  int n2;
777
  int n2;
735
  switch (event) {
778
  switch (event) {
736
    case EVENT_COMMIT:
779
    case EVENT_COMMIT:
737
      GetCtrlVal (panel, SCAN_XG, &n2);
780
      GetCtrlVal (panel, SCAN_XG, &n2);
738
#ifdef MIKRO
781
#ifdef MIKRO
739
      MIKRO_MoveTo(1,n2);
782
      MIKRO_MoveTo(1,n2);
740
      MIKRO_GetPosition(1,&n2);
783
      MIKRO_GetPosition(1,&n2);
741
 
784
#endif
-
 
785
#ifdef uSMC_USB  
-
 
786
      uSMC_MoveTo(node[0],n2);
-
 
787
      uSMC_GetPosition(node[0],&n2);
742
#endif
788
#endif    
-
 
789
         
743
      SetCtrlVal (panel, SCAN_XP, n2);
790
      SetCtrlVal (panel, SCAN_XP, n2);
744
      break;
791
      break;
745
  }
792
  }
746
  return 0;
793
  return 0;
747
}
794
}
748
 
795
 
749
int CVICALLBACK GoYCB (int panel, int control, int event,
796
int CVICALLBACK GoYCB (int panel, int control, int event,
750
                       void *callbackData, int eventData1, int eventData2) {
797
                       void *callbackData, int eventData1, int eventData2) {
751
  int n2;
798
  int n2;
752
  switch (event) {
799
  switch (event) {
753
    case EVENT_COMMIT:
800
    case EVENT_COMMIT:
754
      GetCtrlVal (panel, SCAN_YG, &n2);
801
      GetCtrlVal (panel, SCAN_YG, &n2);
755
#ifdef MIKRO
802
#ifdef MIKRO
756
      MIKRO_MoveTo(2,n2);
803
      MIKRO_MoveTo(2,n2);
757
      MIKRO_GetPosition(2,&n2);
804
      MIKRO_GetPosition(2,&n2);
758
 
805
 
759
#endif
806
#endif
-
 
807
#ifdef uSMC_USB  
-
 
808
      uSMC_MoveTo(node[1],n2);
-
 
809
      uSMC_GetPosition(node[1],&n2);
-
 
810
#endif            
760
      SetCtrlVal (panel, SCAN_YP, n2);
811
      SetCtrlVal (panel, SCAN_YP, n2);
761
      break;
812
      break;
762
  }
813
  }
763
  return 0;
814
  return 0;
764
}
815
}
765
 
816
 
766
int CVICALLBACK GetCurrentPositionCB (int panel, int control, int event,
817
int CVICALLBACK GetCurrentPositionCB (int panel, int control, int event,
767
                                      void *callbackData, int eventData1, int eventData2) {
818
                                      void *callbackData, int eventData1, int eventData2) {
768
 
819
 
769
 
820
  int n[2];
770
  switch (event) {
821
  switch (event) {
771
    case EVENT_COMMIT: {
822
    case EVENT_COMMIT: {
772
#ifdef MIKRO
823
#ifdef MIKRO
773
      int n[2];
-
 
774
      MIKRO_GetPosition(1,&n[0]);
824
      MIKRO_GetPosition(1,&n[0]);
775
      SetCtrlVal (panel, SCAN_XP, n[0]);
825
      SetCtrlVal (panel, SCAN_XP, n[0]);
776
      MIKRO_GetPosition(2,&n[1]);
826
      MIKRO_GetPosition(2,&n[1]);
777
      SetCtrlVal (panel, SCAN_YP, n[1]);
827
      SetCtrlVal (panel, SCAN_YP, n[1]);
778
#endif
828
#endif
-
 
829
#ifdef uSMC_USB  
-
 
830
      uSMC_GetPosition(node[0],&n[0]);
-
 
831
      SetCtrlVal (panel, SCAN_XP, n[0]);
-
 
832
      uSMC_GetPosition(node[1],&n[1]);
-
 
833
      SetCtrlVal (panel, SCAN_YP, n[1]);
-
 
834
#endif            
779
      break;
835
      break;
780
    }
836
    }
781
  }
837
  }
782
  return 0;
838
  return 0;
783
}
839
}
784
 
840
 
785
int CVICALLBACK HomeCB (int panel, int control, int event,
841
int CVICALLBACK HomeCB (int panel, int control, int event,
786
                        void *callbackData, int eventData1, int eventData2) {
842
                        void *callbackData, int eventData1, int eventData2) {
787
  switch (event) {
843
  switch (event) {
788
    case EVENT_COMMIT:
844
    case EVENT_COMMIT:
789
#ifdef MIKRO
845
#ifdef MIKRO
790
      MIKRO_ReferenceMove(1);
846
      MIKRO_ReferenceMove(1);
791
      MIKRO_ReferenceMove(2);
847
      MIKRO_ReferenceMove(2);
792
      GetCurrentPositionCB(panel, control, event, NULL, 0, 0);
848
      GetCurrentPositionCB(panel, control, event, NULL, 0, 0);
793
#endif
849
#endif
-
 
850
#ifdef uSMC_USB
-
 
851
        //SetCtrlVal(panel,P1_STAGELED,1);
-
 
852
        for (int i=0; i<3; i++) uSMC_ReferenceMove(node[i]);
-
 
853
                GetCurrentPositionCB(panel, control, event, NULL, 0, 0);
-
 
854
        //SetCtrlVal(panel,P1_STAGELED,0);
-
 
855
#endif /* uSMC_USB */     
794
      break;
856
      break;
795
  }
857
  }
796
  return 0;
858
  return 0;
797
}
859
}
798
 
860
 
799
int CVICALLBACK SetBiasCB (int panel, int control, int event,
861
int CVICALLBACK SetBiasCB (int panel, int control, int event,
800
                           void *callbackData, int eventData1, int eventData2) {
862
                           void *callbackData, int eventData1, int eventData2) {
801
  double bias=0;
863
  double bias=0;
802
  switch (event) {
864
  switch (event) {
803
    case EVENT_COMMIT:
865
    case EVENT_COMMIT:
804
      GetCtrlVal (panel, AIT_BIAS, &bias);
866
      GetCtrlVal (panel, AIT_BIAS, &bias);
805
      SetHvVoltage(ADDR_HV_CTRL, bias);
867
      SetHvVoltage(ADDR_HV_CTRL, bias);
806
      bias = GetHvVoltage(ADDR_HV_VMON);
868
      bias = GetHvVoltage(ADDR_HV_VMON);
807
      SetCtrlVal (panel, AIT_BIASMON, bias);
869
      SetCtrlVal (panel, AIT_BIASMON, bias);
808
      break;
870
      break;
809
  }
871
  }
810
  return 0;
872
  return 0;
811
}
873
}
812
 
874
 
813
int CVICALLBACK SetHvOnCB (int panel, int control, int event,
875
int CVICALLBACK SetHvOnCB (int panel, int control, int event,
814
                           void *callbackData, int eventData1, int eventData2) {
876
                           void *callbackData, int eventData1, int eventData2) {
815
  int state=0;
877
  int state=0;
816
  double bias;
878
  double bias;
817
  switch (event) {
879
  switch (event) {
818
    case EVENT_COMMIT:
880
    case EVENT_COMMIT:
819
      GetCtrlVal (panel, control, &state);
881
      GetCtrlVal (panel, control, &state);
820
      if (state) SetHvOn(true);
882
      if (state) SetHvOn(true);
821
      else SetHvOn(false);
883
      else SetHvOn(false);
822
      bias = GetHvVoltage(ADDR_HV_VMON);
884
      bias = GetHvVoltage(ADDR_HV_VMON);
823
      SetCtrlVal (panel, AIT_BIASMON, bias);
885
      SetCtrlVal (panel, AIT_BIASMON, bias);
824
      break;
886
      break;
825
  }
887
  }
826
  return 0;
888
  return 0;
827
}
889
}
828
 
890
 
829
int CVICALLBACK SetAdcIntegrationTimeCB (int panel, int control, int event,
891
int CVICALLBACK SetAdcIntegrationTimeCB (int panel, int control, int event,
830
    void *callbackData, int eventData1, int eventData2) {
892
    void *callbackData, int eventData1, int eventData2) {
831
 
893
 
832
  switch (event) {
894
  switch (event) {
833
    case EVENT_COMMIT: {
895
    case EVENT_COMMIT: {
834
      double value;
896
      double value;
835
      GetCtrlVal (panel, AIT_ADCINTEGRATIONTIME, &value);
897
      GetCtrlVal (panel, AIT_ADCINTEGRATIONTIME, &value);
836
      SetIntegrationTime(value);
898
      SetIntegrationTime(value);
837
      value = GetIntegrationTime();
899
      value = GetIntegrationTime();
838
      SetCtrlVal (panel, AIT_GETADCINTEGRATIONTIME, value);
900
      SetCtrlVal (panel, AIT_GETADCINTEGRATIONTIME, value);
839
    }
901
    }
840
    break;
902
    break;
841
  }
903
  }
842
  return 0;
904
  return 0;
843
}
905
}
844
 
906
 
845
int CVICALLBACK SetAdcThresholdCB (int panel, int control, int event,
907
int CVICALLBACK SetAdcThresholdCB (int panel, int control, int event,
846
                                   void *callbackData, int eventData1, int eventData2) {
908
                                   void *callbackData, int eventData1, int eventData2) {
847
  switch (event) {
909
  switch (event) {
848
    case EVENT_COMMIT: {
910
    case EVENT_COMMIT: {
849
      double value;
911
      double value;
850
      GetCtrlVal (panel, AIT_ADCTHRESHOLD, &value);
912
      GetCtrlVal (panel, AIT_ADCTHRESHOLD, &value);
851
      SetThreshold(value);
913
      SetThreshold(value);
852
      value = GetThreshold();
914
      value = GetThreshold();
853
      SetCtrlVal (panel, AIT_GETADCTHRESHOLD, value);
915
      SetCtrlVal (panel, AIT_GETADCTHRESHOLD, value);
854
    }
916
    }
855
    break;
917
    break;
856
  }
918
  }
857
  return 0;
919
  return 0;
858
}
920
}
859
 
921
 
860
int CVICALLBACK SetAdcGainCB (int panel, int control, int event,
922
int CVICALLBACK SetAdcGainCB (int panel, int control, int event,
861
                              void *callbackData, int eventData1, int eventData2) {
923
                              void *callbackData, int eventData1, int eventData2) {
862
  switch (event) {
924
  switch (event) {
863
    case EVENT_COMMIT: {
925
    case EVENT_COMMIT: {
864
      int value;
926
      int value;
865
      GetCtrlVal (panel, AIT_ADCGAIN, &value);
927
      GetCtrlVal (panel, AIT_ADCGAIN, &value);
866
      SetAdcGain(value);
928
      SetAdcGain(value);
867
      int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR);
929
      int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR);
868
 
930
 
869
      value = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) |
931
      value = ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN2) ? 1 : 0) << 1) |
870
              ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0);
932
              ((GetBit(csrDetector, BIT_CSR_DET_ADCGAIN1) ? 1 : 0) << 0);
871
      SetCtrlVal (panel, AIT_GETADCGAIN, value);
933
      SetCtrlVal (panel, AIT_GETADCGAIN, value);
872
    }
934
    }
873
    break;
935
    break;
874
  }
936
  }
875
  return 0;
937
  return 0;
876
}
938
}
877
 
939
 
878
int CVICALLBACK SetAdcSumGainCB (int panel, int control, int event,
940
int CVICALLBACK SetAdcSumGainCB (int panel, int control, int event,
879
                                                                                                                                 void *callbackData, int eventData1, int eventData2) {
941
                                                                                                                                 void *callbackData, int eventData1, int eventData2) {
880
        switch (event) {
942
        switch (event) {
881
                case EVENT_COMMIT:{
943
                case EVENT_COMMIT:{
882
      int value;
944
      int value;
883
      GetCtrlVal (panel, AIT_ADCSUMGAIN, &value);
945
      GetCtrlVal (panel, AIT_ADCSUMGAIN, &value);
884
      SetSumGain(value);
946
      SetSumGain(value);
885
      int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR);
947
      int csrDetector = ReadSD4Register(ADDR_CSR_DETECTOR);
886
                        value =
948
                        value =
887
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) |
949
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN4) ? 1 : 0) << 3) |
888
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) |
950
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN3) ? 1 : 0) << 2) |
889
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) |
951
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN2) ? 1 : 0) << 1) |
890
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0);
952
                        ((GetBit(csrDetector, BIT_CSR_DET_SUMGAIN1) ? 1 : 0) << 0);
891
      SetCtrlVal (panel, AIT_GETADCSUMGAIN, value);
953
      SetCtrlVal (panel, AIT_GETADCSUMGAIN, value);
892
    }
954
    }
893
 
955
 
894
                        break;
956
                        break;
895
        }
957
        }
896
        return 0;
958
        return 0;
897
}
959
}
898
 
960
 
899
int CVICALLBACK SetDiscriminatorTypeCB (int panel, int control, int event,
961
int CVICALLBACK SetDiscriminatorTypeCB (int panel, int control, int event,
900
                                                                                                                                                                void *callbackData, int eventData1, int eventData2) {
962
                                                                                                                                                                void *callbackData, int eventData1, int eventData2) {
901
        switch (event) {
963
        switch (event) {
902
                case EVENT_COMMIT:{
964
                case EVENT_COMMIT:{
903
                                int trgtype;
965
                                int trgtype;
904
                        GetCtrlVal(ait,AIT_TRGTYPE, &trgtype);
966
                        GetCtrlVal(ait,AIT_TRGTYPE, &trgtype);
905
            EnableTrigger(trgtype);
967
            EnableTrigger(trgtype);
906
                }              
968
                }              
907
                        break;
969
                        break;
908
        }
970
        }
909
        return 0;
971
        return 0;
910
}
972
}
911
 
973
 
912
int CVICALLBACK ResetCB (int panel, int control, int event,
974
int CVICALLBACK ResetCB (int panel, int control, int event,
913
                                                                                                 void *callbackData, int eventData1, int eventData2) {
975
                                                                                                 void *callbackData, int eventData1, int eventData2) {
914
        switch (event) {
976
        switch (event) {
915
                case EVENT_COMMIT:
977
                case EVENT_COMMIT:
916
                        ReconfigureDevice() ;
978
                        ReconfigureDevice() ;
917
                        ReconnectDevice();
979
                        ReconnectDevice();
918
                        //ResetDevice() ;
980
                        //ResetDevice() ;
919
                        break;
981
                        break;
920
        }
982
        }
921
        return 0;
983
        return 0;
922
}
984
}
923
 
985
 
924
int CVICALLBACK OpenScanCB (int panel, int control, int event,
986
int CVICALLBACK OpenScanCB (int panel, int control, int event,
925
                                                                                                                void *callbackData, int eventData1, int eventData2) {
987
                                                                                                                void *callbackData, int eventData1, int eventData2) {
926
        switch (event) {
988
        switch (event) {
927
                case EVENT_COMMIT:
989
                case EVENT_COMMIT:
928
                        DisplayPanel (xyscan);
990
                        DisplayPanel (xyscan);
929
                        break;
991
                        break;
930
        }
992
        }
931
        return 0;
993
        return 0;
932
}
994
}
933
 
995
 
934
int CVICALLBACK OpenMainCB (int panel, int control, int event,
996
int CVICALLBACK OpenMainCB (int panel, int control, int event,
935
                                                                                                                void *callbackData, int eventData1, int eventData2) {
997
                                                                                                                void *callbackData, int eventData1, int eventData2) {
936
        switch (event) {
998
        switch (event) {
937
                case EVENT_COMMIT:
999
                case EVENT_COMMIT:
938
                        DisplayPanel (ait);  
1000
                        DisplayPanel (ait);  
939
                        break;
1001
                        break;
940
        }
1002
        }
941
        return 0;
1003
        return 0;
942
}
1004
}
943
 
1005