////////////////////////////////////////////////////////////////////////////////
//                                                              //
////////////////////////////////////////////////////////////////////////////////

/*void create_connect(void)   //      NatICQ  MailDaemon =)
{
    SOCK_ADDR sa;
    int err;
    int ***p_res=NULL;
    unsigned int ip;
    char Message[128];
    char FILEPATH[128];

      GBS_DelTimer(&reconnect_tmr); //  
      GBS_StartTimerProc(&CheckPing, TMR_SECOND*GPRS_AWAY, TimerCheckPing);
      CONECTED = 0; //   
      DNR_ID=0;
//        WriteStr("  ",LOG);
        ip=str2ip(HOST_NAME);
//        WriteStr("ip=str2ip(HOST_NAME)",LOG);
        if (ip!=0xFFFFFFFF)
        {
          sa.ip=ip;
//          WriteStr("  IP",LOG);
          goto CONECT_HOST;
        }
        err=async_gethostbyname(HOST_NAME,&p_res,&DNR_ID);
//        WriteStr(" IP  ",LOG);
        if (err)
        {
          if ((err==0xC9)||(err==0xD6))
          {
            if (DNR_ID) 
            {
              //if (GPRS_RESTART)
              GBS_DelTimer(&CheckPing); //    
              return; //   DNR
            }
          }
          else  // DNR  
          {
            GBS_DelTimer(&CheckPing); //  
            GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*120,do_reconnect);        
            return;
          }
        }
        if (p_res)
        {
          if (p_res[3])
          {          
            DNR_TRIES=0;
            sa.ip=p_res[3][0][0];
            
            CONECT_HOST:
//            WriteStr(" ",LOG);        
            sock=socket(1,1,0);
//            WriteStr("  ",LOG);                
            if (sock!=-1)
            {
//              WriteStr(" ",LOG);                
              sa.family=1;
	      sa.port=htons(HOST_PORT);
//              WriteStr(" ",LOG);                
              if (connect(sock,&sa,sizeof(sa))!=-1) //  , 
              {
                CONECTED = 1;
                GBS_DelTimer(&CheckPing); //  
                GBS_StartTimerProc(&AutoPing, TMR_SECOND*PING_ENABLE, TimerPing);  //  
//                WriteStr("...",LOG);                
                if (WRITE_IP)
                  if (LAST_HOST != HOST_NAME)
                  {
                    sprintf(Message,"HOST: %s IP:%d\r\n",HOST_NAME,sa.ip);
                    sprintf(FILEPATH,WRITE_FILEPATH);
                    //                    ShowMSG(1,(int)Message);
                    WriteStr(Message,FILEPATH);
                    strcpy(LAST_HOST,HOST_NAME);
                  }
//                WriteStr(" IP...",LOG);  
                
	      }
              else  //   
	      {
//                WriteStr("   =(",LOG);                
                closesocket(sock);  //  
	        sock=-1;
	      }
            }
            else
            {
              GPRS_OnOff(0,1);
              GPRS_OnOff(1,0);
            }
          }
        }
        else
              DNR_TRIES--;
              
//  WriteStr("PING ",LOG);                
}

void do_reconnect(void) // 
{
  if (is_gprs_online)
  {
    if (!CONECTED)
    {
      DNR_TRIES=3;
      SUBPROC((void*)create_connect);
//      WriteStr("..",LOG);
    }
  }
}

void end_socket(void) //  
{
  if (sock>=0)
  {
    shutdown(sock,2);
    closesocket(sock);
//    WriteStr(" ",LOG);
  }
}*/



/////////////////////////////////


csm message

/*    if (PING_ENABLE)  //    
    {
      switch((int)msg->data0)
      {
      case LMAN_DISCONNECT_IND: // GPRS 
        is_gprs_online=0;
        break;
      case LMAN_CONNECT_CNF:  // GPRS 
        GBS_DelTimer(&reconnect_tmr); //  
        GBS_DelTimer(&AutoPing); //  
        GBS_DelTimer(&CheckPing); //  
        is_gprs_online=1;
        GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*10,do_reconnect); //   
        break;
      case ENIP_DNR_HOST_BY_NAME:
        if ((int)msg->data1==DNR_ID)
        {
          if (DNR_TRIES)
          {
            GBS_DelTimer(&reconnect_tmr); //  
            GBS_DelTimer(&AutoPing); //  
            GBS_DelTimer(&CheckPing); //  
            SUBPROC((void *)create_connect);
          }        
        }
        break;
      }
      if ((int)msg->data1==sock)  //   
      {
        switch((int)msg->data0)
        {
        case ENIP_SOCK_CONNECTED: //  
          {
            GBS_DelTimer(&reconnect_tmr); //  
//            GBS_DelTimer(&AutoPing); //  
            GBS_DelTimer(&CheckPing); //  
            SUBPROC((void *)SEND_PING); // 
//            WriteStr(" , ",LOG);
          }
	  break;
      
        case ENIP_SOCK_DATA_READ: //  
          {
	    SUBPROC((void *)READ_PING); //  
//            WriteStr(" , ",LOG);
          }
  	  break;
        
/*        case ENIP_BUFFER_FREE:  //  ?
          {
            GBS_DelTimer(&reconnect_tmr); //  
//            GBS_DelTimer(&AutoPing); //  
//            GBS_DelTimer(&CheckPing); //  
            SUBPROC((void *)TimerPing); //   
//            WriteStr("  1",LOG);
//          SUBPROC((void *)end_socket);
          }
          break;
        
        case ENIP_BUFFER_FREE1: // 
          {
            GBS_DelTimer(&reconnect_tmr); //  
//            GBS_DelTimer(&AutoPing); //  
//            GBS_DelTimer(&CheckPing); //  
            SUBPROC((void *)TimerPing); //   
//            WriteStr("  2",LOG);
//          SUBPROC((void *)end_socket);
          }
          break;*/
          
