#ifndef _ISDMAPI_H_ #define _ISDMAPI_H_ /**************************************************************************** * * $Archive: S:/STURGEON/SRC/INCLUDE/VCS/isdmapi.h_v $ * * 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: 1.12 $ * $Date: Aug 15 1996 14:23:36 $ * $Author: dmgorlic $ * * Deliverable: * * Abstract: * * Notes: * ***************************************************************************/ #include "apierror.h" #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 ERROR_LOCAL_BASE_ID #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 ); //void StorePartofStat(LPSTAT pStat,LPCSTR szName,LPBYTE pValue,DWORD dwType); #ifdef __cplusplus } // End of extern "C" { #endif // __cplusplus #endif // ISDTAT.H