|
|
/****************************************************************************
* * $Archive: S:/STURGEON/SRC/Q931/VCS/hcall.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-1996 Intel Corporation. * * $Revision: 1.27 $ * $Date: 08 Jan 1997 18:04:32 $ * $Author: EHOWARDX $ * * Deliverable: * * Abstract: * * Call Object Methods * * Notes: * ***************************************************************************/
#ifndef HCALL_H
#define HCALL_H
#include "av_asn1.h"
#ifdef __cplusplus
extern "C" { #endif
// Call Object states // OUT // IN
#define CALLSTATE_NULL 0x00 // relcomp* // relcomp*
#define CALLSTATE_INITIATED 0x01 // setup* //
#define CALLSTATE_OUTGOING 0x03 // // proceeding*
#define CALLSTATE_DELIVERED 0x04 // // alerting*
#define CALLSTATE_PRESENT 0x06 // // setup*
#define CALLSTATE_RECEIVED 0x07 // alerting* //
#define CALLSTATE_CONNECT_REQUEST 0x08 // //
#define CALLSTATE_INCOMING 0x09 // proceeding- //
#define CALLSTATE_ACTIVE 0x0A // connect* // connect*
// Call Timer limits
#define Q931_TIMER_301 301
#define Q931_TICKS_301 180000L // 3 minutes
#define Q931_TIMER_303 303
#define Q931_TICKS_303 4000L // 4 seconds
typedef struct CALL_OBJECT_tag { HQ931CALL hQ931Call; WORD wCRV; // Call Reference Value (0..7FFF).
DWORD_PTR dwListenToken; DWORD_PTR dwUserToken; Q931_CALLBACK Callback; BYTE bCallState; BOOL fIsCaller; DWORD dwPhysicalId; BOOL bResolved; // re-connect phase is over.
BOOL bConnected; // has a live channel.
CC_ADDR LocalAddr; // Local address on which channel is connected
CC_ADDR PeerConnectAddr; // Address to which channel is connected
CC_ADDR PeerCallAddr; // Address of opposite call end-point.
BOOL PeerCallAddrPresent; // Address is present.
CC_ADDR SourceAddr; // Address of this end-point.
BOOL SourceAddrPresent; // Address is present.
CC_CONFERENCEID ConferenceID; WORD wGoal; BOOL bCallerIsMC; WORD wCallType;
BOOL NonStandardDataPresent; CC_NONSTANDARDDATA NonStandardData;
char szDisplay[CC_MAX_DISPLAY_LENGTH]; // length = 0 means not present.
char szCalledPartyNumber[CC_MAX_PARTY_NUMBER_LEN]; // length = 0 means not present.
PCC_ALIASNAMES pCallerAliasList; PCC_ALIASNAMES pCalleeAliasList; PCC_ALIASNAMES pExtraAliasList;
PCC_ALIASITEM pExtensionAliasItem;
// these are part of EndpointType...
BOOL VendorInfoPresent; CC_VENDORINFO VendorInfo; BYTE bufVendorProduct[CC_MAX_PRODUCT_LENGTH]; BYTE bufVendorVersion[CC_MAX_VERSION_LENGTH]; BOOL bIsTerminal; BOOL bIsGateway;
ASN1_CODER_INFO World;
DWORD dwTimerAlarm301; DWORD dwTimerAlarm303; GUID CallIdentifier; } CALL_OBJECT, *P_CALL_OBJECT, **PP_CALL_OBJECT;
CS_STATUS CallListCreate();
CS_STATUS CallListDestroy();
CS_STATUS CallObjectCreate( PHQ931CALL phQ931Call, DWORD_PTR dwListenToken, DWORD_PTR dwUserToken, Q931_CALLBACK ConnectCallback, BOOL fIsCaller, CC_ADDR *pLocalAddr, // Local address on which channel is connected
CC_ADDR *pPeerConnectAddr, // Address to which channel is connected
CC_ADDR *pPeerCallAddr, // Address of opposite call end-point.
CC_ADDR *pSourceAddr, // Address of this call end-point.
CC_CONFERENCEID *pConferenceID, WORD wGoal, WORD wCallType, BOOL bCallerIsMC, char * pszDisplay, char * pszCalledPartyNumber, PCC_ALIASNAMES pCallerAliasList, PCC_ALIASNAMES pCalleeAliasList, PCC_ALIASNAMES pExtraAliasList, PCC_ALIASITEM pExtensionAliasItem, PCC_ENDPOINTTYPE pEndpointType, PCC_NONSTANDARDDATA pNonStandardData, WORD wCRV, LPGUID pCallIdentifier);
CS_STATUS CallObjectDestroy( P_CALL_OBJECT pCallObject);
CS_STATUS CallObjectLock( HQ931CALL hQ931Call, PP_CALL_OBJECT ppCallObject);
CS_STATUS CallObjectUnlock( P_CALL_OBJECT pCallObject);
CS_STATUS CallEntryUnlock( HQ931CALL hQ931Call);
CS_STATUS CallObjectValidate( HQ931CALL hQ931Call);
BOOL CallObjectFind( HQ931CALL *phQ931Call, WORD wCRV, PCC_ADDR pPeerAddr);
CS_STATUS CallObjectMarkForDelete( HQ931CALL hQ931Call);
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Timer Routines...
//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void CallBackT301(P_CALL_OBJECT pCallObject); void CallBackT303(P_CALL_OBJECT pCallObject); void CALLBACK Q931TimerProc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime); HRESULT Q931StartTimer(P_CALL_OBJECT pCallObject, DWORD wTimerId); HRESULT Q931StopTimer(P_CALL_OBJECT pCallObject, DWORD wTimerId); HRESULT Q931HangupPendingCalls(LPVOID context);
#ifdef __cplusplus
} #endif
#endif HCALL_H
|