/*        case ENIP_SOCK_REMOTE_CLOSED: //     
          {
            GBS_DelTimer(&reconnect_tmr); //  
            GBS_DelTimer(&AutoPing); //  
            GBS_DelTimer(&CheckPing); //  
            SUBPROC((void *)end_socket);  //  
//            WriteStr("  ",LOG);
          }
	  break;
        
        case ENIP_SOCK_CLOSED:  //   
          {
//            GBS_DelTimer(&reconnect_tmr); //  
            GBS_DelTimer(&AutoPing); //  
            GBS_DelTimer(&CheckPing); //  
            
  	    sock = -1;
            CONECTED = 0;
//            WriteStr(" ",LOG);
          }
	  break;
       }
    }
  }*/



////////////////////////////////////////////////////////////////////////////////
//                                PING =)                            //
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/*
////////////////////////////////////////////////////////////////////////////////
*/
////////////////////////////////////////////////////////////////////////////////

/*void SEND_PING(void)  
{
  ICMPECHO msg_buf;
    if  (sock)
      if (recv_ping)
      {
        send(sock,&msg_buf,sizeof(msg_buf),0);                                   
        GetDateTime(&date,&time); 
        send_ping = 1;
        recv_ping = 0;
//        WriteStr(" ",LOG);
        if (GPRS_RESTART)
         GBS_StartTimerProc(&CheckPing, TMR_SECOND*GPRS_AWAY, TimerCheckPing);
      }
}

void READ_PING(void)  
{
    char Message[128];
    ICMPECHO* buf;
    int ping_time=0;
/*    int minute, minute_;
    int secunde,secunde_;*/
//    int i;
/*    if (send_ping)
    {
      recv(sock,buf,sizeof(buf),0); 
///      ping_time = GetIDLETime(time,date);//////////////////////////////////////////////////////////////////////////////////////////////
//      GetDateTime(&date_,&time_); 
      recv_ping = 1;
      send_ping = 0;
//      WriteStr(" ",LOG);
      if (NOTIFY_PING)
        {
/*          for (i=1; i<=60;i++)
          {*/
/*            minute = time_.min;
            minute_ = time.min;
            secunde = time_.sec;
            secunde_ = time.sec;*/
//          }         
          
            
//          minute = ((int)time_.min - (int)time.min)*60; // (50 - 49) * 60 = 60
//          secunde = ((int)time_.sec - (int)time.sec); // (00 - 10) = -10; 10-00=10
//          ping_time = ((minute - minute_)*60) + (secunde - secunde_); // 60 - 10 = 50;
/*            sprintf(Message,PING_MESSAGE,(int)ping_time);
/*            char Messages[64];
            sprintf(Messages, perc_s,Message);*/
/*            ShowMessage(Message);
//            ShowMSG(1,(int)Messages);                       
        }        
      if (GPRS_RESTART)
      {
        if (ping_time > GPRS_LONG)      
        {
          GPRS_OnOff(0,1);
          GPRS_OnOff(1,0);
        }
      }
GBS_StartTimerProc(&reconnect_tmr,TMR_SECOND*PING_TIME,create_connect);   
//      SUBPROC((void *)TimerPing);
    }
}

////////////////////////////////////////////////////////////////////////////////
/*
////////////////////////////////////////////////////////////////////////////////
*/
////////////////////////////////////////////////////////////////////////////////

/*void TimerPing(void)
{
    if (PING_ENABLE)
    {
      SUBPROC((int *)SEND_PING);
    }
      GBS_StartTimerProc(&AutoPing, TMR_SECOND*PING_TIME, TimerPing);//       ,     60 
}

void TimerCheckPing(void)
{
  if (send_ping)
    if (!recv_ping)
      if (GPRS_RESTART)
      {
        GPRS_OnOff(0,1); 
        GPRS_OnOff(1,0);
      }
//      GBS_StartTimerProc(&CheckPing, TMR_SECOND*GPRS_AWAY, TimerCheckPing);
}
*/