yincheng.zhong
2 天以前 2ebb8217f43b69f491620423ea4d5d5944d1f91d
keil/include/components/internet/src/NTRIPClient.c
@@ -35,13 +35,13 @@
typedef enum
{
    CLIENT_STATE_IDLE,
   CLIENT_STATE_CONNECT_SOUCE_LIST_SERVER,
    CLIENT_STATE_CONNECT_SOUCE_LIST_SERVER,
    CLIENT_STATE_GET_SOUCE_LIST,
   CLIENT_STATE_GET_RTCM_DATA,
    CLIENT_STATE_GET_RTCM_DATA,
    CLIENT_STATE_CONNECT_RTCM_DATA_SERVER,
   CLIENT_STATE_GET_RTCM_DATA_SUCCESS,
    CLIENT_STATE_GET_RTCM_DATA_SUCCESS,
   CLIENT_STATE_MAX,
    CLIENT_STATE_MAX,
} E_ClientState;
typedef enum
@@ -268,12 +268,12 @@
static HIDO_INT32 SendGetSourceTableRequest(void)
{
    l_u32SendBuffLen = HIDO_UtilSnprintf(l_acSendBuff, sizeof(l_acSendBuff),
           "GET / HTTP/1.0\r\n" \
           "User-Agent: NTRIP LefebureNTRIPClient/20131124\r\n" \
           "Accept: */*\r\n" \
           "Connection: close\r\n" \
           "Authorization: Basic %s\r\n" \
           "\r\n", l_acAuthorization);
                                         "GET / HTTP/1.0\r\n" \
                                         "User-Agent: NTRIP LefebureNTRIPClient/20131124\r\n" \
                                         "Accept: */*\r\n" \
                                         "Connection: close\r\n" \
                                         "Authorization: Basic %s\r\n" \
                                         "\r\n", l_acAuthorization);
    return Socket_Send(l_i32SockID, (HIDO_UINT8 *)l_acSendBuff, l_u32SendBuffLen);
}
@@ -290,12 +290,12 @@
static HIDO_INT32 SendGetRTCMDataRequest(void)
{
    l_u32SendBuffLen = HIDO_UtilSnprintf(l_acSendBuff, sizeof(l_acSendBuff),
         "GET /%s HTTP/1.0\r\n" \
         "User-Agent: NTRIP LefebureNTRIPClient/20131124\r\n" \
         "Accept: */*\r\n" \
         "Connection: close\r\n" \
         "Authorization: Basic %s\r\n" \
         "\r\n", l_stMountpointAttrib.m_acName, l_acAuthorization);
                                         "GET /%s HTTP/1.0\r\n" \
                                         "User-Agent: NTRIP LefebureNTRIPClient/20131124\r\n" \
                                         "Accept: */*\r\n" \
                                         "Connection: close\r\n" \
                                         "Authorization: Basic %s\r\n" \
                                         "\r\n", l_stMountpointAttrib.m_acName, l_acAuthorization);
    return Socket_Send(l_i32SockID, (HIDO_UINT8 *)l_acSendBuff, l_u32SendBuffLen);
}
@@ -383,7 +383,7 @@
    do
    {
        i32Ret = Socket_Recv(l_i32SockID, (HIDO_UINT8 *) (l_acRecvBuff + l_u32RecvLen),
                RECV_BUFF_SIZE - l_u32RecvLen, &u32RecvLen);
                             RECV_BUFF_SIZE - l_u32RecvLen, &u32RecvLen);
        if ((i32Ret != HIDO_OK) || (0 == u32RecvLen))
        {
            break;
@@ -395,7 +395,7 @@
            HandleError(__debug_info__);
            break;
        }
        if(CLIENT_STATE_GET_RTCM_DATA_SUCCESS == l_eClientState)
        {
            HandleRecvData((HIDO_UINT8 *)l_acRecvBuff, l_u32RecvLen);
@@ -408,12 +408,12 @@
            if (l_pu8HTTPRespBody != HIDO_NULL)
            {
                if (HIDO_UtilParseFormat((HIDO_UINT8 *) l_acRecvBuff, u32RecvLen, "%* %d %*\r\n",
                        &l_u32HTTPRespCode) != 3)
                                         &l_u32HTTPRespCode) != 3)
                {
                    HandleError(__debug_info__);
                    break;
                }
                HandleRecvData(HIDO_NULL, 0);
            }
        }
