示例#1
0
/*......................................................................*/
void	IbitRes(void)
		{
static	int	Ibit_old=0x80;

		if(aux_mode != AUX_JW)
			return;

		if(!BatteryOK())
			Ibit |= JW_LOBATT;
		else
			Ibit &= ~JW_LOBATT;

		if(CheckTask(CheckRLD_on,RTC_task))
			Ibit |= JW_LASER;
		else
			Ibit &= ~JW_LASER;

		if(Ibit != Ibit_old) {
			if(!JwCount && !CheckTask(JwSend,PIT_task)) {
				Jw = JwTx;
				*Jw++=2;
				*Jw++=IBIT_RES;
				Ibit &= 0x7f;
				put_char(&Jw,Ibit);
				JwSend();
				Ibit_old=Ibit;
				}
			}
		}
示例#2
0
void
OrderedTask::UpdateStatsGeometry()
{
  ScanStartFinish();

  stats.task_valid = CheckTask();
  stats.has_targets = stats.task_valid && HasTargets();
  stats.is_mat = GetFactoryType() == TaskFactoryType::MAT;
  stats.has_optional_starts = stats.task_valid && HasOptionalStarts();
}
示例#3
0
/*......................................................................*/
void	JwSend(void)
		{
static	int	n;
		int	i,j;

		if(!CheckTask(JwSend,PIT_task)) {
			n=0;
			SetTask(JwSend,100,PIT_task);
			}
		for(i=j=0; i<=JwTx[0]; ++i)
			j += Putch(JwTx[i],CHAUX);
		Putch(j,CHAUX);
		if(++n >= 5)
			DeleteTask(JwSend,PIT_task);
		}
示例#4
0
/*------------------------------------------------------*/
void		Submit(void)
			{
static int	i;
			if(!shutdown_load(NULL))
				if(readRTC(0) || readRTC(1) || readRTC(2)) {
					if(!CheckTask(Submit,RTC_task)) {
						SetTask(Submit,1,RTC_task);
						i=3;
						}
					else{
						Ungetch(readRTC(i),10);
						if(++i > 7)
							DeleteTask(Submit,RTC_task);
						}
					}
			}
示例#5
0
QStringList Pipeline::RunTaskList(const QList<Task*>& taskList)
{
	errors.clear();

	emit progressUpdated(0);

	for(Task* task : taskList)
	{
		QString error = CheckTask(task);

		if(error.isNull()) RunTask(task);
		else errors.push_back(ERROR_MASK.arg(task->name).arg(error));
	}

	curStages = 0;

	return errors;
}
示例#6
0
/*......................................................................*/
void	JwRec(void)
		{
static	ack_flag;
		int	j;

		if(Kbhit(CHAUX))
			if(CheckTask(JwSend,PIT_task))
				switch(j=Getch(CHAUX)) {
					case ACK_COM:  ack_flag = ACK_COM;
									break;
					case NACK_COM:	JwSend();
									break;
					default:		if((ack_flag == ACK_COM) && (j == JwTx[0]))
										DeleteTask(JwSend,PIT_task);
									ack_flag = 0;
									break;
					}
			else
				switch(JwCount)	{
					case	0:	JwCount=JwCheck=Getch(CHAUX);
								if(JwCount > 16)
									JwCount=0;
								else{
									JwCount++;
									Jw=JwRx;
									SetTask(JwDrop,50,PIT_task);
									}
								break;
					case	1:  if(JwExe()) {
									Putch(ACK_COM,CHAUX);
									Putch(JwRx[0],CHAUX);
									}
								else
									Putch(NACK_COM,CHAUX);
								JwCount--;
								DeleteTask(JwDrop,PIT_task);
								break;
					default: 	*Jw = Getch(CHAUX);
								JwCheck += *Jw++;
								JwCount--;
								break;
					}
		}
