update for reading Re/F0/Q/DeltaT during music playback
[tas2557sw-android/tas2557-ftc.git] / factorytest.c
index 3290e05d7be8ac56392d8556766c9ddb59e44bf4..80ecf68a738b6e0e023adbaea99fada964daa130 100755 (executable)
 
 // Obtained from PurePath Console 3 (PPC3)
 #define PPC3_RE0             7.41   // Re0 (ohm)
+#define PPC3_FWARP           891
+#define PPC3_BL              0.814
+#define PPC3_MMS             0.0666
 #define PPC3_RTV             46.5   // Rtv (K/W)
 #define PPC3_RTM             78.2   // Rtm (K/W)
 #define PPC3_RTVA            2460   // Rtva (K/W)
 #define PPC3_SYSGAIN         9.35   // System Gain (V/FS)
 #define PPC3_DEV_NONLIN_PER  1.5    // Device Non-linearity (%)
+#define PPC3_PIG                       1
 
 void ExitWithHint(char *pHint)
 {
@@ -57,7 +61,8 @@ void ExitWithHint(char *pHint)
 
 void InitFTCC(struct TFTCConfiguration *pFTCC)
 {
-       pFTCC->nCalibrationTime = 4000;
+       pFTCC->nCalibrationTime = 2000;
+       pFTCC->nPPC3_FS = 48000;
 
        pFTCC->bVerbose = false;
        pFTCC->bLoadCalibration = false;
@@ -68,11 +73,15 @@ void InitFTCC(struct TFTCConfiguration *pFTCC)
        pFTCC->nTSpkCharDevA.nReHi = PPC3_RE0*1.15;
        pFTCC->nTSpkCharDevA.nReLo = PPC3_RE0*0.85;
        pFTCC->nTSpkCharDevA.nPPC3_Re0 = PPC3_RE0;
+       pFTCC->nTSpkCharDevA.nPPC3_FWarp = PPC3_FWARP;
+       pFTCC->nTSpkCharDevA.nPPC3_Bl = PPC3_BL;
+       pFTCC->nTSpkCharDevA.nPPC3_Mms = PPC3_MMS;
        pFTCC->nTSpkCharDevA.nPPC3_RTV = PPC3_RTV;
        pFTCC->nTSpkCharDevA.nPPC3_RTM = PPC3_RTM;
        pFTCC->nTSpkCharDevA.nPPC3_RTVA = PPC3_RTVA;
        pFTCC->nTSpkCharDevA.nPPC3_SysGain = PPC3_SYSGAIN;
        pFTCC->nTSpkCharDevA.nPPC3_DevNonlinPer = PPC3_DEV_NONLIN_PER;
+       pFTCC->nTSpkCharDevA.nPPC3_PIG = PPC3_PIG;
 }
 
 unsigned int SkipCharacter(char *pData, char cCharacter, unsigned int nSize)
@@ -104,15 +113,20 @@ unsigned int RemoveComments(char *pData, char cCharacter, unsigned int nSize)
 void ReadValue(struct TFTCConfiguration *pFTCC, struct TSPKCharData *pSpk, char *pLine, char *pValue)
 {
        if (!strcmp(pLine, "CALIBRATION_TIME")) {pFTCC->nCalibrationTime = atoi(pValue); return;};
+       if (!strcmp(pLine, "FS_RATE")) {pFTCC->nPPC3_FS = atof(pValue); return;};
        if (!strcmp(pLine, "SPK_T_MAX")) {pSpk->nSpkTMax = atof(pValue); return;};
        if (!strcmp(pLine, "SPK_RE_TOL_PER")) {pSpk->nSpkReTolPer = atof(pValue); return;};
-       if (!strcmp(pLine, "SPK_RE_ALPHA")) {pSpk->nSpkReAlpha = atof(pValue); return;};
+       if (!strcmp(pLine, "PPC3_RE_ALPHA")) {pSpk->nSpkReAlpha = atof(pValue); return;};
        if (!strcmp(pLine, "PPC3_RE0")) {pSpk->nPPC3_Re0 = atof(pValue); return;};
+       if (!strcmp(pLine, "PPC3_FWARP")) {pSpk->nPPC3_FWarp = atof(pValue); return;};
+       if (!strcmp(pLine, "PPC3_BL")) {pSpk->nPPC3_Bl = atof(pValue); return;};
+       if (!strcmp(pLine, "PPC3_MMS")) {pSpk->nPPC3_Mms = atof(pValue); return;};
        if (!strcmp(pLine, "PPC3_RTV")) {pSpk->nPPC3_RTV = atof(pValue); return;};
        if (!strcmp(pLine, "PPC3_RTM")) {pSpk->nPPC3_RTM = atof(pValue); return;};
        if (!strcmp(pLine, "PPC3_RTVA")) {pSpk->nPPC3_RTVA = atof(pValue); return;};
        if (!strcmp(pLine, "PPC3_SYSGAIN")) {pSpk->nPPC3_SysGain = atof(pValue); return;};
        if (!strcmp(pLine, "PPC3_DEV_NONLIN_PER")) {pSpk->nPPC3_DevNonlinPer = atof(pValue); return;};
+       if (!strcmp(pLine, "PPC3_PIG")) {pSpk->nPPC3_PIG = atof(pValue); return;};
        if (!strcmp(pLine, "RE_HI")) {pSpk->nReHi = atof(pValue); return;};
        if (!strcmp(pLine, "RE_LO")) {pSpk->nReLo = atof(pValue); return;};
 }
@@ -122,15 +136,22 @@ void ftcc_print(struct TFTCConfiguration *pFTCC)
        printf("factorytest configuration: \n\r");
 
        printf("  CALIBRATION_TIME   = %d\n\r", pFTCC->nCalibrationTime);
+       printf("Speaker A characterization data: \n\r");
+
        printf(" SPKA SPK_T_MAX      = %2.2f\n\r", pFTCC->nTSpkCharDevA.nSpkTMax);
        printf(" SPKA SPK_RE_TOL_PER = %2.2f\n\r", pFTCC->nTSpkCharDevA.nSpkReTolPer);
        printf(" SPKA SPK_RE_ALPHA   = %2.4f\n\r\n\r", pFTCC->nTSpkCharDevA.nSpkReAlpha);
+
        printf(" SPKA PPC3_RE0            = %2.2f\n\r", pFTCC->nTSpkCharDevA.nPPC3_Re0);
+       printf(" SPKA PPC3_FWARP          = %2.2f\n\r", pFTCC->nTSpkCharDevA.nPPC3_FWarp);
+       printf(" SPKA PPC3_BL             = %2.6f\n\r", pFTCC->nTSpkCharDevA.nPPC3_Bl);
+       printf(" SPKA PPC3_MMS            = %2.6f\n\r", pFTCC->nTSpkCharDevA.nPPC3_Mms);
        printf(" SPKA PPC3_RTV            = %2.2f\n\r", pFTCC->nTSpkCharDevA.nPPC3_RTV);
        printf(" SPKA PPC3_RTM            = %2.2f\n\r", pFTCC->nTSpkCharDevA.nPPC3_RTM);
        printf(" SPKA PPC3_RTVA           = %2.2f\n\r", pFTCC->nTSpkCharDevA.nPPC3_RTVA);
        printf(" SPKA PPC3_SYSGAIN        = %2.2f\n\r", pFTCC->nTSpkCharDevA.nPPC3_SysGain);
        printf(" SPKA PPC3_DEV_NONLIN_PER = %2.2f\n\r", pFTCC->nTSpkCharDevA.nPPC3_DevNonlinPer);
+       printf(" SPKA PPC3_PIG            = %f\n\r", pFTCC->nTSpkCharDevA.nPPC3_PIG);
 }
 
 int ftcc_parse(struct TFTCConfiguration *pFTCC, struct TSPKCharData *pSpk, char *pData, unsigned int nSize)
@@ -196,6 +217,7 @@ int main(int argc, char *argv[])
        double nTemp = 20.0;
        int nArg = 1;
        bool bValidArg;
+       bool bSpkChk = false;
        char pHint[256];
        struct TFTCConfiguration sFTCC;
 
@@ -235,10 +257,16 @@ int main(int argc, char *argv[])
                        bValidArg = true;
                }
 
+               if (!strcmp(argv[nArg], "-m")) {
+                       bSpkChk = true;
+                       bValidArg = true;
+               }
+
                if (!bValidArg) {
                        sprintf(pHint, "don't know argument %s", argv[nArg]);
                        ExitWithHint(pHint);
                }
+
                nArg++;
        }
 
@@ -247,6 +275,9 @@ int main(int argc, char *argv[])
                ftcc_print(&sFTCC);
        }
 
-       tas2557_ftc(nTemp, &sFTCC);
+       if (bSpkChk)
+               tas2557_chk(nTemp, &sFTCC);
+       else
+               tas2557_ftc(nTemp, &sFTCC);
        return 0;
 }