Commit 04959b88 authored by claes's avatar claes

InitialValue introduced for ai, ao, di, do, ii and io. Used when warm restarting

parent 8c602222
...@@ -114,6 +114,7 @@ pwr_tStatus io_init_ai_signals( ...@@ -114,6 +114,7 @@ pwr_tStatus io_init_ai_signals(
char buf[140]; char buf[140];
pwr_tUInt32 sig_count = 0; pwr_tUInt32 sig_count = 0;
pwr_tClassId class; pwr_tClassId class;
pwr_sClass_IvArea *iarea_op;
/* Get pointer to area-object */ /* Get pointer to area-object */
sts = gdh_NameToObjid( "pwrNode-active-io-ai", &area_objid); sts = gdh_NameToObjid( "pwrNode-active-io-ai", &area_objid);
...@@ -122,6 +123,13 @@ pwr_tStatus io_init_ai_signals( ...@@ -122,6 +123,13 @@ pwr_tStatus io_init_ai_signals(
sts = gdh_ObjidToPointer( area_objid, (void *) &area_op); sts = gdh_ObjidToPointer( area_objid, (void *) &area_op);
if (EVEN(sts)) return sts; if (EVEN(sts)) return sts;
/* Get pointer to area-object */
sts = gdh_NameToObjid( "pwrNode-active-io-ai_init", &area_objid);
if (EVEN(sts)) return sts;
sts = gdh_ObjidToPointer( area_objid, (void *) &iarea_op);
if (EVEN(sts)) return sts;
// Check SigChanCon and put signal in channels SigChanCon // Check SigChanCon and put signal in channels SigChanCon
sts = gdh_GetClassList( pwr_cClass_Ai, &sig_objid); sts = gdh_GetClassList( pwr_cClass_Ai, &sig_objid);
while (ODD(sts)) while (ODD(sts))
...@@ -152,6 +160,9 @@ pwr_tStatus io_init_ai_signals( ...@@ -152,6 +160,9 @@ pwr_tStatus io_init_ai_signals(
} }
gdh_StoreRtdbPointer( (pwr_tUInt32 *) &sig_op->ActualValue, &area_op->Value[sig_count]); gdh_StoreRtdbPointer( (pwr_tUInt32 *) &sig_op->ActualValue, &area_op->Value[sig_count]);
sig_op->ValueIndex = sig_count; sig_op->ValueIndex = sig_count;
gdh_StoreRtdbPointer( (pwr_tUInt32 *)&iarea_op->Value[sig_count], &sig_op->InitialValue);
sig_count++; sig_count++;
sts = gdh_GetNextObject( sig_objid, &sig_objid); sts = gdh_GetNextObject( sig_objid, &sig_objid);
...@@ -180,6 +191,7 @@ pwr_tStatus io_init_ao_signals( ...@@ -180,6 +191,7 @@ pwr_tStatus io_init_ao_signals(
char buf[140]; char buf[140];
pwr_tUInt32 sig_count = 0; pwr_tUInt32 sig_count = 0;
pwr_tClassId class; pwr_tClassId class;
pwr_sClass_IvArea *iarea_op;
/* Get pointer to area-object */ /* Get pointer to area-object */
sts = gdh_NameToObjid( "pwrNode-active-io-ao", &area_objid); sts = gdh_NameToObjid( "pwrNode-active-io-ao", &area_objid);
...@@ -188,6 +200,13 @@ pwr_tStatus io_init_ao_signals( ...@@ -188,6 +200,13 @@ pwr_tStatus io_init_ao_signals(
sts = gdh_ObjidToPointer( area_objid, (void *) &area_op); sts = gdh_ObjidToPointer( area_objid, (void *) &area_op);
if (EVEN(sts)) return sts; if (EVEN(sts)) return sts;
/* Get pointer to area-object */
sts = gdh_NameToObjid( "pwrNode-active-io-ao_init", &area_objid);
if (EVEN(sts)) return sts;
sts = gdh_ObjidToPointer( area_objid, (void *) &iarea_op);
if (EVEN(sts)) return sts;
// Check SigChanCon and put signal in channels SigChanCon // Check SigChanCon and put signal in channels SigChanCon
sts = gdh_GetClassList( pwr_cClass_Ao, &sig_objid); sts = gdh_GetClassList( pwr_cClass_Ao, &sig_objid);
while (ODD(sts)) while (ODD(sts))
...@@ -218,6 +237,9 @@ pwr_tStatus io_init_ao_signals( ...@@ -218,6 +237,9 @@ pwr_tStatus io_init_ao_signals(
} }
gdh_StoreRtdbPointer( (pwr_tUInt32 *) &sig_op->ActualValue, &area_op->Value[sig_count]); gdh_StoreRtdbPointer( (pwr_tUInt32 *) &sig_op->ActualValue, &area_op->Value[sig_count]);
sig_op->ValueIndex = sig_count; sig_op->ValueIndex = sig_count;
gdh_StoreRtdbPointer( (pwr_tUInt32 *)&iarea_op->Value[sig_count], &sig_op->InitialValue);
sig_count++; sig_count++;
sts = gdh_GetNextObject( sig_objid, &sig_objid); sts = gdh_GetNextObject( sig_objid, &sig_objid);
...@@ -245,6 +267,7 @@ pwr_tStatus io_init_di_signals( ...@@ -245,6 +267,7 @@ pwr_tStatus io_init_di_signals(
char buf[140]; char buf[140];
pwr_tUInt32 sig_count = 0; pwr_tUInt32 sig_count = 0;
pwr_tClassId class; pwr_tClassId class;
pwr_sClass_IvArea *iarea_op;
/* Get pointer to area-object */ /* Get pointer to area-object */
sts = gdh_NameToObjid( "pwrNode-active-io-di", &area_objid); sts = gdh_NameToObjid( "pwrNode-active-io-di", &area_objid);
...@@ -253,6 +276,13 @@ pwr_tStatus io_init_di_signals( ...@@ -253,6 +276,13 @@ pwr_tStatus io_init_di_signals(
sts = gdh_ObjidToPointer( area_objid, (void *) &area_op); sts = gdh_ObjidToPointer( area_objid, (void *) &area_op);
if (EVEN(sts)) return sts; if (EVEN(sts)) return sts;
/* Get pointer to area-object */
sts = gdh_NameToObjid( "pwrNode-active-io-di_init", &area_objid);
if (EVEN(sts)) return sts;
sts = gdh_ObjidToPointer( area_objid, (void *) &iarea_op);
if (EVEN(sts)) return sts;
// Check SigChanCon and put signal in channels SigChanCon // Check SigChanCon and put signal in channels SigChanCon
sts = gdh_GetClassList( pwr_cClass_Di, &sig_objid); sts = gdh_GetClassList( pwr_cClass_Di, &sig_objid);
while (ODD(sts)) while (ODD(sts))
...@@ -283,6 +313,9 @@ pwr_tStatus io_init_di_signals( ...@@ -283,6 +313,9 @@ pwr_tStatus io_init_di_signals(
} }
gdh_StoreRtdbPointer( (pwr_tUInt32 *) &sig_op->ActualValue, &area_op->Value[sig_count]); gdh_StoreRtdbPointer( (pwr_tUInt32 *) &sig_op->ActualValue, &area_op->Value[sig_count]);
sig_op->ValueIndex = sig_count; sig_op->ValueIndex = sig_count;
gdh_StoreRtdbPointer( (pwr_tUInt32 *)&iarea_op->Value[sig_count], &sig_op->InitialValue);
sig_count++; sig_count++;
sts = gdh_GetNextObject( sig_objid, &sig_objid); sts = gdh_GetNextObject( sig_objid, &sig_objid);
...@@ -311,6 +344,7 @@ pwr_tStatus io_init_do_signals( ...@@ -311,6 +344,7 @@ pwr_tStatus io_init_do_signals(
char buf[140]; char buf[140];
pwr_tUInt32 sig_count = 0; pwr_tUInt32 sig_count = 0;
pwr_tClassId class; pwr_tClassId class;
pwr_sClass_IvArea *iarea_op;
/* Get pointer to area-object */ /* Get pointer to area-object */
sts = gdh_NameToObjid( "pwrNode-active-io-do", &area_objid); sts = gdh_NameToObjid( "pwrNode-active-io-do", &area_objid);
...@@ -319,6 +353,13 @@ pwr_tStatus io_init_do_signals( ...@@ -319,6 +353,13 @@ pwr_tStatus io_init_do_signals(
sts = gdh_ObjidToPointer( area_objid, (void *) &area_op); sts = gdh_ObjidToPointer( area_objid, (void *) &area_op);
if (EVEN(sts)) return sts; if (EVEN(sts)) return sts;
/* Get pointer to area-object */
sts = gdh_NameToObjid( "pwrNode-active-io-do_init", &area_objid);
if (EVEN(sts)) return sts;
sts = gdh_ObjidToPointer( area_objid, (void *) &iarea_op);
if (EVEN(sts)) return sts;
// Check SigChanCon and put signal in channels SigChanCon // Check SigChanCon and put signal in channels SigChanCon
sts = gdh_GetClassList( pwr_cClass_Do, &sig_objid); sts = gdh_GetClassList( pwr_cClass_Do, &sig_objid);
while (ODD(sts)) while (ODD(sts))
...@@ -349,6 +390,9 @@ pwr_tStatus io_init_do_signals( ...@@ -349,6 +390,9 @@ pwr_tStatus io_init_do_signals(
} }
gdh_StoreRtdbPointer( (pwr_tUInt32 *) &sig_op->ActualValue, &area_op->Value[sig_count]); gdh_StoreRtdbPointer( (pwr_tUInt32 *) &sig_op->ActualValue, &area_op->Value[sig_count]);
sig_op->ValueIndex = sig_count; sig_op->ValueIndex = sig_count;
gdh_StoreRtdbPointer( (pwr_tUInt32 *)&iarea_op->Value[sig_count], &sig_op->InitialValue);
sig_count++; sig_count++;
sts = gdh_GetNextObject( sig_objid, &sig_objid); sts = gdh_GetNextObject( sig_objid, &sig_objid);
...@@ -487,6 +531,7 @@ io_init_av_signals ( ...@@ -487,6 +531,7 @@ io_init_av_signals (
pwr_tInt32 av_count = 0; pwr_tInt32 av_count = 0;
pwr_sClass_IvArea *iarea_op; pwr_sClass_IvArea *iarea_op;
/* Get pointer to area-object */ /* Get pointer to area-object */
sts = gdh_NameToObjid( "pwrNode-active-io-av", &area_objid); sts = gdh_NameToObjid( "pwrNode-active-io-av", &area_objid);
if (EVEN(sts)) return sts; if (EVEN(sts)) return sts;
...@@ -621,6 +666,7 @@ pwr_tStatus io_init_ii_signals( ...@@ -621,6 +666,7 @@ pwr_tStatus io_init_ii_signals(
char buf[140]; char buf[140];
pwr_tUInt32 sig_count = 0; pwr_tUInt32 sig_count = 0;
pwr_tClassId class; pwr_tClassId class;
pwr_sClass_IvArea *iarea_op;
// Get pointer to area-object // Get pointer to area-object
sts = gdh_NameToObjid( "pwrNode-active-io-ii", &area_objid); sts = gdh_NameToObjid( "pwrNode-active-io-ii", &area_objid);
...@@ -629,6 +675,13 @@ pwr_tStatus io_init_ii_signals( ...@@ -629,6 +675,13 @@ pwr_tStatus io_init_ii_signals(
sts = gdh_ObjidToPointer( area_objid, (void *) &area_op); sts = gdh_ObjidToPointer( area_objid, (void *) &area_op);
if (EVEN(sts)) return sts; if (EVEN(sts)) return sts;
/* Get pointer to area-object */
sts = gdh_NameToObjid( "pwrNode-active-io-ii_init", &area_objid);
if (EVEN(sts)) return sts;
sts = gdh_ObjidToPointer( area_objid, (void *) &iarea_op);
if (EVEN(sts)) return sts;
// Check SigChanCon and put signal in channels SigChanCon // Check SigChanCon and put signal in channels SigChanCon
sts = gdh_GetClassList( pwr_cClass_Ii, &sig_objid); sts = gdh_GetClassList( pwr_cClass_Ii, &sig_objid);
while (ODD(sts)) while (ODD(sts))
...@@ -659,6 +712,9 @@ pwr_tStatus io_init_ii_signals( ...@@ -659,6 +712,9 @@ pwr_tStatus io_init_ii_signals(
} }
gdh_StoreRtdbPointer( (pwr_tUInt32 *) &sig_op->ActualValue, &area_op->Value[sig_count]); gdh_StoreRtdbPointer( (pwr_tUInt32 *) &sig_op->ActualValue, &area_op->Value[sig_count]);
sig_op->ValueIndex = sig_count; sig_op->ValueIndex = sig_count;
gdh_StoreRtdbPointer( (pwr_tUInt32 *)&iarea_op->Value[sig_count], &sig_op->InitialValue);
sig_count++; sig_count++;
sts = gdh_GetNextObject( sig_objid, &sig_objid); sts = gdh_GetNextObject( sig_objid, &sig_objid);
...@@ -687,6 +743,7 @@ pwr_tStatus io_init_io_signals( ...@@ -687,6 +743,7 @@ pwr_tStatus io_init_io_signals(
char buf[140]; char buf[140];
pwr_tUInt32 sig_count = 0; pwr_tUInt32 sig_count = 0;
pwr_tClassId class; pwr_tClassId class;
pwr_sClass_IvArea *iarea_op;
// Get pointer to area-object // Get pointer to area-object
sts = gdh_NameToObjid( "pwrNode-active-io-io", &area_objid); sts = gdh_NameToObjid( "pwrNode-active-io-io", &area_objid);
...@@ -695,6 +752,13 @@ pwr_tStatus io_init_io_signals( ...@@ -695,6 +752,13 @@ pwr_tStatus io_init_io_signals(
sts = gdh_ObjidToPointer( area_objid, (void *) &area_op); sts = gdh_ObjidToPointer( area_objid, (void *) &area_op);
if (EVEN(sts)) return sts; if (EVEN(sts)) return sts;
/* Get pointer to area-object */
sts = gdh_NameToObjid( "pwrNode-active-io-io_init", &area_objid);
if (EVEN(sts)) return sts;
sts = gdh_ObjidToPointer( area_objid, (void *) &iarea_op);
if (EVEN(sts)) return sts;
// Check SigChanCon and put signal in channels SigChanCon // Check SigChanCon and put signal in channels SigChanCon
sts = gdh_GetClassList( pwr_cClass_Io, &sig_objid); sts = gdh_GetClassList( pwr_cClass_Io, &sig_objid);
while (ODD(sts)) while (ODD(sts))
...@@ -725,6 +789,9 @@ pwr_tStatus io_init_io_signals( ...@@ -725,6 +789,9 @@ pwr_tStatus io_init_io_signals(
} }
gdh_StoreRtdbPointer( (pwr_tUInt32 *) &sig_op->ActualValue, &area_op->Value[sig_count]); gdh_StoreRtdbPointer( (pwr_tUInt32 *) &sig_op->ActualValue, &area_op->Value[sig_count]);
sig_op->ValueIndex = sig_count; sig_op->ValueIndex = sig_count;
gdh_StoreRtdbPointer( (pwr_tUInt32 *)&iarea_op->Value[sig_count], &sig_op->InitialValue);
sig_count++; sig_count++;
sts = gdh_GetNextObject( sig_objid, &sig_objid); sts = gdh_GetNextObject( sig_objid, &sig_objid);
...@@ -1284,6 +1351,7 @@ static pwr_tStatus io_init_card( ...@@ -1284,6 +1351,7 @@ static pwr_tStatus io_init_card(
cp->chanlist = (io_sChannel *) calloc( maxchan, sizeof(io_sChannel)); cp->chanlist = (io_sChannel *) calloc( maxchan, sizeof(io_sChannel));
cp->ChanListSize = maxchan; cp->ChanListSize = maxchan;
cp->Class = class; cp->Class = class;
cp->Local = NULL;
cp->Objid = objid; cp->Objid = objid;
strcpy( cp->Name, cname); strcpy( cp->Name, cname);
if ( CardRead != NULL) if ( CardRead != NULL)
...@@ -1561,6 +1629,7 @@ static pwr_tStatus io_init_rack( ...@@ -1561,6 +1629,7 @@ static pwr_tStatus io_init_rack(
/* Treat this rack in this process */ /* Treat this rack in this process */
rp = calloc( 1, sizeof(io_sRack)); rp = calloc( 1, sizeof(io_sRack));
rp->Local = NULL;
rp->Class = class; rp->Class = class;
rp->Objid = objid; rp->Objid = objid;
strcpy( rp->Name, rname); strcpy( rp->Name, rname);
...@@ -1675,6 +1744,7 @@ static pwr_tStatus io_init_agent( ...@@ -1675,6 +1744,7 @@ static pwr_tStatus io_init_agent(
/* Treat this agent in this process */ /* Treat this agent in this process */
ap = calloc( 1, sizeof(io_sAgent)); ap = calloc( 1, sizeof(io_sAgent));
ap->Class = class; ap->Class = class;
ap->Local = NULL;
ap->Objid = objid; ap->Objid = objid;
strcpy( ap->Name, aname); strcpy( ap->Name, aname);
ap->Process = process; ap->Process = process;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment