예제 #1
0
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);
			}
		}
	}
}
예제 #2
0
파일: RtdPerf.C 프로젝트: Starlink/skycat
/*
 * 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
}
예제 #3
0
파일: RtdPerf.C 프로젝트: Starlink/skycat
/*
 * 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);
}
예제 #4
0
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 );
}