Ignore:
Timestamp:
Nov 26, 2001, 3:54:03 PM (24 years ago)
Author:
sandervl
Message:

preliminary work on overlapped serial comm IO

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/hmcomm.h

    r5587 r7457  
    1 /* $Id: hmcomm.h,v 1.8 2001-04-26 13:22:44 sandervl Exp $ */
     1/* $Id: hmcomm.h,v 1.9 2001-11-26 14:54:00 sandervl Exp $ */
    22
    33/*
     
    1212#ifndef _HM_COMM_H_
    1313#define _HM_COMM_H_
     14
     15#define MAGIC_COM 0x12abcd34
     16
    1417typedef struct
    1518{
     
    1821}BAUDTABLEENTRY;
    1922
     23#define IOCTL_ASYNC          0x01
     24#define ASYNC_GETDCBINFO     0x73
     25#define ASYNC_SETDCBINFO     0x53
     26#define ASYNC_SETLINECTRL    0x42
     27#define ASYNC_GETCOMMEVENT   0x72
     28#define ASYNC_EXTGETBAUDRATE 0x63
     29#define ASYNC_EXTSETBAUDRATE 0x43
     30#define ASYNC_GETCOMMERROR   0x6D
     31#define ASYNC_GETCOMMSTATUS  0x65
     32#define ASYNC_GETINQUECOUNT  0x68
     33#define ASYNC_GETOUTQUECOUNT 0x69
     34#define ASYNC_GETMODEMINPUT  0x67
     35#define ASYNC_TRANSMITIMM    0x44
     36#define ASYNC_SETBREAKON     0x4B
     37#define ASYNC_SETBREAKOFF    0x45
     38#define ASYNC_SETMODEMCTRL   0x46
     39#define ASYNC_STARTTRANSMIT  0x48
     40#define ASYNC_STOPTRANSMIT   0x47
     41#define ASYNC_GETMODEMOUTPUT 0x66
     42
     43
     44#pragma pack(1)
     45typedef struct _DCBINFO
     46{
     47  USHORT   usWriteTimeout;         /*  Time period used for Write Timeout processing. */
     48  USHORT   usReadTimeout;          /*  Time period used for Read Timeout processing. */
     49  BYTE     fbCtlHndShake;          /*  HandShake Control flag. */
     50  BYTE     fbFlowReplace;          /*  Flow Control flag. */
     51  BYTE     fbTimeOut;              /*  Timeout flag. */
     52  BYTE     bErrorReplacementChar;  /*  Error Replacement Character. */
     53  BYTE     bBreakReplacementChar;  /*  Break Replacement Character. */
     54  BYTE     bXONChar;               /*  Character XON. */
     55  BYTE     bXOFFChar;              /*  Character XOFF. */
     56} DCBINFO;
     57typedef DCBINFO *PDCBINFO;
     58
     59
     60typedef struct _RXQUEUE
     61{
     62  USHORT   cch;  /*  Number of characters in the queue. */
     63  USHORT   cb;   /*  Size of receive/transmit queue. */
     64} RXQUEUE;
     65
     66typedef RXQUEUE *PRXQUEUE;
     67
     68
     69typedef struct _MODEMSTATUS
     70{
     71  BYTE   fbModemOn;   /*  Modem Control Signals ON Mask. */
     72  BYTE   fbModemOff;  /*  Modem Control Signals OFF Mask. */
     73} MODEMSTATUS;
     74
     75typedef MODEMSTATUS *PMODEMSTATUS;
     76
     77
     78#pragma pack()
     79
     80typedef struct _HMDEVCOMDATA
     81{
     82  ULONG ulMagic;
     83  // Win32 Device Control Block
     84  COMMCONFIG   CommCfg;
     85  COMMTIMEOUTS CommTOuts;
     86  DWORD dwInBuffer, dwOutBuffer;
     87  DWORD dwEventMask;
     88  //overlapped IO info
     89  HANDLE     hThread;
     90  HANDLE     hEventSem;
     91  OVERLAPPED overlapped;
     92  DWORD      dwLastError;
     93  BOOL       fClosing;
     94  BOOL       fCancelIo;
     95  //OS/2 Device Control Block
     96  DCBINFO dcbOS2;
     97} HMDEVCOMDATA, *PHMDEVCOMDATA;
     98
     99#pragma pack(1)
     100typedef struct
     101{
     102  ULONG ulCurrBaud;
     103  UCHAR ucCurrFrac;
     104  ULONG ulMinBaud;
     105  UCHAR ucMinFrac;
     106  ULONG ulMaxBaud;
     107  UCHAR ucMaxFrac;
     108} EXTBAUDGET, *PEXTBAUDGET;
     109
     110typedef struct
     111{
     112  ULONG ulBaud;
     113  UCHAR ucFrac;
     114} EXTBAUDSET, *PEXTBAUDSET;
     115#pragma pack()
     116
    20117class HMDeviceCommClass : public HMDeviceHandler
    21118{
     
    28125
    29126  /* this is the handler method for calls to CreateFile() */
    30   virtual DWORD  CreateFile (LPCSTR        lpFileName,
     127  virtual DWORD  CreateFile (HANDLE        hHandle,
     128                             LPCSTR        lpFileName,
    31129                             PHMHANDLEDATA pHMHandleData,
    32130                             PVOID         lpSecurityAttributes,
     
    112210                            LPOVERLAPPED_COMPLETION_ROUTINE  lpCompletionRoutine);
    113211
     212  virtual BOOL   CancelIo           (PHMHANDLEDATA pHMHandleData);
     213
     214                /* this is a handler method for calls to GetOverlappedResult */
     215  virtual BOOL GetOverlappedResult(PHMHANDLEDATA pHMHandleData,
     216                                   LPOVERLAPPED  arg2,
     217                                   LPDWORD       arg3,
     218                                   BOOL          arg4);
     219
    114220  private:
    115221  APIRET SetLine( PHMHANDLEDATA pHMHandleData,
Note: See TracChangeset for help on using the changeset viewer.