SDC C-Project CF Review 프로그램
KYH
2021-06-07 fe67777d8335fb6adb3601e5ef1b31ff22ea6792
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
 /*
 * common.h
 *
 * 32-bit Motion Control Device Driver
 * Hardware-specific data structures for the Pmac.
 *
 *
 * This header describes the structures that are shared between
 * the hardware-specific user-mode code and the hardware-specific
 * kernel mode code.
 *
 
HISTORY
 
*/
 
 
#ifndef _COMMON_H_
  #define _COMMON_H_
 
 
#ifdef _OLD_DLL
 
 
#else
// PT_PMAC is the transition marker between PMAC and TURBO do not remove
 
typedef enum { 
  PT_PMAC1 = 1, PT_PMAC2, PT_PMACUL, PT_PMAC,  
  PT_PMAC1T, PT_PMAC2T, PT_PMACUT, PT_UMAC, PT_QMAC 
} PMACDEVICETYPE;
typedef enum {
  PID = 1, ESA, LHB
} PMACFIRMWARETYPE;
// Enumerates where the communications are based from for a PMAC device
typedef enum {LT_UNKNOWN, LT_ISA, LT_SER, LT_ETH, LT_PCI, LT_USB, LT_PCIE, LT_LAST} LOCATIONTYPE;
// Enumerates the different ways a PMAC can communicate
typedef enum { BUS, DPR } ASCIIMODE;
 
#endif
 
///////////////////////////////////////////////////////////////////////////
// Error defines for system
  #define SYS_FATAL_FERR    0X0001
  #define SYS_WARN_FERR     0X0002
  #define SYS_SERVO_ERR     0X0004
  #define SYS_REENTRY_ERR   0X0008
  #define SYS_MEM_CHKSUM    0X0010
  #define SYS_PROM_CHKSUM   0X0020
  #define SYS_RUNTIME_ERR   0X0040
  #define SYS_CIR_RAD_ERR   0X0080
  #define SYS_AMP_FAULT     0X0100
  #define SYS_RING_ERR      0X0200
  #define SYS_RING_IO_ERR   0X0400
 
// Error Defines for communications
  #define ERR_BAUDSEARCH    -27
  #define ERR_VBG_DPRNOTON    -28
// Variable background buffer defines
  #define ERR_VBG_MAXUSERS    -100 // Maximum number of users achieved in Variable Background Data Buffer
  #define ERR_VBG_MAXENTRIES  -101 // Maximum number of entries (>128) in Variable Background Data Buffer
 
// Polled Checksum communication defines
  #define CHECKSUMACKOK   -20   // good acknowlegde checksum
  #define CHECKSUMDATAOK    -21 // good data checksum
  #define CHECKSUMTIMEOUT   -22 // it times out
  #define CHECKSUMDATABAD   -23 // bad data checksum
  #define CHECKSUMACKBAD    -24 // bad command acknowledge checksum
 
