20 namespace TTEthernetModel {
36 newCycle = registerSignal(
"newCycle");
50 Enter_Method(
"registerEvent(SchedulerEvent %s)",event->getName());
52 Enter_Method_Silent();
57 return registerEvent(dynamic_cast<SchedulerActionTimeEvent*>(event),
false);
73 Enter_Method(
"registerEvent(SchedulerEvent %s, forceNextCycle %d)",event->getName(), forceNextCycle);
75 Enter_Method_Silent();
78 take(actionTimeEvent);
83 bubble(
"Schedule contains out of cycle events!");
104 if(event->isScheduled()){
117 sendDirect(event, event->getDestinationGate());
119 else if (msg->isSelfMessage() && msg->getKind() ==
NEW_CYCLE)
141 par(
"current_tick").setDoubleValue((
tick+
maxDrift).dbl());
143 par(
"current_tick").setDoubleValue((
tick-
maxDrift).dbl());
145 par(
"current_tick").setDoubleValue(newTick.dbl());
150 for(std::list<SchedulerEvent*>::const_iterator registredEvent =
registredEvents.begin(); registredEvent !=
registredEvents.end(); registredEvent++){
153 cancelEvent(actionTimeEvent);
162 scheduleAt(simTime(), actionTimeEvent);
185 maxDrift = SimTime(par(
"max_drift").doubleValue());
186 currentTick = SimTime(par(
"current_tick").doubleValue());
187 tick = SimTime(par(
"tick").doubleValue());
192 Enter_Method(
"clock correction %d ticks",ticks);