|
|
#ifndef _ISDMAPI_H_
#define _ISDMAPI_H_
/****************************************************************************
* * $Archive: /rtp/support/isdm/ISDMAPI.H $ * * INTEL Corporation Prorietary Information * * This listing is supplied under the terms of a license agreement * with INTEL Corporation and may not be copied nor disclosed except * in accordance with the terms of that agreement. * * Copyright (c) 1993-1994 Intel Corporation. * * $Revision: 5 $ * $Date: 6/13/96 2:55p $ * $Author: Cmaciocc $ * * Deliverable: * * Abstract: * * Notes: * ***************************************************************************/
#ifdef __cplusplus
extern "C" { // Assume C declarations for C++.
#endif // __cplusplus
#ifndef DllExport
#define DllExport __declspec( dllexport )
#endif // DllExport
typedef DWORD HSTATSESSION, *LPHSTATSESSION;
#define MAX_SESSNAME_LENGTH 25
#define MAX_MODNAME_LENGTH 20
#define MAX_SESSIDENT_LENGTH 256 //consistant with max cName length
#define MAX_STATNAME_LENGTH 256
//stat item string name
typedef char STATNAME[MAX_STATNAME_LENGTH], *LPSTATNAME; //session string name
typedef char SESSIONNAME[MAX_SESSNAME_LENGTH], *LPSESSIONNAME; //module name
typedef char MODULENAME[MAX_MODNAME_LENGTH], *LPMODULENAME; //identifier length
typedef char SESSIONIDENT[MAX_SESSIDENT_LENGTH], *LPSESSIONIDENT;
typedef struct STATSTRUCT { DWORD dwStructSize; // size of the structure
STATNAME szStatName; // string name of the stat item
DWORD dwToken; // session unique id of the stat item
DWORD dwValue; // value(data) of the stat item
DWORD dwLow; // low value for range of value
DWORD dwHigh; // hi value for range of value
DWORD dwLastUpdate; // time stamp of last update
} STAT, *LPSTAT;
// Typedefs for ISDM application entry points to ensure stricter checking
// when functions are called via pointers
//
typedef HRESULT (*ISD_REGISTER_SESSION) (LPMODULENAME, LPSESSIONNAME, LPSESSIONIDENT, LPHSTATSESSION); typedef HRESULT (*ISD_CREATESTAT) (HSTATSESSION, LPSTAT, WORD); typedef HRESULT (*ISD_UNREGISTERSESSION) (HSTATSESSION); typedef HRESULT (*ISD_DELETESTAT) (HSTATSESSION, LPSTAT, WORD); typedef HRESULT (*ISD_UPDATESTAT) (HSTATSESSION, LPSTAT, WORD); typedef HRESULT (*ISD_GETFIRSTSESSION) (LPMODULENAME, LPSESSIONNAME, LPSESSIONIDENT, LPHSTATSESSION); typedef HRESULT (*ISD_GETNEXTSESSION) (HSTATSESSION, LPMODULENAME, LPSESSIONNAME, LPSESSIONIDENT, LPHSTATSESSION); typedef HRESULT (*ISD_GETNUMSESSIONS) (WORD *); typedef HRESULT (*ISD_GETFIRSTSTAT) (HSTATSESSION, LPSTAT); typedef HRESULT (*ISD_GETNEXTSTAT) (HSTATSESSION, LPSTAT, LPSTAT); typedef HRESULT (*ISD_GETNUMSTATS) (HSTATSESSION, WORD *); typedef HRESULT (*ISD_GETSESSIONSTATS) (HSTATSESSION, LPSTAT, WORD);
typedef struct _ISDMAPI { ISD_REGISTER_SESSION ISD_RegisterSession; ISD_CREATESTAT ISD_CreateStat; ISD_UNREGISTERSESSION ISD_UnregisterSession; ISD_DELETESTAT ISD_DeleteStat; ISD_UPDATESTAT ISD_UpdateStat; ISD_GETFIRSTSESSION ISD_GetFirstSession; ISD_GETNEXTSESSION ISD_GetNextSession; ISD_GETNUMSESSIONS ISD_GetNumSessions; ISD_GETFIRSTSTAT ISD_GetFirstStat; ISD_GETNEXTSTAT ISD_GetNextStat; ISD_GETNUMSTATS ISD_GetNumStats; ISD_GETSESSIONSTATS ISD_GetSessionStats; } ISDMAPI, *LPISDMAPI;
//HRESULT error defines
#define ISDM_ERROR_BASE 0x7000
#define ERROR_HIT_MAX_SESSIONS ISDM_ERROR_BASE + 1
#define ERROR_HIT_MAX_STATS ISDM_ERROR_BASE + 2
#define ERROR_ACCESSING_SESSION ISDM_ERROR_BASE + 3
#define ERROR_SESSION_EXISTS ISDM_ERROR_BASE + 4
#define ERROR_INVALID_SESS_HANDLE ISDM_ERROR_BASE + 5
#define ERROR_INVALID_STAT_HANDLE ISDM_ERROR_BASE + 6
#define ERROR_NO_SESSIONS ISDM_ERROR_BASE + 7
#define ERROR_NO_STATS ISDM_ERROR_BASE + 8
#define ERROR_SESSION_NOT_FOUND ISDM_ERROR_BASE + 9
#define ERROR_MUTEX_WAIT_FAIL ISDM_ERROR_BASE + 10
#define ERROR_TOKEN_NOT_UNIQUE ISDM_ERROR_BASE + 11
#define ERROR_NO_FREE_SESSIONS ISDM_ERROR_BASE + 12
#define ERROR_SESSION_GET_FAIL ISDM_ERROR_BASE + 13
#define ERROR_BAD_STAT_ARRAY ISDM_ERROR_BASE + 14
#define ERROR_BAD_STAT_TOKEN ISDM_ERROR_BASE + 15
#define ERROR_BAD_SESSION_NAME ISDM_ERROR_BASE + 16
#define ERROR_NO_FREE_STATS ISDM_ERROR_BASE + 17
#define ERROR_BAD_MODULE_NAME ISDM_ERROR_BASE + 18
//token defines
//RRCM
#define RRCM_LOCAL_STREAM 1
#define RRCM_REMOTE_STREAM 2
#define ISDM_TOKEN_BASE 0x0000
#define ISDM_CC_CODEC ISDM_TOKEN_BASE + 1
#define ISDM_CC_REMOTE ISDM_TOKEN_BASE + 2
#define ISDM_CC_LOCAL ISDM_TOKEN_BASE + 3
#define ISDM_RRCM_BASE 0x1000
#define ISDM_SSRC ISDM_RRCM_BASE + 1
#define ISDM_NUM_PCKT_SENT ISDM_RRCM_BASE + 2
#define ISDM_NUM_BYTES_SENT ISDM_RRCM_BASE + 3
#define ISDM_FRACTION_LOST ISDM_RRCM_BASE + 4
#define ISDM_CUM_NUM_PCKT_LOST ISDM_RRCM_BASE + 5
#define ISDM_XTEND_HIGHEST_SEQ_NUM ISDM_RRCM_BASE + 6
#define ISDM_INTERARRIVAL_JITTER ISDM_RRCM_BASE + 7
#define ISDM_LAST_SR ISDM_RRCM_BASE + 8
#define ISDM_DLSR ISDM_RRCM_BASE + 9
#define ISDM_NUM_BYTES_RCVD ISDM_RRCM_BASE + 10
#define ISDM_NUM_PCKT_RCVD ISDM_RRCM_BASE + 11
#define ISDM_NTP_FRAC ISDM_RRCM_BASE + 12
#define ISDM_NTP_SEC ISDM_RRCM_BASE + 13
#define ISDM_WHO_AM_I ISDM_RRCM_BASE + 14
#define ISDM_FDBK_FRACTION_LOST ISDM_RRCM_BASE + 15
#define ISDM_FDBK_CUM_NUM_PCKT_LOST ISDM_RRCM_BASE + 16
#define ISDM_FDBK_LAST_SR ISDM_RRCM_BASE + 17
#define ISDM_FDBK_DLSR ISDM_RRCM_BASE + 18
#define ISDM_FDBK_INTERARRIVAL_JITTER ISDM_RRCM_BASE + 19
//
//Supplier calls
//
//registration call
//This call is made whenever a new session is desired. The session name passed in must be unique
//across all sessions.
extern DllExport HRESULT ISD_RegisterSession ( LPMODULENAME pszModuleName, // module who owns session
LPSESSIONNAME pszSessionName, // string name of new session to register
LPSESSIONIDENT pszSessionIdent, // further level identifier for session
LPHSTATSESSION phSession // return; handle to new session
);
//stat creation call
//add 1+ stat item(s) to a session.
extern DllExport HRESULT ISD_CreateStat ( HSTATSESSION hSession, // handle to session
LPSTAT pStatArray, // array of structs holding new stats to create
WORD wNumItems // size of array(number of new stats)
);
//unregistration call
//deletes a session and all associated stat structs
extern DllExport HRESULT ISD_UnregisterSession ( HSTATSESSION hSession // handle of session to remove
);
//stat deletion call
//delete 1+ stat item(s) from a session
extern DllExport HRESULT ISD_DeleteStat ( HSTATSESSION hSession, // handle to session
LPSTAT pStatArray, // array of structs
WORD wNumItems // size of array(number of stats to remove)
);
//set stat data call
extern DllExport HRESULT ISD_UpdateStat ( HSTATSESSION hSession, // handle of session with stat item(s)
LPSTAT pStatArray, // array of structs holding items to update
WORD wNumItems // size of array(number of stats to update)
);
//
//Consumer calls
//
//query calls
//session query
extern DllExport HRESULT ISD_GetFirstSession ( LPMODULENAME pszModuleName, // module who owns session
LPSESSIONNAME pszSessionName, // string name of new session to register
LPSESSIONIDENT pszSessionIdent, // further level identifier for session
LPHSTATSESSION phSession // return; the session handle or null if empty list
);
//GetNext uses hCurSession to determine the next item..returned in phNextSession
extern DllExport HRESULT ISD_GetNextSession ( HSTATSESSION hCurSession, // the current session handle
LPMODULENAME pszModuleName, // module who owns session
LPSESSIONNAME pszSessionName, // string name of new session to register
LPSESSIONIDENT pszSessionIdent, // further level identifier for session
LPHSTATSESSION phNextSession // return; the session handle or null if at the end
);
extern DllExport HRESULT ISD_GetNumSessions ( WORD *wNumSessions // return; number of sessions
);
//stat query..retreive structs for the first time(get unique ids..initial values..etc)
extern DllExport HRESULT ISD_GetFirstStat ( HSTATSESSION hSession, // handle to session containing stat
LPSTAT pStat // return; filled struct for first stat item
);
//pCurrentStat and pNextStat can be identical for saving memory.
extern DllExport HRESULT ISD_GetNextStat ( HSTATSESSION hSession, // handle to session containing stat
LPSTAT pCurrentStat, // pointer to current stat item(for determining next)
LPSTAT pNextStat // return; filled struct for next stat item
);
extern DllExport HRESULT ISD_GetNumStats ( HSTATSESSION hSession, // what session we are interested in
WORD *wNumStats // return; number of stats in session
);
//stat retreival
extern DllExport HRESULT ISD_GetSessionStats ( HSTATSESSION hSession, // what session we are interested in
LPSTAT pStatArray, // return; array of structs holding items
WORD wNumStats // return; number of items in session
);
#ifdef __cplusplus
} // End of extern "C" {
#endif // __cplusplus
#endif // ISDTAT.H
|