1

EGTS протокол

Topic: EGTS протокол

Здравствуйте. Скачал доки и валидатор EGTS.
Не могу понять, как пройти авторизацию.
В файле NTCPIpClient.cpp в функции UINT NTCPIPClientThread::ThreadProc(LPVOID lpBuf)
добавил код, ответы идут но не те. Не понимаю, что исправить. Есть ли у кого валидатор с Teledata services.
....
if (bShowServiceLayer)
                {
                    printf ("EGTS Service Layer:\n"
                        "---------------------\n"
                        "  Validating result   - %u (%s%s)\n\n",
                        iParsRC,
                        iParsRC&EGTS_PC_ERROR_MASK?"ERROR: ":"",
                        EGTS::EGTS_RC_Description(iParsRC));
if (!(iParsRC&EGTS_PC_ERROR_MASK))
                  {
                      showServiceLayer(cSL);       
                    //if (cSL.SFRCS)
                    {                       
                        EGTS::Packet *ab = cSL.getPacket();
                        if (ab && ab->cSLRecords.size())
                        {
                            EGTS::SR_list_t::const_iterator itrs=ab->cSLRecords.begin();
                            EGTS::SR_list_t::const_iterator itrse=ab->cSLRecords.end();
                             while (itrs!=itrse)
                            {
                               
                                if (itrs->lSubrecords.size())
                                {
                                    EGTS::SSbR_list_t::const_iterator sitrs= itrs->lSubrecords.begin();
                                    EGTS::SSbR_list_t::const_iterator sitrse= itrs->lSubrecords.end();
                                    while (sitrs!=sitrse)
                                    {
                                        if (itrs->lSubrecords.size())
                                        {
                                            if (sitrs->SRT == EGTS_SR_AUTH_TERM_IDENTITY)
                                            {
                                                EGTS::ServiceLayer ccSL;
                                                ccSL = cSL;
                                                ccSL.setPacketType(0);
                                                EGTS::bytestream bs;
                                                ccSL.setPacketType(0);
                                                EGTS::Packet * pl = ccSL.getPacket();
                                               
                                                EGTS::Service_Record hh;
                                                EGTS::CreatePacket(bs,cTH,ccSL);
                                                for (int r = 0; r < bs.getlen(); r++)
                                                    printf("%.2X",bs.getdata()[r]);
                                                m_lpSock->SendReqToServer((LPVOID*)bs.getdata(),sizeof(char)*bs.getlen(),1000);   
                                            }
                                            ++sitrs;
                                        }
                                       
                                    }
                                   

                                }
                                ++itrs;
                             }
                           
                        }
                               
                    }

2

EGTS протокол

Re: EGTS протокол

Что-то пока не получается. Примеров мало

if (bShowServiceLayer)
                {
                    printf ("EGTS Service Layer:\n"
                        "---------------------\n"
                        "  Validating result   - %u (%s%s)\n\n",
                        iParsRC,
                        iParsRC&EGTS_PC_ERROR_MASK?"ERROR: ":"",
                        EGTS::EGTS_RC_Description(iParsRC));

                  if (!(iParsRC&EGTS_PC_ERROR_MASK))
                  {
                      showServiceLayer(cSL);       
                    //if (cSL.SFRCS)
                    {                       
                        EGTS::Packet *ab = cSL.getPacket();
                        if (ab && ab->cSLRecords.size())
                        {
                            EGTS::SR_list_t::const_iterator itrs=ab->cSLRecords.begin();
                            EGTS::SR_list_t::const_iterator itrse=ab->cSLRecords.end();
                             while (itrs!=itrse)
                            {
                               
                                if (itrs->lSubrecords.size())
                                {
                                    EGTS::SSbR_list_t::const_iterator sitrs= itrs->lSubrecords.begin();
                                    EGTS::SSbR_list_t::const_iterator sitrse= itrs->lSubrecords.end();
                                    while (sitrs!=sitrse)
                                    {
                                        if (itrs->lSubrecords.size())
                                        {
                                            if (itrs->cHeader.RST == EGTS_AUTH_SERVICE && sitrs->SRT == EGTS_SR_AUTH_TERM_IDENTITY)
                                            {
                                                //узнаем, что за терминал
                                            //    unsigned long TID = ((EGTS::Subrecord_AUTH_TERM_IDENTITY*)sitrs->pSRD)->authfase1.TID;
                                                printf("\tTID = %d\n",TID);   
                                                printf("\tRL = %d\n",itrs->cHeader.RL);
                                                printf("\tRFL = %d\n",itrs->cHeader.RFL);
                                                printf("\tRN = %d\n",itrs->cHeader.RN);
                                                printf("\tRST = %d\n",itrs->cHeader.RST);
                                                printf("\tSST = %d\n",itrs->cHeader.SST);       
                                               
                                                                                                struct SEGTS_SR_RECORD_RESPONSE
                                                {
                                                    unsigned short CRN;
                                                    unsigned char RST;
                                                };
                                                SEGTS_SR_RECORD_RESPONSE w;
                                                w.CRN = itrs->cHeader.RN;
                                                w.RST = EGTS_PC_OK;   


                                                EGTS::ServiceLayer pl;
                                                pl.setPacketType(EGTS_PT_RESPONSE);
                                                EGTS::Packet *packet = pl.getPacket();
                                                EGTS::Service_Record ax;
                                                memcpy(&ax.cHeader,&itrs->cHeader,sizeof(ax.cHeader));
                                                ax.cHeader.RL=sizeof(w);;
                                                EGTS::Service_SubRecord m;
                                                m.SRT=0;//EGTS_SR_RECORD_RESPONSE;
                                                                                       
                                                m.SRL=sizeof(w);
                                                m.uProccResult = 0;
                                                m.pSRD = new EGTS::Subrecord_AUTH_TERM_IDENTITY;
                                                ax.lSubrecords.push_back(m);
                                                packet->cSLRecords.push_back(ax);
                                                EGTS::bytestream bs;                                           
                                                EGTS::CreatePacket(bs,cTH,pl);
                                                for (int r = 0; r < bs.getlen(); r++)
                                                    printf("%.2X",bs.getdata()[r]);
                                                m_lpSock->SendReqToServer((LPVOID*)bs.getdata(),sizeof(char)*bs.getlen(),1000);   
                                               
                                            }
                                            ++sitrs;
                                        }
                                       
                                    }
                                   

                                }
                                ++itrs;
                             }
                           
                        }

3

EGTS протокол

Re: EGTS протокол

Неужели ни у кого нет реализации авторизации?

4

EGTS протокол

Re: EGTS протокол

все, решил. тему можно закрывать

5

EGTS протокол

Re: EGTS протокол

думаю всем был бы интересен ответ)  на какое оборудование делали протокол?

l-trans.net  Украина Кременчуг GPS наблюдение +380973490918