⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 addi_common.h

📁 最新版comedi的源码
💻 H
📖 第 1 页 / 共 2 页
字号:
      /*********************/      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 + -