@@ -429,7 +429,7 @@
                    l_pu8HTTPRespBody += 4;
                    if (HIDO_UtilParseFormat((HIDO_UINT8 *) l_acRecvBuff, u32RecvLen, "%* %d %*\r\n",
                            &l_u32HTTPRespCode) != 3)
                                             &l_u32HTTPRespCode) != 3)
                    {
                        HandleError(__debug_info__);
                        break;
@@ -443,9 +443,9 @@
                        {
                            pcKeyName++;
                        }
                        if (HIDO_UtilParseFormat((HIDO_UINT8 *) pcKeyName, u32RecvLen - (pcKeyName - l_acRecvBuff),
                                "%d\r\n", &l_u32HTTPContentLength) != 1)
                                                 "%d\r\n", &l_u32HTTPContentLength) != 1)
                        {
                            HandleError(__debug_info__);
                            break;
@@ -494,63 +494,63 @@
{
    switch (_eEvent)
    {
        case SOCKET_EVENT_CONNECT_FAILED:
    case SOCKET_EVENT_CONNECT_FAILED:
    {
        if((CLIENT_STATE_CONNECT_SOUCE_LIST_SERVER == l_eClientState)
                || (CLIENT_STATE_CONNECT_RTCM_DATA_SERVER == l_eClientState))
        {
            if((CLIENT_STATE_CONNECT_SOUCE_LIST_SERVER == l_eClientState)
                  || (CLIENT_STATE_CONNECT_RTCM_DATA_SERVER == l_eClientState))
            {
                SetClientState(CLIENT_STATE_IDLE);
                ClientCallback(NTRIP_CODE_CONNECT_FAILED, HIDO_NULL, 0);
            }
            break;
            SetClientState(CLIENT_STATE_IDLE);
            ClientCallback(NTRIP_CODE_CONNECT_FAILED, HIDO_NULL, 0);
        }
        case SOCKET_EVENT_CONNECTED:
        break;
    }
    case SOCKET_EVENT_CONNECTED:
    {
        l_u32RecvLen = 0;
        if(CLIENT_STATE_CONNECT_SOUCE_LIST_SERVER == l_eClientState)
        {
            l_u32RecvLen = 0;
            if(CLIENT_STATE_CONNECT_SOUCE_LIST_SERVER == l_eClientState)
            {
               SendGetSourceTableRequest();
               l_eRecvState = RECV_STATE_HEAD;
               SetClientState(CLIENT_STATE_GET_SOUCE_LIST);
               HIDO_TimerStart(l_u32TimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(30), TimeOutCallback, HIDO_NULL);
            }
            else if(CLIENT_STATE_CONNECT_RTCM_DATA_SERVER == l_eClientState)
            {
               SendGetRTCMDataRequest();
               l_eRecvState = RECV_STATE_HEAD;
               SetClientState(CLIENT_STATE_GET_RTCM_DATA);
               HIDO_TimerStart(l_u32TimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(30), TimeOutCallback, HIDO_NULL);
            }
            break;
            SendGetSourceTableRequest();
            l_eRecvState = RECV_STATE_HEAD;
            SetClientState(CLIENT_STATE_GET_SOUCE_LIST);
            HIDO_TimerStart(l_u32TimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(30), TimeOutCallback, HIDO_NULL);
        }
        case SOCKET_EVENT_CLOSED:
        else if(CLIENT_STATE_CONNECT_RTCM_DATA_SERVER == l_eClientState)
        {
           if(CLIENT_STATE_CONNECT_RTCM_DATA_SERVER == l_eClientState)
           {
              break;
           }
           HIDO_TimerCancel(l_u32TimerID);
            if(l_eClientState != CLIENT_STATE_IDLE)
            {
                SetClientState(CLIENT_STATE_IDLE);
                ClientCallback(NTRIP_CODE_DISCONNECT, HIDO_NULL, 0);
            }
            break;
            SendGetRTCMDataRequest();
            l_eRecvState = RECV_STATE_HEAD;
            SetClientState(CLIENT_STATE_GET_RTCM_DATA);
            HIDO_TimerStart(l_u32TimerID, HIDO_TIMER_TYPE_ONCE, HIDO_TIMER_TICK_S(30), TimeOutCallback, HIDO_NULL);
        }
        case SOCKET_EVENT_RECV_DATA:
        {
           OnRecvData();
            break;
        }
        default:
        break;
    }
    case SOCKET_EVENT_CLOSED:
    {
        if(CLIENT_STATE_CONNECT_RTCM_DATA_SERVER == l_eClientState)
        {
            break;
        }
        HIDO_TimerCancel(l_u32TimerID);
        if(l_eClientState != CLIENT_STATE_IDLE)
        {
            SetClientState(CLIENT_STATE_IDLE);
            ClientCallback(NTRIP_CODE_DISCONNECT, HIDO_NULL, 0);
        }
        break;
    }
    case SOCKET_EVENT_RECV_DATA:
    {
        OnRecvData();
        break;
    }
    default:
    {
        break;
    }
    }
}
@@ -571,7 +571,7 @@
 * Modified Date:    : 2021年5月3日
 *******************************************************************************/
HIDO_INT32 NTRIPClient_Connect(HIDO_CHAR *_pcHost, HIDO_UINT16 _u16Port, HIDO_CHAR *_pcUsername, HIDO_CHAR *_pcPassword,
        HIDO_CHAR *_pcSourceName, FN_NTRIPClientCallback _fnCallback, HIDO_VOID *_pArg)
                               HIDO_CHAR *_pcSourceName, FN_NTRIPClientCallback _fnCallback, HIDO_VOID *_pArg)
{
    HIDO_UINT32 u32Len = 0;
@@ -610,12 +610,12 @@
 *******************************************************************************/
HIDO_INT32 NTRIPClient_ReportGGA(HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32Len)
{
   if(CLIENT_STATE_GET_RTCM_DATA_SUCCESS == l_eClientState)
   {
      Socket_Send(l_i32SockID, _pu8Data, _u32Len);
   }
    if(CLIENT_STATE_GET_RTCM_DATA_SUCCESS == l_eClientState)
    {
        Socket_Send(l_i32SockID, _pu8Data, _u32Len);
    }
   return HIDO_OK;
    return HIDO_OK;
}
/*******************************************************************************