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