home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 106 / EnigmaAmiga106CD.iso / software / sviluppo / ahisrc / device / debug.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-08-29  |  15.5 KB  |  411 lines

  1. /* $Id: debug.c,v 4.7 1999/08/29 23:53:05 lcs Exp $ */
  2.  
  3. /*
  4.      AHI - Hardware independent audio subsystem
  5.      Copyright (C) 1996-1999 Martin Blom <martin@blom.org>
  6.      
  7.      This library is free software; you can redistribute it and/or
  8.      modify it under the terms of the GNU Library General Public
  9.      License as published by the Free Software Foundation; either
  10.      version 2 of the License, or (at your option) any later version.
  11.      
  12.      This library is distributed in the hope that it will be useful,
  13.      but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.      Library General Public License for more details.
  16.      
  17.      You should have received a copy of the GNU Library General Public
  18.      License along with this library; if not, write to the
  19.      Free Software Foundation, Inc., 59 Temple Place - Suite 330, Cambridge,
  20.      MA 02139, USA.
  21. */
  22.  
  23. #include <config.h>
  24. #include <CompilerSpecific.h>
  25.  
  26. #include <utility/tagitem.h>
  27. #include <proto/utility.h>
  28.  
  29. #include "ahi_def.h"
  30. #include "debug.h"
  31.  
  32.  
  33. /******************************************************************************
  34. ** Support code ***************************************************************
  35. ******************************************************************************/
  36.  
  37. static const char*
  38. GetTagName( Tag tag )
  39. {
  40.   switch( tag )
  41.   {
  42.     case AHIA_AudioID: return "AHIA_AudioID";
  43.     case AHIA_MixFreq: return "AHIA_MixFreq";
  44.     case AHIA_Channels: return "AHIA_Channels";
  45.     case AHIA_Sounds: return "AHIA_Sounds";
  46.     case AHIA_SoundFunc: return "AHIA_SoundFunc";
  47.     case AHIA_PlayerFunc: return "AHIA_PlayerFunc";
  48.     case AHIA_PlayerFreq: return "AHIA_PlayerFreq";
  49.     case AHIA_MinPlayerFreq: return "AHIA_MinPlayerFreq";
  50.     case AHIA_MaxPlayerFreq: return "AHIA_MaxPlayerFreq";
  51. //    case AHIA_PlayerFreqUnit: return "AHIA_PlayerFreqUnit";
  52.     case AHIA_RecordFunc: return "AHIA_RecordFunc";
  53.     case AHIA_UserData: return "AHIA_UserData";
  54. //    case AHIA_ErrorFunc: return "AHIA_ErrorFunc";
  55.     case AHIA_AntiClickSamples: return "AHIA_AntiClickSamples";
  56.     case AHIP_BeginChannel: return "AHIP_BeginChannel";
  57.     case AHIP_EndChannel: return "AHIP_EndChannel";
  58.     case AHIP_Freq: return "AHIP_Freq";
  59.     case AHIP_Vol: return "AHIP_Vol";
  60.     case AHIP_Pan: return "AHIP_Pan";
  61.     case AHIP_Sound: return "AHIP_Sound";
  62.     case AHIP_Offset: return "AHIP_Offset";
  63.     case AHIP_Length: return "AHIP_Length";
  64.     case AHIP_LoopFreq: return "AHIP_LoopFreq";
  65.     case AHIP_LoopVol: return "AHIP_LoopVol";
  66.     case AHIP_LoopPan: return "AHIP_LoopPan";
  67.     case AHIP_LoopSound: return "AHIP_LoopSound";
  68.     case AHIP_LoopOffset: return "AHIP_LoopOffset";
  69.     case AHIP_LoopLength: return "AHIP_LoopLength";
  70.     case AHIC_Play: return "AHIC_Play";
  71.     case AHIC_Record: return "AHIC_Record";
  72. //    case AHIC_PausePlay: return "AHIC_PausePlay";
  73. //    case AHIC_PauseRecord: return "AHIC_PauseRecord";
  74.     case AHIC_MixFreq_Query: return "AHIC_MixFreq_Query";
  75.     case AHIC_Input: return "AHIC_Input";
  76.     case AHIC_Input_Query: return "AHIC_Input_Query";
  77.     case AHIC_Output: return "AHIC_Output";
  78.     case AHIC_Output_Query: return "AHIC_Output_Query";
  79. //    case AHIC_MonitorVolumeLeft: return "AHIC_MonitorVolumeLeft";
  80. //    case AHIC_MonitorVolumeLeft_Query: return "AHIC_MonitorVolumeLeft_Query";
  81. //    case AHIC_MonitorVolumeRight: return "AHIC_MonitorVolumeRight";
  82. //    case AHIC_MonitorVolumeRight_Query: return "AHIC_MonitorVolumeRight_Query";
  83. //    case AHIC_OutputVolumeLeft: return "AHIC_OutputVolumeLeft";
  84. //    case AHIC_OutputVolumeLeft_Query: return "AHIC_OutputVolumeLeft_Query";
  85. //    case AHIC_OutputVolumeRight: return "AHIC_OutputVolumeRight";
  86. //    case AHIC_OutputVolumeRight_Query: return "AHIC_OutputVolumeRight_Query";
  87. //    case AHIC_InputGainLeft: return "AHIC_InputGainLeft";
  88. //    case AHIC_InputGainLeft_Query: return "AHIC_InputGainLeft_Query";
  89. //    case AHIC_InputGainRight: return "AHIC_InputGainRight";
  90. //    case AHIC_InputGainRight_Query: return "AHIC_InputGainRight_Query";
  91. //    case AHIC_PlaySampleFormat: return "AHIC_PlaySampleFormat";
  92. //    case AHIC_PlaySampleFormat_Query: return "AHIC_PlaySampleFormat_Query";
  93. //    case AHIC_RecordSampleFormat: return "AHIC_RecordSampleFormat";
  94. //    case AHIC_RecordSampleFormat_Query: return "AHIC_RecordSampleFormat_Query";
  95.     case AHIDB_AudioID: return "AHIDB_AudioID";
  96.     case AHIDB_BufferLen: return "AHIDB_BufferLen";
  97.     case AHIDB_Driver: return "AHIDB_Driver";
  98.     case AHIDB_Author: return "AHIDB_Author";
  99.     case AHIDB_Copyright: return "AHIDB_Copyright";
  100.     case AHIDB_Version: return "AHIDB_Version";
  101.     case AHIDB_Annotation: return "AHIDB_Annotation";
  102.     case AHIDB_Name: return "AHIDB_Name";
  103.     case AHIDB_Data: return "AHIDB_Data";
  104.     case AHIDB_Flags: return "AHIDB_Flags";
  105. //    case AHIDB_Play: return "AHIDB_Play";
  106.     case AHIDB_Record: return "AHIDB_Record";
  107. //    case AHIDB_Direct: return "AHIDB_Direct";
  108.     case AHIDB_Volume: return "AHIDB_Volume";
  109.     case AHIDB_Stereo: return "AHIDB_Stereo";
  110.     case AHIDB_Panning: return "AHIDB_Panning";
  111. //    case AHIDB_Surround: return "AHIDB_Surround";
  112.     case AHIDB_PingPong: return "AHIDB_PingPong";
  113.     case AHIDB_MultTable: return "AHIDB_MultTable";
  114.     case AHIDB_MaxChannels: return "AHIDB_MaxChannels";
  115.     case AHIDB_MaxPlaySamples: return "AHIDB_MaxPlaySamples";
  116.     case AHIDB_MaxRecordSamples: return "AHIDB_MaxRecordSamples";
  117.     case AHIDB_Bits: return "AHIDB_Bits";
  118.     case AHIDB_HiFi: return "AHIDB_HiFi";
  119.     case AHIDB_Realtime: return "AHIDB_Realtime";
  120.     case AHIDB_FullDuplex: return "AHIDB_FullDuplex";
  121. //    case AHIDB_Accelerated: return "AHIDB_Accelerated";
  122. //    case AHIDB_Available: return "AHIDB_Available";
  123. //    case AHIDB_Hidden: return "AHIDB_Hidden";
  124.     case AHIDB_Frequencies: return "AHIDB_Frequencies";
  125.     case AHIDB_FrequencyArg: return "AHIDB_FrequencyArg";
  126.     case AHIDB_Frequency: return "AHIDB_Frequency";
  127. //    case AHIDB_FrequencyArray: return "AHIDB_FrequencyArray";
  128.     case AHIDB_IndexArg: return "AHIDB_IndexArg";
  129.     case AHIDB_Index: return "AHIDB_Index";
  130.     case AHIDB_Inputs: return "AHIDB_Inputs";
  131.     case AHIDB_InputArg: return "AHIDB_InputArg";
  132.     case AHIDB_Input: return "AHIDB_Input";
  133. //    case AHIDB_InputArray: return "AHIDB_InputArray";
  134.     case AHIDB_Outputs: return "AHIDB_Outputs";
  135.     case AHIDB_OutputArg: return "AHIDB_OutputArg";
  136.     case AHIDB_Output: return "AHIDB_Output";
  137. //    case AHIDB_OutputArray: return "AHIDB_OutputArray";
  138. //    case AHIDB_MonitorVolumesLeft: return "AHIDB_MonitorVolumesLeft";
  139. //    case AHIDB_MonitorVolumeLeftArg: return "AHIDB_MonitorVolumeLeftArg";
  140. //    case AHIDB_MonitorVolumeLeft: return "AHIDB_MonitorVolumeLeft";
  141. //    case AHIDB_MonitorVolumeLeftArray: return "AHIDB_MonitorVolumeLeftArray";
  142. //    case AHIDB_MonitorVolumesRight: return "AHIDB_MonitorVolumesRight";
  143. //    case AHIDB_MonitorVolumeRightArg: return "AHIDB_MonitorVolumeRightArg";
  144. //    case AHIDB_MonitorVolumeRight: return "AHIDB_MonitorVolumeRight";
  145. //    case AHIDB_MonitorVolumeRightArray: return "AHIDB_MonitorVolumeRightArray";
  146. //    case AHIDB_OutputVolumesLeft: return "AHIDB_OutputVolumesLeft";
  147. //    case AHIDB_OutputVolumeLeftArg: return "AHIDB_OutputVolumeLeftArg";
  148. //    case AHIDB_OutputVolumeLeft: return "AHIDB_OutputVolumeLeft";
  149. //    case AHIDB_OutputVolumeLeftArray: return "AHIDB_OutputVolumeLeftArray";
  150. //    case AHIDB_OutputVolumesRight: return "AHIDB_OutputVolumesRight";
  151. //    case AHIDB_OutputVolumeRightArg: return "AHIDB_OutputVolumeRightArg";
  152. //    case AHIDB_OutputVolumeRight: return "AHIDB_OutputVolumeRight";
  153. //    case AHIDB_OutputVolumeRightArray: return "AHIDB_OutputVolumeRightArray";
  154. //    case AHIDB_InputGainsLeft: return "AHIDB_InputGainsLeft";
  155. //    case AHIDB_InputGainLeftArg: return "AHIDB_InputGainLeftArg";
  156. //    case AHIDB_InputGainLeft: return "AHIDB_InputGainLeft";
  157. //    case AHIDB_InputGainLeftArray: return "AHIDB_InputGainLeftArray";
  158. //    case AHIDB_InputGainsRight: return "AHIDB_InputGainsRight";
  159. //    case AHIDB_InputGainRightArg: return "AHIDB_InputGainRightArg";
  160. //    case AHIDB_InputGainRight: return "AHIDB_InputGainRight";
  161. //    case AHIDB_InputGainRightArray: return "AHIDB_InputGainRightArray";
  162. //    case AHIDB_PlaySampleFormats: return "AHIDB_PlaySampleFormats";
  163. //    case AHIDB_PlaySampleFormatArg: return "AHIDB_PlaySampleFormatArg";
  164. //    case AHIDB_PlaySampleFormat: return "AHIDB_PlaySampleFormat";
  165. //    case AHIDB_PlaySampleFormatArray: return "AHIDB_PlaySampleFormatArray";
  166. //    case AHIDB_RecordSampleFormats: return "AHIDB_RecordSampleFormats";
  167. //    case AHIDB_RecordSampleFormatArg: return "AHIDB_RecordSampleFormatArg";
  168. //    case AHIDB_RecordSampleFormat: return "AHIDB_RecordSampleFormat";
  169. //    case AHIDB_RecordSampleFormatArray: return "AHIDB_RecordSampleFormatArray";
  170.     case AHIB_Dizzy: return "AHIB_Dizzy";
  171.     case AHIR_Window: return "AHIR_Window";
  172.     case AHIR_Screen: return "AHIR_Screen";
  173.     case AHIR_PubScreenName: return "AHIR_PubScreenName";
  174.     case AHIR_PrivateIDCMP: return "AHIR_PrivateIDCMP";
  175.     case AHIR_IntuiMsgFunc: return "AHIR_IntuiMsgFunc";
  176.     case AHIR_SleepWindow: return "AHIR_SleepWindow";
  177.     case AHIR_UserData: return "AHIR_UserData";
  178.     case AHIR_TextAttr: return "AHIR_TextAttr";
  179.     case AHIR_Locale: return "AHIR_Locale";
  180.     case AHIR_TitleText: return "AHIR_TitleText";
  181.     case AHIR_PositiveText: return "AHIR_PositiveText";
  182.     case AHIR_NegativeText: return "AHIR_NegativeText";
  183.     case AHIR_InitialLeftEdge: return "AHIR_InitialLeftEdge";
  184.     case AHIR_InitialTopEdge: return "AHIR_InitialTopEdge";
  185.     case AHIR_InitialWidth: return "AHIR_InitialWidth";
  186.     case AHIR_InitialHeight: return "AHIR_InitialHeight";
  187.     case AHIR_InitialAudioID: return "AHIR_InitialAudioID";
  188.     case AHIR_InitialMixFreq: return "AHIR_InitialMixFreq";
  189.     case AHIR_InitialInfoOpened: return "AHIR_InitialInfoOpened";
  190.     case AHIR_InitialInfoLeftEdge: return "AHIR_InitialInfoLeftEdge";
  191.     case AHIR_InitialInfoTopEdge: return "AHIR_InitialInfoTopEdge";
  192.     case AHIR_InitialInfoWidth: return "AHIR_InitialInfoWidth";
  193.     case AHIR_InitialInfoHeight: return "AHIR_InitialInfoHeight";
  194.     case AHIR_DoMixFreq: return "AHIR_DoMixFreq";
  195.     case AHIR_DoDefaultMode: return "AHIR_DoDefaultMode";
  196. //    case AHIR_DoChannels: return "AHIR_DoChannels";
  197. //    case AHIR_DoHidden: return "AHIR_DoHidden";
  198. //    case AHIR_DoDirectModes: return "AHIR_DoDirectModes";
  199.     case AHIR_FilterTags: return "AHIR_FilterTags";
  200.     case AHIR_FilterFunc: return "AHIR_FilterFunc";
  201.     case AHIC_MonitorVolume: return "AHIC_MonitorVolume";
  202.     case AHIC_MonitorVolume_Query: return "AHIC_MonitorVolume_Query";
  203.     case AHIC_InputGain: return "AHIC_InputGain";
  204.     case AHIC_InputGain_Query: return "AHIC_InputGain_Query";
  205.     case AHIC_OutputVolume: return "AHIC_OutputVolume";
  206.     case AHIC_OutputVolume_Query: return "AHIC_OutputVolume_Query";
  207.     case AHIDB_MinMixFreq: return "AHIDB_MinMixFreq";
  208.     case AHIDB_MaxMixFreq: return "AHIDB_MaxMixFreq";
  209.     case AHIDB_MinMonitorVolume: return "AHIDB_MinMonitorVolume";
  210.     case AHIDB_MaxMonitorVolume: return "AHIDB_MaxMonitorVolume";
  211.     case AHIDB_MinInputGain: return "AHIDB_MinInputGain";
  212.     case AHIDB_MaxInputGain: return "AHIDB_MaxInputGain";
  213.     case AHIDB_MinOutputVolume: return "AHIDB_MinOutputVolume";
  214.     case AHIDB_MaxOutputVolume: return "AHIDB_MaxOutputVolume";
  215.  
  216.     default:
  217.       return "Unknown";
  218.   }
  219. }
  220.  
  221.  
  222. // tags may be NULL
  223.  
  224. static void
  225. PrintTagList(struct TagItem *tags)
  226. {
  227.   struct TagItem *tstate;
  228.   struct TagItem *tag;
  229.  
  230.   if(tags == NULL)
  231.   {
  232.     KPrintF("No taglist\n");
  233.   }
  234.   else
  235.   {
  236.     tstate = tags;
  237.     while((tag = NextTagItem(&tstate)))
  238.     {
  239.       KPrintF("\n  %30s, 0x%08lx,", GetTagName( tag->ti_Tag ), tag->ti_Data);
  240.     }
  241.     KPrintF("\n  TAG_DONE)");
  242.   }
  243. }
  244.  
  245.  
  246. /******************************************************************************
  247. ** All functions **************************************************************
  248. ******************************************************************************/
  249.  
  250.  
  251. void
  252. Debug_AllocAudioA( struct TagItem *tags )
  253. {
  254.   KPrintF("AHI_AllocAudioA(");
  255.   PrintTagList(tags);
  256. }
  257.  
  258. void
  259. Debug_FreeAudio( struct AHIPrivAudioCtrl *audioctrl )
  260. {
  261.   KPrintF("AHI_FreeAudio(0x%08lx)\n",audioctrl);
  262. }
  263.  
  264. void
  265. Debug_KillAudio( void )
  266. {
  267.   KPrintF("AHI_KillAudio()\n");
  268. }
  269.  
  270. void
  271. Debug_ControlAudioA( struct AHIPrivAudioCtrl *audioctrl, struct TagItem *tags )
  272. {
  273.   KPrintF("AHI_ControlAudioA(0x%08lx,",audioctrl);
  274.   PrintTagList(tags);
  275. }
  276.  
  277.  
  278. void
  279. Debug_SetVol( UWORD chan, Fixed vol, sposition pan, struct AHIPrivAudioCtrl *audioctrl, ULONG flags)
  280. {
  281.   KPrintF("AHI_SetVol(%ld, 0x%08lx, 0x%08lx, 0x%08lx, %ld)\n",
  282.       chan & 0xffff, vol, pan, audioctrl, flags);
  283. }
  284.  
  285. void
  286. Debug_SetFreq( UWORD chan, ULONG freq, struct AHIPrivAudioCtrl *audioctrl, ULONG flags)
  287. {
  288.   KPrintF("AHI_SetFreq(%ld, %ld, 0x%08lx, %ld)\n",
  289.       chan & 0xffff, freq, audioctrl, flags);
  290. }
  291.  
  292. void
  293. Debug_SetSound( UWORD chan, UWORD sound, ULONG offset, LONG length, struct AHIPrivAudioCtrl *audioctrl, ULONG flags)
  294. {
  295.   KPrintF("AHI_SetSound(%ld, %ld, 0x%08lx, 0x%08lx, 0x%08lx, %ld)\n",
  296.       chan & 0xffff, sound & 0xffff, offset, length, audioctrl, flags);
  297. }
  298.  
  299. void
  300. Debug_SetEffect( ULONG *effect, struct AHIPrivAudioCtrl *audioctrl )
  301. {
  302.   KPrintF("AHI_SetEffect(0x%08lx (Effect 0x%08lx), 0x%08lx)\n",
  303.       effect, *effect, audioctrl);
  304. }
  305.  
  306. void
  307. Debug_LoadSound( UWORD sound, ULONG type, APTR info, struct AHIPrivAudioCtrl *audioctrl )
  308. {
  309.   KPrintF("AHI_LoadSound(%ld, %ld, 0x%08lx, 0x%08lx) ", sound, type, info, audioctrl);
  310.  
  311.   if(type == AHIST_SAMPLE || type == AHIST_DYNAMICSAMPLE)
  312.   {
  313.     struct AHISampleInfo *si = (struct AHISampleInfo *) info;
  314.  
  315.     KPrintF("[T:0x%08lx A:0x%08lx L:%ld]", si->ahisi_Type, si->ahisi_Address, si->ahisi_Length);
  316.   }
  317. }
  318.  
  319. void
  320. Debug_UnloadSound( UWORD sound, struct AHIPrivAudioCtrl *audioctrl )
  321. {
  322.   KPrintF("AHI_UnloadSound(%ld, 0x%08lx)\n", sound, audioctrl);
  323. }
  324.  
  325. void
  326. Debug_NextAudioID( ULONG id)
  327. {
  328.   KPrintF("AHI_NextAudioID(0x%08lx)",id);
  329. }
  330.  
  331. void
  332. Debug_GetAudioAttrsA( ULONG id, struct AHIAudioCtrlDrv *audioctrl, struct TagItem *tags )
  333. {
  334.   KPrintF("AHI_GetAudioAttrsA(0x%08lx, 0x%08lx,",id,audioctrl);
  335.   PrintTagList(tags);
  336. }
  337.  
  338. void
  339. Debug_BestAudioIDA( struct TagItem *tags )
  340. {
  341.   KPrintF("AHI_BestAudioIDA(");
  342.   PrintTagList(tags);
  343. }
  344.  
  345. void
  346. Debug_AllocAudioRequestA( struct TagItem *tags )
  347. {
  348.   KPrintF("AHI_AllocAudioRequestA(");
  349.   PrintTagList(tags);
  350. }
  351.  
  352. void
  353. Debug_AudioRequestA( struct AHIAudioModeRequester *req, struct TagItem *tags )
  354. {
  355.   KPrintF("AHI_AudioRequestA(0x%08lx,",req);
  356.   PrintTagList(tags);
  357. }
  358.  
  359. void
  360. Debug_FreeAudioRequest( struct AHIAudioModeRequester *req )
  361. {
  362.   KPrintF("AHI_FreeAudioRequest(0x%08lx)\n",req);
  363. }
  364.  
  365. void
  366. Debug_PlayA( struct AHIAudioCtrl *audioctrl, struct TagItem *tags )
  367. {
  368.   KPrintF("AHI_PlayA(0x%08lx,",audioctrl);
  369.   PrintTagList(tags);
  370.   KPrintF("\n");
  371. }
  372.  
  373. void
  374. Debug_SampleFrameSize( ULONG sampletype)
  375. {
  376.   KPrintF("AHI_SampleFrameSize(%ld)",sampletype);
  377. }
  378.  
  379. void
  380. Debug_AddAudioMode(struct TagItem *tags )
  381. {
  382.   KPrintF("AHI_AddAudioMode(");
  383.   PrintTagList(tags);
  384. }
  385.  
  386. void
  387. Debug_RemoveAudioMode( ULONG id)
  388. {
  389.   KPrintF("AHI_RemoveAudioMode(0x%08lx)",id);
  390. }
  391.  
  392. void
  393. Debug_LoadModeFile( STRPTR name)
  394. {
  395.   KPrintF("AHI_LoadModeFile(%s)",name);
  396. }
  397.  
  398.  
  399. /******************************************************************************
  400. ** The Prayer *****************************************************************
  401. ******************************************************************************/
  402.  
  403. static const char prayer[] =
  404. {
  405.   "Oh Lord, most wonderful God, I pray for every one that uses this software; "
  406.   "Let the Holy Ghost speak, call him or her to salvation, reveal your Love. "
  407.   "Lord, bring the revival to this country, let the Holy Ghost fall over all "
  408.   "flesh, as You have promised a long time ago. Thank you for everything, thank "
  409.   "you for what is about to happen. Amen."
  410. };
  411.