#ifndef _BRIDLE_SND_H_
#define _BRIDLE_SND_H_

#include"AEEBridle.h"
#include "OEMSound.h"

extern uint32 bridle_snd_swi;

enum
{    
      BRIDLE_OEMSOUND_INIT,
      BRIDLE_OEMSOUND_NEWINSTANCE,
      BRIDLE_OEMSOUND_DELETEINSTANCE,
      BRIDLE_OEMSOUND_SETDEVICE,
      BRIDLE_OEMSOUND_PLAYTONE,
      BRIDLE_OEMSOUND_PLAYFREQTONE,
      BRIDLE_OEMSOUND_PLAYTONELIST,
      BRIDLE_OEMSOUND_STOPTONE,
      BRIDLE_OEMSOUND_GETLEVELS,
      BRIDLE_OEMSOUND_SETVOLUME,
      BRIDLE_OEMSOUND_GETVOLUME,
      BRIDLE_OEMSOUND_VIBRATE,
      BRIDLE_OEMSOUND_STOPVIBRATE,
      BRIDLE_OEMSOUND_GET,
      BRIDLE_OEMSOUND_COUNT
};

//temporarily - only - no check access 

//extern void OEMSound_Init(void)
BRIDLE0_VOID(OEMSound_Init,
             bridle_snd_swi, BRIDLE_OEMSOUND_INIT)

//int OEMSound_NewInstance(AEESoundInfo * psi)
BRIDLE1_RET(int, OEMSound_NewInstance,
             AEESoundInfo *, BRIDLE_CHECK_WRITEACCESS, sizeof(AEESoundInfo),
             bridle_snd_swi, BRIDLE_OEMSOUND_NEWINSTANCE)


//extern void OEMSound_DeleteInstance(AEESoundInfo * psi);

BRIDLE1_VOID(OEMSound_DeleteInstance,
             AEESoundInfo *, BRIDLE_CHECK_READACCESS, sizeof(AEESoundInfo),
             bridle_snd_swi,BRIDLE_OEMSOUND_DELETEINSTANCE)
             
             //extern void OEMSound_SetDevice(AEESoundInfo * psi, void * pUser);
             
BRIDLE2_VOID(OEMSound_SetDevice,
             AEESoundInfo *, BRIDLE_CHECK_WRITEACCESS, sizeof(AEESoundInfo),
             void*, BRIDLE_CHECK_NONE, 0,
             bridle_snd_swi, BRIDLE_OEMSOUND_SETDEVICE)
             
             
             
             //extern void OEMSound_PlayTone(AEESoundInfo * psi, AEESoundToneData * toneData, void * pUser);
             
BRIDLE3_VOID(OEMSound_PlayTone,
             AEESoundInfo *, BRIDLE_CHECK_READACCESS, sizeof(AEESoundInfo),
             AEESoundToneData *, BRIDLE_CHECK_WRITEACCESS, 0,
             void*, BRIDLE_CHECK_NONE, 0,
             bridle_snd_swi, BRIDLE_OEMSOUND_PLAYTONE)
             
             
             
             
             // extern void OEMSound_PlayFreqTone(AEESoundInfo * psi, uint16 wHiFreq, uint16 wLoFreq, uint16 wDuration, void * pUser);
BRIDLE5_VOID(OEMSound_PlayFreqTone,
             AEESoundInfo *, BRIDLE_CHECK_READACCESS, sizeof(AEESoundInfo),
             uint16, BRIDLE_CHECK_NONE, 0,
             uint16, BRIDLE_CHECK_NONE, 0,
             uint16, BRIDLE_CHECK_NONE, 0,
             void*, BRIDLE_CHECK_NONE, 0,
             bridle_snd_swi, BRIDLE_OEMSOUND_PLAYFREQTONE)
             
//extern void OEMSound_PlayToneList(AEESoundInfo * psi, AEESoundToneData * pToneData, uint16 wDataLen, void * pUser);
     BRIDLE4_VOID(OEMSound_PlayToneList,
             AEESoundInfo *, BRIDLE_CHECK_READACCESS, sizeof(AEESoundInfo),
             AEESoundToneData *, BRIDLE_CHECK_READACCESS, sizeof(AEESoundToneData),
             uint16, BRIDLE_CHECK_NONE, 0,
             void*, BRIDLE_CHECK_NONE, 0,
             bridle_snd_swi, BRIDLE_OEMSOUND_PLAYTONELIST)
        
             //   extern void OEMSound_StopTone(boolean bPlayList, void * pUser);
BRIDLE2_VOID(OEMSound_StopTone,
             boolean, BRIDLE_CHECK_NONE, 0,
             void*, BRIDLE_CHECK_NONE, 0,
             bridle_snd_swi, BRIDLE_OEMSOUND_STOPTONE)
             
             //extern void OEMSound_GetLevels(AEESoundInfo * psi, void * pUser);
             
BRIDLE2_VOID(OEMSound_GetLevels,
             AEESoundInfo *, BRIDLE_CHECK_READACCESS, sizeof(AEESoundInfo),
             void*, BRIDLE_CHECK_NONE, 0,
             bridle_snd_swi, BRIDLE_OEMSOUND_GETLEVELS)
             
             // extern void OEMSound_SetVolume(AEESoundInfo * psi, uint16 wLevel, void * pUser);
BRIDLE3_VOID(OEMSound_SetVolume,
             AEESoundInfo *, BRIDLE_CHECK_READACCESS, sizeof(AEESoundInfo),
             uint16, BRIDLE_CHECK_NONE, 0,
             void*, BRIDLE_CHECK_NONE, 0,
             bridle_snd_swi, BRIDLE_OEMSOUND_SETVOLUME)
             
             //  extern void OEMSound_GetVolume(AEESoundInfo * psi, void * pUser);
BRIDLE2_VOID(OEMSound_GetVolume,
             AEESoundInfo *, BRIDLE_CHECK_READACCESS, sizeof(AEESoundInfo),
             void*, BRIDLE_CHECK_NONE, 0,
             bridle_snd_swi, BRIDLE_OEMSOUND_GETVOLUME)
             
             //extern void OEMSound_Vibrate(uint16 wDuration, void * pUser);
BRIDLE2_VOID(OEMSound_Vibrate,
             uint16, BRIDLE_CHECK_NONE, 0,
             void*, BRIDLE_CHECK_NONE, 0,
             bridle_snd_swi, BRIDLE_OEMSOUND_VIBRATE)
             
             //  extern void OEMSound_StopVibrate(void * pUser);
BRIDLE1_VOID(OEMSound_StopVibrate,
             void*, BRIDLE_CHECK_NONE, 0,
             bridle_snd_swi, BRIDLE_OEMSOUND_STOPVIBRATE)
             
BRIDLE1_VOID(OEMSound_Get,
             AEESoundInfo *, BRIDLE_CHECK_WRITEACCESS, sizeof(AEESoundInfo),
             bridle_snd_swi, BRIDLE_OEMSOUND_GET)

extern int    RegisterSNDForSWI(void *po);

#endif
