/*++ ***************************************************************************** * * * 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. * * * ***************************************************************************** Module Name: digiser.h Abstract: This file contains the recommended extensions to the Microsoft Windows NT Serial Interface (NTDDSER.H) needed to support hardware framing. Revision History: $Log: digiser.h $ Revision 1.3 1995/09/15 14:55:24 dirkh Remove SERIAL_ERROR_CRC (use STATUS_CRC_ERROR instead). Comments are more explicit. Revision 1.2 1995/06/12 15:23:44 dirkh Merge two structures (SERIAL_GET_FRAMING and SERIAL_SET_FRAMING) into one (SERIAL_FRAMING_STATE). Document relationship with IOCTLs. Revision 1.1 1995/05/31 15:05:19 mikez Initial revision --*/ // // NtDeviceIoControlFile IoControlCode values for this device // #ifndef Microsoft_Adopts_These_Changes #define IOCTL_SERIAL_QUERY_FRAMING CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x801,METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_SERIAL_SET_FRAMING CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x802,METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_SERIAL_GET_FRAMING CTL_CODE(FILE_DEVICE_SERIAL_PORT,0x803,METHOD_BUFFERED,FILE_ANY_ACCESS) #else #define IOCTL_SERIAL_QUERY_FRAMING CTL_CODE(FILE_DEVICE_SERIAL_PORT,35,METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_SERIAL_SET_FRAMING CTL_CODE(FILE_DEVICE_SERIAL_PORT,36,METHOD_BUFFERED,FILE_ANY_ACCESS) #define IOCTL_SERIAL_GET_FRAMING CTL_CODE(FILE_DEVICE_SERIAL_PORT,37,METHOD_BUFFERED,FILE_ANY_ACCESS) #endif // // Provider capabilities flags (IOCTL_SERIAL_GET_PROPERTIES) // #define SERIAL_PCF_FRAMING ((ULONG)0x0400) // // Defines the bitmask that the driver can use to notify // state changes via IOCTL_SERIAL_SET_WAIT_MASK and IOCTL_SERIAL_WAIT_ON_MASK. // // Note that these events will *not* be delivered if there is an outstanding read IRP. // The status of the read IRP serves as notification of the receipt of a (good or bad) frame. // Repeat: These events will be detected and delivered only if the read queue is empty. // #define SERIAL_EV_RXFRAME 0x2000 // A valid frame was received #define SERIAL_EV_BADFRAME 0x4000 // An errored frame was received. // // Read IRPs are always completed when a frame is received. // Following are the values that can be returned by the // driver in IoStatus.Status of the read IRP. // // STATUS_SUCCESS (good frame, data length is IoStatus.Information) // STATUS_CRC_ERROR // STATUS_DATA_ERROR (abort frame) // STATUS_DATA_OVERRUN (buffer overrun -- note that buffer must have space for CRC bytes, although CRC bytes will not be indicated on STATUS_SUCCESS) // // // This structure is used to query the framing options // supported by hardware (IOCTL_SERIAL_QUERY_FRAMING). // typedef struct _SERIAL_FRAMING_INFO { OUT ULONG FramingBits; // Standard NDIS_WAN_INFO field OUT ULONG HdrCompressionBits; // Standard NDIS_WAN_INFO field OUT ULONG DataCompressionBits; // To be decided OUT ULONG DataEncryptionBits; // To be decided } SERIAL_FRAMING_INFO, *PSERIAL_FRAMING_INFO; // // This structure is used to set and retrieve // the current hardware framing settings // (IOCTL_SERIAL_SET_FRAMING, IOCTL_SERIAL_GET_FRAMING). // // Valid values for [Send,Recv]FramingBits include (for example) // PPP_FRAMING, PPP_ACCM_SUPPORTED, and ISO3309_FRAMING. // typedef struct _SERIAL_FRAMING_STATE { IN OUT ULONG BitMask; // 0: 16 bit CRC // 1: 32 bit CRC IN OUT ULONG SendFramingBits; // Standard NDIS_WAN_SET_LINK_INFO field IN OUT ULONG RecvFramingBits; // Standard NDIS_WAN_SET_LINK_INFO field IN OUT ULONG SendCompressionBits; // Standard NDIS_WAN_SET_LINK_INFO field IN OUT ULONG RecvCompressionBits; // Standard NDIS_WAN_SET_LINK_INFO field IN OUT ULONG SendEncryptionBits; // To be decided IN OUT ULONG RecvEncryptionBits; // To be decided IN OUT ULONG SendACCM; // Standard NDIS_WAN_SET_LINK_INFO field IN OUT ULONG RecvACCM; // Standard NDIS_WAN_SET_LINK_INFO field } SERIAL_FRAMING_STATE, *PSERIAL_FRAMING_STATE;