ClassTwoPointZero.h
上传用户:glass0516
上传日期:2010-01-11
资源大小:104k
文件大小:3k
源码类别:

传真(Fax)编程

开发平台:

Visual C++

  1. /*****************************************************************************
  2. * RelayFax Open Source Project
  3. * Copyright 1996-2004 Alt-N Technologies, Ltd.
  4. * All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted only as authorized by the RelayFax Open 
  8. * Source License.  A copy of this license is available in file LICENSE 
  9. * in the top-level directory of the distribution.
  10. *
  11. * RelayFax is a registered trademark of Alt-N Technologies, Ltd.
  12. *
  13. * Individual files and/or contributed packages may be copyright by
  14. * other parties and subject to additional restrictions.
  15. *****************************************************************************/
  16. ////////////////////////////////////////////////////////////////////////////////
  17. //
  18. // The purpose of CClassTwoPointZero is contain the protocol specifics of EIA
  19. // fax modem class 2.0
  20. //
  21. ////////////////////////////////////////////////////////////////////////////////
  22. #ifndef CLASSTWOPOINTZERO_H
  23. #define CLASSTWOPOINTZERO_H
  24. #include "Modem.h"
  25. class CClassTwoPointZero : public CModem  
  26. {
  27. public:
  28. CClassTwoPointZero();
  29. virtual ~CClassTwoPointZero();
  30. enum PhaseAStates { STATE_SET_PARAMS, // sending states
  31. STATE_SET_CSID,
  32.     STATE_DIALING };
  33. enum PhaseBStates { STATE_SENDING, // sending states
  34.     STATE_RECEIVING,
  35. STATE_RESET_PARAMS };
  36. enum PhaseEStates { STATE_WAIT_FOR_OK,
  37.                     STATE_WAIT_FOR_FK_RESP };
  38. virtual bool OnWaitTimeout( void );
  39. // methods overridden from CCommPort
  40. virtual void OnConnect(void);
  41. virtual bool OnDisconnect(void);
  42. virtual void OnWrite(void);
  43. virtual void OnReadLine(void);
  44. // methods overridden from CModem
  45. virtual void OnSendFaxMsg(MSG* pMsg);
  46. virtual void OnRecvFaxMsg(MSG* pMsg);
  47. virtual void OnAbortFaxMsg(void);
  48. virtual void OnHDLCFrame(void);
  49. virtual void OnPartialHDLCFrame(void);
  50. virtual void OnTimer( UINT nID );
  51. virtual void Abort( bool bUserCancelled );
  52. virtual void CheckTimeouts( DWORD dwInActive );
  53. void SetState( int nNewState, int nNewPhaseState = 0 );
  54. protected:
  55. void PhaseInit(void);
  56. void PhaseIdle(void);
  57. void PhaseRinging(void);
  58. void PhaseA(void);
  59. void PhaseB(void);
  60. void PhaseC(void);
  61. // void PhaseD(void);
  62. void PhaseE(void);
  63. void OnDIS(void);
  64. void OnCSI(void);
  65. // void OnCFR(void);
  66. // void OnMCF(void);
  67. // void OnRTP(void);
  68. // void OnRTN(void);
  69. // void OnFTT(void);
  70. void OnDCS(void);
  71. void OnTSI(void);
  72. void OnEOP(void);
  73. void OnEOM(void);
  74. void OnMPS(void);
  75. // void OnDCN(void);
  76. // void OnPPS(void);
  77. // void OnPPR(void);
  78. // void OnRNR(void);
  79. // void OnRR(void);
  80. // void OnCRP(void);
  81. void OnNSF(void);
  82. void OnNSS(void);
  83. // void OnCTC(void);
  84. // void OnCTR(void);
  85. // void OnEOR(void);
  86. // void OnERR(void);
  87. void OnFPTS(void);
  88. void OnFET(void);
  89. void OnFHNG(void);
  90. int m_nPhaseState;
  91. int m_nLoopCtr;
  92. int m_nPPRCtr;
  93. // Init sequence
  94. void SetLocalID(void);
  95. void SetRecv(void);
  96. void SetBitOrder(void);
  97. void SetFlowControl(void);
  98. void SetHDLCReporting(void);
  99. void SetFaxParams( bool bSending );
  100. int ParseFHSCode(void);
  101. void VerifyOptions(void);
  102. bool m_bGotEOP;
  103. bool m_bGotMPS;
  104. bool m_bGotEOM;
  105. bool m_bGotDIS;
  106. bool m_bGotDCS;
  107. bool m_bResendFaxParams;
  108. bool m_bFirstFrame;
  109. int m_nScanTime;
  110. WORD m_wMinLineChars;
  111. };
  112. #endif // CLASSTWOPOINTZERO_H