Esempio n. 1
0
static pwr_tStatus IoCardInit(
    io_tCtx ctx, io_sAgent* ap, io_sRack* rp, io_sCard* cp)
{
  pwr_sClass_Ssab_BaseDoCard* op;
  io_sLocal* local;
  int i, j;

  op = (pwr_sClass_Ssab_BaseDoCard*)cp->op;
  local = calloc(1, sizeof(*local));
  cp->Local = local;

  errh_Info("Init of do card '%s'", cp->Name);

  local->Address[0] = op->RegAddress;
  local->Address[1] = op->RegAddress + 2;
  local->Qbus_fp = ((io_sRackLocal*)(rp->Local))->Qbus_fp;
  local->FirstScan = 1;

  /* Init filter for Po signals */
  for (i = 0; i < 2; i++) {
    /* The filter handles one 16-bit word */
    for (j = 0; j < 16; j++) {
      if (cp->chanlist[i * 16 + j].SigClass == pwr_cClass_Po)
        local->Filter[i].sop[j] = cp->chanlist[i * 16 + j].sop;
    }
    io_InitPoFilter(local->Filter[i].sop, &local->Filter[i].Found,
        local->Filter[i].Data, ctx->ScanTime);
  }

  local->ErrReset = 1.0 / ctx->ScanTime + 0.5;
  if (local->ErrReset < 2)
    local->ErrReset = 2;

  return 1;
}
Esempio n. 2
0
static pwr_tStatus IoCardInit (
  io_tCtx	ctx,
  io_sAgent	*ap,
  io_sRack	*rp,
  io_sCard	*cp  
) 
{
  pwr_sClass_Do_HVDO32	*op = (pwr_sClass_Do_HVDO32 *) cp->op;
  io_sLocal 		*local;
  int			i, j;
  io_sRackLocal		*r_local = (io_sRackLocal *)(rp->Local);
  int 			words = op->MaxNoOfChannels <= 16 ? 1 : 2;

  local = calloc( 1, sizeof(*local));
  cp->Local = local;

  errh_Info( "Init of do card '%s'", cp->Name);

  local->Address[0] = op->RegAddress;
  local->Address[1] = op->RegAddress + 2;
  local->Qbus_fp = r_local->Qbus_fp;

  /* Init filter for Po signals */
  for ( i = 0; i < words; i++)
  {
    /* The filter handles one 16-bit word */
    for ( j = 0; j < 16; j++)
    {
      if ( cp->chanlist[i*16+j].SigClass == pwr_cClass_Po)
        local->Filter[i].sop[j] = cp->chanlist[i*16+j].sop;
    }
    io_InitPoFilter( local->Filter[i].sop, &local->Filter[i].Found,
		local->Filter[i].Data, ctx->ScanTime);
  }

  return 1;
}