/* * 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_