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
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079 #define _PMODEM
00080
00081 #ifdef P_USE_PRAGMA
00082 #pragma interface
00083 #endif
00084
00085 #include <ptlib.h>
00086
00087 #ifndef _PSERIALCHANNEL
00088 #include <ptlib/serchan.h>
00089 #endif
00090
00091
00110 class PModem : public PSerialChannel
00111 {
00112 PCLASSINFO(PModem, PSerialChannel)
00113
00114 public:
00121 PModem();
00122 PModem(
00123 const PString & port,
00124 DWORD speed = 0,
00125 BYTE data = 0,
00126 Parity parity = DefaultParity,
00127 BYTE stop = 0,
00128 FlowControl inputFlow = DefaultFlowControl,
00129 FlowControl outputFlow = DefaultFlowControl
00130 );
00131
00136 PModem(
00137 PConfig & cfg
00138 );
00139
00140
00141
00142 virtual BOOL Close();
00143
00144
00145
00146
00155 virtual BOOL Open(
00156 const PString & port,
00157 DWORD speed = 0,
00158 BYTE data = 0,
00159 Parity parity = DefaultParity,
00160 BYTE stop = 0,
00161 FlowControl inputFlow = DefaultFlowControl,
00162 FlowControl outputFlow = DefaultFlowControl
00163 );
00164
00172 virtual BOOL Open(
00173 PConfig & cfg
00174 );
00175
00176 virtual void SaveSettings(
00177 PConfig & cfg
00178 );
00179
00180
00181
00182
00190 void SetInitString(
00191 const PString & str
00192 );
00193
00202 PString GetInitString() const;
00203
00209 BOOL CanInitialise() const;
00210
00220 BOOL Initialise();
00221
00229 void SetDeinitString(
00230 const PString & str
00231 );
00232
00241 PString GetDeinitString() const;
00242
00248 BOOL CanDeinitialise() const;
00249
00259 BOOL Deinitialise();
00260
00268 void SetPreDialString(
00269 const PString & str
00270 );
00271
00280 PString GetPreDialString() const;
00281
00290 void SetPostDialString(
00291 const PString & str
00292 );
00293
00302 PString GetPostDialString() const;
00303
00313 void SetBusyString(
00314 const PString & str
00315 );
00316
00325 PString GetBusyString() const;
00326
00336 void SetNoCarrierString(
00337 const PString & str
00338 );
00339
00348 PString GetNoCarrierString() const;
00349
00359 void SetConnectString(
00360 const PString & str
00361 );
00362
00371 PString GetConnectString() const;
00372
00378 BOOL CanDial() const;
00379
00393 BOOL Dial(const PString & number);
00394
00402 void SetHangUpString(
00403 const PString & str
00404 );
00405
00414 PString GetHangUpString() const;
00415
00421 BOOL CanHangUp() const;
00422
00432 BOOL HangUp();
00433
00439 BOOL CanSendUser() const;
00440
00449 BOOL SendUser(
00450 const PString & str
00451 );
00452
00453 void Abort();
00454
00455
00464 BOOL CanRead() const;
00465
00466 enum Status {
00467 Unopened,
00468 Uninitialised,
00469 Initialising,
00470 Initialised,
00471 InitialiseFailed,
00472 Dialling,
00473 DialFailed,
00474 AwaitingResponse,
00475 LineBusy,
00476 NoCarrier,
00477 Connected,
00478 HangingUp,
00479 HangUpFailed,
00480 Deinitialising,
00481 DeinitialiseFailed,
00482 SendingUserCommand,
00483 NumStatuses
00484 };
00485
00486
00492 Status GetStatus() const;
00493
00494
00495 protected:
00496
00497 PString initCmd, deinitCmd, preDialCmd, postDialCmd,
00498 busyReply, noCarrierReply, connectReply, hangUpCmd;
00499
00500
00501 Status status;
00502
00503 };
00504
00505
00506