/*
 * default settings for port, interrupt and dpram
 */
 
  #define DEF_PCBUSTYPE          0 // ISA, VME etc.
  #define DEF_TYPE               1 // PMAC 1
  #define DEF_PORT             528 // 0x210
  #define DEF_INTERRUPT          0 // No interrupt, make them select!
  #define DEF_FIFO             0x0
  #define DEF_LOCATION           0 // Computer BUS
  #define DEF_TIMEOUT          200
  #define DEF_FLUSHTIMEOUT      20
  #define DEF_DPRROT1ADR     0x400
  #define DEF_DPRROT2ADR     0x400
  #define DEF_DPRROT3ADR       0x0
  #define DEF_DPRROT4ADR       0x0
  #define DEF_DPRROT5ADR       0x0
  #define DEF_DPRROT6ADR       0x0
  #define DEF_DPRROT7ADR       0x0
  #define DEF_DPRROT8ADR       0x0
  #define DEF_DPRROT9ADR       0x0
  #define DEF_DPRROT10ADR       0x0
  #define DEF_DPRROT11ADR       0x0
  #define DEF_DPRROT12ADR       0x0
  #define DEF_DPRROT13ADR       0x0
  #define DEF_DPRROT14ADR       0x0
  #define DEF_DPRROT15ADR       0x0
  #define DEF_DPRROT16ADR       0x0
  #define DEF_DPRVARADR      0xD60
  #define DEF_DPRUSERBUF     0x580
  #define DEF_FBSTART       0x9f00
  #define DEF_FBTIMER       0x9f80
  #define DEF_BAUDRATE       38400
  #define DEF_COMPORT            0 // COM1
  #define DEF_PARITY             0 // No Parity
  #define DEF_RTS_CONTROL        1 // Enabled
  #define DEF_CTS_OUTPUT         1 // Checked
  #define DEF_VMEBASE     0x7FA000 // PMAC's Default VME base address
  #define DEF_VMEDPRBASE  0x700000 // PMAC's Default VME DPR Base Address
  #define DEF_VMEINTERRUPT       7 // PMAC's Default VME Interrupt Level
  #define DEF_VMEHOSTID          0 // VMIC 7686
  #define DEF_VMEAM           0x39 // Address Modifier
  #define DEF_VMEAMDC         0x04 // Address Modifier Dont care
  #define DEF_VMEIRQVECT      0xA1 // VME IRQ Vector
  #define DEF_BUSCHARTIMEOUT    1000
  #define DEF_BUSFLUSHTIMEOUT   10
  #define DEF_VMECHARTIMEOUT    30
  #define DEF_VMEFLUSHTIMEOUT    3
  #define DEF_DPBKTIMEOUT       10
  #define DEF_DPRTTIMEOUT        2
  #define DEF_DPCHARTIMEOUT   1000
  #define DEF_DPFLUSHTIMEOUT    20
  #define DEF_SERCHARTIMEOUT  2000
  #define DEF_SERFLUSHTIMEOUT   30
  #define DEF_SERWRITECONSTANTTIMEOUT 1000
  #define DEF_SERWRITEMULTIPLYERTIMEOUT   0
  #define DEF_SERREADCONSTANTTIMEOUT   30
  #define DEF_SERREADINTERVALTIMEOUT   30 // A VALUE OF 0 indicates interval timeouts are not used
  #define DEF_SERREADCONSTANTTIMEOUTSLOW   30
  #define DEF_SERREADINTERVALTIMEOUTSLOW   30 // A VALUE OF 0 indicates interval timeouts are not used
  #define DEF_SERREADMULTIPLYERTIMEOUT  0
  #define DEF_USBMODE                   0
  #define DEF_IPADDRESS          0xc0065e05
 
  #define DEF_DISABLEIRQ         1
  #define DEF_DISABLEDPRAM       1
 
  #define DEF_USENEWCOMMFEATURES 1 // Use New Firmware features by default
/*
* MEMORY Allocation Related macro,defines
*
*/
 
  #define MAX_DPRBUFFER       (160)
  #define MAX_DPRREADBUFFER   (256)   // this is the maximum string Turbo can return
  #define DPR_READ_COPY_BUFFER_SIZE (MAX_DPRREADBUFFER+4) // +4 for stack protection
