Exemple #1
0
void    LongResult(uchar  bT) {
  InitPushCRC();
  PushChar(bT);
  PushChar(0);

  Output(2);
}
Exemple #2
0
// открытие канала для сумматоров СЭМ-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);
}
Exemple #3
0
// чтение коэффициентов для счётчика Меркурий-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);
}
Exemple #4
0
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);
}
Exemple #10
0
__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);
}
Exemple #12
0
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);
}
Exemple #13
0
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);
}
Exemple #15
0
void    QueryTimeS(void)
{
  InitPush(0);

  PushChar(0xC0);
  PushChar(0x48);

  PushAddressS();

  PushChar(0xD0);
  PushChar(0x01);
  PushChar(0x20);

  QueryS(100+18, 15);
}
Exemple #16
0
void    QueryVersionS(void)
{
  InitPush(0);

  PushChar(0xC0);
  PushChar(0x48);

  PushAddressS();

  PushChar(0xD0);
  PushChar(0x01);
  PushChar(0x00);

  QueryS(100+17, 15);
}
Exemple #17
0
void    QueryConfigS(void)
{
  InitPush(0);

  PushChar(0xC0);
  PushChar(0x48);

  PushAddressS();

  PushChar(0xD0);
  PushChar(0x01);
  PushChar(0x01);

  QueryS(100+16, 15);
}
Exemple #18
0
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];
}
Exemple #19
0
void    QueryModemEscape(void)
{
  ShowLo(szEscape); //DelayInf();

  Delay(1500);

  InitPush(0);

  PushChar('+');
  PushChar('+');
  PushChar('+');

  Query(SERIAL_MODEM, 3, 1);

  Delay(1500);
}
Exemple #20
0
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);
}
Exemple #22
0
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);
}
Exemple #25
0
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;
}
Exemple #26
0
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);
  }
}
Exemple #28
0
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);
}
Exemple #29
0
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));
}
Exemple #30
0
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);
}