#if !defined(AFX_DXBDEBUGQUEUE_H__F7C0B73F_B8F6_11D1_ADDB_00805FB8FEA7__INCLUDED_)
#define AFX_DXBDEBUGQUEUE_H__F7C0B73F_B8F6_11D1_ADDB_00805FB8FEA7__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
// DxbDebugQueue.h : header file
//

#include "DxbShim.h"

/*************************************************************************
 * Defines to communicate with the MIPS debugger.
 *************************************************************************/
#pragma message("NOTE: NOTE: The defines CQ_CMD and CQ_RESP are hardcoded as copied from epc.h")
#define CQ_CMD		0xf40	/* Command Buffer origin */
#define CQ_RESP	0xf50	/* Response Buffer origin */
#pragma message("NOTE: NOTE: The struct CQ_T is hardcoded as copied from epc.h")
typedef struct cq_t
{
    DWORD	cq_base ;		/* Host relative buffer origin */
    DWORD	cq_in ;			/* Buffer relative in pointer */
    DWORD	cq_out ;			/* Buffer relative out pointer */
    DWORD	cq_size ;		/* Buffer size (NOT power-of-2) */
}CQ_T, * PCQ_T;

class CDxbDebugQueue : public CObject
{
	DECLARE_DYNAMIC( CDxbDebugQueue )
// Construction
public:
	CDxbDebugQueue();

// Attributes
public:

// Operations
public:
	BOOL	Init(CString const DriverName);
	int	WriteData(void * const pData, DWORD const cbData);
	int	ReadData(void * const pData, DWORD const cbData);
	void	NotifyBoard(void);

// Implementation
public:
	virtual ~CDxbDebugQueue();

private:
	HANDLE	m_hDriver;
	BOOL		m_fInitialized;
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_DXBDEBUGQUEUE_H__F7C0B73F_B8F6_11D1_ADDB_00805FB8FEA7__INCLUDED_)