示例#7
0
bool
AbstractTask::Update(const AircraftState &state, 
                     const AircraftState &state_last,
                     const GlidePolar &glide_polar)
{
  stats.task_valid = CheckTask();

  const bool full_update = 
    CheckTransitions(state, state_last) ||
    (active_task_point != active_task_point_last);

  UpdateStatsTimes(state);
  UpdateStatsDistances(state.location, full_update);
  UpdateGlideSolutions(state, glide_polar);
  bool sample_updated = UpdateSample(state, glide_polar, full_update);
  UpdateStatsSpeeds(state, state_last);
  UpdateFlightMode();

  active_task_point_last = active_task_point;

  return sample_updated || full_update;
}
示例#8
0
/*......................................................................*/
void	AdsData(void)
		{
		uint i;
		if(aux_mode != AUX_JW)
			return;
		if(JwCount || CheckTask(JwSend,PIT_task))
			SetTask(AdsData,1,RTC_task);
		else{
			DeleteTask(AdsData,RTC_task);
			Jw = JwTx;
			*Jw++=7;
			*Jw++=ADS_DATA;
			i=JwAZ;
			*Jw++=i / 256;
			*Jw++=i % 256;
			i=JwR;
			*Jw++=i  / 256;
			*Jw++=i  % 256;
			i=JwEL;
			*Jw++=i / 256;
			*Jw++=i % 256;
			JwSend();
			}
		}
示例#9
0
/*------------------------------------------------------*/
void		ListToPc (char *s)
			{
			int		i;
			lib		*l;
			command *c;

#ifndef		WIN32
void		heap_start(void);
static		long	*p;
			char	cc[32];
#endif

			uchar	r[LINK_LEN],rr[16];

			switch(*s) {
				case 'l':	l=Ln;
							do	{
								l->check=null;
								l=l->next;
								}	while(l != Ln);
							c=CP;
                            if(c)
								do	{
									c->chk=null;
									c=c->next;
									}	while(c != CP);
							SetTask(CheckScreen,0,RTC_task);
							SetTask(CheckLib,0,RTC_task);
							break;

				case 's':   CheckScr=null;
							if(!CheckTask(CheckScreen,RTC_task))
								CheckScreen();
							else
								SetTask(CheckScreen,0,RTC_task);
							break;
	
				case 'o':	sprintf(r,"=o %s,%d\r\n>",LinkAddrText(LinkAddr(OBP),rr),targets_xn(OBP));
							puts_pc(r);
							break;

				case 'p':	puts_pc("=p ");
								putsLLA(OBP);
                                puts_pc("\r\n");
							break;

				case 'm':   for(i=0; _MenuCode[i]; ++i)
							{
								sprintf(r,"=m[%d] ",i);
								for(s=_MenuCode[i]; *s; ++s)
									if(*s == ' ')
										sprintf(strchr(r,0)," ");
									else
									{
/*										if(*s < ENTER)
											sprintf(strchr(r,0),"%c",*s);
										else
*/											sprintf(strchr(r,0),"%02X",*s);
									}
									sprintf(strchr(r,0),"\r\n");
								puts_pc(r);
							}
							break;

				case 't':   for(i=0; _TextCode[i]; ++i)
							{
								sprintf(r,"=t[%d] ",i);
								for(s=_TextCode[i]; *s; ++s)
									sprintf(strchr(r,0),"%02X",*s);
								sprintf(strchr(r,0),"\r\n");
								puts_pc(r);
							}
							break;

				case 'h':   for(i=0; _MenuHead[i]; ++i)
							{
								sprintf(r,"=h[%d] ",i);
								for(s=_MenuHead[i]; *s; ++s)
									sprintf(strchr(r,0),"%02X",*s);
								sprintf(strchr(r,0),"\r\n");
								puts_pc(r);
							}
							break;
#ifndef	WIN32
				case 'H':	for(p=(long *)heap_start; *p; p=(long *)labs(*p))
							{
								if(*p>0)
									sprintf(cc,"=H %08lX,%08lX,!\r\n",p,*p);
								else
									sprintf(cc,"=H %08lX,%08lX,-\r\n",p,-(*p));
								puts_pc(cc);
							}
							break;
#endif
				case 'f':	ListPar();
							break;

				case 'z':	ListZone(NULL);
							break;

				case 'v':   puts_pc(">=v");
							SysMessage(CHPC);
							break;

				case 'G':	WriteGunData(Guns,NULL);
							break;

				case 'D':	ListDatum();
							break;

				case 'e':	shaft_enable();
							break;

				default:	ReadLib(s);
							break;
				}
			}