📄 addi_common.h
字号:
/*********************/ struct { BYTE b_DigitalInit; BYTE b_ChannelAMode; BYTE b_ChannelBMode; BYTE b_OutputMemoryEnabled; DWORD dw_OutputMemory; }s_DigitalIOInfo; /*********************/ /* 82X54 timer infos */ /*********************/ struct { struct { BYTE b_82X54Init; BYTE b_InputClockSelection; BYTE b_InputClockLevel; BYTE b_OutputLevel; BYTE b_HardwareGateLevel; DWORD dw_ConfigurationWord; }s_82X54TimerInfo [3]; BYTE b_InterruptMask; }s_82X54ModuleInfo; /*********************/ /* Chronometer infos */ /*********************/ struct { BYTE b_ChronoInit; BYTE b_InterruptMask; BYTE b_PCIInputClock; BYTE b_TimingUnit; BYTE b_CycleMode; double d_TimingInterval; DWORD dw_ConfigReg; }s_ChronoModuleInfo; /***********************/ /* Pulse encoder infos */ /***********************/ struct { struct { BYTE b_PulseEncoderInit; }s_PulseEncoderInfo [4]; DWORD dw_SetRegister; DWORD dw_ControlRegister; DWORD dw_StatusRegister; }s_PulseEncoderModuleInfo; /********************/ /* Tor conter infos */ /********************/ struct { struct { BYTE b_TorCounterInit; BYTE b_TimingUnit; BYTE b_InterruptEnable; double d_TimingInterval; ULONG ul_RealTimingInterval; }s_TorCounterInfo [2]; BYTE b_PCIInputClock; }s_TorCounterModuleInfo; /*************/ /* PWM infos */ /*************/ struct { struct { BYTE b_PWMInit; BYTE b_TimingUnit; BYTE b_InterruptEnable; double d_LowTiming; double d_HighTiming; ULONG ul_RealLowTiming; ULONG ul_RealHighTiming; }s_PWMInfo [2]; BYTE b_ClockSelection; }s_PWMModuleInfo; /*************/ /* ETM infos */ /*************/ struct { struct { BYTE b_ETMEnable; BYTE b_ETMInterrupt; }s_ETMInfo [2]; BYTE b_ETMInit; BYTE b_TimingUnit; BYTE b_ClockSelection; double d_TimingInterval; ULONG ul_Timing; }s_ETMModuleInfo; /*************/ /* CDA infos */ /*************/ struct { BYTE b_CDAEnable; BYTE b_CDAInterrupt; BYTE b_CDAInit; BYTE b_FctSelection; BYTE b_CDAReadFIFOOverflow; }s_CDAModuleInfo; }str_ModuleInfo;// Private structure for the addi_apci3120 drivertypedef struct{ INT iobase; INT i_IobaseAmcc; // base+size for AMCC chip INT i_IobaseAddon; //addon base address INT i_IobaseReserved; DWORD dw_AiBase; struct pcilst_struct *amcc; // ptr too AMCC data UINT master; // master capable BYTE allocated; // we have blocked card BYTE b_ValidDriver;// driver is ok BYTE b_AiContinuous; // we do unlimited AI BYTE b_AiInitialisation; UINT ui_AiActualScan; //how many scans we finished UINT ui_AiBufferPtr;// data buffer ptr in samples UINT ui_AiNbrofChannels;// how many channels is measured UINT ui_AiScanLength;// Length of actual scanlist UINT ui_AiActualScanPosition; // position in actual scan PUINT pui_AiChannelList; // actual chanlist UINT ui_AiChannelList[32]; // actual chanlist BYTE b_AiChannelConfiguration[32]; // actual chanlist UINT ui_AiReadData[32]; DWORD dw_AiInitialised; UINT ui_AiTimer0; //Timer Constant for Timer0 UINT ui_AiTimer1; //Timer constant for Timer1 UINT ui_AiFlags; UINT ui_AiDataLength; sampl_t *AiData; // Pointer to sample data UINT ui_AiNbrofScans;// number of scans to do USHORT us_UseDma; // To use Dma or not BYTE b_DmaDoubleBuffer;// we can use double buffering UINT ui_DmaActualBuffer; // which buffer is used now //*UPDATE-0.7.57->0.7.68 //ULONG ul_DmaBufferVirtual[2];// pointers to begin of DMA buffer sampl_t *ul_DmaBufferVirtual[2];// pointers to begin of DMA buffer ULONG ul_DmaBufferHw[2]; // hw address of DMA buff UINT ui_DmaBufferSize[2];// size of dma buffer in bytes UINT ui_DmaBufferUsesize[2];// which size we may now used for transfer UINT ui_DmaBufferSamples[2];// size in samples UINT ui_DmaBufferPages[2];// number of pages in buffer BYTE b_DigitalOutputRegister; // Digital Output Register BYTE b_OutputMemoryStatus; BYTE b_AnalogInputChannelNbr; // Analog input channel Nbr BYTE b_AnalogOutputChannelNbr;// Analog input Output Nbr BYTE b_TimerSelectMode; // Contain data written at iobase + 0C BYTE b_ModeSelectRegister; // Contain data written at iobase + 0E USHORT us_OutputRegister; // Contain data written at iobase + 0 BYTE b_InterruptState; BYTE b_TimerInit; // Specify if InitTimerWatchdog was load BYTE b_TimerStarted; // Specify if timer 2 is running or not BYTE b_Timer2Mode; // Specify the timer 2 mode BYTE b_Timer2Interrupt;//Timer2 interrupt enable or disable BYTE b_AiCyclicAcquisition;// indicate cyclic acquisition BYTE b_InterruptMode; // eoc eos or dma BYTE b_EocEosInterrupt; // Enable disable eoc eos interrupt UINT ui_EocEosConversionTime; BYTE b_EocEosConversionTimeBase; BYTE b_SingelDiff; BYTE b_ExttrigEnable; // To enable or disable external trigger struct task_struct *tsk_Current; // Pointer to the current process boardtype *ps_BoardInfo; // Hardware board infos for 1710 struct { UINT ui_Address; // Board address UINT ui_FlashAddress; BYTE b_InterruptNbr; // Board interrupt number BYTE b_SlotNumber; // PCI slot number BYTE b_BoardVersion; DWORD dw_MolduleConfiguration [4]; // Module configuration }s_BoardInfos; /*******************/ /* Interrupt infos */ /*******************/ struct { ULONG ul_InterruptOccur; /* 0 : No interrupt occur */ /* > 0 : Interrupt occur */ UINT ui_Read; /* Read FIFO */ UINT ui_Write; /* Write FIFO */ struct { BYTE b_OldModuleMask; ULONG ul_OldInterruptMask; /* Interrupt mask */ ULONG ul_OldCounterLatchValue; /* Interrupt counter value */ }s_FIFOInterruptParameters [APCI1710_SAVE_INTERRUPT]; }s_InterruptParameters; str_ModuleInfo s_ModuleInfo [4]; ULONG ul_TTLPortConfiguration[10]; } addi_private;static unsigned short pci_list_builded=0; /* set to 1 when list of card is known */ //Function declarationsstatic int i_ADDI_Attach(comedi_device *dev,comedi_devconfig *it);static int i_ADDI_Detach(comedi_device *dev);static int i_ADDI_Reset(comedi_device *dev);static irqreturn_t v_ADDI_Interrupt(int irq, void *d, struct pt_regs *regs);static int i_ADDIDATA_InsnReadEeprom(comedi_device *dev,comedi_subdevice *s,comedi_insn *insn,lsampl_t *data);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -