/[H9]/trunk/FlisServer/FlisServerDlg.cpp
ViewVC logotype

Diff of /trunk/FlisServer/FlisServerDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 136 by kevin, Mon Dec 3 14:13:20 2007 UTC revision 229 by kevin, Tue Dec 11 12:15:27 2007 UTC
# Line 6  Line 6 
6  #include "FlisServerDlg.h"  #include "FlisServerDlg.h"
7  #include <vector>  #include <vector>
8  #include ".\flisserverdlg.h"  #include ".\flisserverdlg.h"
9    #include <atlrx.h>
10    
11  #ifdef _DEBUG  #ifdef _DEBUG
12  #define new DEBUG_NEW  #define new DEBUG_NEW
# Line 65  BEGIN_MESSAGE_MAP(CFlisServerDlg, CDialo Line 66  BEGIN_MESSAGE_MAP(CFlisServerDlg, CDialo
66          ON_WM_QUERYDRAGICON()          ON_WM_QUERYDRAGICON()
67          //}}AFX_MSG_MAP          //}}AFX_MSG_MAP
68          ON_BN_CLICKED(IDCLOSE, OnBnClickedClose)          ON_BN_CLICKED(IDCLOSE, OnBnClickedClose)
         ON_BN_CLICKED(IDC_GSMPIN, OnBnClickedGsmpin)  
69          ON_BN_CLICKED(IDC_Start, OnBnClickedStart)          ON_BN_CLICKED(IDC_Start, OnBnClickedStart)
70  END_MESSAGE_MAP()  END_MESSAGE_MAP()
71    
# Line 224  void CFlisServerDlg::writeFrame(std::vec Line 224  void CFlisServerDlg::writeFrame(std::vec
224  }  }
225  void CFlisServerDlg::SetPin()  void CFlisServerDlg::SetPin()
226  {  {
227            bool ready = true;
228          CString tekst;          CString tekst;
229          std::vector<unsigned char> data;          std::vector<unsigned char> data;
230    
231          data.push_back('a');          data.push_back('a');
232          data.push_back('t');          data.push_back('t');
233          data.push_back('+');          data.push_back('+');
# Line 233  void CFlisServerDlg::SetPin() Line 235  void CFlisServerDlg::SetPin()
235          data.push_back('p');          data.push_back('p');
236          data.push_back('i');          data.push_back('i');
237          data.push_back('n');          data.push_back('n');
238          data.push_back('=');          data.push_back('?');
         data.push_back('2');  
         data.push_back('5');  
         data.push_back('9');  
         data.push_back('5');  
239    
240          writeFrame(data);          writeFrame(data);
241            Sleep(100);
242            if(Serial.getComstat().cbInQue > 0)
243            {
244                    std::vector<unsigned char> answer = readFrame();
245                    Sleep(50);
246    
247                    for (int i=0; i<answer.size(); i++)
248                            {
249                                    if ((answer[i] != 0x0A) && (answer[i] != 0x0D))
250                                    {
251                                            tekst.AppendChar(answer[i]);
252                                    }
253                            }
254                            AppendText(tekst);
255            }
256            Sleep(5);
257            tekst.MakeLower();
258            int pos = tekst.Find("+cpin: ",0);
259            if (pos != -1)
260            {
261                    tekst = tekst.Right( tekst.GetLength() - pos -1);
262            }
263    
264            if (tekst == "cpin: sim pin")
265            {
266                    CString pin;
267                    ConfigFile config;
268                    try {
269                            config.ReadSettings();
270                    } catch(...) {
271                            MessageBox("Could not open config file");
272                    }
273                    Sleep(50);
274    
275                    data.clear();
276                    data.push_back('a');
277                    data.push_back('t');
278                    data.push_back('+');
279                    data.push_back('c');
280                    data.push_back('p');
281                    data.push_back('i');
282                    data.push_back('n');
283                    data.push_back('=');
284                    for (int i = 0; i<config.pincode.GetLength(); i++)
285                    {
286                    data.push_back(config.pincode[i]);
287                    }
288    
289                    writeFrame(data);
290    
291                    Sleep(500);
292    
293                    while (ready == true)
294                    {
295                            if (Serial.getComstat().cbInQue > 120)
296                            {
297                                    std::vector<unsigned char> answer = readFrame();
298                                    CString tekst;
299                            
300                                    for (int i=0; i<answer.size(); i++)
301                                    {
302                                            if ((answer[i] != 0x0A) && (answer[i] != 0x0D))
303                                            {
304                                                    tekst.AppendChar(answer[i]);
305                                            }
306                                    }
307                                    int n = tekst.Find("WIND: 11",0);
308                                    if (n > -1)
309                                    {
310                                            ready = false;
311                                    }
312                                    else
313                                    {
314                                            AppendText(tekst);
315                                    }
316                            }
317                            Sleep(10); //Small delay to avoid busy wait
318                    }
319            }
320            else if (tekst == "cpin: ready")
321            {
322                    AppendText("No pincode needed");
323            }
324            else
325            {
326                    AppendText("Error in set pin part of the code");
327            }
328  }  }
329  void CFlisServerDlg::SendSmsData(std::vector<unsigned char> data)  void CFlisServerDlg::SendSmsData(std::vector<unsigned char> data)
330  {        {      
# Line 340  vector<Commands> CFlisServerDlg::DBReadC Line 425  vector<Commands> CFlisServerDlg::DBReadC
425  }  }
426  void CFlisServerDlg::ReadSms()  void CFlisServerDlg::ReadSms()
427  {  {
428          CString tekst, oldtekst;          CString tekst;
429          Sleep(950);             //Holder en pause for at lade hele sms'en komme ind i serial køen.          Sleep(950);             //Holder en pause for at lade hele sms'en komme ind i serial køen.
430          if(Serial.getComstat().cbInQue > 0)          if(Serial.getComstat().cbInQue > 0)
431          {          {
432                  std::vector<unsigned char> answer = readFrame();                  std::vector<unsigned char> answer = readFrame();
433                  //Sleep(50);                  Sleep(50);
434    
435                          for (int i=0; i<answer.size(); i++)                          for (int i=0; i<answer.size(); i++)
436                          {                          {
# Line 361  void CFlisServerDlg::ReadSms() Line 446  void CFlisServerDlg::ReadSms()
446  }  }
447  void CFlisServerDlg::SmsSplit(CString data)  void CFlisServerDlg::SmsSplit(CString data)
448  {  {
449          CString FyrData, TlfNr, SmsCount, Temper, Flamme, Flis, FremFejl, PowerFail, oldtekst;          CString FyrData, TlfNr, SmsCount, Temper, Flamme, Flis, FremFejl, PowerFail;
         char CharData[150];  
         strcpy(CharData,data);  
450          TlfNr = data.Mid(24,8);          TlfNr = data.Mid(24,8);
451          FyrData = data.Mid(57,data.GetLength()-3);          FyrData = data.Mid(57,data.GetLength()-59);
452          FyrData.Append(":");          FyrData.Append(":");
453            
454            if (FyrData.MakeLower() == "conf ok:")
455            {
456                    HandleAcknowledge(TlfNr);
457                    return;
458            }
459            CAtlRegExp<> regex;
460            if (regex.Parse("^{[0-9]+}:{[0-9]+}:[0-1]:[0-1]:[0-1]:[0-1]:$") == REPARSE_ERROR_OK)
461            {
462    
463                    CAtlREMatchContext<> pContext;
464    
465                    if (!regex.Match(FyrData, &pContext))
466                    {
467                            AppendText("Invalid SMS recieved");
468                            return;
469                    }
470            }
471            else
472            {
473                    AppendText("Regex PARSE error!!!"); //Burde aldrig kunne ske !
474            }
475    
476          SmsCount = Splitter(FyrData);          SmsCount = Splitter(FyrData);
477          Temper = Splitter(FyrData);          Temper = Splitter(FyrData);
478          Flamme = Splitter(FyrData);          Flamme = Splitter(FyrData);
# Line 388  void CFlisServerDlg::SmsSplit(CString da Line 493  void CFlisServerDlg::SmsSplit(CString da
493                  rs.Close();                  rs.Close();
494    
495                  SQL.Format("insert into logtable (logtime,temperature,flamedetector,solidfuelempty,conveyorerror,powerfailure,messagenr,installationnr) Values (now(),%s,'%s','%s','%s','%s',%s,%s)",Temper, Flamme, Flis, FremFejl, PowerFail, SmsCount,InstallNR);                  SQL.Format("insert into logtable (logtime,temperature,flamedetector,solidfuelempty,conveyorerror,powerfailure,messagenr,installationnr) Values (now(),%s,'%s','%s','%s','%s',%s,%s)",Temper, Flamme, Flis, FremFejl, PowerFail, SmsCount,InstallNR);
496                    try
497                    {
498                  db.ExecuteSQL(SQL);                  db.ExecuteSQL(SQL);
499                    }
500                    catch(CDBException* e)
501                    {
502                            MessageBox(e->m_strError);
503                    }
504                  AppendText("Sms added to Log");                  AppendText("Sms added to Log");
505                  Sleep(150);                  Sleep(150);
506  }  }
# Line 409  void CFlisServerDlg::OnBnClickedClose() Line 520  void CFlisServerDlg::OnBnClickedClose()
520  {  {
521          // TODO: Add your control notification handler code here          // TODO: Add your control notification handler code here
522          continueThread = 0;          continueThread = 0;
523            Sleep(250);
524          DeleteSms();          DeleteSms();
525    
526          Sleep(500);          Sleep(500);
# Line 425  void CFlisServerDlg::OnBnClickedClose() Line 537  void CFlisServerDlg::OnBnClickedClose()
537          OnOK();          OnOK();
538    
539  }  }
   
 void CFlisServerDlg::OnBnClickedGsmpin()  
 {  
         // TODO: Add your control notification handler code here  
         m_Textwindow.SetWindowText("Indsætter Pinkode, efterfuldt af 60sec pause");  
         UpdateWindow();  
         SetPin();  
         Sleep(50000);  
   
         while (Serial.getComstat().cbInQue > 0)  
         {  
                 Serial.readByte(); //Flush the incoming queue  
         }  
   
         OnBnClickedStart();  
 }  
540  void CFlisServerDlg::DeleteSms()  void CFlisServerDlg::DeleteSms()
541  {  {
542          vector<unsigned char> atcommand;          vector<unsigned char> atcommand;
# Line 475  void CFlisServerDlg::runthread() Line 571  void CFlisServerDlg::runthread()
571  {  {
572          while (continueThread != 0)          while (continueThread != 0)
573          {          {
574                  Reader();                  MyMainThread();
575          }          }
576  }  }
577  void CFlisServerDlg::Reader()  void CFlisServerDlg::MyMainThread()
578  {  {
579          if(Serial.getComstat().cbInQue > 0)          if(Serial.getComstat().cbInQue > 0)
580                  {                  {
581                          Sleep(250);                          Sleep(250);
582                          std::vector<unsigned char> answer = readFrame();                          std::vector<unsigned char> answer = readFrame();
583                          Sleep(500);                          Sleep(500);
584                          CString tekst, oldtekst;                          CString tekst;
                         int lol;  
585                                    
586                          for (int i=0; i<answer.size(); i++)                          for (int i=0; i<answer.size(); i++)
587                          {                          {
# Line 498  void CFlisServerDlg::Reader() Line 593  void CFlisServerDlg::Reader()
593                          tekst.Append(":");                          tekst.Append(":");
594    
595                          CString command;                          CString command;
596                          bool plus;                          bool plus = false;
597                                  int pos = tekst.Find('+',0);                                  int pos = tekst.Find('+',0);
598                                  if (pos != -1)                                  if (pos != -1)
599                                  {                                  {
# Line 510  void CFlisServerDlg::Reader() Line 605  void CFlisServerDlg::Reader()
605                                  }                                  }
606                                                    
607                                                    
608                          if(tekst == "OK")                          if(tekst.MakeLower() == "ok")
609                          {                                {      
610                                  AppendText("OK tekst modtaget");                                  AppendText("OK tekst modtaget");
611                          }                          }
612                          else if (tekst == "error")                          else if (tekst.MakeLower() == "error")
613                          {                          {
614                                  CString send;                                  CString send;
615                                  send.Append("error tekst");                                  send.Append("error tekst");
# Line 524  void CFlisServerDlg::Reader() Line 619  void CFlisServerDlg::Reader()
619                          }                          }
620                          else if (plus == true)                          else if (plus == true)
621                          {                          {
622                                  if (command == "cmti")                                  if (command.MakeLower() == "cmti")
623                                  {                                  {
624                                          CString smscount, oldteskst;                                          CString smscount;
625                                          int pos = tekst.Find(',',0);                                          int pos = tekst.Find(',',0);
626                                          if (pos != -1)                                          if (pos != -1)
627                                          {                                          {
# Line 534  void CFlisServerDlg::Reader() Line 629  void CFlisServerDlg::Reader()
629                                                  smscount.Remove(':');                                                  smscount.Remove(':');
630                                                  ResetSms++;                                                  ResetSms++;
631                                          }                                          }
632                                                  ////////////////Read sms ting//////////////////  
633                                                  std::vector<unsigned char> data;                                          std::vector<unsigned char> data;
634                                                  data.push_back('a');                                          data.push_back('a');
635                                                  data.push_back('t');                                          data.push_back('t');
636                                                  data.push_back('+');                                          data.push_back('+');
637                                                  data.push_back('c');                                          data.push_back('c');
638                                                  data.push_back('m');                                          data.push_back('m');
639                                                  data.push_back('g');                                          data.push_back('g');
640                                                  data.push_back('r');                                          data.push_back('r');
641                                                  data.push_back('=');                                          data.push_back('=');
642                                                                                            
643                                                  for (int i=0; i< smscount.GetLength(); i++)                                          for (int i=0; i< smscount.GetLength(); i++)
644                                                  {                                          {
645                                                          data.push_back(smscount[i]);                                                  data.push_back(smscount[i]);
646                                                  }                                          }
647                                                  m_Textwindow.GetWindowText(oldteskst);                                          AppendText(CString(&data[0]));
648                                                  oldteskst.Append("\r\n");                                          writeFrame(data);
649                                                  for (int i=0; i<data.size();i++)                                          Sleep(200);
650                                                  {                                          ReadSms();
                                                         oldteskst.AppendChar(data[i]);  
                                                 }  
                                                 m_Textwindow.SetWindowText(oldteskst);  
                                                 writeFrame(data);  
                                                 Sleep(200);  
                                                 ReadSms();  
                                                 ResetSms++;  
651    
652                                  }                                  }
653                                  else if(command == "wind")                                  else if(command.MakeLower() == "wind")
654                                  {                                  {
655    
656                                          CString send;                                          CString send;
# Line 574  void CFlisServerDlg::Reader() Line 662  void CFlisServerDlg::Reader()
662                          }                          }
663                          else                          else
664                          {                          {
665                                  CString send;                                  AppendText(tekst);
                                 send.Append("Anden tekst end forventet");  
                                 send.Append("\r\n");  
                                 send.Append(tekst);  
                                 AppendText(send);  
                         }  
                         if(ResetSms == 20)  
                         {  
                                 DeleteSms();  
                                 AppendText("Sms'er slettet da vi nåede grænsen");  
666                          }                          }
   
667                  }                  }
668                    if(ResetSms == 20)
669                    {
670                            DeleteSms();
671                            AppendText("Sms'er slettet da vi nåede grænsen");
672                    }
673    
674                  if (continueThread == 1)                  if (continueThread == 1)
675                  {                  {
676                                                    
# Line 600  void CFlisServerDlg::Reader() Line 684  void CFlisServerDlg::Reader()
684                                  sIDnr = data[i].IDnr;                                  sIDnr = data[i].IDnr;
685                                  sCommandID = data[i].CommandID;                                  sCommandID = data[i].CommandID;
686                                  commandtest = atoi(data[i].CommandID);                                  commandtest = atoi(data[i].CommandID);
687                                    sInstallationsID = "0";
688    
689                                  if(commandtest > 1)                                  if(commandtest > 1)
690                                  {                                  {
691                                          sInstallationsID = data[i].InstallationsID;                                          sInstallationsID = data[i].InstallationsID;
692                                  }                                  }
693                          }                          }
694                          sIDnr = Splitter(testdata);                          
                         sCommandID = Splitter(testdata);  
                         sInstallationsID = "0";  
695                          if (commandtest > 1)                          if (commandtest > 1)
696                          {                          {
                                 sInstallationsID = Splitter(testdata);  
697                                  iAll = 0;                                  iAll = 0;
698                          }                          }
699    
# Line 619  void CFlisServerDlg::Reader() Line 701  void CFlisServerDlg::Reader()
701                          {                          {
702                                  SendConfig(sIDnr,sCommandID,sInstallationsID);                                  SendConfig(sIDnr,sCommandID,sInstallationsID);
703                          }                          }
704                            Sleep(300);
705    
706                            CheckAcknowledges();
707                          Sleep(500);                          Sleep(500);
708                  }                  }
709                    CTime now = CTime::GetCurrentTime();
710    
711                    CTimeSpan elapsed = now-Alive.tid;
712    
713                    if (elapsed.GetTotalSeconds() >= 900)
714                    {
715                            keepaliveandread();
716                    }
717  }  }
718  void CFlisServerDlg::SendConfig(CString IDnr,CString CommandID,CString InstallationsID)  void CFlisServerDlg::SendConfig(CString IDnr,CString CommandID,CString InstallationsID)
719  {  {      
         CString ServerTlfNr;  
         int i = 0;  
         ServerTlfNr = "29860132";  
                   
720                    
721          std::vector<Installation> inst;          std::vector<Installation> inst;
722          inst = DBReadPhone(InstallationsID);  
723          while (i < inst.size())          if (CommandID == "1")
724                    inst = DBReadPhone("0");
725            else
726                    inst = DBReadPhone(InstallationsID);
727    
728            for ( int j=0; j < inst.size(); j++)
729          {          {
730                  CString TlfNr, Imei, updaterate;                  CString TlfNr, Imei, updaterate;
731                  TlfNr.Empty();                  TlfNr.Empty();
732                  Imei.Empty();                  Imei.Empty();
733                  updaterate.Empty();                  updaterate.Empty();
734    
735                  CString dataen = inst[i].InstPhoneNr;                  CString dataen = inst[j].InstPhoneNr;
736                  TlfNr.Append(dataen);                  TlfNr.Append(dataen);
737                  CString Imeidata = inst[i].Imei;                  CString Imeidata = inst[j].Imei;
738                  Imei.Append(Imeidata);                  Imei.Append(Imeidata);
739                  CString updaterat = inst[i].Updaterate;                  CString updaterat = inst[j].Updaterate;
740                  updaterate.Append(updaterat);                  updaterate.Append(updaterat);
                 i++;  
741                    
742          vector<unsigned char> tlfnr;                  vector<unsigned char> tlfnr;
743          for (int i=0; i<TlfNr.GetLength(); i++)                  for (int i=0; i<TlfNr.GetLength(); i++)
744          {                  {
745                  tlfnr.push_back(TlfNr[i]);                          tlfnr.push_back(TlfNr[i]);
746          }                  }
747                            
748          int calcimei;                  int calcimei;
749          __int64 buf;                  __int64 buf;
750    
751          buf = atof(Imei);                  buf = atof(Imei);
752                            
753          calcimei = tversum(buf);                  calcimei = tversum(buf);
754                            
755          Imei.Format("%d",calcimei);                  Imei.Format("%d",calcimei);
756                            
757          SendSmsHead(tlfnr);                  SendSmsHead(tlfnr);
758          Sleep(250);                  Sleep(250);
759                            
760          vector<unsigned char> smsdata;                  vector<unsigned char> smsdata;
761                            
762          for (int i=0; i<Imei.GetLength(); i++)                  for (int i=0; i<Imei.GetLength(); i++)
763          {                  {
764                  smsdata.push_back(Imei[i]);                          smsdata.push_back(Imei[i]);
765          }                  }
766          smsdata.push_back(':');                  smsdata.push_back(':');
767          for (int i=0; i<ServerTlfNr.GetLength(); i++)                  for (int i=0; i<Alive.Phonenr.GetLength(); i++)
768          {                  {
769                  smsdata.push_back(ServerTlfNr[i]);                          smsdata.push_back(Alive.Phonenr[i]);
770          }                  }
771          smsdata.push_back(':');                  smsdata.push_back(':');
772          for (int i=0; i<updaterate.GetLength(); i++)                  for (int i=0; i<updaterate.GetLength(); i++)
773          {                  {
774                  smsdata.push_back(updaterate[i]);                          smsdata.push_back(updaterate[i]);
775          }                  }
776    
777                    SendSmsData(smsdata);
778                    Sleep(500);
779    
780                    if (IDnr != "0")
781                    {
782                            Acks.push_back( Acknowledge(inst[j].instID,TlfNr) );
783                    }
784    
         SendSmsData(smsdata);  
         Sleep(500);  
           
785          }          }
786    
787            if (IDnr != "0")
788            {
789                  CString SQL, Textwindow;                  CString SQL, Textwindow;
790                  SQL.Format("update command set executed=now() where id=%s",IDnr);                  SQL.Format("update command set executed=now() where id=%s",IDnr);
791                  db.ExecuteSQL(SQL);                  db.ExecuteSQL(SQL);
792                    Sleep(100);
793                  AppendText("Command executed");                  AppendText("Command executed");
794                  Sleep(150);          }
795            Sleep(150);
796    
797    
798    
799    
800  }  }
801  vector<Installation> CFlisServerDlg::DBReadPhone(CString sInstallationsID)  vector<Installation> CFlisServerDlg::DBReadPhone(CString sInstallationsID)
802  {  {
803          vector<Installation> buffer;          vector<Installation> buffer;
804    
805          CString SQL, phonenr, imei, updaterate;          CString SQL, phonenr, imei, updaterate, id;
         int installernull;  
806          Installation Myinst;          Installation Myinst;
807          installernull = atoi(sInstallationsID);  
808          if (installernull > 1)          if (sInstallationsID != "0")
809          {          {
810                  SQL.Format("select installationphonenr, imei, updaterate from installation WHERE id = %s", sInstallationsID);                  SQL.Format("select installationphonenr, imei, updaterate, id from installation WHERE id = %s", sInstallationsID);
811          }          }
812          else if(installernull < 2)          else
813          {          {
814                  SQL.Format("select installationphonenr, imei, updaterate from installation");                  SQL.Format("select installationphonenr, imei, updaterate, id from installation");
815          }          }
816    
817          CRecordset rs(&db);          CRecordset rs(&db);
818          rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);          rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);
819          if (rs.GetRecordCount()>0)          if (rs.GetRecordCount()>0)
# Line 719  vector<Installation> CFlisServerDlg::DBR Line 825  vector<Installation> CFlisServerDlg::DBR
825                          rs.GetFieldValue((short)0,phonenr);                          rs.GetFieldValue((short)0,phonenr);
826                          rs.GetFieldValue(1,imei);                          rs.GetFieldValue(1,imei);
827                          rs.GetFieldValue(2,updaterate);                          rs.GetFieldValue(2,updaterate);
828                            rs.GetFieldValue(3,id);
829    
830                          Myinst.InstPhoneNr = phonenr;                          Myinst.InstPhoneNr = phonenr;
831                          Myinst.Imei = imei;                          Myinst.Imei = imei;
832                          Myinst.Updaterate = updaterate;                          Myinst.Updaterate = updaterate;
833                            Myinst.instID = id;
834    
835                          buffer.push_back(Myinst);                          buffer.push_back(Myinst);
836                          rs.MoveNext();                          rs.MoveNext();
# Line 745  void CFlisServerDlg::OnBnClickedStart() Line 853  void CFlisServerDlg::OnBnClickedStart()
853  {  {
854  // TODO: Add your control notification handler code here  // TODO: Add your control notification handler code here
855    
856            AppendText("Indsætter Pinkode, og venter på modem bliver klar, hvis pinkode er nødvendig");
857            UpdateWindow();
858            SetPin();
859            
860            Sleep(100); //Give the modem a chance to send the last data
861            while(Serial.getComstat().cbInQue > 0)
862            {
863                    Serial.readByte(); //Flush the incoming queue
864                    Sleep(1);
865            }
866        Sleep(5);
867    
868          continueThread = 1;          continueThread = 1;
869          m_Textwindow.SetWindowText("Started");          keepaliveandread();
870            Sleep(150);
871            AppendText(CString("Server phonenr read from db: ") + Alive.Phonenr );
872            AppendText("Started");
873          AfxBeginThread(threadWrapper,AfxGetMainWnd());          AfxBeginThread(threadWrapper,AfxGetMainWnd());
874  }  }
875  void CFlisServerDlg::AppendText(CString s)  void CFlisServerDlg::AppendText(CString s)
876  {  {
877            CTime now = CTime::GetCurrentTime();
878          CString Tekst;          CString Tekst;
879          m_Textwindow.GetWindowText(Tekst);          m_Textwindow.GetWindowText(Tekst);
880          Tekst.Append("\r\n");          Tekst.AppendFormat("%02d:%02d:%02d : ", now.GetHour(), now.GetMinute(), now.GetSecond());
881          Tekst.Append(s);          Tekst.Append(s);
882            Tekst.Append("\r\n");
883    
884          m_Textwindow.SetWindowText(Tekst);          m_Textwindow.SetWindowText(Tekst);
885            Sleep(5);
886            int g = m_Textwindow.GetScrollLimit(SB_VERT);
887            if (g > 0)
888            {
889            m_Textwindow.SetSel(m_Textwindow.GetWindowTextLength() -1,m_Textwindow.GetWindowTextLength(),false);
890            }
891    
892  }  }
893  void ConfigFile::ReadSettings()  void ConfigFile::ReadSettings()
# Line 787  void ConfigFile::ReadSettings() Line 919  void ConfigFile::ReadSettings()
919                                  database = value;                                  database = value;
920                          else if (key == "comport")                          else if (key == "comport")
921                                  comport = value;                                  comport = value;
922                            else if (key == "pincode")
923                                    pincode = value;
924                  }                  }
925    
926          }          }
927    
928          file.close();          file.close();
 }  
929    }
930    void CFlisServerDlg::HandleAcknowledge(CString tlfnr)
931    {
932            for (std::list<Acknowledge>::iterator it = Acks.begin(); it != Acks.end(); ++it)
933            {
934                    Acknowledge& current = (*it);
935                    if (current.sTlfNr == tlfnr)
936                    {
937                            CString SQL;
938                            SQL.Format("UPDATE installation SET commerror = false WHERE id = %s", current.sInstallationID);
939                            db.ExecuteSQL(SQL);
940    
941                            Acks.erase(it);
942    
943                            return;
944                    }
945            }
946    }
947    
948    void CFlisServerDlg::CheckAcknowledges()
949    {
950            CTime now = CTime::GetCurrentTime();
951            for (std::list<Acknowledge>::iterator it = Acks.begin(); it != Acks.end(); ++it)
952            {
953                    Acknowledge& current = (*it);
954    
955                    CTimeSpan elapsed = now-current.cTime;
956    
957                    if (elapsed.GetTotalSeconds() >= 300)
958                    {
959                            DumpAckList();
960                            if (current.iRetry >= 1)
961                            {
962                                    CString SQL;
963                                    SQL.Format("UPDATE installation SET commerror = true WHERE id = %s", current.sInstallationID);
964                                    db.ExecuteSQL(SQL);
965                                    Acks.erase(it);
966                                    return; // the iterator is now invalidated, but the thread loop will make sure we are here soon again
967                            }
968                            else
969                            {
970                                    SendConfig("0","2",current.sInstallationID);
971                                    current.iRetry++;
972                                    current.cTime = CTime::GetCurrentTime();
973                                    AppendText( CString("Retry send config to ") + current.sTlfNr );
974                            }
975                    }
976            }
977    }
978    
979    void CFlisServerDlg::DumpAckList()      /* Debug tool */
980    {
981            
982            CTime now = CTime::GetCurrentTime();
983            OutputDebugString("-------------------------------\n");
984            int count = 0;
985            for (std::list<Acknowledge>::iterator it = Acks.begin(); it != Acks.end(); ++it)
986            {
987                    CString msg;
988                    msg.Format("%d:%d:%d> %4d : %s\n", now.GetHour(), now.GetMinute(), now.GetSecond(), count, (*it).sTlfNr);
989                    OutputDebugString(msg);
990                    count++;
991            }
992    }
993    vector<keepalive> CFlisServerDlg::keepaliveandread(void)
994    {
995            vector<keepalive> buffer;
996    
997            CString SQL, name, value;
998            SQL = "select name, value from config;";
999            CRecordset rs(&db);
1000            try
1001            {
1002                    rs.Open(AFX_DB_USE_DEFAULT_TYPE, SQL);
1003                    if (rs.GetRecordCount()>0)
1004                    {
1005                            rs.MoveFirst();
1006                            
1007                            rs.GetFieldValue((short)0, name);
1008                            rs.GetFieldValue(1,value);
1009                    
1010                            Alive.name = name;
1011                            Alive.value = value;
1012                            Alive.tid = CTime::GetCurrentTime();
1013                            if(Alive.name == "phonenr")
1014                            {
1015                                    Alive.Phonenr = value;
1016                            }
1017    
1018                            buffer.push_back(Alive);
1019                            rs.MoveNext();
1020    
1021                    }
1022                    rs.Close();
1023                    return buffer;
1024            }
1025            catch (char * str)
1026            {
1027                    AppendText("Keepalive failed, closing and opening the db connection again");
1028                    if(db.IsOpen())
1029                    {
1030                            db.Close();
1031                            AppendText("DB connection closed");
1032                    }
1033                    if(!db.IsOpen())
1034                    {
1035                            DBConnect();
1036                            AppendText("DB connection started again");
1037                    }
1038                    return buffer;
1039            }
1040    
1041            
1042    }

Legend:
Removed from v.136  
changed lines
  Added in v.229

  ViewVC Help
Powered by ViewVC 1.1.20