void LongResult(uchar bT) { InitPushCRC(); PushChar(bT); PushChar(0); Output(2); }
// открытие канала для сумматоров СЭМ-2 bool OpenDeviceE(void) { uchar i; for (i=0; i<bMINORREPEATS; i++) { if (diCurr.bAddress <= 16) { QueryBreakE(); InitPush(0); PushChar(0x1B); PushChar('0'+diCurr.bAddress); Query(1+1, 2, 1); if (EscInput() == SER_GOODCHECK) break; if (fKey == true) return(0); } else return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(50); return(1); }
// чтение коэффициентов для счётчика Меркурий-230 bool ReadKoeffDeviceB_Special(void) { uchar i; if (QueryOpenB_Full(25) == 0) return(0); for (i=0; i<bMINORREPEATS; i++) { InitPush(0); PushChar(diCurr.bAddress); PushChar(8); PushChar(2); // чтение коэффициентов DelayOff(); QueryIO(1+4+2, 2+1+2); if (Input() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(50); // K трансформации dbKtrans = (InBuff(1)*0x100 + InBuff(2)) * (InBuff(3)*0x100 + InBuff(4)); // K преобразования dbKpulse = 2000; return(1); }
int InputStream::PeekChar() { while(m_queue.GetCount() < 2) PushChar(); ASSERT(m_queue.GetCount() == 2); if(m_queue.GetHead() == '/' && m_queue.GetTail() == '/') { while(!m_queue.IsEmpty()) PopChar(); int c; do { PushChar(); c = PopChar(); } while(!(c == '\n' || c == EOS)); return PeekChar(); } else if(m_queue.GetHead() == '/' && m_queue.GetTail() == '*') { while(!m_queue.IsEmpty()) PopChar(); int c1, c2; PushChar(); do { c2 = PushChar(); c1 = PopChar(); } while(!((c1 == '*' && c2 == '/') || c1 == EOS)); PopChar(); return PeekChar(); } return m_queue.GetHead(); }
void SafeTransitExecute3(void) { uint i; uchar j; if (bInBuff5 >= bPORTS) Result(bRES_BADADDRESS); else if (IsSlave(bInBuff5)) Result(bRES_BADPORT); else if (IndexInBuff() <= 10) Result(bRES_BADDATA); else { SaveInBuff(); iwInBuffSave = IndexInBuff(); j = ibPort; ibPort = bInBuff5; cbHeaderBcc = bInBuff8; cwInBuffBcc = 0; InitPush(0); for (i=0; i<iwInBuffSave-11; i++) PushChar(mpbInBuffSave[i+9]); Query(bInBuff6+bInBuff7*0x100, iwInBuffSave-11, 1); InitWaitAnswer(); while (1) { if (fKey == true) { mpSerial[ibPort] = SER_BADLINK; break; } ResetWatchdog(); ShowWaitAnswer(1); if (GetWaitAnswer()) { mpSerial[ibPort] = SER_BADLINK; break; } if (mpSerial[ibPort] == SER_INPUT_MASTER) DecompressK(0); if (mpSerial[ibPort] == SER_POSTINPUT_MASTER) break; else if ((mpSerial[ibPort] == SER_OVERFLOW) || (mpSerial[ibPort] == SER_BADLINK)) break; } MonitorIn(); SaveInBuff(); iwInBuffSave = IndexInBuff(); mpSerial[ibPort] = SER_BEGIN; ibPort = j; InitPushCRC(); if (iwInBuffSave > 0) for (i=0; i<iwInBuffSave; i++) PushChar(mpbInBuffSave[i]); Output(iwInBuffSave); } }
bool ReadTimeDateE_Short(void) { if (diCurr.bAddress <= 16) { QueryBreakE(); InitPush(); PushChar(0x1B); PushChar('0'+diCurr.bAddress); Query(1+1, 2, 1); if (EscInput() != SER_GOODCHECK) return(0); } else return(0); InitPush(); PushChar(0x1B); PushChar('T'); Query(6+1, 2, 1); if (EscInput() != SER_GOODCHECK) return(0); ReadTimeAltE(); return(1); }
void QueryHeaderS(void) { HideCurrTime(1); ulong dw = DateToHouIndex(tiDigPrev); dw -= wBaseCurr; tiDig = HouIndexToDate(dw); InitPush(0); PushChar(0xC0); PushChar(0x48); PushAddressS(); PushChar(0xD5); PushChar(0x01); PushChar(0x34); PushChar(ToBCD(tiDig.bDay)); PushChar(ToBCD(tiDig.bMonth)); PushChar(ToBCD(tiDig.bYear)); PushChar(tiDig.bHour*2 + tiDig.bMinute/30); PushChar(4); QueryS(100+23, 20); }
void SafeTransitExecute2(void) { uint i; uchar j; if (bInBuff5 >= bPORTS) Result(bRES_BADADDRESS); else if (IsSlave(bInBuff5)) Result(bRES_BADPORT); else if (IndexInBuff() <= 10) Result(bRES_BADDATA); else { SaveInBuff(); iwInBuffSave = IndexInBuff(); j = ibPort; ibPort = bInBuff5; InitPush(0); for (i=0; i<iwInBuffSave-10; i++) PushChar(mpbInBuffSave[i+8]); Query(bInBuff6+bInBuff7*0x100, iwInBuffSave-10, 1); InitWaitAnswer(); while (1) { if (fKey == true) { mpSerial[ibPort] = SER_BADLINK; break; } ResetWatchdog(); ShowWaitAnswer(1); if (GetWaitAnswer()) { mpSerial[ibPort] = SER_BADLINK; break; } if (mpSerial[ibPort] == SER_POSTINPUT_MASTER) break; else if ((mpSerial[ibPort] == SER_OVERFLOW) || (mpSerial[ibPort] == SER_BADLINK)) break; } if (mpSerial[ibPort] != SER_POSTINPUT_MASTER) { ibPort = j; Result(bRES_BADMODE); } else { mpSerial[ibPort] = SER_BADLINK; // !!! SaveInBuff(); iwInBuffSave = IndexInBuff(); ibPort = j; InitPushCRC(); for (i=0; i<iwInBuffSave; i++) PushChar(mpbInBuffSave[i]); Output(iwInBuffSave); } } }
void QueryConfig34(void) { InitPush(0); PushChar(diCurr.bAddress); PushChar(0x6C); QueryIO(3+36+2, 2+2); }
__regargs void SerialPut(UBYTE data) { PushChar(&serial.sendq, data); if (data == '\n') PushChar(&serial.sendq, '\r'); custom->intena = INTF_TBE; if (custom->serdatr & SERDATR_TBE) SendIntHandler(); custom->intena = INTF_SETCLR | INTF_TBE; }
void QueryEventA(uchar ibEvent, uchar j) { InitPush(0); PushChar(diCurr.bAddress); PushChar(4); PushChar((ibEvent << 4) | j); QueryIO(1+14+2, 2+1+2); }
bool ReadKoeffDeviceG(void) { uchar i; for (i=0; i<bMINORREPEATS; i++) { QueryOpenG(); if (CodInput() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); if (ReadOpenG() == 0) return(0); for (i=0; i<bMINORREPEATS; i++) { DelayOff(); InitPushCod(); PushChar(0x7E); PushChar(0x03); PushChar(0x06); PushCharCod(0x03); PushCharCod(0x00); PushCharCod(0x00); CodQueryIO(3+25+1, 3+3+1); if (CodInput() == SER_GOODCHECK) break; if (fKey == true) return(0); } if (i == bMINORREPEATS) return(0); ShowPercent(50); InitPop(3); for (i=0; i<9; i++) PopChar(); if (ExtVersionCod()) PopRealExt_G(); else PopRealBCD_G(); dbKtrans = reBuffA; if (ExtVersionCod()) PopRealExt_G(); else PopRealBCD_G(); dbKtrans *= reBuffA; // K трансформации reBuffA = 10000; // K преобразования return(1); }
void QueryModemBaud(bool fShow) { if (fShow == 1) ShowLo(szBaud); InitPush(0); PushChar('A'); PushChar('T'); PushChar('\r'); PushChar('\n'); Query(SERIAL_MODEM, 2+2, 1); }
void OutReviewBuff(void) { InitPushCRC(); uint wSize = 0; wSize += PushChar(REVIEW_BUFF_COUNT); wSize += PushIntBig(REVIEW_BUFF_SIZE); wSize += PushChar(ibBuff); wSize += PushChar(CurrIdx()); wSize += PushChar(PrevIdx()); wSize += Push(&mmbBuff, sizeof(mmbBuff)); Output(wSize); }
void QueryTimeS(void) { InitPush(0); PushChar(0xC0); PushChar(0x48); PushAddressS(); PushChar(0xD0); PushChar(0x01); PushChar(0x20); QueryS(100+18, 15); }
void QueryVersionS(void) { InitPush(0); PushChar(0xC0); PushChar(0x48); PushAddressS(); PushChar(0xD0); PushChar(0x01); PushChar(0x00); QueryS(100+17, 15); }
void QueryConfigS(void) { InitPush(0); PushChar(0xC0); PushChar(0x48); PushAddressS(); PushChar(0xD0); PushChar(0x01); PushChar(0x01); QueryS(100+16, 15); }
int RecalcWeight(unsigned char c, char mode) { int i,j; int * count; int * w = weights[prev2][prev].weights; if (w[256]>DEFAULT_MAX_SIZE) for(i = 1; i<=256; i++) { w[i] = w[i]/2; if (w[i]%2) { w[i]++; for(j = i; j <256; j++) w[j+1]+=2; } } for(i = c + 1; i<=256; i++) w[i] += weights[prev2][prev].aggresivity*(int)(exp((double)mode)); count = &(weights[prev2][prev].count); (*count)++; if(*count > 10240) { RecalcAggr(); *count = 0; } PushChar(mode,c); return (weights[prev2][prev].weights)[256]; }
void QueryModemEscape(void) { ShowLo(szEscape); //DelayInf(); Delay(1500); InitPush(0); PushChar('+'); PushChar('+'); PushChar('+'); Query(SERIAL_MODEM, 3, 1); Delay(1500); }
void QueryModemConnect(void) { HideCurrTime(0); InitPush(0); PushChar('A'); PushChar('T'); PushChar('D'); PushChar('P'); line ph = mpphPhones[diCurr.ibPhone - 1]; Clear(); strcpy(szLo, ph.szLine); uchar i; for (i=0; i<bLINE_SIZE; i++) { if ( ph.szLine[i] == 0 ) break; PushChar( ph.szLine[i] ); } PushChar('\r'); PushChar('\n'); Query(SERIAL_MODEM, 4+i+2, 1); }
void OutNvramStack(void) { InitPushCRC(); uint i; for (i=0; i<4000; i++) PushChar(0); InitPushCRC(); PUSH_VALUE(NVRAM_BEGIN) PUSH_VALUE(NVRAM_END) PUSH_VALUE(dwNVRAM_BYTES) PushChar(0x0D); PushChar(0x0A); PushLongAsString((ulong)100*(NVRAM_END-NVRAM_BEGIN)/(dwNVRAM_BYTES-NVRAM_BEGIN)); PushString("%"); PushChar(0x0D); PushChar(0x0A); PushChar(0x0D); PushChar(0x0A); #include "../generated/out_nvram.txt" Output(4000); }
void RunLocal(void) { if (mpSerial[ibPort] == SER_LOCAL) { if (mpboLocalDisable[ibPort] == true) mpSerial[ibPort] = SER_BEGIN; else { InitPush(0); PushChar('O'); PushChar('K'); PushChar('\r'); PushChar('\n'); Query(SERIAL_LOCAL, 2+2, 1); } } }
void Query31(uint cwIn, uchar cbOut) { uchar bCrc = MakeCrc8Bit31OutBuff(1, cbOut-2); InitPush(0); Skip(cbOut-1); PushChar(bCrc); Query(cwIn,cbOut,1); }
void QueryS(uchar cbIn, uchar cbOut) { uchar bCrc = MakeCrcSOutBuff(1, cbOut-3); InitPush(0); PushChar(0xC0); uchar i; for (i=0; i<cbOut-3; i++) SkipChar(); PushChar(bCrc); PushChar(0xC0); for (i=0; i<=cbOut-1; i++) mpbOutBuffSave[i] = OutBuff(i); uchar j = 0; SetOutBuff(j++, 0xC0); for (i=1; i<=cbOut-2; i++) { if (mpbOutBuffSave[i] == 0xC0) { SetOutBuff(j++, 0xDB); SetOutBuff(j++, 0xDC); } else if (mpbOutBuffSave[i] == 0xDB) { SetOutBuff(j++, 0xDB); SetOutBuff(j++, 0xDD); } else { SetOutBuff(j++, mpbOutBuffSave[i]); } } SetOutBuff(j++, 0xC0); Query(cbIn,j,true); }
int GetUrl(REC_INFO* pRec, void* pVal) { REC_INFO* pCurRec = pRec; unsigned int recCount = 0; char** ppUrl = pVal; char* pTemp = NULL; unsigned int urlMaxLen = 32; pTemp = (char*)malloc(urlMaxLen); if(pTemp == NULL) { return -1; } memset(pTemp, 0, urlMaxLen); while(pCurRec) { if(pCurRec->type == ELE_SEPERATOR) { if(pCurRec->sep == SEP_COMMA) { *ppUrl = pTemp; return recCount; } else { if(PushChar(&pTemp,&urlMaxLen, seperator[pCurRec->sep]) != 0) { break; } } } else if(pCurRec->type == ELE_TEXT) { if(PushStr(&pTemp, &urlMaxLen, pCurRec->pContent) != 0) { break; } } else { break; } ++recCount; pCurRec = goaheadRec(pCurRec, 1); } if(pTemp) { free(pTemp); } return -1; }
void GetMaxGrpMonUni(void) { if ((bInBuff6 != 0) || (bInBuff8 != 0) || (bInBuffA != 0)) Result2(bUNI_BADDATA); else if (bInBuff7 > bGROUPS) Result2(bUNI_BADDATA); else if (bInBuff7+bInBuff9-1 > bGROUPS) Result2(bUNI_BADDATA); else if (bInBuffB >= bMONTHS) Result2(bUNI_BADDATA); else if (bInBuffC > bTARIFFS) Result2(bUNI_BADDATA); else if (bInBuffC+bInBuffD-1 > bTARIFFS) Result2(bUNI_BADDATA); else { InitPushUni(); LoadPowMon((bMONTHS+ibHardMon-bInBuffB) % bMONTHS); uchar ibGrp; for (ibGrp=bInBuff7; ibGrp<bInBuff7+bInBuff9; ibGrp++) { uchar i; for (i=bInBuffC; i<bInBuffC+bInBuffD; i++) { PushFloat(GetGrpMaxPowReal(mppoMonGrp[ PrevSoftMon() ], ibGrp-1, i-1)); time ti1 = GetGrpMaxPowTime(mppoMonGrp[ PrevSoftMon() ], ibGrp-1, i-1); PushChar(ti1.bDay); PushChar(ti1.bHour*2 + ti1.bMinute/30); } } ulong dw = DateToMonIndex(*GetCurrTimeDate()); dw -= bInBuffB; time ti2 = MonIndexToDate(dw); Output2_Code((uint)6*bInBuff9*bInBuffD, ((CheckDefGrpMonUni(ti2.bMonth) == 0) ? bUNI_OK : bUNI_DEFECT), ti2); } }
void TestWatchdog(struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, uint port, uchar broadcast) { if (broadcast == 0) { CONSOLE("test watchdog\n"); InitPush(); PushChar('A'); Out(pcb,p,addr,port,broadcast); while (1); } }
void QueryEngAbs34(void) { InitPush(0); PushChar(diCurr.bAddress); PushChar(0x67); PushChar(0x00); PushChar(0xFF); PushChar(0); PushChar(0); PushChar(0); PushChar(0); QueryIO(3+81+2, 8+2); }
void OutGaps2(void) { time ti; if (enGlobal == GLB_PROGRAM) MakeGaps(); InitPushCRC(); PushBool(boGapsFlag); ti = *GetCurrTimeDate(); Push(&ti, sizeof(time)); PushChar(mpbGaps[GetDayIndexMD(ti.bMonth, ti.bDay)]); Push(&mpbGaps, sizeof(gaGaps)); Output(1+sizeof(time)+1+sizeof(gaGaps)); }
void QueryModemQuality(void) { InitPush(0); PushChar('A'); PushChar('T'); PushChar('+'); PushChar('C'); PushChar('S'); PushChar('Q'); PushChar('\r'); PushChar('\n'); Query(SERIAL_MODEM, 6+2, 1); }