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

📄 apci1710_82x54.c

📁 最新版comedi的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
		 } // if ((b_TimerNbr >= 0) && (b_TimerNbr <= 2))	      }	   else	      {	      /************************************/	      /* The module is not a TIMER module */	      /************************************/	      DPRINTK("The module is not a TIMER module\n");	      i_ReturnValue = -4;	      }	   }	else	   {	   /***********************/	   /* Module number error */	   /***********************/	   DPRINTK("Module number error\n");	   i_ReturnValue = -2;	   }	return (i_ReturnValue);	}	/*+----------------------------------------------------------------------------+| Function Name     : _INT_     i_APCI1710_GetTimerOutputLevel               ||                                       (BYTE_     b_BoardHandle,            ||                                        BYTE_     b_ModulNbr,               ||                                        BYTE_     b_TimerNbr,               ||                                        PBYTE_   pb_OutputLevel)            |+----------------------------------------------------------------------------+| Task              : Return the output signal level (pb_OutputLevel) from   ||                     selected digital timer (b_TimerNbr) from selected timer||                     module (b_ModulNbr).                                   |+----------------------------------------------------------------------------+| Input Parameters  : BYTE_   b_BoardHandle     : Handle of board            ||                                                 APCI-1710                  ||                     BYTE_   b_ModulNbr        : Selected module number     ||                                                 (0 to 3)                   ||                     BYTE_   b_TimerNbr        : Timer number to test       ||                                                 (0 to 2)                   |+----------------------------------------------------------------------------+| Output Parameters : PBYTE_ pb_OutputLevel     : Output signal level        ||                                                 0 : The output is low      ||                                                 1 : The output is high     |+----------------------------------------------------------------------------+| Return Value      : 0: No error                                            ||                    -1: The handle parameter of the board is wrong          ||                    -2: Module selection wrong                              ||                    -3: Timer selection wrong                               ||                    -4: The module is not a TIMER module                    ||                    -5: Timer not initialised see function                  ||                        "i_APCI1710_InitTimer"                              |+----------------------------------------------------------------------------+*/INT   i_APCI1710_GetTimerOutputLevel  (comedi_device *dev,					 BYTE   b_ModulNbr,					 BYTE   b_TimerNbr,					 PBYTE  pb_OutputLevel)	{	INT    i_ReturnValue = 0;	DWORD dw_TimerStatus;			/**************************/	/* Test the module number */	/**************************/	if (b_ModulNbr < 4)	   {	   /***********************/	   /* Test if 82X54 timer */	   /***********************/	   if ((devpriv->		s_BoardInfos.		dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF0000UL) == APCI1710_82X54_TIMER)	      {	      /*************************/	      /* Test the timer number */	      /*************************/	      if (b_TimerNbr <= 2)		 {		 /*****************************/		 /* Test if timer initialised */		 /*****************************/		 if (devpriv->		     s_ModuleInfo [b_ModulNbr].		     s_82X54ModuleInfo.		     s_82X54TimerInfo  [b_TimerNbr].		     b_82X54Init == 1)		    {		    /*************************/		    /* Latch the timer value */		    /*************************/		        outl((2 << b_TimerNbr) | 0xE0,devpriv->s_BoardInfos.			    ui_Address + 12 + (64 * b_ModulNbr));		    /*************************/		    /* Read the timer status */		    /*************************/		    			 dw_TimerStatus=inl(devpriv->s_BoardInfos.			   ui_Address + 16 + (b_TimerNbr * 4) + (64 * b_ModulNbr));		    *pb_OutputLevel = (BYTE) (((dw_TimerStatus >> 7) & 1) ^ devpriv->									    s_ModuleInfo [b_ModulNbr].									    s_82X54ModuleInfo.									    s_82X54TimerInfo  [b_TimerNbr].									    b_OutputLevel);		    }		 else		    {		    /**************************************/		    /* Timer not initialised see function */		    /**************************************/			DPRINTK("Timer not initialised see function\n");		    i_ReturnValue = -5;		    }		 }	      else		 {		 /*************************/		 /* Timer selection wrong */		 /*************************/                 DPRINTK("Timer selection wrong\n");		 i_ReturnValue = -3;		 } // if ((b_TimerNbr >= 0) && (b_TimerNbr <= 2))	      }	   else	      {	      /************************************/	      /* The module is not a TIMER module */	      /************************************/	      DPRINTK("The module is not a TIMER module\n");	      i_ReturnValue = -4;	      }	   }	else	   {	   /***********************/	   /* Module number error */	   /***********************/	   DPRINTK("Module number error\n");	   i_ReturnValue = -2;	   }	return (i_ReturnValue);	}/*+----------------------------------------------------------------------------+| Function Name     : _INT_     i_APCI1710_GetTimerProgressStatus            ||                                       (BYTE_     b_BoardHandle,            ||                                        BYTE_     b_ModulNbr,               ||                                        BYTE_     b_TimerNbr,               ||                                        PBYTE_   pb_TimerStatus)            |+----------------------------------------------------------------------------+| Task              : Return the progress status (pb_TimerStatus) from       ||                     selected digital timer (b_TimerNbr) from selected timer||                     module (b_ModulNbr).                                   |+----------------------------------------------------------------------------+| Input Parameters  : BYTE_   b_BoardHandle     : Handle of board            ||                                                 APCI-1710                  ||                     BYTE_   b_ModulNbr        : Selected module number     ||                                                 (0 to 3)                   ||                     BYTE_   b_TimerNbr        : Timer number to test       ||                                                 (0 to 2)                   |+----------------------------------------------------------------------------+| Output Parameters : PBYTE_ pb_TimerStatus     : Output signal level        ||                                                 0 : Timer not in progress  ||                                                 1 : Timer in progress      |+----------------------------------------------------------------------------+| Return Value      : 0: No error                                            ||                    -1: The handle parameter of the board is wrong          ||                    -2: Module selection wrong                              ||                    -3: Timer selection wrong                               ||                    -4: The module is not a TIMER module                    ||                    -5: Timer not initialised see function                  ||                        "i_APCI1710_InitTimer"                              |+----------------------------------------------------------------------------+*/INT   i_APCI1710_GetTimerProgressStatus       (comedi_device *dev,						 BYTE   b_ModulNbr,						 BYTE   b_TimerNbr,						 PBYTE pb_TimerStatus)	{	INT    i_ReturnValue = 0;	DWORD dw_TimerStatus;		/**************************/	/* Test the module number */	/**************************/	if (b_ModulNbr < 4)	   {	   /***********************/	   /* Test if 82X54 timer */	   /***********************/	   if ((devpriv->		s_BoardInfos.		dw_MolduleConfiguration [b_ModulNbr] & 0xFFFF0000UL) == APCI1710_82X54_TIMER)	      {	      /*************************/	      /* Test the timer number */	      /*************************/	      if (b_TimerNbr <= 2)		 {		 /*****************************/		 /* Test if timer initialised */		 /*****************************/		 if (devpriv->		     s_ModuleInfo [b_ModulNbr].		     s_82X54ModuleInfo.		     s_82X54TimerInfo  [b_TimerNbr].		     b_82X54Init == 1)		    {		    /*************************/		    /* Latch the timer value */		    /*************************/		    			 outl((2 << b_TimerNbr) | 0xE0,devpriv->s_BoardInfos.			    ui_Address + 12 + (64 * b_ModulNbr));		    /*************************/		    /* Read the timer status */		    /*************************/		    			 dw_TimerStatus=inl(devpriv->s_BoardInfos.			   ui_Address + 16 + (b_TimerNbr * 4) + (64 * b_ModulNbr));		    *pb_TimerStatus = (BYTE) ((dw_TimerStatus) >> 8) & 1;                      printk("ProgressStatus : %d",*pb_TimerStatus);		    }		 else		    {		    /**************************************/		    /* Timer not initialised see function */		    /**************************************/		    i_ReturnValue = -5;		    }		 }	      else		 {		 /*************************/		 /* Timer selection wrong */		 /*************************/		 i_ReturnValue = -3;		 } // if ((b_TimerNbr >= 0) && (b_TimerNbr <= 2))	      }	   else	      {	      /************************************/	      /* The module is not a TIMER module */	      /************************************/	      i_ReturnValue = -4;	      }	   }	else	   {	   /***********************/	   /* Module number error */	   /***********************/	   i_ReturnValue = -2;	   }	return (i_ReturnValue);	}/*+----------------------------------------------------------------------------+| Function Name     : _INT_     i_APCI1710_WriteTimerValue                   ||                                       (BYTE_   b_BoardHandle,              ||                                        BYTE_   b_ModulNbr,                 ||                                        BYTE_   b_TimerNbr,                 ||                                        ULONG_ ul_WriteValue)               |+----------------------------------------------------------------------------+| Task              : Write the value (ul_WriteValue) into the selected timer||                     (b_TimerNbr) from selected timer module (b_ModulNbr).  ||                     The action in depend of the time mode selection.       ||                     See timer mode description table.                      |+----------------------------------------------------------------------------+| Input Parameters  : BYTE_   b_BoardHandle     : Handle of board            ||                                                 APCI-1710                  ||                     BYTE_   b_ModulNbr        : Selected module number     ||                                                 (0 to 3)                   ||                     BYTE_   b_TimerNbr        : Timer number to write      ||                                                 (0 to 2)                   ||                     ULONG_ ul_WriteValue      : Value to write             |+----------------------------------------------------------------------------+| Output Parameters : -                                                      |+-----------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -