Example #1
0
OrderedTask* 
TaskFileXCSoar::GetTask(const TaskBehaviour &task_behaviour,
                        const Waypoints *waypoints, unsigned index) const
{
  assert(index == 0);

  return LoadTask(path, task_behaviour, waypoints);
}
Example #2
0
static bool
DeclareInner(Port &port, const Declaration &declaration,
             gcc_unused OperationEnvironment &env)
{
    env.SetProgressRange(5);
    env.SetProgressPosition(0);

    if (!LX::CommandMode(port))
        return false;

    if (env.IsCancelled())
        return false;

    env.SetProgressPosition(1);

    LX::Pilot pilot;
    LoadPilotInfo(pilot, declaration);

    LX::Declaration lxDevice_Declaration;
    if (!LoadTask(lxDevice_Declaration, declaration))
        return false;

    LX::ContestClass contest_class;
    LoadContestClass(contest_class, declaration);

    if (env.IsCancelled())
        return false;

    env.SetProgressPosition(2);

    LX::SendCommand(port, LX::WRITE_FLIGHT_INFO); // start declaration

    LX::CRCWriter writer(port);
    writer.Write(&pilot, sizeof(pilot));
    env.SetProgressPosition(3);

    if (env.IsCancelled())
        return false;

    writer.Write(&lxDevice_Declaration, sizeof(lxDevice_Declaration));
    writer.Flush();
    if (!LX::ExpectACK(port))
        return false;

    if (env.IsCancelled())
        return false;

    env.SetProgressPosition(4);
    LX::SendCommand(port, LX::WRITE_CONTEST_CLASS);
    writer.Write(&contest_class, sizeof(contest_class));
    env.SetProgressPosition(5);

    writer.Flush();
    return LX::ExpectACK(port);
}
Example #3
0
static OrderedTask *
task_load(const TaskBehaviour &task_behaviour)
{
  auto *task = LoadTask(task_file, task_behaviour);
  if (task != nullptr) {
    task->UpdateStatsGeometry();
    if (!task->CheckTask()) {
      delete task;
      return nullptr;
    }
  }

  return task;
}
Example #4
0
OrderedTask *
LoadDefaultTask(const TaskBehaviour &task_behaviour,
                const Waypoints *waypoints)
{
    TCHAR path[MAX_PATH];
    LocalPath(path, default_task_path);
    OrderedTask *task = LoadTask(path, task_behaviour, waypoints);
    if (!task) {
        task = new OrderedTask(task_behaviour);
        assert(task);
        task->SetFactory(task_behaviour.task_type_default);
    }
    return task;
}
Example #5
0
  //
  // Load
  //
  // Load a list of tasks
  //
  void LoadTasks(GameObj *subject, FScope *fScope, NList<Task> &tasks)
  {
    // Iterate the scope
    FScope *sScope;

    while ((sScope = fScope->NextFunction()) != NULL)
    {
      switch (sScope->NameCrc())
      {
        case 0x40B71B7D: // "Task"
          tasks.Append(LoadTask(subject, sScope));
          break;
      }
    }
  }
