Ejemplo n.º 1
0
PSMResult PSM_GetHMDTrackingSpaceSettings(PSMHMDTrackingSpace *out_tracking_space, int timeout_ms)
{
    PSMResult result= PSMResult_Error;

    CallbackResultCapture resultState;
    ClientPSMoveAPI::t_request_id request_id= ClientPSMoveAPI::get_tracking_space_settings();
    ClientPSMoveAPI::register_callback(request_id,
                                       CallbackResultCapture::response_callback,
                                       &resultState);
    CallbackTimeout timeout(timeout_ms);
    
    while (!resultState.bReceived && !timeout.HasElapsed())
    {
        _PAUSE(10);
        PSM_Update();
    }
    
    if (timeout.HasElapsed())
    {
        ClientPSMoveAPI::cancel_callback(request_id);
        result= PSMResult_Timeout;
    }
    else if (resultState.out_response.result_code == ClientPSMoveAPI::_clientPSMoveResultCode_ok)
    {
        assert(resultState.out_response.payload_type == ClientPSMoveAPI::eResponsePayloadType::_responsePayloadType_ControllerList);
        
        PSMResponseMessage response;
        extractResponseMessage(&resultState.out_response, &response);

        *out_tracking_space= response.payload.hmd_tracking_space;
        result= PSMResult_Success;
    }
    
    return result;
}
Ejemplo n.º 2
0
// -- Async Messaging Helpers -----
static PSMResult blockUntilResponse(ClientPSMoveAPI::t_request_id req_id, int timeout_ms)
{
    PSMResult result= PSMResult_Error;

    if (req_id > 0)
    {
        CallbackResultCapture resultState;
        ClientPSMoveAPI::register_callback(req_id, CallbackResultCapture::response_callback, &resultState);
    
        CallbackTimeout timeout(timeout_ms);

        while (!resultState.bReceived && !timeout.HasElapsed())
        {
            _PAUSE(10);

            // Process responses, events and controller updates from the service
            PSM_Update();
        }

        if (timeout.HasElapsed())
        {
            ClientPSMoveAPI::cancel_callback(req_id);
            result= PSMResult_Timeout;
        }
        else if (resultState.out_response.result_code == ClientPSMoveAPI::_clientPSMoveResultCode_ok)
        {
            result= PSMResult_Success;
        }
    }

    return result;
}
Ejemplo n.º 3
0
PSMResult PSM_Initialize(const char* host, const char* port, int timeout_ms)
{
    PSMResult result = PSMResult_Error;

    if (PSM_InitializeAsync(host, port) == PSMResult_RequestSent)
    {
        CallbackTimeout timeout(timeout_ms);

        while (!PSM_HasConnectionStatusChanged() && !timeout.HasElapsed())
        {
            _PAUSE(10);
            PSM_Update();            
        }

        if (!timeout.HasElapsed())
        {
            result= PSM_GetIsConnected() ? PSMResult_Success : PSMResult_Error;
        }
        else
        {
            result= PSMResult_Timeout;
        }
    }

    return result;
}
Ejemplo n.º 4
0
void _F90_PAUSE( char *str1,
	        int  len1 )
{
    fcd_t  fcd1;

    fcd1.ptr = str1;
    fcd1.len = len1;

    _PAUSE( fcd1 );
}