EXPORT TIMESTAMP sync_microturbine(OBJECT *obj, TIMESTAMP t1, PASSCONFIG pass) { TIMESTAMP t2 = TS_NEVER; microturbine *my = OBJECTDATA(obj,microturbine); try { switch (pass) { case PC_PRETOPDOWN: t2 = my->presync(obj->clock,t1); break; case PC_BOTTOMUP: t2 = my->sync(obj->clock,t1); break; case PC_POSTTOPDOWN: t2 = my->postsync(obj->clock,t1); break; default: GL_THROW("invalid pass request (%d)", pass); break; } if (pass==clockpass) obj->clock = t1; } SYNC_CATCHALL(microturbine); return t2; }
EXPORT TIMESTAMP sync_house_a(OBJECT *obj, TIMESTAMP t0, PASSCONFIG pass) { try { house *my = OBJECTDATA(obj,house); TIMESTAMP t1 = TS_NEVER; if (obj->clock <= ROUNDOFF) obj->clock = t0; //set the object clock if it has not been set yet switch (pass) { case PC_PRETOPDOWN: t1 = my->presync(obj->clock, t0); break; case PC_BOTTOMUP: t1 = my->sync(obj->clock, t0); obj->clock = t0; break; default: gl_error("house::sync- invalid pass configuration"); t1 = TS_INVALID; // serious error in exec.c } return t1; } SYNC_CATCHALL(house_a); }
EXPORT TIMESTAMP sync_irrigation_controller(OBJECT *obj, TIMESTAMP t1, PASSCONFIG pass) { TIMESTAMP t2 = TS_NEVER; irrigation_controller *my = OBJECTDATA(obj,irrigation_controller); try { switch (pass) { case PC_PRETOPDOWN: t2 = my->presync(obj->clock,t1); //obj->clock = t1; break; case PC_BOTTOMUP: t2 = my->sync(obj->clock, t1); //obj->clock = t1; break; case PC_POSTTOPDOWN: t2 = my->postsync(obj->clock,t1); obj->clock = t1; break; default: gl_error("invalid pass request (%d)", pass); return TS_INVALID; break; } return t2; } SYNC_CATCHALL(irrigation_controller); }
EXPORT TIMESTAMP sync_stubauction(OBJECT *obj, TIMESTAMP t1, PASSCONFIG pass) { TIMESTAMP t2 = TS_NEVER; stubauction *my = OBJECTDATA(obj,stubauction); try { switch (pass) { case PC_PRETOPDOWN: t2 = my->presync(obj->clock,t1); break; case PC_POSTTOPDOWN: t2 = my->postsync(obj->clock,t1); break; default: //GL_THROW("invalid pass request (%d)", pass); gl_error("invalid pass request (%d)", pass); t2 = TS_INVALID; break; } if (pass==clockpass) obj->clock = t1; return t2; } SYNC_CATCHALL(stubauction); }
EXPORT TIMESTAMP sync_refrigerator(OBJECT *obj, TIMESTAMP t0, PASSCONFIG pass) { try { refrigerator *my = OBJECTDATA(obj,refrigerator); TIMESTAMP t1 = TS_NEVER; switch (pass) { case PC_PRETOPDOWN: t1 = my->presync(obj->clock, t0); break; case PC_BOTTOMUP: t1 = my->sync(obj->clock, t0); obj->clock = t0; break; case PC_POSTTOPDOWN: t1 = my->postsync(obj->clock, t0); break; default: gl_error("refrigerator::sync- invalid pass configuration"); t1 = TS_INVALID; // serious error in exec.c } return t1; } SYNC_CATCHALL(refrigerator); }
EXPORT TIMESTAMP sync_plc(OBJECT *obj, TIMESTAMP t0) { try { TIMESTAMP t1 = OBJECTDATA(obj,plc)->sync(obj->clock,t0); obj->clock = t0; return t1; } SYNC_CATCHALL(plc); }
EXPORT TIMESTAMP sync_microwave(OBJECT *obj, TIMESTAMP t0) { try { microwave *my = OBJECTDATA(obj, microwave); TIMESTAMP t2 = my->sync(obj->clock, t0); obj->clock = t0; return t2; } SYNC_CATCHALL(microwave); }
EXPORT TIMESTAMP sync_plugload(OBJECT *obj, TIMESTAMP t0) { try { plugload *my = OBJECTDATA(obj, plugload); TIMESTAMP t1 = my->sync(obj->clock, t0); obj->clock = t0; return t1; } SYNC_CATCHALL(plugload); }
EXPORT TIMESTAMP sync_occupantload(OBJECT *obj, TIMESTAMP t0) { try { occupantload *my = OBJECTDATA(obj, occupantload); TIMESTAMP t1 = my->sync(obj->clock, t0); obj->clock = t0; return t1; } SYNC_CATCHALL(occupantload); }
EXPORT TIMESTAMP sync_voltdump(OBJECT *obj, TIMESTAMP t1, PASSCONFIG pass) { try { voltdump *my = OBJECTDATA(obj,voltdump); TIMESTAMP rv; obj->clock = t1; rv = my->runtime > t1 ? my->runtime : TS_NEVER; return rv; } SYNC_CATCHALL(voltdump); }
/** * Sync is called when the clock needs to advance on the bottom-up pass (PC_BOTTOMUP) * * @param obj the object we are sync'ing * @param t0 this objects current timestamp * @param pass the current pass for this sync call * @return t1, where t1>t0 on success, t1=t0 for retry, t1<t0 on failure */ EXPORT TIMESTAMP sync_series_reactor(OBJECT *obj, TIMESTAMP t0, PASSCONFIG pass) { try { series_reactor *pObj = OBJECTDATA(obj,series_reactor); TIMESTAMP t1 = TS_NEVER; switch (pass) { case PC_PRETOPDOWN: return pObj->presync(t0); case PC_BOTTOMUP: return pObj->sync(t0); case PC_POSTTOPDOWN: t1 = pObj->postsync(t0); obj->clock = t0; return t1; default: throw "invalid pass request"; } } SYNC_CATCHALL(series_reactor); }
/** * Sync is called when the clock needs to advance on the bottom-up pass (PC_BOTTOMUP) * * @param obj the object we are sync'ing * @param t0 this objects current timestamp * @param pass the current pass for this sync call * @return t1, where t1>t0 on success, t1=t0 for retry, t1<t0 on failure */ EXPORT TIMESTAMP sync_triplex_node(OBJECT *obj, TIMESTAMP t0, PASSCONFIG pass) { try { triplex_node *pObj = OBJECTDATA(obj,triplex_node); TIMESTAMP t1; switch (pass) { case PC_PRETOPDOWN: return pObj->presync(t0); case PC_BOTTOMUP: return pObj->sync(t0); case PC_POSTTOPDOWN: t1 = pObj->postsync(t0); obj->clock = t0; return t1; default: throw "invalid pass request"; } } SYNC_CATCHALL(triplex_node); }
EXPORT TIMESTAMP sync_substation(OBJECT *obj, TIMESTAMP t0, PASSCONFIG pass) { try { substation *pObj = OBJECTDATA(obj,substation); TIMESTAMP t1; switch (pass) { case PC_PRETOPDOWN: return pObj->presync(obj->clock,t0); case PC_BOTTOMUP: return pObj->sync(obj->clock,t0); case PC_POSTTOPDOWN: t1 = pObj->postsync(t0); obj->clock = t0; return t1; default: throw "invalid pass request"; } throw "invalid pass request"; } SYNC_CATCHALL(substation); }
EXPORT TIMESTAMP sync_load_tracker(OBJECT *obj, TIMESTAMP t0, PASSCONFIG pass) { load_tracker *pObj = OBJECTDATA(obj,load_tracker); try { TIMESTAMP t1; switch (pass) { case PC_PRETOPDOWN: return pObj->presync(t0); case PC_BOTTOMUP: return pObj->sync(t0); case PC_POSTTOPDOWN: t1 = pObj->postsync(obj->clock,t0); obj->clock = t0; return t1; default: throw "invalid pass request"; } throw "invalid pass request"; } SYNC_CATCHALL(load_tracker); }
EXPORT TIMESTAMP sync_waterheater(OBJECT *obj, TIMESTAMP t0, PASSCONFIG pass) { try { waterheater *my = OBJECTDATA(obj, waterheater); if (obj->clock <= ROUNDOFF) obj->clock = t0; //set the object clock if it has not been set yet TIMESTAMP t1 = TS_NEVER; switch (pass) { case PC_PRETOPDOWN: return my->presync(obj->clock, t0); case PC_BOTTOMUP: return my->sync(obj->clock, t0); case PC_POSTTOPDOWN: t1 = my->postsync(obj->clock, t0); obj->clock = t0; return t1; default: throw "invalid pass request"; } return TS_INVALID; } SYNC_CATCHALL(waterheater); }
EXPORT TIMESTAMP sync_windturb_dg(OBJECT *obj, TIMESTAMP t0, PASSCONFIG pass) { TIMESTAMP t1 = TS_NEVER; windturb_dg *my = OBJECTDATA(obj,windturb_dg); try { switch (pass) { case PC_PRETOPDOWN: t1 = my->presync(obj->clock,t0); break; case PC_BOTTOMUP: t1 = my->sync(obj->clock,t0); break; case PC_POSTTOPDOWN: t1 = my->postsync(obj->clock,t0); break; default: GL_THROW("invalid pass request (%d)", pass); break; } } SYNC_CATCHALL(windturb_dg); return t1; }