/*
* Common defines
*
*/
 
  #define MAXMOTORS           8
  #define MAXMOTORSTURBO      32
  #define MAXLINKS            68               // max number of PLCC links
  #define MINLINKS            41
  #define MAXLDS              27               // max number of PLCC LADDER DIAG links
  #define MINLDS              27               // MIN number of PLCC LADDER DIAG links
  #define MAXSTRLINK          ((8*MAXLINKS)+1) // max string length of links
  #define VERSION_BUFFER_SIZE 100
  #define DATE_BUFFER_SIZE    100
  #define ISR_IPOS            1                /*         IR0 for in position          */
  #define ISR_BREQ            2                /*         IR1 for buffer request       */
  #define ISR_FERROR          4                /*         IR2 for general error        */
  #define ISR_ERROR           8                /*         IR3 for following error      */
  #define ISR_HREQ            16               /*         IR4 for communication        */
  #define ISR_IR5             32               /*         IR5                          */
  #define ISR_IR6             64               /*         IR6                          */
  #define ISR_IR7             128              /*         IR7                          */
  // Motor registers
  #define MTRSTATUS_X_OFS            0x3C // offset to each motor status X word
  #define MTRSTATUS_Y_OFS            0xC0 // offset to each motor status Y word
  #define MTRSTATUS_X_BASE         0x003D // address of mtr 1 first status word
  #define MTRSTATUS_X_BASE_ESA     0x004F // address of mtr 1 first status word
  #define MTRSTATUS_Y_BASE         0x0814 // address of mtr 1 second status word
 
  #define TURBO_MTRSTATUS_OFS        0x80 // offset to each motor status word
  #define TURBO_MTRSTATUS_X_BASE     0xB0 // address of mtr 1 first status word
  #define TURBO_MTRSTATUS_Y_BASE     0xC0 // address of mtr 1 second status word
 
/*
 * Parameter Names:
 *
 * These are the names of Values in the Parameters key (or driver section
 * of the profile) used for communicating configuration information and errors
 * between the kernel and user-mode drivers.
 */
 
  #define PARAM_TYPE        TEXT("PmacType")     // model of PMAC
  #define PARAM_PCBUSTYPE   TEXT("PCBusType")    // bus type isa, pci
  #define PARAM_PORT        TEXT("Port")         // port i/o address
  #define PARAM_INTERRUPT   TEXT("Interrupt")    // interrupt number
  #define PARAM_BUSCHARTIMEOUT  TEXT("BUSCharTimeout")
  #define PARAM_BUSFLUSHTIMEOUT TEXT("BUSFlushTimeout")
  #define PARAM_FIFO        TEXT("DualPortRam")  // DP Ram physical addr
  #define PARAM_ERROR       TEXT("InstallError") // config error/success code (below)
  #define PARAM_DPRROT1     TEXT("DualPortRamRot1")
  #define PARAM_DPRROT2     TEXT("DualPortRamRot2")
  #define PARAM_DPRROT3     TEXT("DualPortRamRot3")
  #define PARAM_DPRROT4     TEXT("DualPortRamRot4")
  #define PARAM_DPRROT5     TEXT("DualPortRamRot5")
  #define PARAM_DPRROT6     TEXT("DualPortRamRot6")
  #define PARAM_DPRROT7     TEXT("DualPortRamRot7")
  #define PARAM_DPRROT8     TEXT("DualPortRamRot8")
  #define PARAM_DPRROT9     TEXT("DualPortRamRot9")
  #define PARAM_DPRROT10     TEXT("DualPortRamRot10")
  #define PARAM_DPRROT11     TEXT("DualPortRamRot11")
  #define PARAM_DPRROT12     TEXT("DualPortRamRot12")
  #define PARAM_DPRROT13     TEXT("DualPortRamRot13")
  #define PARAM_DPRROT14     TEXT("DualPortRamRot14")
  #define PARAM_DPRROT15     TEXT("DualPortRamRot15")
  #define PARAM_DPRROT16     TEXT("DualPortRamRot16")
  #define PARAM_DPRVARADR   TEXT("DualPortRamVar")
  #define PARAM_DPRUSERSIZE TEXT("DualPortRamUserSize")
  #define PARAM_FBSTART     TEXT("FunctionBlockStart")
  #define PARAM_FBTIMER     TEXT("FunctionBlockTimer")
  #define PARAM_PORTNUMBER  TEXT("SerialPortNumber")
  #define PARAM_BAUDRATE    TEXT("SerialBaudrate")
  #define PARAM_PARITY      TEXT("SerialParity")
  #define PARAM_CTS         TEXT("SerialCTSOutput")
  #define PARAM_RTS         TEXT("SerialRTSControl")
  #define PARAM_LOCATION    TEXT("Location")
  #define PARAM_ENUMERATION TEXT("Enumeration")
  #define PARAM_DISABLEDPR  TEXT("DisableDPRAM")
  #define PARAM_DISABLEIRQ  TEXT("DisableIRQ")
  #define PARAM_PCI_SLOT    TEXT("PCISlot")
  #define PARAM_PCI_BUS     TEXT("PCIBus")
  #define PARAM_IPADDRESS   TEXT("IPAddress")
  #define PARAM_USENEWCOMMFEATURES  TEXT("UseNewCommFeatures")
  #define PARAM_USBMODE     TEXT("USBMode")
  #define PARAM_DPRAUTOACTIVE TEXT("DPRAutoActive")
  #define PARAM_DPRRTACTIVE TEXT("DPRRealTimeActive")
  #define PARAM_DPRBGACTIVE TEXT("DPRBackgroundActive")
  #define PARAM_DPRBGPERIOD TEXT("DPRBackgroundPeriod")
  #define PARAM_DPRRTPERIOD TEXT("DPRRealTimePeriod")
  #define PARAM_DPRRTMTRMASK TEXT("DPRRealTimeMtrMask")
  #define PARAM_DPRBGCOORDSYS TEXT("DPRBackgroundCrdSys")
  #define PARAM_DPRNUMMOTORS TEXT("DPRNumMotors")
  #define PARAM_DPRMONITORPERIOD TEXT("DPRMonitorPeriod")
  #define PARAM_ENABLEINTR  TEXT("EnableInterrupts")
 
  #define PARAM_DPBKTIMEOUT    TEXT("DPRBackTimeout")
  #define PARAM_DPRTTIMEOUT    TEXT("DPRRTTimeout")
  #define PARAM_DPCHARTIMEOUT  TEXT("DPRCharTimeout")
  #define PARAM_DPFLUSHTIMEOUT TEXT("DPRFlushTimeout")
 
  #define PARAM_VMEBASE         TEXT("VMEBase")
  #define PARAM_VMEDPRBASE      TEXT("VMEDPRBase")
  #define PARAM_VMEINTERRUPT    TEXT("VMEInterrupt")
  #define PARAM_VMEHOSTID       TEXT("VMEHostID")
  #define PARAM_VMEAM           TEXT("VMEAM")
  #define PARAM_VMEAMDC         TEXT("VMEAMDontCare")
  #define PARAM_VMEIRQVECT      TEXT("VMEIRQVector")
  #define PARAM_VMECHARTIMEOUT  TEXT("VMECharTimeout")
  #define PARAM_VMEFLUSHTIMEOUT TEXT("VMEFlushTimeout")
  #define PARAM_SERWRITEMULTIPLYERTIMEOUT  TEXT("SerWriteMultiplyerTimeout")
  #define PARAM_SERWRITECONSTANTTIMEOUT    TEXT("SerWriteConstantTimeout")
  #define PARAM_SERREADMULTIPLYERTIMEOUT   TEXT("SerReadMultiplyerTimeout")
  #define PARAM_SERREADCONSTANTTIMEOUT     TEXT("SerReadConstantTimeout")
  #define PARAM_SERREADINTERVALTIMEOUT     TEXT("SerReadIntervalTimeout")
  #define PARAM_SERCHARTIMEOUT  TEXT("SerCharTimeout")
  #define PARAM_SERFLUSHTIMEOUT TEXT("SerFlushTimeout")
 
  #ifdef _NC
    #define PARAM_NCTITLE         TEXT("Title")
    #define PARAM_SOURCEPROFILE   TEXT("SourceProfile")
    #define PARAM_TOOLPROFILE     TEXT("ToolProfile")
    #define PARAM_COORDPROFILE    TEXT("CoordProfile")
    #define PARAM_MACHINETYPE     TEXT("MachineType")
    #define PARAM_NOOFTOOLS       TEXT("NoOfTools")
    #define PARAM_NOOFBLOCKS      TEXT("NoOfBlocks")
    #define PARAM_NOOFCOORDSYS    TEXT("NoOfCoordSys")
    #define PARAM_METRICDISPLAY   TEXT("MetricDisplay")
    #define PARAM_LEASTHANDLEINC  TEXT("LeastHandleInc")
    #define PARAM_MAXHANDLEINC    TEXT("MaxHandleInc")
    #define PARAM_LEASTJOGINC     TEXT("LeastJogInc")
    #define PARAM_AXISMOTORMAP    TEXT("AxisMotorMap")
    #define PARAM_AXISMOTORSEL    TEXT("AxisMotorSel")
    #define PARAM_AXISDISPMAP     TEXT("AxisDispMap")
    #define PARAM_MAXRAPIDOVRD    TEXT("MaxRapidOvrd")
    #define PARAM_MAXFEEDOVRD     TEXT("MaxFeedOvrd")
// Axis stuff
    #define PARAM_ISSPINDLE       TEXT("IsSpindle")
    #define PARAM_HASSLAVE        TEXT("HasSlave")
    #define PARAM_ISPHANTOM       TEXT("IsPhantom")
    #define PARAM_DISPLAY         TEXT("Display")
    #define PARAM_DISPLAYSLAVE    TEXT("DisplaySlave")
    #define PARAM_HOMEMODE        TEXT("HomeMode")
    #define PARAM_HOMEPRGNUMBER   TEXT("HomePrgNumber")
    #define PARAM_PRECISION       TEXT("Precision")
    #define PARAM_METRICDISPLAY   TEXT("MetricDisplay")
    #define PARAM_METRICUNITS     TEXT("MetricUnits")
    #define PARAM_PROBEPRGNUMBER  TEXT("ProbePrgNumber")
    #define PARAM_PULSEPERUNIT    TEXT("PulsePerInit")
    #define PARAM_INPOSITIONBAND  TEXT("InpositionBand")
    #define PARAM_MAXRAPID        TEXT("MaxRapid")
    #define PARAM_MAXFEED         TEXT("MaxFeed")
    #define PARAM_FATALFERROR     TEXT("FatalFError")
    #define PARAM_WARNFERROR      TEXT("WarnFError")
    #define PARAM_JOGSPEEDLOW     TEXT("JogSpeedLow")
    #define PARAM_JOGSPEEDMedLow  TEXT("JogSpeedMedLow")
    #define PARAM_JOGSPEEDMed     TEXT("JogSpeedMed")
    #define PARAM_JOGSPEEDMedHigh TEXT("JogSpeedMedHigh")
    #define PARAM_JOGSPEEDHigh    TEXT("JogSpeedHigh")
    #define PARAM_FORMATINCH      TEXT("FormatInch")
    #define PARAM_FORMATMM        TEXT("FormatMM")
  #endif
 
/*
 * Error handling
 *
 * during startup of the kernel-driver, the PARAM_ERROR value is written with
 * one of the values below. These are the IDs of strings in
 * pmac\dll\pmac.rc that are produced in a dialog box by the user-mode
 * driver during configuration if not MC_ERR_OK
 */
 
  #define ERR_OK           0    // no configuration error
  #define ERR_CREATEDEVICE 1001 // failed to create device object
  #define ERR_CONFLICT     1002 // resource conflict
  #define ERR_DETECTFAILED 1003 // could not find hardware
  #define ERR_INTERRUPT    1004 // interrupt did not install
  #define ERR_INTRDETECT   1005 // interrupt did not occur
  #define ERR_BUSTIMEOUT   1006 // timeout during bus read
  #define ERR_DPRTIMEOUT   1007 // timeout during dpram ascii read
  #define ERR_SERTIMEOUT   1008 // timeout during serial ascii rea
  #define ERR_INBOOTSTRAP  1009 // PMAC in bootstrap mode can't load
  #define ERR_CONFIGDRIVER 1010 // Unable to configure driver (in registry perhaps)
  #define ERR_EMPTYBUS     1011 // Continuous characters from bus, No Card!!
  #define ERR_EMPTYDPRAM   1012 // Continuous characters from bus, No Card!!
 
 
#endif //_COMMON_H_