
/*M*                     
//                    INTEL CORPORATION PROPRIETARY INFORMATION
//      This software is supplied under the terms of a license agreement or
//      nondisclosure agreement with Intel Corporation and may not be copied
//      or disclosed except in accordance with the terms of that agreement.
//            Copyright (c) 1995-2000 Intel Corporation.  All Rights Reserved.
//
*M*/
/*
 * $Log:   \\cospublic004\shareddata\ISC\ISC2x\COMMON\SRC\imb\imb_asyn.h.v  $
 * 
 *    Rev 1.1   08 Dec 1998 10:55:44   jpaiasno
 * Added code to support async.
 * DPC events from the EMP console.
 * 
 *    Rev 1.3   24 Mar 1998 14:16:56   fkhanx
 * Added copyright Header
*/

#ifndef IMB_ASYN_H__
#define IMB_ASYN_H__
//
// Async message queue structures
//
typedef DWORD	OsInfo;	// place holder for compiling, until really defined (in OS modules)

#define MAX_SMS_MESSAGE_SIZE	34
#define IMB_ASYNC_QUEUE_SIZE	10

typedef struct {
	BYTE	length;
	BYTE	data[ MAX_SMS_MESSAGE_SIZE ];
} ImbAsyncEntry;
//
// This structure holds state information about the queue
//
typedef struct {
	ImbAsyncSeq		startSeqNo;		// sequence number of oldest entry
	DWORD			startOffset;	// entry in the queue which the oldest valid entry
	DWORD			count;			// valid number of entries
	DWORD			queueSize;		// in entries
	ImbAsyncEntry *	queue;			// pointer to queue data
	ImbAsyncOsSem	syncSem;		// synchronization variable for the queue
	ImbAsyncOsEvent	waitEvent;		// synchronization variable for those waiting for msgs
} ImbAsyncQueueInfo;

#endif // IMB_ASYN_H__
