static uint8_t onboarding_request()

in source/1nce_zero_touch_provisioning.c [664:750]


    static uint8_t onboarding_request( uint8_t status,
                                       NetworkContext_t * pxNetworkContext,
                                       char ** completeResponse )
    {
        char packetToSent[ 130 ];
        int rangeStart = 0;
        int rangeEnd = democonfigRANGE_SIZE;
        int rangeOriginalSize;

        memset( packetToSent, '\0', 130 * sizeof( char ) );

        do
        {
            sprintf( packetToSent, "GET /device-api/onboarding HTTP/1.1\r\n"
                                   "Host: %s\r\n"
                                   "Range: bytes=%d-%d\r\n"
                                   "Accept: text/csv\r\n\r\n", ONBOARDING_ENDPOINT, rangeStart, rangeEnd );
            LogInfo( ( "Send onboarding request:\r\n%.*s",
                       strlen( packetToSent ),
                       packetToSent ) );

            /* Send onboarding request. */
            int32_t sentBytes = TLS_FreeRTOS_send( &xNetworkContext,
                                                   &packetToSent,
                                                   strlen( packetToSent ) );

            configASSERT( sentBytes > 0 );

            if( sentBytes <= 0 )
            {
                LogError( ( "Failed to send onboarding request." ) );
                return status;
            }

            /* Receive onboarding response. */
            int32_t recvBytes = TLS_FreeRTOS_recv( &xNetworkContext,
                                                   &PART[ 0 ],
                                                   RECV_BUFFER_LEN );

            if( rangeEnd == democonfigRANGE_SIZE )
            {
                rangeOriginalSize = response_length( PART );

                if( rangeOriginalSize == EXIT_FAILURE )
                {
                    LogError( ( "Failed to get complete onboarding response size." ) );
                    return status;
                }
            }

            if( recvBytes < 0 )
            {
                LogError( ( "Failed to receive onboarding response." ) );
                return status;
            }

            LogDebug( ( "Received raw response: %d bytes.", recvBytes ) );
            LogDebug( ( "\r\n%.*s", recvBytes, PART ) );
            strcat( completeResponse,
                    strstr( PART, "Express\r\n\r\n" ) + strlen( "Express\r\n\r\n" ) );
            memset( PART, ( int8_t ) '\0', sizeof( PART ) );

            while( recvBytes == RECV_BUFFER_LEN )
            {
                recvBytes = TLS_FreeRTOS_recv( &xNetworkContext,
                                               &PART[ 0 ],
                                               RECV_BUFFER_LEN );

                if( recvBytes < 0 )
                {
                    LogError( ( "Failed to receive onboarding response." ) );
                    return status;
                }

                LogDebug( ( "Received raw response: %d bytes.", strlen( PART ) ) );
                LogDebug( ( "\r\n%.*s", strlen( PART ), PART ) );
                strcat( completeResponse, PART );
                memset( PART, ( int8_t ) '\0', sizeof( PART ) );
            }

            rangeStart = rangeEnd + 1;
            rangeEnd += democonfigRANGE_SIZE;
        } while( rangeStart < rangeOriginalSize );

        status = EXIT_SUCCESS;
        return status;
    }