Example #6
0
void LoadTasks() { // modif quand CMD.wd
	char tasks[512];
	char line[64];
	FILE* f;
	
	sprintf(tasks, "ls -1 %s/", PATH_TO_TASKS);
	f = popen(tasks, "r");
	if (f!=NULL) {
		while (fgets(line, 64, f)!=NULL && sha->loaded < MAXTASK) {
			CleanLineFeed(line);
			LoadTask(line);
		}
		pclose(f);
	}
	else fprintf(stderr, "*** impossible to load tasks\n");
}
Example #7
0
static OrderedTask *
LoadTask2(const TCHAR *path, const TaskBehaviour &task_behaviour)
{
  OrderedTask *task = LoadTask(path, task_behaviour);
  if (task == nullptr) {
    fprintf(stderr, "Failed to parse XML\n");
    return nullptr;
  }

  task->UpdateGeometry();
  if (!task->CheckTask()) {
    fprintf(stderr, "Failed to load task from XML\n");
    delete task;
    return NULL;
  }

  return task;
}
Example #8
0
int
main(int argc, char **argv)
{
  Args args(argc, argv, "FILE.tsk");
  tstring path = args.ExpectNextT();
  args.ExpectEnd();

  TaskBehaviour task_behaviour;
  task_behaviour.SetDefaults();

  OrderedTask *task = LoadTask(path.c_str(), task_behaviour);
  if (task == NULL)
    return EXIT_FAILURE;

  Print(*task);

  delete task;
  return EXIT_SUCCESS;
}
Example #9
0
void
TaskListPanel::OnAction(int id)
{
  switch (id) {
  case LOAD:
    LoadTask();
    break;

  case RENAME:
    RenameTask();
    break;

  case DELETE:
    DeleteTask();
    break;

  case MORE:
    OnMoreClicked();
    break;
  }
}
Example #10
0
OrderedTask *
LoadTask(Path path, const TaskBehaviour &task_behaviour,
         const Waypoints *waypoints)
{
  // Load root node
  std::unique_ptr<XMLNode> xml_root(XML::ParseFile(path));
  if (!xml_root)
    return nullptr;

  const ConstDataNodeXML root(*xml_root);

  // Check if root node is a <Task> node
  if (!StringIsEqual(root.GetName(), _T("Task")))
    return nullptr;

  // Create a blank task
  OrderedTask *task = new OrderedTask(task_behaviour);

  // Read the task from the XML file
  LoadTask(*task, root, waypoints);

  // Return the parsed task
  return task;
}
Example #11
0
void Begin(int argc, char* argv[]) {
	char task[64],
		buffer[1024];
	int i,
		cmdLength=0,
		cmdBegin=1,
		function;
	Task* workingtask = NULL;
	
	// vérification arguments
	function = CheckArgument(argv[1]);
	int AcceptNull = (function==_H||function==_CF||function==_R||function==_I||function==_LT||function==_LD);
	
	// début de traitement
	switch (AcceptNull)
	{
		// cas des commandes qui n'ont pas besoin d'une tache valide
		case true :
		{
			switch (function)
			{
				case _R : printf("-- number of running task"); TaskFunction = Running; break;
				case _CF : printf("-- open configuration file\n"); TaskFunction = OpenConfig; break;
				case _H : printf("-- help of the program\n"); TaskFunction = Help; break;
				case _I : printf("-- number of running instances"); TaskFunction = Instances; break;
				case _LT : printf("-- list all tasks\n"); TaskFunction = ListAllTasks; break;
				case _LD : printf("-- list loaded tasks\n"); TaskFunction = ListLoadedTasks; break;
			}
			break;
		}
		
		// cas des commandes nécessitant une tache valide
		default :
		{
			// nom de la tache
			if (function != _A && argc > 2) sprintf(task, "%s", argv[2]);
			else sprintf(task, "%s", DEFAULT_TASK);
			// pointeur sur celle-ci
			workingtask=GetTask(task);
			if (workingtask==NULL) {
				workingtask=LoadTask(task);
				if (workingtask==NULL) {
					workingtask=AddTask(task);
					if (workingtask==NULL) {
						// tache introuvable, plus de place
						fprintf(stderr, "*** unable to work on task %s, exit\n", task);
						exit(2);
					}
				}
			}
			// tache valide
			switch (function)
			{
				case _L : printf("-- list %s task\n", task); TaskFunction = ListTask; break;
				case _S : printf("-- start %s task\n", task); TaskFunction = StartTask; break;
				case _D : printf("-- delete last command in %s task\n", task); TaskFunction = DeleteLastCommand; break;
				case _X : printf("-- stop %s task\n", task); TaskFunction = StopTask; break;
				case _C : printf("-- clean %s task\n", task); TaskFunction = CleanTask; break;
				case _M : {
					if (argc > 3) sprintf(DEFAULT_EDITOR, "%s", argv[3]);
					printf("-- modify %s task\n", task);
					TaskFunction = ModifyTask;
					break;
				}
				case _T : cmdBegin+=2;
				case _A : {
					GetEnv("$PWD", addedCommand.wd);
					sprintf(addedCommand.cmd, "%s", argv[cmdBegin]);
					cmdLength = strlen(addedCommand.cmd);
					for (i=cmdBegin+1; i<argc; i++) {
						cmdLength += strlen(argv[i]);
						if (cmdLength >= 1023) {
							fprintf(stderr, "*** attention : command is too long (max. size 1024)\n");
							fprintf(stderr, "                possible unexpected behavior\n"); 
							break;
						}
						sprintf(buffer, " %s", argv[i]);
						strncat(addedCommand.cmd, buffer, 1024);
					}
					printf("-- add '%s' to %s task\n", addedCommand.cmd, task);
					TaskFunction = AddToTask;
					break;
				}
				default : fprintf(stderr, "*** error while interpreting arguments : returning value %d\n", function); break;
			}
			break;
		}
	}
	
	TaskFunction(workingtask);
	
	if (workingtask!=NULL) {
		if ((!workingtask->exec) && (!workingtask->demand))
			workingtask->inuse=0;
	}
}
Example #12
0
 virtual void OnActivateItem(unsigned index) override {
   LoadTask();
 }