/* 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(); }