void m2_time_task(void) { timeInc(); showTimeMode.updateDisp(); // check timer if (setTimerMode.state.on == 0) { portWrite(PORTB, LO, RELE_1_PIN); // off } else { Time time = timeGet(); if(timeLE(setTimerMode.state.timeOn, setTimerMode.state.timeOff)) { if (timeGE(time, setTimerMode.state.timeOn) && timeLE(time, setTimerMode.state.timeOff) ) { portWrite(PORTB, HI, RELE_1_PIN); } else { portWrite(PORTB, LO, RELE_1_PIN); } } else { if (timeLE(time, setTimerMode.state.timeOff) || timeGE(time, setTimerMode.state.timeOn) ) { portWrite(PORTB, HI, RELE_1_PIN); } else { portWrite(PORTB, LO, RELE_1_PIN); } } } }
/* * This routine is triggered by receipt of an image event, * and sets the timestamp information for the beginning of a cycle. */ void RtdPerf::newCycle() { if (maybeOn()) on(1); if ( ! isOn() ) return; dbl_->setlog(verbose_ & debug_); dbl_->log("Starting image event cycle: %s\n", name()); // Reset the performance variables. GENtime_ = 0.; TCLtime_ = 0.; Xtime_ = 0.; timeInc(&FREQtime_); // set lastTimeStamp_ to current time }
/* * This routine sets the variables of the performance test indicator form, * when it is realised. */ void RtdPerf::endCycle() { if ( ! isOn() ) // performance testing is not activated return; char* var = name(); dbl_->log("Ended image event cycle: %s\n", name()); imageCount_++; // Set the frequency Tcl variables. Needs at least two cycles if (imageCount_ > 1) { timeInc(&FREQtime_); // set lastTimeStamp_ to current time FREQtime_ = lastTimeStamp_ - startTime_; accFREQtime_ += FREQtime_; sprintf(buffer_, "%.3f", 1.0 / FREQtime_); Tcl_SetVar2(interp_, var, "PERF_FREQ", buffer_, TCL_GLOBAL_ONLY); sprintf(buffer_, "%.3f", (imageCount_ - 1.0) / accFREQtime_); Tcl_SetVar2(interp_, var, "PERF_FREQ_AVE", buffer_, TCL_GLOBAL_ONLY); } startTime_ = lastTimeStamp_; // Set the total time for the image event. double aveXtime, aveGENtime, aveTCLtime; // Accumulated averages double TOTtime = GENtime_ + Xtime_ + TCLtime_; // Accumulate times (these are total times over all images). accGENtime_ += GENtime_; accTCLtime_ += TCLtime_; accXtime_ += Xtime_; // Average all the totals. Times in % double aveTOTtime = (accGENtime_ + accTCLtime_ + accXtime_) / imageCount_; aveGENtime = accGENtime_ / imageCount_ * 100.0 / aveTOTtime; aveXtime = accXtime_ / imageCount_ * 100.0 / aveTOTtime; aveTCLtime = accTCLtime_ / imageCount_ * 100.0 / aveTOTtime; GENtime_ = GENtime_ * 100.0 / TOTtime; Xtime_ = Xtime_ * 100.0 / TOTtime; TCLtime_ = TCLtime_ * 100.0 / TOTtime; // Set the Tcl variables sprintf(buffer_, "%.0f", imageCount_); Tcl_SetVar2(interp_, var, "PERF_COUNT", buffer_, TCL_GLOBAL_ONLY); sprintf(buffer_, "%6.3f", GENtime_); Tcl_SetVar2(interp_, var, "PERF_GEN", buffer_, TCL_GLOBAL_ONLY); sprintf(buffer_, "%6.3f", Xtime_); Tcl_SetVar2(interp_, var, "PERF_XFUNC", buffer_, TCL_GLOBAL_ONLY); sprintf(buffer_, "%6.3f", TCLtime_); Tcl_SetVar2(interp_, var, "PERF_TCL", buffer_, TCL_GLOBAL_ONLY); sprintf(buffer_, "%8.3f", TOTtime * 1.0e+3); // in msec Tcl_SetVar2(interp_, var, "PERF_TOTAL", buffer_, TCL_GLOBAL_ONLY); // Do the same for the averaged amounts. sprintf(buffer_, "%6.3f", aveGENtime); Tcl_SetVar2(interp_, var, "PERF_GEN_AVE", buffer_, TCL_GLOBAL_ONLY); sprintf(buffer_, "%6.3f", aveXtime); Tcl_SetVar2(interp_, var, "PERF_XFUNC_AVE", buffer_, TCL_GLOBAL_ONLY); sprintf(buffer_, "%6.3f", aveTCLtime); Tcl_SetVar2(interp_, var, "PERF_TCL_AVE", buffer_, TCL_GLOBAL_ONLY); sprintf(buffer_, "%6.3f", aveTOTtime * 1.0e+3); // in msec Tcl_SetVar2(interp_, var, "PERF_TOTAL_AVE", buffer_, TCL_GLOBAL_ONLY); }
void GuiTextEditSliderCtrl::onRender(Point2I offset, const RectI &updateRect) { if(mTextAreaHit != None) { U32 elapseTime = Sim::getCurrentTime() - mMouseDownTime; if(elapseTime > 750 || mTextAreaHit == Slider) { timeInc(elapseTime); mIncCounter += mMulInc; if(mIncCounter >= 1.0f || mIncCounter <= -1.0f) { mValue = (mMulInc > 0.0f) ? mValue+mIncAmount : mValue-mIncAmount; mIncCounter = (mIncCounter > 0.0f) ? mIncCounter-1 : mIncCounter+1; checkRange(); setValue(); mCursorPos = 0; } } } Parent::onRender(offset, updateRect); Point2I start(offset.x + getWidth() - 14, offset.y); Point2I midPoint(start.x + 7, start.y + (getExtent().y/2)); GFX->getDrawUtil()->drawRectFill(Point2I(start.x+1,start.y+1), Point2I(start.x+13,start.y+getExtent().y-1) , mProfile->mFillColor); GFX->getDrawUtil()->drawLine(start, Point2I(start.x, start.y+getExtent().y),mProfile->mFontColor); GFX->getDrawUtil()->drawLine(Point2I(start.x,midPoint.y), Point2I(start.x+14,midPoint.y), mProfile->mFontColor); GFXVertexBufferHandle<GFXVertexPCT> verts(GFX, 6, GFXBufferTypeVolatile); verts.lock(); verts[0].color.set( 0, 0, 0 ); verts[1].color.set( 0, 0, 0 ); verts[2].color.set( 0, 0, 0 ); verts[3].color.set( 0, 0, 0 ); verts[4].color.set( 0, 0, 0 ); verts[5].color.set( 0, 0, 0 ); if(mTextAreaHit == ArrowUp) { verts[0].point.set( (F32)midPoint.x, (F32)start.y + 1.0f, 0.0f ); verts[1].point.set( (F32)start.x + 11.0f, (F32)midPoint.y - 2.0f, 0.0f ); verts[2].point.set( (F32)start.x + 3.0f, (F32)midPoint.y - 2.0f, 0.0f ); } else { verts[0].point.set( (F32)midPoint.x, (F32)start.y + 2.0f, 0.0f ); verts[1].point.set( (F32)start.x + 11.0f, (F32)midPoint.y - 1.0f, 0.0f ); verts[2].point.set( (F32)start.x + 3.0f, (F32)midPoint.y - 1.0f, 0.0f ); } if(mTextAreaHit == ArrowDown) { verts[3].point.set( (F32)midPoint.x, (F32)(start.y + getExtent().y - 1), 0.0f ); verts[4].point.set( (F32)start.x + 11.0f, (F32)midPoint.y + 3.0f, 0.0f ); verts[5].point.set( (F32)start.x + 3.0f, (F32)midPoint.y + 3.0f, 0.0f ); } else { verts[3].point.set( (F32)midPoint.x, (F32)(start.y + getExtent().y - 2), 0.0f ); verts[4].point.set( (F32)start.x + 11.0f, (F32)midPoint.y + 2.0f, 0.0f ); verts[5].point.set( (F32)start.x + 3.0f, (F32)midPoint.y + 2.0f, 0.0f ); } verts.unlock(); GFX->setVertexBuffer( verts ); GFX->setupGenericShaders(); GFX->drawPrimitive( GFXTriangleList, 0, 2 ); }