VirtualBox

Changeset 89685 in vbox for trunk


Ignore:
Timestamp:
Jun 14, 2021 3:41:09 PM (3 years ago)
Author:
vboxsync
Message:

Audio/ValKit: Implemented support for downloading (host) test sets. ​bugref:10008

Location:
trunk/src/VBox
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/AudioTestServiceClient.cpp

    r89618 r89685  
    475475        }
    476476        else
    477             AssertFailedStmt(rc = VERR_NET_PROTOCOL_ERROR);
     477        {
     478            AssertMsgFailed(("Got unexpected reply '%s'", Reply.szOp));
     479            rc = VERR_NET_PROTOCOL_ERROR;
     480        }
    478481
    479482        audioTestSvcClientReplyDestroy(&Reply);
  • trunk/src/VBox/Devices/Audio/DrvHostAudioValidationKit.cpp

    r89584 r89685  
    7777    } u;
    7878    /** The test tone instance to use. */
    79     AUDIOTESTTONE      Tone;
     79    AUDIOTESTTONE              Tone;
    8080    /** The test tone parameters to use. */
    81     AUDIOTESTTONEPARMS Parms;
     81    AUDIOTESTTONEPARMS         Parms;
    8282} VALKITTESTTONEDATA;
    8383
     
    140140    /** The Audio Test Service (ATS) instance. */
    141141    ATSSERVER           Srv;
     142    /** Absolute path to the packed up test set archive.
     143     *  Keep it simple for now and only support one (open) archive at a time. */
     144    char                szTestSetArchive[RTPATH_MAX];
     145    /** File handle to the (opened) test set archive for reading. */
     146    RTFILE              hTestSetArchive;
     147
    142148} DRVHOSTVALKITAUDIO;
    143149/** Pointer to a Validation Kit host audio driver instance. */
    144150typedef DRVHOSTVALKITAUDIO *PDRVHOSTVALKITAUDIO;
    145151
     152
     153/*********************************************************************************************************************************
     154*   Internal test handling code                                                                                                  *
     155*********************************************************************************************************************************/
    146156
    147157/**
     
    210220}
    211221
     222
     223/*********************************************************************************************************************************
     224*   ATS callback implementations                                                                                                 *
     225*********************************************************************************************************************************/
     226
    212227/** @copydoc ATSCALLBACKS::pfnTestSetEnd */
    213228static DECLCALLBACK(int) drvHostValKitTestSetEnd(void const *pvUser, const char *pszTag)
     
    224239    /* Before destroying the test environment, pack up the test set so
    225240     * that it's ready for transmission. */
    226     char szFileOut[RTPATH_MAX];
    227     int rc = AudioTestSetPack(pSet, pThis->szPathOut, szFileOut, sizeof(szFileOut));
    228     if (RT_SUCCESS(rc))
    229         LogRel(("Audio: Validation Kit: Packed up to '%s'\n", szFileOut));
     241    int rc = AudioTestSetPack(pSet, pThis->szPathOut, pThis->szTestSetArchive, sizeof(pThis->szTestSetArchive));
     242    if (RT_SUCCESS(rc))
     243        LogRel(("Audio: Validation Kit: Packed up to '%s'\n", pThis->szTestSetArchive));
    230244
    231245    int rc2 = AudioTestSetWipe(pSet);
     
    236250
    237251    if (RT_FAILURE(rc))
    238         LogRel(("Audio: Validation Kit: Test set prologue failed with %Rrc\n", rc));
     252        LogRel(("Audio: Validation Kit: Ending test set failed with %Rrc\n", rc));
    239253
    240254    return rc;
     
    312326    return VINF_SUCCESS;
    313327}
     328
     329/** @copydoc ATSCALLBACKS::pfnTestSetSendBegin */
     330static DECLCALLBACK(int) drvHostValKitTestSetSendBeginCallback(void const *pvUser, const char *pszTag)
     331{
     332    RT_NOREF(pszTag);
     333
     334    PDRVHOSTVALKITAUDIO pThis = (PDRVHOSTVALKITAUDIO)pvUser;
     335
     336    if (!RTFileExists(pThis->szTestSetArchive)) /* Has the archive successfully been created yet? */
     337        return VERR_WRONG_ORDER;
     338
     339    int rc = RTFileOpen(&pThis->hTestSetArchive, pThis->szTestSetArchive, RTFILE_O_READ | RTFILE_O_OPEN | RTFILE_O_DENY_WRITE);
     340    if (RT_SUCCESS(rc))
     341    {
     342        uint64_t uSize;
     343        rc = RTFileQuerySize(pThis->hTestSetArchive, &uSize);
     344        if (RT_SUCCESS(rc))
     345            LogRel(("Audio: Validation Kit: Sending test set '%s' (%zu bytes)\n", pThis->szTestSetArchive, uSize));
     346    }
     347
     348    return rc;
     349}
     350
     351/** @copydoc ATSCALLBACKS::pfnTestSetSendRead */
     352static DECLCALLBACK(int) drvHostValKitTestSetSendReadCallback(void const *pvUser,
     353                                                              const char *pszTag, void *pvBuf, size_t cbBuf, size_t *pcbRead)
     354{
     355    RT_NOREF(pszTag);
     356
     357    PDRVHOSTVALKITAUDIO pThis = (PDRVHOSTVALKITAUDIO)pvUser;
     358
     359    return RTFileRead(pThis->hTestSetArchive, pvBuf, cbBuf, pcbRead);
     360}
     361
     362/** @copydoc ATSCALLBACKS::pfnTestSetSendEnd */
     363static DECLCALLBACK(int) drvHostValKitTestSetSendEndCallback(void const *pvUser, const char *pszTag)
     364{
     365    RT_NOREF(pszTag);
     366
     367    PDRVHOSTVALKITAUDIO pThis = (PDRVHOSTVALKITAUDIO)pvUser;
     368
     369    int rc = RTFileClose(pThis->hTestSetArchive);
     370    if (RT_SUCCESS(rc))
     371    {
     372        pThis->hTestSetArchive = NIL_RTFILE;
     373    }
     374
     375    return rc;
     376}
     377
     378
     379/*********************************************************************************************************************************
     380*   PDMIHOSTAUDIO interface implementation                                                                                       *
     381*********************************************************************************************************************************/
    314382
    315383/**
     
    363431    return rc;
    364432}
    365 
    366433
    367434/**
     
    742809
    743810    ATSCALLBACKS Callbacks;
    744     Callbacks.pfnTestSetBegin = drvHostValKitTestSetBegin;
    745     Callbacks.pfnTestSetEnd   = drvHostValKitTestSetEnd;
    746     Callbacks.pfnTonePlay     = drvHostValKitRegisterGuestRecTest;
    747     Callbacks.pfnToneRecord   = drvHostValKitRegisterGuestPlayTest;
    748     Callbacks.pvUser          = pThis;
     811    RT_ZERO(Callbacks);
     812    Callbacks.pfnTestSetBegin     = drvHostValKitTestSetBegin;
     813    Callbacks.pfnTestSetEnd       = drvHostValKitTestSetEnd;
     814    Callbacks.pfnTonePlay         = drvHostValKitRegisterGuestRecTest;
     815    Callbacks.pfnToneRecord       = drvHostValKitRegisterGuestPlayTest;
     816    Callbacks.pfnTestSetSendBegin = drvHostValKitTestSetSendBeginCallback;
     817    Callbacks.pfnTestSetSendRead  = drvHostValKitTestSetSendReadCallback;
     818    Callbacks.pfnTestSetSendEnd   = drvHostValKitTestSetSendEndCallback;
     819    Callbacks.pvUser              = pThis;
    749820
    750821    /** @todo Make this configurable via CFGM. */
  • trunk/src/VBox/ValidationKit/utils/audio/vkat.cpp

    r89644 r89685  
    529529            {
    530530                /*
    531                  * Download guest test set to host.
     531                 * Download guest + Validation Kit audio driver test sets to our output directory.
    532532                 */
    533533                char szFileName[RTPATH_MAX];
    534534                if (RTStrPrintf2(szFileName, sizeof(szFileName), "%s.tar.gz", szTagGuest))
    535535                {
    536                     char szFilePath[RTPATH_MAX];
    537                     rc2 = RTPathJoin(szFilePath, sizeof(szFilePath), pTstEnv->szPathOut, szFileName);
    538                     if (RT_SUCCESS(rc2))
     536                    rc = RTPathJoin(pTstEnv->u.Host.szPathTestSetGuest, sizeof(pTstEnv->u.Host.szPathTestSetGuest),
     537                                    pTstEnv->szPathOut, szFileName);
     538                    if (RT_SUCCESS(rc))
    539539                    {
    540                         RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Downloading guest test set to '%s'\n", szFilePath);
    541                         rc2 = AudioTestSvcClientTestSetDownload(&pTstEnv->u.Host.AtsClGuest, szTagGuest, szFilePath);
     540                        if (RTStrPrintf2(szFileName, sizeof(szFileName), "%s.tar.gz", szTagHost))
     541                        {
     542                            rc = RTPathJoin(pTstEnv->u.Host.szPathTestSetValKit, sizeof(pTstEnv->u.Host.szPathTestSetValKit),
     543                                            pTstEnv->szPathOut, szFileName);
     544                        }
     545                        else
     546                            rc = VERR_BUFFER_OVERFLOW;
     547                    }
     548                    else
     549                        rc = VERR_BUFFER_OVERFLOW;
     550
     551                    if (RT_SUCCESS(rc))
     552                    {
     553                        RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Downloading guest test set to '%s'\n",
     554                                     pTstEnv->u.Host.szPathTestSetGuest);
     555                        rc = AudioTestSvcClientTestSetDownload(&pTstEnv->u.Host.AtsClGuest,
     556                                                               szTagGuest, pTstEnv->u.Host.szPathTestSetGuest);
     557                    }
     558
     559                    if (RT_SUCCESS(rc))
     560                    {
     561                        RTTestPrintf(g_hTest, RTTESTLVL_ALWAYS, "Downloading host test set to '%s'\n",
     562                                     pTstEnv->u.Host.szPathTestSetValKit);
     563                        rc = AudioTestSvcClientTestSetDownload(&pTstEnv->u.Host.AtsClValKit,
     564                                                               szTagHost, pTstEnv->u.Host.szPathTestSetValKit);
    542565                    }
    543566                }
    544567                else
    545                     rc2 = VERR_BUFFER_OVERFLOW;
     568                    rc = VERR_BUFFER_OVERFLOW;
    546569
    547570                if (RT_SUCCESS(rc))
    548                     rc = rc2;
     571                {
     572
     573                }
    549574            }
    550575        }
     
    816841
    817842/**
    818  * Verifies one single test set.
     843 * Verifies one test set pair.
    819844 *
    820845 * @returns VBox status code.
  • trunk/src/VBox/ValidationKit/utils/audio/vkatCmdSelfTest.cpp

    r89643 r89685  
    168168        if (RT_SUCCESS(rc))
    169169        {
    170             audioTestWorker(pTstEnv, &TstCust);
     170            rc = audioTestWorker(pTstEnv, &TstCust);
     171            if (RT_SUCCESS(rc))
     172            {
     173
     174            }
     175
    171176            audioTestEnvDestroy(pTstEnv);
    172177        }
  • trunk/src/VBox/ValidationKit/utils/audio/vkatCommon.cpp

    r89643 r89685  
    713713
    714714        ATSCALLBACKS Callbacks;
     715        RT_ZERO(Callbacks);
    715716        Callbacks.pfnTestSetBegin     = audioTestGstAtsTestSetBeginCallback;
    716717        Callbacks.pfnTestSetEnd       = audioTestGstAtsTestSetEndCallback;
  • trunk/src/VBox/ValidationKit/utils/audio/vkatInternal.h

    r89643 r89685  
    213213            /** Client connected to the ATS on the guest side. */
    214214            ATSCLIENT       AtsClGuest;
     215            /** Path to the guest's test set downloaded to the host. */
     216            char            szPathTestSetGuest[RTPATH_MAX];
    215217            /** Client connected to the Validation Kit audio driver ATS. */
    216218            ATSCLIENT       AtsClValKit;
     219            /** Path to the Validation Kit audio driver's test set downloaded to the host. */
     220            char            szPathTestSetValKit[RTPATH_MAX];
    217221        } Host;
    218222    } u;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette