void initMenuItems()
{
  menuItem changeHour = {1, "Change hour"};
  menuItems.push(changeHour);
  menuItem test = {2, "Start LED time"};
  menuItems.push(test);
  menuItem test2 = {3, "Stop LED time"};
  menuItems.push(test2);

  // Complete the queue with NULL element to get a modulo
  // of the line number
  menuItem nullItem = {0, NULL};
  for (int i = 0; i < menuItems.count()%NUMBER_OF_MENU_LINES; i++) {
    menuItems.push(nullItem);
  }
}
void menuState()
{
  menuItem tempItem;

  for (int i = 0; i < NUMBER_OF_MENU_LINES; i++) {
    tempItem = menuItems.pop();
    if (tempItem.message != NULL) {
      lcd.setCursor(0,i);
      lcd.print(i+1);
      lcd.print(tempItem.message);
    }
    menuItems.push(tempItem);
  }

  lcd.setCursor(0,3);
  if (menuItems.count() > NUMBER_OF_MENU_LINES) {
    lcd.print("Next : * Back : 0");
  }
  else{
    lcd.print("Back : #");
  }
}
Beispiel #3
0
int TaskManager::executeTasksQueue()
{
	int executedTasksCount = 0;

	QueueList<TaskManagerRecord*>* fromQueue;
	QueueList<TaskManagerRecord*>* toQueue;

	if( !tasksQueueA->isEmpty() )
	{
		fromQueue = tasksQueueA;
		toQueue = tasksQueueB;
	}
	else
	{
		fromQueue = tasksQueueB;
		toQueue = tasksQueueA;
	}

	while( !fromQueue->isEmpty() )
	{
		TaskManagerRecord* taskManagerTaskRecord = fromQueue->pop();

		if( taskManagerTaskRecord->taskManagerScheduler->canExecute() )
		{
			taskManagerTaskRecord->runnable->run();
			executedTasksCount++;
		}

		if( taskManagerTaskRecord->taskManagerScheduler->canRemoveFromTaskManager() )
			delete( taskManagerTaskRecord );
		else
			toQueue->push( taskManagerTaskRecord );
	}

	return executedTasksCount;
}
void setup2( Print& p , OneWire* oneWire )
{
	// ---------------

	analogReference( DEFAULT );

	// ---------------

	//TaskManagerSchedulerOneExecution* taskSchedulerOneExecution = new TaskManagerSchedulerOneExecution();
	//TaskManagerMemoryConfigurator* taskMemoryConfFreeRunnable = new TaskManagerMemoryConfigurator( false , true , false );
	//TaskManagerMemoryConfigurator* taskMemoryConfFreeSchedulerAndRunnable = new TaskManagerMemoryConfigurator( false , true , false );

	//TaskManagerSchedulerOneExecution taskSchedulerOneExecution();
	//TaskManagerMemoryConfigurator taskMemoryConfOnlyFreeRunnable( false , true , false );

	// ---------------

	/*{
		QueueList<unsigned long>* queue = new QueueList<unsigned long>();
		queue->push( 200 );

		TaskManagerSchedulerTimeIntervals* taskScheduler = new TaskManagerSchedulerTimeIntervals( queue , true , true );

		uint8_t alarmInputPin = 22;//0;
		uint8_t sabotageInputPin = 23;//1;

		uint8_t ledDigitalPin = 7;
		uint8_t buzzerDigitalPin = 8;

		unsigned long alarmOffTimeFromLastMotionDetection = 5 * 1000;

		OptexMX40PTCheckRunnable* runnable = new OptexMX40PTCheckRunnable( p , taskManager , alarmInputPin , sabotageInputPin , ledDigitalPin , buzzerDigitalPin , alarmOffTimeFromLastMotionDetection );

		taskManager->addTask( taskMemoryConfFreeSchedulerAndRunnable , taskScheduler , runnable );
	}*/

	// ---------------

	/*{
		QueueList<unsigned long>* queue = new QueueList<unsigned long>();
		queue->push( 1000 );
		queue->push( 10 );

		TaskManagerSchedulerTimeIntervals* taskScheduler = new TaskManagerSchedulerTimeIntervals( queue , true , true );

		uint8_t ledDigitalPin = 13;

		PinHighLowRunnable* runnable = new PinHighLowRunnable( ledDigitalPin , false );

		taskManager->addTask( true , true , taskScheduler , runnable );
	}*/

	// ---------------
	/*
	{
		char prefix1[] = "setupSDcard:";

		p << prefix1 << "Initializing SD card..." << endl;

		uint8_t chipSelect = SS_PIN;
		SdFat sd;

		char name[] = "APPEND.TXT";

		if (!sd.init(SPI_HALF_SPEED, chipSelect))
		{
			p << prefix1 << "Problem while initializing SD :(" << endl;
		}
		else
		{
			p << prefix1 << "SD initialized :)" << endl;

			ofstream sdout(name, ios::out | ios::app);

			if (!sdout)
			{
				p << prefix1 << "Problem while oppening file on SD card :(" << endl;
			}
			else
			{
				p << prefix1 << "File on SD card oppened :)" << endl;

				sdout.close();
			}
		}
	}*/

	// ---------------

	{
		char prefix1[] = "setupSDcard:";

		p << prefix1 << "Initializing SD card BEGIN..." << endl;

		uint8_t chipSelect = 10;
		pinMode( chipSelect , OUTPUT );


		if (!SD.begin(chipSelect))
		{
			p << prefix1 << "Problem while initializing SD :(" << endl;
		}
		else
		{
			p << prefix1 << "SD initialized :)" << endl;
		}

		p << prefix1 << "Initializing SD card END..." << endl;
	}

	// ---------------

	{
		QueueList<unsigned long>* queue = new QueueList<unsigned long>();
		queue->push( 1000 );

		TaskManagerSchedulerTimeIntervals* taskScheduler = new TaskManagerSchedulerTimeIntervals( queue , true , true );

		CheckDallasDS18B20TemperatureRunnable* runnable = new CheckDallasDS18B20TemperatureRunnable( oneWire , p );

		taskManager->addTask( true , true , taskScheduler , runnable );
	}

	// ---------------

}