home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
VSCPPv8.zip
/
VACPP
/
IBMCPP
/
samples
/
TOOLKIT
/
MM
/
MCDTEMP
/
MCDFUNCS.C
< prev
next >
Wrap
C/C++ Source or Header
|
1994-11-17
|
11KB
|
240 lines
/****************************************************************************/
/* */
/* SOURCE FILE NAME: MCDFUNCS.C */
/* */
/* DESCRIPTIVE NAME: MCD COMMON FUNCTIONS */
/* */
/* COPYRIGHT: (c) IBM Corp. 1991 - 1993 */
/* */
/* FUNCTION: This file contains common functions used by the MCD template. */
/* */
/* ENTRY POINTS: */
/* QMAudio() - Query master volume settings */
/* GetINIInstallName() - Get the MMPM/2 install name for this device */
/* ConvertTime() - Convert time formats */
/* GetDeviceInfo() - Get device info */
/****************************************************************************/
#define INCL_BASE // Base OS2 functions
#define INCL_MCIOS2 // use the OS/2 like MMPM/2 headers
#include <os2.h> // OS2 defines.
#include <string.h> // string prototypes
#include <stdlib.h> // standard C functions
#include <os2me.h> // MME includes files.
#include "mcdtemp.h" // MCD Function Prototypes and typedefs
/****************************************************************************/
/* */
/* SUBROUTINE NAME: QMAudio */
/* */
/* DESCRIPTIVE NAME: Query Master Audio */
/* */
/* FUNCTION: Query current volume and headphone/speaker settings from */
/* Master Audio. */
/* */
/* PARAMETERS: */
/* PINSTANCE pInstance - pointer to device instance structure. */
/* */
/* EXIT CODES: None */
/* */
/****************************************************************************/
VOID QMAudio(PINSTANCE pInstance)
{
ULONG ulrc;
MCI_MASTERAUDIO_PARMS recMasterAudio;
/*****************************/
/* get current master volume */
/*****************************/
ulrc = mciSendCommand(pInstance->usDeviceID, MCI_MASTERAUDIO,
MCI_WAIT | MCI_QUERYCURRENTSETTING | MCI_MASTERVOL,
&recMasterAudio, 0);
if (ulrc)
{
if (pInstance->ulMasterVolume == (ULONG) -1L)
pInstance->ulMasterVolume = 75L; //if first time error set to default
}
else
pInstance->ulMasterVolume = recMasterAudio.ulReturn;
/*****************************/
/* get current speaker status */
/*****************************/
ulrc = mciSendCommand(pInstance->usDeviceID, MCI_MASTERAUDIO,
MCI_WAIT | MCI_QUERYCURRENTSETTING | MCI_SPEAKERS,
&recMasterAudio, 0);
if (!ulrc)
if (recMasterAudio.ulReturn)
pInstance->Speaker = TRUE; //SPEAKERS are turned on
/*****************************/
/* get current headphone status */
/*****************************/
ulrc = mciSendCommand(pInstance->usDeviceID, MCI_MASTERAUDIO,
MCI_WAIT | MCI_QUERYCURRENTSETTING | MCI_HEADPHONES,
&recMasterAudio, 0);
if (!ulrc)
if (recMasterAudio.ulReturn)
pInstance->Headphone = TRUE; //Headphones are turned on
} /* of QMAudio() */
/****************************************************************************/
/* */
/* SUBROUTINE NAME: GetINIInstallName */
/* */
/* DESCRIPTIVE NAME: Get The INI install name for this device */
/* */
/* FUNCTION: Get the INI install name for this device. This install name */
/* will be used later to get additional information from the */
/* INI file about this device. */
/* */
/* PARAMETERS: */
/* PINSTANCE pInstance -- pointer to instance. */
/* */
/****************************************************************************/
VOID GetINIInstallName(PINSTANCE pInstance)
{
ULONG ulrc;
MCI_SYSINFO_PARMS recSysInfo;
MCI_SYSINFO_QUERY_NAME recQueryName;
/*****************************/
/* clear input parameters */
/*****************************/
memset(&recQueryName, 0, sizeof(MCI_SYSINFO_QUERY_NAME));
/*********************************************************/
/* Get install name for this device based on device type */
/* Use the MCI_SYSINFO_QUERY_NAMES to get the MMPM/2 */
/* INI file install name. */
/*********************************************************/
recSysInfo.ulItem = MCI_SYSINFO_QUERY_NAMES;
recSysInfo.usDeviceType = pInstance->usDeviceType;
recSysInfo.pSysInfoParm = &recQueryName;
recQueryName.usDeviceType = pInstance->usDeviceType;
recQueryName.usDeviceOrd = pInstance->usDeviceOrd;
ulrc = mciSendCommand(0, MCI_SYSINFO, MCI_SYSINFO_ITEM | MCI_WAIT,
&recSysInfo, 0);
if (!ulrc)
strcpy(pInstance->szInstallName, recQueryName.szInstallName);
return;
} /* end of GetINIInstallName() */
/****************************************************************************/
/* */
/* SUBROUTINE NAME: GetDeviceInfo */
/* */
/* DESCRIPTIVE NAME: Get The device info from INI file */
/* */
/* FUNCTION: Get the device info from INI file. */
/* Product Info */
/* */
/* PARAMETERS: */
/* PINSTANCE pInstance -- pointer to instance. */
/* */
/****************************************************************************/
VOID GetDeviceInfo(PINSTANCE pInstance)
{
ULONG ulrc;
MCI_SYSINFO_PARMS recSysInfo;
MCI_SYSINFO_LOGDEVICE recLogDevice;
/**************************/
/* clear input parameters */
/**************************/
memset(&recLogDevice, 0, sizeof(MCI_SYSINFO_LOGDEVICE));
/******************************************************/
/* Get device info for this device */
/* this assumes that GetINIInstallName was already */
/* called */
/******************************************************/
recSysInfo.ulItem = MCI_SYSINFO_QUERY_DRIVER;
recSysInfo.usDeviceType = pInstance->usDeviceType;
recSysInfo.pSysInfoParm = &recLogDevice;
strcpy(recLogDevice.szInstallName, pInstance->szInstallName);
ulrc = mciSendCommand(0, MCI_SYSINFO, MCI_SYSINFO_ITEM | MCI_WAIT,
&recSysInfo, 0);
if (!ulrc)
strcpy(pInstance->szProductInfo, recLogDevice.szProductInfo);
return;
} /* end of GetDeviceInfo() */
/****************************************************************************/
/* */
/* SUBROUTINE NAME: ConvertTime */
/* */
/* DESCRIPTIVE NAME: Convert time from one format to another. */
/* */
/* PARAMETERS: */
/* PINSTANCE pInstance -- pointer to instance. */
/* */
/* NOTES: This is just the start of a routine to convert from one time */
/* format to another. You should add and delete to this routine */
/* as required by your MCD. */
/* */
/****************************************************************************/
ULONG ConvertTime(ULONG ulTime, ULONG ulCurrentFormat, ULONG ulNewFormat)
{
ULONG ulrc;
ULONG ulNewTime=0;
switch (ulCurrentFormat)
{
case MCI_FORMAT_MILLISECONDS: // MILLISECONDS
switch (ulNewFormat)
{
case MCI_FORMAT_MMTIME: // MMTIME
ulNewTime = MSECTOMM(ulTime);
break;
default :
ulNewTime = ulTime;
} /* on switch */
break;
case MCI_FORMAT_MMTIME: // MMTIME
switch (ulNewFormat)
{
case MCI_FORMAT_MILLISECONDS: // MILLISECONDS
ulNewTime = MSECFROMMM(ulTime);
break;
} /* on switch */
break;
case MCI_FORMAT_MSF: // MINUTE, SECONDS, FRAMES
case MCI_FORMAT_TMSF: // TRACKS, MINUTE, SECONDS, FRAMES
case MCI_FORMAT_CHAPTERS: // CHAPTERS
case MCI_FORMAT_FRAMES: // FRAMES
case MCI_FORMAT_HMS: // HOURS, MINUTES, SECONDS
case MCI_FORMAT_HMSF: // HOURS, MINUTES, SECONDS, FRAMES
case MCI_FORMAT_TRACKS: // TRACKS
case MCI_FORMAT_BYTES: // BYTES
case MCI_FORMAT_SAMPLES: // SAMPLES
default :
ulNewTime = ulTime;
} /* on switch */
return(ulNewTime);
} /* end of ConvertTime() */