Exemplo n.º 1
0
/* Functions */
int main(void) { 
	u32 OutputEnableTimeout;  

	init_SystemClock();	   //RCC config
	init_Discovery();	   //leds & user button
	init_TimeBase();	   //timebase & clock
	init_LCD();			   //HD44780 based display
	init_UART(&urt2,2);
	init_IO();

	
    /* program loop */		  //******************************************* main loop
	time.fast = actualTime() + FASTINTERVAL;
	time.slow = actualTime() + SLOWINTERVAL;

	while (1) {

	//realtick:
	if(gValues.filter.output){
		//output enable, timeout restart
		OutputEnableTimeout = actualTime() + OUTPUT_TIMEOUT;
		GPIO_WriteBit(GPIOC, GPIO_Pin_9, (BitAction)1);
	}else if (timeElapsed(OutputEnableTimeout)){
		//output disable after timeout
		GPIO_WriteBit(GPIOC, GPIO_Pin_9, (BitAction)0);
	}

	
	if(timeElapsed(time.fast)){
		time.fast += FASTINTERVAL;
		//fasttick
		fast_Tick();
	
	}


	if(timeElapsed(time.slow)){
		time.slow += SLOWINTERVAL;
		//slowtick
		LCD_periodic_update();
		slow_Tick();

	}



	//COMM_DESC * PC_com = &urt2.parent;


	
	/*Ticks*/
	//PC_com->Tick(PC_com);
	//urt2.Tick(&urt2.parent);

	}  //end while
}  //end main()
TVerdict ClbsinternalapiTest3Step::doTestStepL()
/**
 * @return - TVerdict code
 * Override of base class pure virtual
 * Our implementation only gets called if the base class doTestStepPreambleL() did
 * not leave. That being the case, the current test result value will be EPass.
 */
	{
	  if (TestStepResult()==EPass)
		{
		//Let's test!

	    TPositionExtendedSatelliteInfo posSatInfo;
		RLbsPositionUpdates::InitializeL(posSatInfo);
		
		RLbsPositionUpdates posUpdates;
		
		//First Open, Close, re-Open to check for handle leaks etc.
		posUpdates.OpenL(KLbsGpsLocManagerUid);
		CleanupClosePushL(posUpdates);
		CleanupStack::PopAndDestroy(&posUpdates);
		
		posUpdates.OpenL(KLbsGpsLocManagerUid);
		CleanupClosePushL(posUpdates);
		
		//First, check the default data is OK.
		//Should be a default TPositionExtendedSatelliteInfo.
		TPositionExtendedSatelliteInfo satInfo;
		//Put some non-default data in it, then check we get the default data back.
		satInfo.SetSatelliteTime(TTime(500));
		
		TInt error=1;
		TTime targetTime(100);
		TTime actualTime(200);
		TBool conflictControl;
		error = posUpdates.GetPositionInfo(conflictControl, &satInfo, sizeof(satInfo),targetTime, actualTime);
		//Now check we got deviuce not ready
		
		if(error!=KErrNotReady)
			User::Leave(KErrGeneral);
			
		//Now check that the same for TPositionInfo and TPositionCourseInfo
		
		TPositionInfo posInfo;
		posInfo.SetModuleId(KLbsGpsLocManagerUid);
		error = posUpdates.GetPositionInfo(conflictControl, &posInfo, sizeof(posInfo),targetTime, actualTime);

		if(error!=KErrNotReady)
			User::Leave(KErrGeneral);
	
				
		TPositionCourseInfo courseInfo;
		TCourse course;
		course.SetSpeed(TReal32(100));
		courseInfo.SetCourse(course);
		
		error = posUpdates.GetPositionInfo(conflictControl, &courseInfo, sizeof(courseInfo),targetTime, actualTime);
		if(error!=KErrNotReady)
			User::Leave(KErrGeneral);

	
		
		//OK - we are now reasonably happy with Getting - it donsn't mash up the class size/type data
		//and it seems to be doing the data copying OK.
		
		//Next move onto the set method...
		//Choose some dummy values.
		error = KErrGeneral;
		targetTime = 1000;
		actualTime = 1001;
		satInfo.SetSatelliteTime(TTime(4020));
		
		User::LeaveIfError(posUpdates.SetPositionInfo(error, EFalse, &satInfo, sizeof(satInfo),targetTime, actualTime));
		error = posUpdates.GetPositionInfo(conflictControl, &satInfo, sizeof(satInfo),targetTime, actualTime);
		if(error!=KErrGeneral)
			User::Leave(KErrGeneral);
		if(conflictControl!=EFalse)
			User::Leave(KErrGeneral);
		if(targetTime!=1000)
			User::Leave(KErrGeneral);
		if(actualTime!=1001)
			User::Leave(KErrGeneral);
		if(satInfo.SatelliteTime()!=TTime(4020))
			User::Leave(KErrGeneral);
		
		
		//Go on to check out notifications.
		//Open another handle.
		
		RLbsPositionUpdates posUpdates2;
		
		//First Open, Close, re-Open to check for handle leaks etc.
		posUpdates2.OpenL(KLbsGpsLocManagerUid);
		CleanupClosePushL(posUpdates2);
		
		TRequestStatus stat;
		posUpdates2.NotifyPositionUpdate(stat);
		User::LeaveIfError(posUpdates.SetPositionInfo(error, EFalse, &satInfo, sizeof(satInfo),targetTime, actualTime));
		User::WaitForRequest(stat);
		
		if(stat.Int()!=KErrNone)
			User::Leave(KErrGeneral);
		
		//Now check the cancel.
		posUpdates2.NotifyPositionUpdate(stat);
		posUpdates2.CancelNotifyPositionUpdate();
		User::WaitForRequest(stat);
		
		if(stat.Int()!=KErrCancel)
			User::Leave(KErrGeneral);

		CleanupStack::PopAndDestroy(2, &posUpdates);
		SetTestStepResult(EPass);
		}
	  return TestStepResult();
	}