/*++
*******************************************************************************
* Copyright (c) 1999 Digi International Inc., All Rights Reserved					*
* 																										*
* This software contains proprietary and confidential information of Digi		*
* International Inc.  By accepting transfer of this copy, Recipient agrees		*
* to retain this software in confidence, to prevent disclosure to others,		*
* and to make no use of this software other than that for which it was			*
* delivered.  This is an unpublished copyrighted work of Digi International	*
* Inc.  Except as permitted by federal law, 17 USC 117, copying is strictly	*
* prohibited.																						*
* 																										*
* Restricted Rights Legend																		*
*																										*
* Use, duplication, or disclosure by the Government is subject to					*
* restrictions set forth in sub-paragraph (c)(1)(ii) of The Rights in			*
* Technical Data and Computer Software clause at DFARS 252.227-7031 or			*
* subparagraphs (c)(1) and (2) of the Commercial Computer Software -				*
* Restricted Rights at 48 CFR 52.227-19, as applicable.								*
*																										*
* Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343				*
*																										*
*******************************************************************************

Module Name:

   pnpmodem.c

Abstract:

	This module provides for "plug and play modem" emulation.  Given the correct
	enumeration sequence, we spit out a PNP identification string.

	The serial modem PNP enumeration sequence is defined as follows:

		- Idle state (DTR and RTS cleared, no tx or rx data)
		- DTR Asserted
		- Delay 150-250 mS
		- RTS Asserted

	Upon receipt of the assertion of RTS, we have identified the PNP enumeration
	sequence and should then send up our PNP modem ID.

	Any changes other than specified above (e.g. data received, etc.) invalidate the
	sequence and force us to wait again for Idle state.

Author:

   Michael Zarns

--*/
#ifndef PNPMODEM_H
#define PNPMODEM_H


// Init and cleanup routines.  

HANDLE PnpModemInit();
VOID PnpModemCleanup( HANDLE hEnum );

// Inputs to the PnpModem state machine
VOID PnpModemDtrHi( IN HANDLE hEnum );
VOID PnpModemDtrLo( IN HANDLE hEnum );
VOID PnpModemRtsHi( IN HANDLE hEnum );
VOID PnpModemRtsLo( IN HANDLE hEnum );
VOID PnpModemOther( IN HANDLE hEnum );

// Query to see whether we've successfully hit the enumerated state!
BOOLEAN PnpModemIsEnumerated( HANDLE hEnum );

// If enumerated, this returns the modem ID
NTSTATUS PnpModemGetId( IN OUT PCHAR pBuf, IN OUT PULONG pcbMax );

#endif
