Developer Application Interface (ARC API)
v3.6.2
ARC, Inc. GenII/III Application Interface
ArcDefs.h
Go to the documentation of this file.
1
// +------------------------------------------------------------------------------------------------------------------+
2
// | FILE: ArcDefs.h |
3
// +------------------------------------------------------------------------------------------------------------------+
4
// | PURPOSE: This file defines the standard ARC board, command and reply definitions. |
5
// | |
6
// | AUTHOR: Scott Streit DATE: ? |
7
// | |
8
// | Copyright Astronomical Research Cameras, Inc. All rights reserved. |
9
// +------------------------------------------------------------------------------------------------------------------+
12
#pragma once
13
14
15
#ifdef __cplusplus
16
namespace
arc
17
{
18
#endif
19
20
21
// +----------------------------------------------------------------------------------------
22
// | Define board id's
23
// +----------------------------------------------------------------------------------------
24
constexpr
auto
PCI_ID =
static_cast<
std::uint32_t
>
( 1 );
25
constexpr
auto
TIM_ID =
static_cast<
std::uint32_t
>
( 2 );
26
constexpr
auto
UTIL_ID =
static_cast<
std::uint32_t
>
( 3 );
27
constexpr
auto
SMALLCAM_DLOAD_ID =
static_cast<
std::uint32_t
>
( 3 );
28
29
30
// +----------------------------------------------------------------------------------------
31
// | Memory Location Id Constants
32
// | R_MEM (Bit 20) ROM
33
// | P_MEM (Bit 21) DSP program memory space
34
// | X_MEM (Bit 22) DSP X memory space
35
// | Y_MEM (Bit 23) DSP Y memory space
36
// +----------------------------------------------------------------------------------------
37
constexpr
auto
P_MEM =
static_cast<
std::uint32_t
>
( 0x100000 );
38
constexpr
auto
X_MEM =
static_cast<
std::uint32_t
>
( 0x200000 );
39
constexpr
auto
Y_MEM =
static_cast<
std::uint32_t
>
( 0x400000 );
40
constexpr
auto
R_MEM =
static_cast<
std::uint32_t
>
( 0x800000 );
41
42
43
// +----------------------------------------------------------------------------------------
44
// | Define controller/PCI replies
45
// +----------------------------------------------------------------------------------------
46
constexpr
auto
TOUT =
static_cast<
std::uint32_t
>
( 0x544F5554 );
// Timeout
47
constexpr
auto
ROUT =
static_cast<
std::uint32_t
>
( 0x524F5554 );
// Readout
48
constexpr
auto
HERR =
static_cast<
std::uint32_t
>
( 0x48455252 );
// Header Error
49
constexpr
auto
DON =
static_cast<
std::uint32_t
>
( 0x00444F4E );
// Done
50
constexpr
auto
ERR =
static_cast<
std::uint32_t
>
( 0x00455252 );
// Error
51
constexpr
auto
SYR =
static_cast<
std::uint32_t
>
( 0x00535952 );
// System reset
52
constexpr
auto
RST =
static_cast<
std::uint32_t
>
( 0x00525354 );
// reset
53
constexpr
auto
CNR =
static_cast<
std::uint32_t
>
( 0x00434E52 );
// Controller Not Ready
54
55
56
// +----------------------------------------------------------------------------------------
57
// | Define controller/manual commands
58
// +----------------------------------------------------------------------------------------
59
constexpr
auto
DBC =
static_cast<
std::uint32_t
>
( 0x00444243 );
// Download Boot Code
60
constexpr
auto
TDL =
static_cast<
std::uint32_t
>
( 0x0054444C );
// Test Data Link
61
constexpr
auto
RDM =
static_cast<
std::uint32_t
>
( 0x0052444D );
// ReaD Memory
62
constexpr
auto
WRM =
static_cast<
std::uint32_t
>
( 0x0057524D );
// WRite Memory
63
constexpr
auto
SEX =
static_cast<
std::uint32_t
>
( 0x00534558 );
// Start EXposure
64
constexpr
auto
SET =
static_cast<
std::uint32_t
>
( 0x00534554 );
// Set Exposure Time
65
constexpr
auto
PEX =
static_cast<
std::uint32_t
>
( 0x00504558 );
// Pause EXposure
66
constexpr
auto
REX =
static_cast<
std::uint32_t
>
( 0x00524558 );
// Resume EXposure
67
constexpr
auto
RET =
static_cast<
std::uint32_t
>
( 0x00524554 );
// Read Elapsed Time
68
constexpr
auto
PON =
static_cast<
std::uint32_t
>
( 0x00504F4E );
// Power ON
69
constexpr
auto
POF =
static_cast<
std::uint32_t
>
( 0x00504F46 );
// Power OFf
70
constexpr
auto
RDI =
static_cast<
std::uint32_t
>
( 0x00524449 );
// ReaD Image
71
constexpr
auto
SOS =
static_cast<
std::uint32_t
>
( 0x00534F53 );
// Select Output Source
72
constexpr
auto
MPP =
static_cast<
std::uint32_t
>
( 0x004D5050 );
// Multi-Pinned Phase mode
73
constexpr
auto
DCA =
static_cast<
std::uint32_t
>
( 0x00444341 );
// Download CoAdder
74
constexpr
auto
SNF =
static_cast<
std::uint32_t
>
( 0x00534E46 );
// Set Number of Frames
75
constexpr
auto
FPB =
static_cast<
std::uint32_t
>
( 0x00465042 );
// Set the Frames-Per-Buffer for coadds
76
constexpr
auto
VID =
static_cast<
std::uint32_t
>
( 0x00564944 );
// mnemonic that means VIDeo board
77
constexpr
auto
SBN =
static_cast<
std::uint32_t
>
( 0x0053424E );
// Set Bias Number
78
constexpr
auto
SBV =
static_cast<
std::uint32_t
>
( 0x00534256 );
// Set Bias Voltage
79
constexpr
auto
SGN =
static_cast<
std::uint32_t
>
( 0x0053474E );
// Set GaiN
80
constexpr
auto
SMX =
static_cast<
std::uint32_t
>
( 0x00534D58 );
// Select MultipleXer
81
constexpr
auto
CLK =
static_cast<
std::uint32_t
>
( 0x00434C4B );
// mnemonic that means CLocK driver board
82
constexpr
auto
SSS =
static_cast<
std::uint32_t
>
( 0x00535353 );
// Set Subarray Sizes
83
constexpr
auto
SSP =
static_cast<
std::uint32_t
>
( 0x00535350 );
// Set Subarray Positions
84
constexpr
auto
LGN =
static_cast<
std::uint32_t
>
( 0x004C474E );
// Set Low Gain
85
constexpr
auto
HGN =
static_cast<
std::uint32_t
>
( 0x0048474E );
// Set High Gain
86
constexpr
auto
SRM =
static_cast<
std::uint32_t
>
( 0x0053524D );
// Set Readout Mode - either CDS or single
87
constexpr
auto
CDS =
static_cast<
std::uint32_t
>
( 0x00434453 );
// Correlated Double Sampling
88
constexpr
auto
SFS =
static_cast<
std::uint32_t
>
( 0x00534653 );
// Send Fowler Sample
89
constexpr
auto
SPT =
static_cast<
std::uint32_t
>
( 0x00535054 );
// Set Pass Through mode
90
constexpr
auto
LDA =
static_cast<
std::uint32_t
>
( 0x004C4441 );
// LoaD Application
91
constexpr
auto
RCC =
static_cast<
std::uint32_t
>
( 0x00524343 );
// Read Controller Configuration
92
constexpr
auto
CLR =
static_cast<
std::uint32_t
>
( 0x00434C52 );
// CleaR Array
93
constexpr
auto
IDL =
static_cast<
std::uint32_t
>
( 0x0049444C );
// IDLe
94
constexpr
auto
STP =
static_cast<
std::uint32_t
>
( 0x00535450 );
// SToP idle
95
constexpr
auto
CSH =
static_cast<
std::uint32_t
>
( 0x00435348 );
// close SHutter
96
constexpr
auto
OSH =
static_cast<
std::uint32_t
>
( 0x004F5348 );
// open SHutter
97
constexpr
auto
SUR =
static_cast<
std::uint32_t
>
( 0x00535552 );
// Set Up the Ramp mode
98
constexpr
auto
MH1 =
static_cast<
std::uint32_t
>
( 0x004D4831 );
// Move NIRIM Filter Wheel 1 Home
99
constexpr
auto
MM1 =
static_cast<
std::uint32_t
>
( 0x004D4D31 );
// Move NIRIM Filter Wheel 1
100
constexpr
auto
MH2 =
static_cast<
std::uint32_t
>
( 0x004D4832 );
// Move NIRIM Filter Wheel 2 Home
101
constexpr
auto
MM2 =
static_cast<
std::uint32_t
>
( 0x004D4D32 );
// Move NIRIM Filter Wheel 2
102
constexpr
auto
SBS =
static_cast<
std::uint32_t
>
( 0x00534253 );
// Set Hardware Byte Swapping
103
constexpr
auto
TBS =
static_cast<
std::uint32_t
>
( 0x00544253 );
// Test for Hardware Byte Swapping
104
constexpr
auto
RNC =
static_cast<
std::uint32_t
>
( 0x00524E43 );
// Read Number of Channels for Hawaii RG array
105
constexpr
auto
THG =
static_cast<
std::uint32_t
>
( 0x00544847 );
// Test High Gain - Utility Board Temperature
106
constexpr
auto
SID =
static_cast<
std::uint32_t
>
( 0x00534944 );
// System ID - FastCam
107
constexpr
auto
JDL =
static_cast<
std::uint32_t
>
( 0x004A444C );
// Jump to DownLoad for C based ARC-22 systems
108
constexpr
auto
XMT =
static_cast<
std::uint32_t
>
( 0x00584D54 );
// Set/Clear fiber optic 2x transmitter mode
109
constexpr
auto
ABR =
static_cast<
std::uint32_t
>
( 0x00414252 );
// ABort Readout & Exposure
110
constexpr
auto
STM =
static_cast<
std::uint32_t
>
( 0x0053544D );
// Set Trigger Mode
111
112
constexpr
auto
CDT =
static_cast<
std::uint32_t
>
( 0x00434454 );
// SmallCam control detector temperature
113
constexpr
auto
RDT =
static_cast<
std::uint32_t
>
( 0x00524454 );
// SmallCam read detector temperature
114
constexpr
auto
RHV =
static_cast<
std::uint32_t
>
( 0x00524856 );
// SmallCam read heater voltage
115
constexpr
auto
RDC =
static_cast<
std::uint32_t
>
( 0x00524443 );
// SmallCam read detector current ( actually, DN )
116
117
constexpr
auto
RSC =
static_cast<
std::uint32_t
>
( 0x00525343 );
// FastCam Only - ReSet Controller
118
119
120
// +----------------------------------------------------------------------------------------
121
// | Controller Configuration Bit Definitions
122
// +----------------------------------------------------------------------------------------
123
// |
124
// | BIT #'s FUNCTION
125
// | 2,1,0 Video Processor
126
// | 000 ARC-41 Dual Readout CCD
127
// | 001 CCD Gen I
128
// | 010 ARC-42 Dual Readout IR
129
// | 011 ARC-44 Four Readout IR Coadder ( obsolete )
130
// | 100 ARC-45 Dual Readout CCD
131
// | 101 ARC-46 8-Channel IR
132
// | 110 ARC-48 8-Channel CCD
133
// | 111 ARC-47 4-Channel CCD
134
// |
135
// | 4,3 Timing Board
136
// | 00 Rev. 4, Gen II
137
// | 01 Gen I
138
// | 10 Rev. 5, Gen III, 250 MHz
139
// |
140
// | 6,5 Utility Board
141
// | 00 No utility board
142
// | 01 Utility Rev. 3
143
// |
144
// | 7 Shutter
145
// | 0 No shutter support
146
// | 1 Yes shutter support
147
// |
148
// | 9,8 Temperature readout
149
// | 00 No temperature readout
150
// | 01 Polynomial Diode calibration
151
// | 10 Linear temperature sensor calibration
152
// |
153
// | 10 Subarray readout
154
// | 0 Not supported
155
// | 1 Yes supported
156
// |
157
// | 11 Binning
158
// | 0 Not supported
159
// | 1 Yes supported
160
// |
161
// | 12 Split-Serial readout
162
// | 0 Not supported
163
// | 1 Yes supported
164
// |
165
// | 13 Split-Parallel readout
166
// | 0 Not supported
167
// | 1 Yes supported
168
// |
169
// | 14 MPP = Inverted parallel clocks
170
// | 0 Not supported
171
// | 1 Yes supported
172
// |
173
// | 16,15 Clock Driver Board
174
// | 00 Rev. 3
175
// | 11 No clock driver board (Gen I)
176
// |
177
// | 19,18,17 Special implementations
178
// | 000 Somewhere else
179
// | 001 Mount Laguna Observatory
180
// | 010 NGST Aladdin
181
// | 011 2x FO Transmitter
182
// | xxx Other
183
// +----------------------------------------------------------------------------------------
184
constexpr
auto
CCDVIDREV3B =
static_cast<
std::uint32_t
>
( 0x000000 );
// CCD Video Processor Rev. 3
185
constexpr
auto
ARC41 =
static_cast<
std::uint32_t
>
( 0x000000 );
186
constexpr
auto
VIDGENI =
static_cast<
std::uint32_t
>
( 0x000001 );
// CCD Video Processor Gen I
187
constexpr
auto
IRREV4 =
static_cast<
std::uint32_t
>
( 0x000002 );
// IR Video Processor Rev. 4
188
constexpr
auto
ARC42 =
static_cast<
std::uint32_t
>
( 0x000002 );
189
constexpr
auto
COADDER =
static_cast<
std::uint32_t
>
( 0x000003 );
// IR Coadder
190
constexpr
auto
ARC44 =
static_cast<
std::uint32_t
>
( 0x000003 );
191
constexpr
auto
CCDVIDREV5 =
static_cast<
std::uint32_t
>
( 0x000004 );
// Differential input CCD video Rev. 5
192
constexpr
auto
ARC45 =
static_cast<
std::uint32_t
>
( 0x000004 );
193
constexpr
auto
IR8X =
static_cast<
std::uint32_t
>
( 0x000005 );
// 8x IR
194
constexpr
auto
ARC46 =
static_cast<
std::uint32_t
>
( 0x000005 );
// 8-channel IR video board
195
constexpr
auto
ARC48 =
static_cast<
std::uint32_t
>
( 0x000006 );
// 8-channel CCD video board
196
constexpr
auto
ARC47 =
static_cast<
std::uint32_t
>
( 0x000007 );
// 4-channel CCD video board
197
constexpr
auto
TIMREV4 =
static_cast<
std::uint32_t
>
( 0x000000 );
// Timing Revision 4 = 50 MHz
198
constexpr
auto
ARC20 =
static_cast<
std::uint32_t
>
( 0x000000 );
199
constexpr
auto
TIMGENI =
static_cast<
std::uint32_t
>
( 0x000008 );
// Timing Gen I = 40 MHz
200
constexpr
auto
TIMREV5 =
static_cast<
std::uint32_t
>
( 0x000010 );
// Timing Revision 5 = 250 MHz
201
constexpr
auto
ARC22 =
static_cast<
std::uint32_t
>
( 0x000010 );
202
constexpr
auto
UTILREV3 =
static_cast<
std::uint32_t
>
( 0x000020 );
// Utility Rev. 3 supported
203
constexpr
auto
ARC50 =
static_cast<
std::uint32_t
>
( 0x000020 );
204
constexpr
auto
SHUTTER_CC =
static_cast<
std::uint32_t
>
( 0x000080 );
// Shutter supported
205
constexpr
auto
TEMP_SIDIODE =
static_cast<
std::uint32_t
>
( 0x000100 );
// Polynomial calibration
206
constexpr
auto
TEMP_LINEAR =
static_cast<
std::uint32_t
>
( 0x000200 );
// Linear calibration
207
constexpr
auto
SUBARRAY =
static_cast<
std::uint32_t
>
( 0x000400 );
// Subarray readout supported
208
constexpr
auto
BINNING =
static_cast<
std::uint32_t
>
( 0x000800 );
// Binning supported
209
constexpr
auto
SPLIT_SERIAL =
static_cast<
std::uint32_t
>
( 0x001000 );
// Split serial supported
210
constexpr
auto
SPLIT_PARALLEL =
static_cast<
std::uint32_t
>
( 0x002000 );
// Split parallel supported
211
constexpr
auto
MPP_CC =
static_cast<
std::uint32_t
>
( 0x004000 );
// Inverted clocks supported
212
constexpr
auto
ARC32 =
static_cast<
std::uint32_t
>
( 0x008000 );
// CCD & IR clock driver board
213
constexpr
auto
CLKDRVGENI =
static_cast<
std::uint32_t
>
( 0x018000 );
// No clock driver board - Gen I
214
constexpr
auto
MLO =
static_cast<
std::uint32_t
>
( 0x020000 );
// Set if Mount Laguna Observatory
215
constexpr
auto
NGST =
static_cast<
std::uint32_t
>
( 0x040000 );
// NGST Aladdin implementation
216
constexpr
auto
FO_2X_TRANSMITR =
static_cast<
std::uint32_t
>
( 0x060000 );
// 2x FO transmitters
217
constexpr
auto
CONT_RD =
static_cast<
std::uint32_t
>
( 0x100000 );
// continuous readout implemented
218
constexpr
auto
SEL_READ_SPEED =
static_cast<
std::uint32_t
>
( 0x200000 );
// Selectable readout speeds
219
220
#define ALL_READOUTS ( SPLIT_SERIAL | SPLIT_PARALLEL )
221
222
// +----------------------------------------------------------------------------------------
223
// | 'SOS' Array Amplifier Parameters
224
// +----------------------------------------------------------------------------------------
225
constexpr
auto
AMP_0 =
static_cast<
std::uint32_t
>
( 0x5F5F43 );
// Ascii __C amp 0
226
constexpr
auto
AMP_1 =
static_cast<
std::uint32_t
>
( 0x5F5F44 );
// Ascii __D amp 1
227
constexpr
auto
AMP_2 =
static_cast<
std::uint32_t
>
( 0x5F5F42 );
// Ascii __B amp 2
228
constexpr
auto
AMP_3 =
static_cast<
std::uint32_t
>
( 0x5F5F41 );
// Ascii __A amp 3
229
constexpr
auto
AMP_L =
static_cast<
std::uint32_t
>
( 0x5F5F4C );
// Ascii __L left amp
230
constexpr
auto
AMP_R =
static_cast<
std::uint32_t
>
( 0x5F5F52 );
// Ascii __R left amp
231
constexpr
auto
AMP_LR =
static_cast<
std::uint32_t
>
( 0x5F4C52 );
// Ascii _LR right two amps
232
constexpr
auto
AMP_ALL =
static_cast<
std::uint32_t
>
( 0x414C4C );
// Ascii ALL four amps (quad)
233
234
235
// +-----------------------------------------------------------
236
// | Define continuous readout modes
237
// +-----------------------------------------------------------
238
constexpr
auto
CR_WRITE =
static_cast<
std::uint32_t
>
( 0 );
239
constexpr
auto
CR_COADD =
static_cast<
std::uint32_t
>
( 1 );
240
constexpr
auto
CR_DEBUG =
static_cast<
std::uint32_t
>
( 2 );
241
242
243
// +----------------------------------------------------------------------------------------
244
// A valid start address must be less than 0x4000 for
245
// the load DSP file in timming or utility boards.
246
// +----------------------------------------------------------------------------------------
247
constexpr
auto
MAX_DSP_START_LOAD_ADDR =
static_cast<
std::uint32_t
>
( 0x4000 );
248
249
250
// +-----------------------------------------------------------
251
// | Shutter Position Constants
252
// +-----------------------------------------------------------
253
constexpr
auto
OPEN_SHUTTER_POSITION =
static_cast<
std::uint32_t
>
( ( 1 << 11 ) );
254
constexpr
auto
CLOSED_SHUTTER_POSITION =
static_cast<
std::uint32_t
>
( ~( 1 << 11 ) );
255
256
257
// +----------------------------------------------------------------------------
258
// | Macro that returns 'true' if the parameter indicates the ARC-12
259
// | ( SmallCam ) controller; returns 'false' otherwise.
260
// +----------------------------------------------------------------------------
261
constexpr
auto
IS_ARC12( std::uint32_t
id
) {
return
( ( ( (
id
& 0xFF0000 ) >> 16 ) ==
'S'
&& ( (
id
& 0x00FF00 ) >> 8 ) ==
'C'
) ?
true
:
false
); }
262
263
264
// +-----------------------------------------------------------
265
// | SmallCam Synthetic Image Commands & Arguments
266
// +-----------------------------------------------------------
267
constexpr
auto
SIM =
static_cast<
std::uint32_t
>
( 0x0053494D );
268
269
enum class
syntheticImage_t : std::uint32_t
270
{
271
SYN_IMG_DISABLE = 0,
272
SYN_IMG_FIXED,
273
SYN_IMG_RAMP,
274
SYN_IMG_RESET
275
};
276
277
#ifdef __cplusplus
278
}
// end namespace
279
#endif
CArcDevice
ArcDefs.h
Generated by
1.9.2