00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef PTLIB_MODEM_H
00032 #define PTLIB_MODEM_H
00033
00034 #ifdef P_USE_PRAGMA
00035 #pragma interface
00036 #endif
00037
00038 #include <ptlib.h>
00039
00040 #include <ptlib/serchan.h>
00041
00042
00061 class PModem : public PSerialChannel
00062 {
00063 PCLASSINFO(PModem, PSerialChannel)
00064
00065 public:
00072 PModem();
00073 PModem(
00074 const PString & port,
00075 DWORD speed = 0,
00076 BYTE data = 0,
00077 Parity parity = DefaultParity,
00078 BYTE stop = 0,
00079 FlowControl inputFlow = DefaultFlowControl,
00080 FlowControl outputFlow = DefaultFlowControl
00081 );
00082
00083 #if P_CONFIG_FILE
00084
00088 PModem(
00089 PConfig & cfg
00090 );
00091 #endif // P_CONFIG_FILE
00092
00093
00094
00095 virtual PBoolean Close();
00096
00097
00098
00099
00108 virtual PBoolean Open(
00109 const PString & port,
00110 DWORD speed = 0,
00111 BYTE data = 0,
00112 Parity parity = DefaultParity,
00113 BYTE stop = 0,
00114 FlowControl inputFlow = DefaultFlowControl,
00115 FlowControl outputFlow = DefaultFlowControl
00116 );
00117
00118 #if P_CONFIG_FILE
00119
00126 virtual PBoolean Open(
00127 PConfig & cfg
00128 );
00129
00130 virtual void SaveSettings(
00131 PConfig & cfg
00132 );
00133
00134 #endif // P_CONFIG_FILE
00135
00136
00137
00145 void SetInitString(
00146 const PString & str
00147 );
00148
00157 PString GetInitString() const;
00158
00164 PBoolean CanInitialise() const;
00165
00175 PBoolean Initialise();
00176
00184 void SetDeinitString(
00185 const PString & str
00186 );
00187
00196 PString GetDeinitString() const;
00197
00203 PBoolean CanDeinitialise() const;
00204
00214 PBoolean Deinitialise();
00215
00223 void SetPreDialString(
00224 const PString & str
00225 );
00226
00235 PString GetPreDialString() const;
00236
00245 void SetPostDialString(
00246 const PString & str
00247 );
00248
00257 PString GetPostDialString() const;
00258
00268 void SetBusyString(
00269 const PString & str
00270 );
00271
00280 PString GetBusyString() const;
00281
00291 void SetNoCarrierString(
00292 const PString & str
00293 );
00294
00303 PString GetNoCarrierString() const;
00304
00314 void SetConnectString(
00315 const PString & str
00316 );
00317
00326 PString GetConnectString() const;
00327
00333 PBoolean CanDial() const;
00334
00348 PBoolean Dial(const PString & number);
00349
00357 void SetHangUpString(
00358 const PString & str
00359 );
00360
00369 PString GetHangUpString() const;
00370
00376 PBoolean CanHangUp() const;
00377
00387 PBoolean HangUp();
00388
00394 PBoolean CanSendUser() const;
00395
00404 PBoolean SendUser(
00405 const PString & str
00406 );
00407
00408 void Abort();
00409
00410
00419 PBoolean CanRead() const;
00420
00421 enum Status {
00422 Unopened,
00423 Uninitialised,
00424 Initialising,
00425 Initialised,
00426 InitialiseFailed,
00427 Dialling,
00428 DialFailed,
00429 AwaitingResponse,
00430 LineBusy,
00431 NoCarrier,
00432 Connected,
00433 HangingUp,
00434 HangUpFailed,
00435 Deinitialising,
00436 DeinitialiseFailed,
00437 SendingUserCommand,
00438 NumStatuses
00439 };
00440
00441
00447 Status GetStatus() const;
00448
00449
00450 protected:
00451
00452 PString initCmd, deinitCmd, preDialCmd, postDialCmd,
00453 busyReply, noCarrierReply, connectReply, hangUpCmd;
00454
00455
00456 Status status;
00457
00458 };
00459
00460
00461 #endif // PTLIB_MODEM_H
00462
00463
00464