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; }
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; }