thg_samp.c
上传用户:super_houu
上传日期:2008-09-21
资源大小:4099k
文件大小:11k
源码类别:

DVD

开发平台:

Others

  1. /*******************************************************************************
  2. * Copyright(c) Philips Consumer Electronics B.V. 2001
  3. * The attached material and the information contained therein is proprietary
  4. * to Philips and is issued only under strict confidentiality arrangements.
  5. * It shall not be used, reproduced, copied in whole or in part, adapted,
  6. * modified, or disseminated without a written license of Philips.           
  7. * It must be returned to Philips upon its first request.
  8. *
  9. *  Project:        SA-MP ( Super Audio Media Player )
  10. *  File %name:     thg_samp.c %
  11. *  %version:       15 %
  12. *  %date_modified: Thu Nov 21 10:59:44 2002 %
  13. *  %derived_by:    hooydona %
  14. *  Creation date:  Wed Nov 07 16:34:46 2001
  15. *  First author:   coenen
  16. *
  17. *  Advanced Systems and Applications Lab - Eindhoven
  18. *
  19. *  Continuus %full_filespec: thg_samp.c~15:csrc:1 %
  20. *
  21. *  Description:    Test harness of SAMP
  22. *
  23. * Change history:
  24. *
  25. * Rev  Date       Who      Comments
  26. * ---- ---------- ---------- -----------------------------------------------------
  27. *   1  2001-08-10 coenen   Initial version
  28. *   2  2001-11-22 novosadt Adopted for new SAMP_Activate (PR70)
  29. *   3  2001-11-22 kasterej Add subscribe/unsubscribe functions
  30. *                          (subscription removed in Init function)
  31. * 4-6  2001-12-18 kokh     Various changes
  32. *   7  2001-12-20 klerxm   Include all local stuff only if THGSAMP defined
  33. *   8  2002-01-22 potm     Added SAMP_SACDDiscRec function
  34. *   9  2002-01-29 kokh     Fixed small bug in THG_GetTrackTiming
  35. *  10  2002-01-30 potm     Adapted to new prototype of SAMP_Activate (CR284)
  36. *  11  2002-02-19 klerxm   See CRPR154: Removed unused include files <bsp.h>
  37. *                          and <dxx.h>
  38. *  12  2002-02-27 kokh     TH_Send -> SAMP(TH_Send)
  39. *  13  2002-11-08 potm     Added parameter to event NOT_ACTIVATED (PR423)
  40. *  14  2002-11-21 potm     Added SAMP_GetSignature (PR406)
  41. *
  42. *******************************************************************************/
  43. #define COMP_PREFIX "SAMP"
  44. /*******************************************************************************
  45. *                                Include Files
  46. *******************************************************************************/
  47. #include "config.h"
  48. #ifdef TEST_HARNASS
  49. #include <samp_gen.h>
  50. #include "samp_samp_exp.h"
  51. #include <samp_sdm.h>
  52. #include <samp_sdi.h>
  53. #include <samp_nav.h>
  54. #include <glue_test.h>
  55. #include <glue_osa.h>
  56. #include "PlaycoreSAMPschedulerSAMPScheduler.h"
  57. #include "Playcorescpadscmgr.h"
  58. #if 0
  59. #include <fur.h>
  60. #include <psp.h>
  61. #include <sp.h>
  62. #include <buf.h>
  63. #include <dmx.h>
  64. #include <lld.h>
  65. #include <app.h>
  66. #include <bp.h>
  67. #include <sbm.h>
  68. #include <ad.h>
  69. #include <apm.h>
  70. #include <pbc.h>
  71. #include <sdm.h>
  72. #include <sdi.h>
  73. #include <nav.h>
  74. #endif
  75. #include <fatal.h>
  76. #include <testharn.h>
  77. #include <stdlib.h>
  78. #include <stdio.h>
  79. /*******************************************************************************
  80. *                               Macro Definitions
  81. *******************************************************************************/
  82. /*******************************************************************************
  83. *                               Data Definitions
  84. *******************************************************************************/
  85. #ifdef THGSAMP
  86. /*static SAMP(SAMP_AreaInfoDef) stereo;
  87. static SAMP(SAMP_AreaInfoDef) multi;*/
  88. static SAMP(Bool) sacd;
  89. static SAMP(Bool) hybrid;
  90. extern const char *pSignature;
  91. #endif
  92. /*******************************************************************************
  93. *                               Local Functions
  94. *******************************************************************************/
  95. #ifdef THGSAMP
  96. static void SampCallback(SAMP(BitSet32) Event, void * EventData)
  97. {
  98.   char bufferStereo[5];
  99.   char bufferMulti[5];
  100.   switch( Event )
  101.   {
  102.   case SAMP_ACTIVATED :
  103.     sc_GetBytes32(SDRAM_2CH_AREA_INFO_BASE, 0, 5, bufferStereo);
  104.     sc_GetBytes32(SDRAM_MULTICH_AREA_INFO_BASE, 0, 5, bufferMulti);
  105.     /*SAMP(TH_Send)( "SAMP"
  106.            , "EventActivated"
  107.            , "%d%d%u%u%u%d%d%u%u%u%u"
  108.            , (SAMP(UInt32))stereo.NumberOfTracks
  109.            , (SAMP(UInt32))stereo.TrackOffset
  110.            , (SAMP(UInt32))stereo.TotalAreaTime.min
  111.            , (SAMP(UInt32))stereo.TotalAreaTime.sec
  112.            , (SAMP(UInt32))stereo.TotalAreaTime.fr
  113.            , (SAMP(UInt32))multi.NumberOfTracks
  114.            , (SAMP(UInt32))multi.TrackOffset
  115.            , (SAMP(UInt32))multi.TotalAreaTime.min
  116.            , (SAMP(UInt32))multi.TotalAreaTime.sec
  117.            , (SAMP(UInt32))multi.TotalAreaTime.fr
  118.            , (SAMP(UInt32))hybrid );*/
  119.     SAMP(TH_Send)( "SAMP"
  120.            , "EventActivated"
  121.            , "%d%d%u%u%u%d%d%u%u%u%u"
  122.            , (SAMP(UInt32))bufferStereo[0]
  123.            , (SAMP(UInt32))bufferStereo[1]
  124.            , (SAMP(UInt32))bufferStereo[2]
  125.            , (SAMP(UInt32))bufferStereo[3]
  126.            , (SAMP(UInt32))bufferStereo[4]
  127.            , (SAMP(UInt32))bufferMulti[0]
  128.            , (SAMP(UInt32))bufferMulti[1]
  129.            , (SAMP(UInt32))bufferMulti[2]
  130.            , (SAMP(UInt32))bufferMulti[3]
  131.            , (SAMP(UInt32))bufferMulti[4]
  132.            , (SAMP(UInt32))hybrid );
  133.   break;    
  134.   case SAMP_NOT_ACTIVATED:
  135.     SAMP(TH_Send)( "SAMP" , "EventNotActivated", "%u", (SAMP(UInt32))EventData );
  136.   break;
  137.   default:
  138.     SAMP(TH_Send)( "TESTH" , "***ERROR***", "Unknown event received" );
  139.   break;
  140.   }
  141. }
  142. #endif
  143. DECLARE_GROUPFUNC(THG_SAMP)
  144. /*******************************************************************************
  145. *                          Global test-harness function
  146. *******************************************************************************/
  147. DEFINE_GROUPFUNC(THG_SAMP)
  148.   int i;
  149.   GROUP_SWITCH
  150. #ifdef THGSAMP
  151.   CASE_CMD("Init")
  152.     SAMP(ErrCode) lErr = SAMP(ERR_OK);
  153.     lErr = SAMP_EXP(SAMP_Init)();
  154.     SAMP(TH_Send)(COMP_PREFIX, cmd, "%u", (SAMP(UInt32))lErr);
  155.   END_CASE
  156.   CASE_CMD("Term")
  157.     SAMP(ErrCode) lErr = SAMP(ERR_OK);
  158.     lErr = SAMP_EXP(SAMP_Term)();
  159.     SAMP(TH_Send)(COMP_PREFIX, cmd, "%u", (SAMP(UInt32))lErr);
  160.   END_CASE
  161.   CASE_CMD("SACDDiscRec")
  162.     SAMP(ErrCode) lErr = SAMP(ERR_OK);
  163.     lErr = SAMP_EXP(SAMP_SACDDiscRec)(&sacd, &hybrid);
  164.     SAMP(TH_Send)(COMP_PREFIX, cmd, "%u%s%s", (SAMP(UInt32))lErr, sacd   ? "TRUE" : "FALSE",
  165.                                               hybrid ? "TRUE" : "FALSE");
  166.   END_CASE
  167.   CASE_CMD("Activate")
  168.     SAMP(ErrCode) lErr = SAMP(ERR_OK);
  169.     SAMP(UInt32) lDiscRecognised;
  170.     TH_GetParam (OPTIONS, "%u", &lDiscRecognised);
  171.     lErr = SAMP_EXP(SAMP_Activate)(lDiscRecognised ? TRUE : FALSE, NULL, NULL, &hybrid);
  172.     SAMP(TH_Send)(COMP_PREFIX, cmd, "%u", (SAMP(UInt32))lErr);
  173.   END_CASE
  174.   CASE_CMD("Deactivate")
  175.     SAMP(ErrCode) lErr = SAMP(ERR_OK);
  176.     lErr = SAMP_EXP(SAMP_Deactivate)();
  177.     SAMP(TH_Send)(COMP_PREFIX, cmd, "%u", (SAMP(UInt32))lErr);
  178.   END_CASE
  179.   CASE_CMD("Reactivate")
  180.     SAMP(ErrCode) lErr = SAMP(ERR_OK);
  181.     lErr = SAMP_EXP(SAMP_Reactivate)();
  182.     SAMP(TH_Send)(COMP_PREFIX, cmd, "%u", (SAMP(UInt32))lErr);
  183.   END_CASE
  184.   CASE_CMD("GetSignature")
  185.     SAMP(ErrCode) lErr = SAMP(ERR_OK);
  186.     SAMP(Byte) pPartialSignature[128];
  187.     char pCharBuffer[3];
  188.     SAMP(Byte) curChar;
  189.     SAMP(UInt32) signatureIndex;
  190.     pPartialSignature[0] = 0;
  191.     /* Make sure there are no characters that confuse the test generator */
  192.     /* Output it to the serial port */
  193.     signatureIndex = 0;
  194.     while((curChar = pSignature[signatureIndex]) != 0)
  195.     {
  196.       ASSERT(curChar >= 32 && curChar < 127);
  197.       switch(curChar)
  198.       {
  199.       case '\':
  200.         sprintf(pCharBuffer, "\\");
  201.         break;
  202.       case ',':
  203.         sprintf(pCharBuffer, "\c");
  204.         break;
  205.       case '[':
  206.         sprintf(pCharBuffer, "\(");
  207.         break;
  208.       case ']':
  209.         sprintf(pCharBuffer, "\)");
  210.         break;
  211.       default:
  212.         sprintf(pCharBuffer, "%c", curChar);
  213.         break;
  214.       }
  215.       strcat((char *)pPartialSignature, (const char *)pCharBuffer);
  216.       if(strlen((char *)pPartialSignature) > 100)
  217.       {
  218.         SAMP(TH_Send)(COMP_PREFIX, "SignaturePart", "%s", pPartialSignature);
  219.         pPartialSignature[0] = 0;
  220.       }
  221.       signatureIndex++;
  222.     }
  223.     if(strlen((char *)pPartialSignature))
  224.     {
  225.       SAMP(TH_Send)(COMP_PREFIX, "SignaturePart", "%s", pPartialSignature);
  226.     }
  227.     SAMP(TH_Send)(COMP_PREFIX, cmd, "%u", (SAMP(UInt32))lErr);
  228.   END_CASE
  229.   CASE_CMD("Subscribe")
  230.     SAMP(ErrCode) lErr = SAMP(ERR_OK);
  231.     lErr = SAMP_EXP(SAMP_Subscribe)( SampCallback
  232.                               , ( SAMP_ACTIVATED
  233.                                 | SAMP_NOT_ACTIVATED ) );
  234.     SAMP(TH_Send)(COMP_PREFIX, cmd, "%u", (SAMP(UInt32))lErr);
  235.   END_CASE
  236.   CASE_CMD("Unsubscribe")
  237.     SAMP(ErrCode) lErr = SAMP(ERR_OK);
  238.     lErr = SAMP_EXP(SAMP_Subscribe)( SampCallback, 0 );
  239.     SAMP(TH_Send)(COMP_PREFIX, cmd, "%u", (SAMP(UInt32))lErr);
  240.   END_CASE
  241.   CASE_CMD("THG_GetTrackTiming")
  242.     SAMP(UInt32)        lArea;
  243.     SAMP(UInt32)        lTrack;
  244.     char                NumberOfTracks;
  245.     char                start[3];
  246.     char                length[3];
  247.     SAMP(ErrCode) lErr = SAMP(ERR_OK);
  248.     TH_GetParam (OPTIONS, "%u%u", &lArea, &lTrack);
  249.     lTrack--;
  250.     if (lArea == SAMP(SACD_AREA_MULTICHANNEL))
  251.     {
  252.       sc_GetBytes32(SDRAM_MULTICH_AREA_INFO_BASE, 0, 1, &NumberOfTracks);
  253.       if (lTrack>=NumberOfTracks)
  254.       {
  255.         lErr = SAMP(ERR_INVALID_PARAM);
  256.       } else
  257.       {
  258.         sc_GetBytes32(SDRAM_MULTICH_AREA_INFO_BASE, 5 + lTrack * 3, 3, start);
  259.         sc_GetBytes32(SDRAM_MULTICH_AREA_INFO_BASE, 5 + NumberOfTracks * 3 + lTrack * 3, 3, length);
  260.       }
  261.     } else if (lArea == SAMP(SACD_AREA_STEREO))
  262.     {
  263.       sc_GetBytes32(SDRAM_2CH_AREA_INFO_BASE, 0, 1, &NumberOfTracks);
  264.       if (lTrack>=NumberOfTracks)
  265.       {
  266.         lErr = SAMP(ERR_INVALID_PARAM);
  267.       } else
  268.       {
  269.         sc_GetBytes32(SDRAM_2CH_AREA_INFO_BASE, 5 + lTrack * 3, 3, start);
  270.         sc_GetBytes32(SDRAM_2CH_AREA_INFO_BASE, 5 + NumberOfTracks * 3 + lTrack * 3, 3, length);
  271.       }
  272.     } else
  273.     {
  274.       lErr = SAMP(ERR_INVALID_PARAM);
  275.     }
  276.     SAMP(TH_Send)(COMP_PREFIX, cmd, "%u%u%u%u%u%u%u", (SAMP(UInt32))lErr, (SAMP(UInt32))start[0], (SAMP(UInt32))start[1], (SAMP(UInt32))start[2], (SAMP(UInt32))length[0], (SAMP(UInt32))length[1], (SAMP(UInt32))length[2]);
  277.   END_CASE
  278. #endif
  279.   DEFAULT
  280.     SAMP(TH_Send)(COMP_PREFIX, cmd, "%s", "Unknown command");
  281.   END_CASE
  282. END_GROUPFUNC
  283. /*******************************************************************************
  284. *                                 End of File
  285. *******************************************************************************/
  286. #endif