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

📄 hwdrv_apci2016.c

📁 最新版comedi的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
              }//else if(data[1]==1)           }//elseif(data[1]==0)        }//if(data[3]==1);     else        {        printk("\nSpecified functionality does not exist\n");        return -EINVAL;        }//if else data[3]==1)     }//if else data[3]==0)   return insn->n;}/*+----------------------------------------------------------------------------+| Function   Name   : int i_APCI2016_BitsDigitalOutput                       ||			  (comedi_device *dev,comedi_subdevice *s,               ||                      comedi_insn *insn,lsampl_t *data)                     |+----------------------------------------------------------------------------+| Task              : Read  value  of the selected channel or port           |+----------------------------------------------------------------------------+| Input Parameters  : comedi_device *dev      : Driver handle                ||                     UINT ui_NoOfChannels    : No Of Channels To read       ||                     UINT *data              : Data Pointer to read status  |+----------------------------------------------------------------------------+| Output Parameters :	--													 |+----------------------------------------------------------------------------+| Return Value      : TRUE  : No error occur                                 ||		            : FALSE : Error occur. Return the error          ||			                                                         |+----------------------------------------------------------------------------+*/int i_APCI2016_BitsDigitalOutput(comedi_device *dev,comedi_subdevice *s,comedi_insn *insn,lsampl_t *data) {   UINT ui_Temp;   UINT ui_NoOfChannel;   ui_NoOfChannel=CR_CHAN(insn->chanspec);   if  ((ui_NoOfChannel<0) || (ui_NoOfChannel>15))       {         comedi_error(dev,"Invalid Channel Numbers !!!, Channel Numbers must be between 0 and 15\n");        return -EINVAL;      } // if  ((ui_NoOfChannel<0) || (ui_NoOfChannel>15))   if  ((data[0]!=0) && (data[0]!=1))       {         comedi_error(dev,"Invalid Data[0] value !!!, Data[0] should be 0 or 1\n");        return -EINVAL;      }  // if  ((data[0]!=0) && (data[0]!=1))   ui_Temp=data[0];   *data=inw(devpriv->iobase+APCI2016_DIGITAL_OP_RW);   if  (ui_Temp==0)      {       *data=(*data >> ui_NoOfChannel)&0x1;      } // if  (ui_Temp==0)   else      {      if  (ui_Temp==1)         {         switch (ui_NoOfChannel)	   {           case 2: *data=(*data >>(2*data[1]))&3; 	           break;                  case 4: *data=(*data >>(4*data[1]))&15; 	           break;           case 8: *data=(*data >>(8*data[1]))&255;                     break;           case 15: break;          default:	          comedi_error(dev," chan spec wrong");		  return -EINVAL;   // "sorry channel spec wrong "            }//switch(ui_NoOfChannel)           } // if  (ui_Temp==1)    else       {       printk("\nSpecified channel not supported \n");       } // else if  (ui_Temp==1)    } // if  (ui_Temp==0)    return insn->n;}/*+----------------------------------------------------------------------------+| Function   Name   : int i_APCI2016_ConfigWatchdog                          ||			  (comedi_device *dev,comedi_subdevice *s,               ||                      comedi_insn *insn,lsampl_t *data)                     |+----------------------------------------------------------------------------+| Task              : Configures The Watchdog                                |+----------------------------------------------------------------------------+| Input Parameters  :   comedi_device *dev      : Driver handle              ||                     comedi_subdevice *s,   :pointer to subdevice structure ||                     comedi_insn *insn      :pointer to insn structure      ||                     lsampl_t *data          : Data Pointer to read status  |    +----------------------------------------------------------------------------+| Output Parameters :	--													 |+----------------------------------------------------------------------------+| Return Value      : TRUE  : No error occur                                 ||		            : FALSE : Error occur. Return the error          ||			                                                         |+----------------------------------------------------------------------------+*/int i_APCI2016_ConfigWatchdog(comedi_device *dev,comedi_subdevice *s,comedi_insn *insn,lsampl_t *data) {      if  (data[0]==0)      {      //Disable the watchdog      outw(0x0,devpriv->i_IobaseAddon+ APCI2016_WATCHDOG_ENABLEDISABLE);      //Loading the Reload value      outw(data[1],devpriv->i_IobaseAddon+APCI2016_WATCHDOG_RELOAD_VALUE);      data[1]=data[1]>>16;      outw(data[1],devpriv->i_IobaseAddon+APCI2016_WATCHDOG_RELOAD_VALUE+2);      }   else      {      printk("\nThe input parameters are wrong\n");      }   return insn->n;}/*+----------------------------------------------------------------------------+| Function   Name   : int i_APCI2016_StartStopWriteWatchdog                  ||			  (comedi_device *dev,comedi_subdevice *s,               ||                      comedi_insn *insn,lsampl_t *data)                     |+----------------------------------------------------------------------------+| Task              : Start / Stop The Watchdog                              |+----------------------------------------------------------------------------+| Input Parameters  : comedi_device *dev      : Driver handle                ||                     comedi_subdevice *s,   :pointer to subdevice structure ||                     comedi_insn *insn      :pointer to insn structure      ||                     lsampl_t *data          : Data Pointer to read status  |+----------------------------------------------------------------------------+| Output Parameters :	--													 |+----------------------------------------------------------------------------+| Return Value      : TRUE  : No error occur                                 ||		            : FALSE : Error occur. Return the error          ||			                                                         |+----------------------------------------------------------------------------+*/int i_APCI2016_StartStopWriteWatchdog(comedi_device *dev,comedi_subdevice *s,comedi_insn *insn,lsampl_t *data){   switch(data[0])      {       case 0://stop the watchdog                outw(0x0,devpriv->i_IobaseAddon+ APCI2016_WATCHDOG_ENABLEDISABLE);//disable the watchdog                 break;       case 1://start the watchdog               outw(0x0001,devpriv->i_IobaseAddon+ APCI2016_WATCHDOG_ENABLEDISABLE);               break;       case 2://Software trigger                outw(0x0201,devpriv->i_IobaseAddon+ APCI2016_WATCHDOG_ENABLEDISABLE);              break;       default:printk("\nSpecified functionality does not exist\n");	       return -EINVAL;       }// switch(data[0])    return insn->n;} /*+----------------------------------------------------------------------------+| Function   Name   : int i_APCI2016_ReadWatchdog                            ||			  (comedi_device *dev,comedi_subdevice *s,               ||                      comedi_insn *insn,lsampl_t *data)                     |+----------------------------------------------------------------------------+| Task              : Read The Watchdog                                      |+----------------------------------------------------------------------------+| Input Parameters  : comedi_device *dev      : Driver handle                ||                     comedi_subdevice *s,   :pointer to subdevice structure | |                     comedi_insn *insn      :pointer to insn structure      ||                     lsampl_t *data          : Data Pointer to read status  |+----------------------------------------------------------------------------+| Output Parameters :	--													 |+----------------------------------------------------------------------------+| Return Value      : TRUE  : No error occur                                 ||		            : FALSE : Error occur. Return the error          ||			                                                         |+----------------------------------------------------------------------------+*/int i_APCI2016_ReadWatchdog(comedi_device *dev,comedi_subdevice *s,comedi_insn *insn,lsampl_t *data){     udelay(5);      data[0]= inw(devpriv->i_IobaseAddon+APCI2016_WATCHDOG_STATUS)&0x1;    return insn->n;}/*+----------------------------------------------------------------------------+| Function   Name   : int i_APCI2016_Reset(comedi_device *dev)               |                                                       |+----------------------------------------------------------------------------+| Task              :resets all the registers                                |+----------------------------------------------------------------------------+| Input Parameters  : comedi_device *dev+----------------------------------------------------------------------------+| Output Parameters :	--													 |+----------------------------------------------------------------------------+| Return Value      :                                                        ||			                                                         |+----------------------------------------------------------------------------+*/	  INT i_APCI2016_Reset(comedi_device *dev) {  outw(0x0,devpriv->iobase+APCI2016_DIGITAL_OP);   // Resets the digital output channels  outw(0x0,devpriv->i_IobaseAddon+ APCI2016_WATCHDOG_ENABLEDISABLE);  outw(0x0,devpriv->i_IobaseAddon+APCI2016_WATCHDOG_RELOAD_VALUE);  outw(0x0,devpriv->i_IobaseAddon+APCI2016_WATCHDOG_RELOAD_VALUE+2);  return 0;}

⌨️ 快捷键说明

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