00001
00002
00003
00004
00005
00006
00007 #if ! H323_DISABLE_T38
00008
00009 #ifndef __T38_H
00010 #define __T38_H
00011
00012 #ifdef P_USE_PRAGMA
00013 #pragma interface
00014 #endif
00015
00016 #include <ptclib/asner.h>
00017
00018
00019
00020
00021
00022 class T38_Type_of_msg_t30_indicator;
00023 class T38_Type_of_msg_data;
00024
00025 class T38_Type_of_msg : public PASN_Choice
00026 {
00027 #ifndef PASN_LEANANDMEAN
00028 PCLASSINFO(T38_Type_of_msg, PASN_Choice);
00029 #endif
00030 public:
00031 T38_Type_of_msg(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00032
00033 enum Choices {
00034 e_t30_indicator,
00035 e_data
00036 };
00037
00038 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00039 operator T38_Type_of_msg_t30_indicator &() const;
00040 #else
00041 operator T38_Type_of_msg_t30_indicator &();
00042 operator const T38_Type_of_msg_t30_indicator &() const;
00043 #endif
00044 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00045 operator T38_Type_of_msg_data &() const;
00046 #else
00047 operator T38_Type_of_msg_data &();
00048 operator const T38_Type_of_msg_data &() const;
00049 #endif
00050
00051 PBoolean CreateObject();
00052 PObject * Clone() const;
00053 };
00054
00055
00056
00057
00058
00059
00060 class T38_Data_Field_subtype;
00061
00062 class T38_Data_Field : public PASN_Array
00063 {
00064 #ifndef PASN_LEANANDMEAN
00065 PCLASSINFO(T38_Data_Field, PASN_Array);
00066 #endif
00067 public:
00068 T38_Data_Field(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00069
00070 PASN_Object * CreateObject() const;
00071 T38_Data_Field_subtype & operator[](PINDEX i) const;
00072 PObject * Clone() const;
00073 };
00074
00075
00076
00077
00078
00079
00080 class T38_PreCorrigendum_Data_Field_subtype;
00081
00082 class T38_PreCorrigendum_Data_Field : public PASN_Array
00083 {
00084 #ifndef PASN_LEANANDMEAN
00085 PCLASSINFO(T38_PreCorrigendum_Data_Field, PASN_Array);
00086 #endif
00087 public:
00088 T38_PreCorrigendum_Data_Field(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00089
00090 PASN_Object * CreateObject() const;
00091 T38_PreCorrigendum_Data_Field_subtype & operator[](PINDEX i) const;
00092 PObject * Clone() const;
00093 };
00094
00095
00096
00097
00098
00099
00100 class T38_Type_of_msg_t30_indicator : public PASN_Enumeration
00101 {
00102 #ifndef PASN_LEANANDMEAN
00103 PCLASSINFO(T38_Type_of_msg_t30_indicator, PASN_Enumeration);
00104 #endif
00105 public:
00106 T38_Type_of_msg_t30_indicator(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00107
00108 enum Enumerations {
00109 e_no_signal,
00110 e_cng,
00111 e_ced,
00112 e_v21_preamble,
00113 e_v27_2400_training,
00114 e_v27_4800_training,
00115 e_v29_7200_training,
00116 e_v29_9600_training,
00117 e_v17_7200_short_training,
00118 e_v17_7200_long_training,
00119 e_v17_9600_short_training,
00120 e_v17_9600_long_training,
00121 e_v17_12000_short_training,
00122 e_v17_12000_long_training,
00123 e_v17_14400_short_training,
00124 e_v17_14400_long_training
00125 };
00126
00127 T38_Type_of_msg_t30_indicator & operator=(unsigned v);
00128 PObject * Clone() const;
00129 };
00130
00131
00132
00133
00134
00135
00136 class T38_Type_of_msg_data : public PASN_Enumeration
00137 {
00138 #ifndef PASN_LEANANDMEAN
00139 PCLASSINFO(T38_Type_of_msg_data, PASN_Enumeration);
00140 #endif
00141 public:
00142 T38_Type_of_msg_data(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00143
00144 enum Enumerations {
00145 e_v21,
00146 e_v27_2400,
00147 e_v27_4800,
00148 e_v29_7200,
00149 e_v29_9600,
00150 e_v17_7200,
00151 e_v17_9600,
00152 e_v17_12000,
00153 e_v17_14400
00154 };
00155
00156 T38_Type_of_msg_data & operator=(unsigned v);
00157 PObject * Clone() const;
00158 };
00159
00160
00161
00162
00163
00164
00165 class T38_UDPTLPacket_error_recovery_secondary_ifp_packets;
00166 class T38_UDPTLPacket_error_recovery_fec_info;
00167
00168 class T38_UDPTLPacket_error_recovery : public PASN_Choice
00169 {
00170 #ifndef PASN_LEANANDMEAN
00171 PCLASSINFO(T38_UDPTLPacket_error_recovery, PASN_Choice);
00172 #endif
00173 public:
00174 T38_UDPTLPacket_error_recovery(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00175
00176 enum Choices {
00177 e_secondary_ifp_packets,
00178 e_fec_info
00179 };
00180
00181 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00182 operator T38_UDPTLPacket_error_recovery_secondary_ifp_packets &() const;
00183 #else
00184 operator T38_UDPTLPacket_error_recovery_secondary_ifp_packets &();
00185 operator const T38_UDPTLPacket_error_recovery_secondary_ifp_packets &() const;
00186 #endif
00187 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00188 operator T38_UDPTLPacket_error_recovery_fec_info &() const;
00189 #else
00190 operator T38_UDPTLPacket_error_recovery_fec_info &();
00191 operator const T38_UDPTLPacket_error_recovery_fec_info &() const;
00192 #endif
00193
00194 PBoolean CreateObject();
00195 PObject * Clone() const;
00196 };
00197
00198
00199
00200
00201
00202
00203 class T38_Data_Field_subtype_field_type : public PASN_Enumeration
00204 {
00205 #ifndef PASN_LEANANDMEAN
00206 PCLASSINFO(T38_Data_Field_subtype_field_type, PASN_Enumeration);
00207 #endif
00208 public:
00209 T38_Data_Field_subtype_field_type(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00210
00211 enum Enumerations {
00212 e_hdlc_data,
00213 e_hdlc_sig_end,
00214 e_hdlc_fcs_OK,
00215 e_hdlc_fcs_BAD,
00216 e_hdlc_fcs_OK_sig_end,
00217 e_hdlc_fcs_BAD_sig_end,
00218 e_t4_non_ecm_data,
00219 e_t4_non_ecm_sig_end
00220 };
00221
00222 T38_Data_Field_subtype_field_type & operator=(unsigned v);
00223 PObject * Clone() const;
00224 };
00225
00226
00227
00228
00229
00230
00231 class T38_PreCorrigendum_Data_Field_subtype_field_type : public PASN_Enumeration
00232 {
00233 #ifndef PASN_LEANANDMEAN
00234 PCLASSINFO(T38_PreCorrigendum_Data_Field_subtype_field_type, PASN_Enumeration);
00235 #endif
00236 public:
00237 T38_PreCorrigendum_Data_Field_subtype_field_type(unsigned tag = UniversalEnumeration, TagClass tagClass = UniversalTagClass);
00238
00239 enum Enumerations {
00240 e_hdlc_data,
00241 e_hdlc_sig_end,
00242 e_hdlc_fcs_OK,
00243 e_hdlc_fcs_BAD,
00244 e_hdlc_fcs_OK_sig_end,
00245 e_hdlc_fcs_BAD_sig_end,
00246 e_t4_non_ecm_data,
00247 e_t4_non_ecm_sig_end
00248 };
00249
00250 T38_PreCorrigendum_Data_Field_subtype_field_type & operator=(unsigned v);
00251 PObject * Clone() const;
00252 };
00253
00254
00255
00256
00257
00258
00259 class T38_UDPTLPacket_error_recovery_secondary_ifp_packets_subtype;
00260
00261 class T38_UDPTLPacket_error_recovery_secondary_ifp_packets : public PASN_Array
00262 {
00263 #ifndef PASN_LEANANDMEAN
00264 PCLASSINFO(T38_UDPTLPacket_error_recovery_secondary_ifp_packets, PASN_Array);
00265 #endif
00266 public:
00267 T38_UDPTLPacket_error_recovery_secondary_ifp_packets(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00268
00269 PASN_Object * CreateObject() const;
00270 T38_UDPTLPacket_error_recovery_secondary_ifp_packets_subtype & operator[](PINDEX i) const;
00271 PObject * Clone() const;
00272 };
00273
00274
00275
00276
00277
00278
00279 class T38_ArrayOf_PASN_OctetString : public PASN_Array
00280 {
00281 #ifndef PASN_LEANANDMEAN
00282 PCLASSINFO(T38_ArrayOf_PASN_OctetString, PASN_Array);
00283 #endif
00284 public:
00285 T38_ArrayOf_PASN_OctetString(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00286
00287 PASN_Object * CreateObject() const;
00288 PASN_OctetString & operator[](PINDEX i) const;
00289 PObject * Clone() const;
00290 };
00291
00292
00293
00294
00295
00296
00297 class T38_IFPPacket : public PASN_Sequence
00298 {
00299 #ifndef PASN_LEANANDMEAN
00300 PCLASSINFO(T38_IFPPacket, PASN_Sequence);
00301 #endif
00302 public:
00303 T38_IFPPacket(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00304
00305 enum OptionalFields {
00306 e_data_field
00307 };
00308
00309 T38_Type_of_msg m_type_of_msg;
00310 T38_Data_Field m_data_field;
00311
00312 PINDEX GetDataLength() const;
00313 PBoolean Decode(PASN_Stream & strm);
00314 void Encode(PASN_Stream & strm) const;
00315 #ifndef PASN_NOPRINTON
00316 void PrintOn(ostream & strm) const;
00317 #endif
00318 Comparison Compare(const PObject & obj) const;
00319 PObject * Clone() const;
00320 };
00321
00322
00323
00324
00325
00326
00327 class T38_PreCorrigendum_IFPPacket : public PASN_Sequence
00328 {
00329 #ifndef PASN_LEANANDMEAN
00330 PCLASSINFO(T38_PreCorrigendum_IFPPacket, PASN_Sequence);
00331 #endif
00332 public:
00333 T38_PreCorrigendum_IFPPacket(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00334
00335 enum OptionalFields {
00336 e_data_field
00337 };
00338
00339 T38_Type_of_msg m_type_of_msg;
00340 T38_PreCorrigendum_Data_Field m_data_field;
00341
00342 PINDEX GetDataLength() const;
00343 PBoolean Decode(PASN_Stream & strm);
00344 void Encode(PASN_Stream & strm) const;
00345 #ifndef PASN_NOPRINTON
00346 void PrintOn(ostream & strm) const;
00347 #endif
00348 Comparison Compare(const PObject & obj) const;
00349 PObject * Clone() const;
00350 };
00351
00352
00353
00354
00355
00356
00357 class T38_Data_Field_subtype : public PASN_Sequence
00358 {
00359 #ifndef PASN_LEANANDMEAN
00360 PCLASSINFO(T38_Data_Field_subtype, PASN_Sequence);
00361 #endif
00362 public:
00363 T38_Data_Field_subtype(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00364
00365 enum OptionalFields {
00366 e_field_data
00367 };
00368
00369 T38_Data_Field_subtype_field_type m_field_type;
00370 PASN_OctetString m_field_data;
00371
00372 PINDEX GetDataLength() const;
00373 PBoolean Decode(PASN_Stream & strm);
00374 void Encode(PASN_Stream & strm) const;
00375 #ifndef PASN_NOPRINTON
00376 void PrintOn(ostream & strm) const;
00377 #endif
00378 Comparison Compare(const PObject & obj) const;
00379 PObject * Clone() const;
00380 };
00381
00382
00383
00384
00385
00386
00387 class T38_PreCorrigendum_Data_Field_subtype : public PASN_Sequence
00388 {
00389 #ifndef PASN_LEANANDMEAN
00390 PCLASSINFO(T38_PreCorrigendum_Data_Field_subtype, PASN_Sequence);
00391 #endif
00392 public:
00393 T38_PreCorrigendum_Data_Field_subtype(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00394
00395 enum OptionalFields {
00396 e_field_data
00397 };
00398
00399 T38_PreCorrigendum_Data_Field_subtype_field_type m_field_type;
00400 PASN_OctetString m_field_data;
00401
00402 PINDEX GetDataLength() const;
00403 PBoolean Decode(PASN_Stream & strm);
00404 void Encode(PASN_Stream & strm) const;
00405 #ifndef PASN_NOPRINTON
00406 void PrintOn(ostream & strm) const;
00407 #endif
00408 Comparison Compare(const PObject & obj) const;
00409 PObject * Clone() const;
00410 };
00411
00412
00413
00414
00415
00416
00417 class T38_UDPTLPacket_primary_ifp_packet : public PASN_OctetString
00418 {
00419 #ifndef PASN_LEANANDMEAN
00420 PCLASSINFO(T38_UDPTLPacket_primary_ifp_packet, PASN_OctetString);
00421 #endif
00422 public:
00423 T38_UDPTLPacket_primary_ifp_packet(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00424
00425 PBoolean DecodeSubType(T38_IFPPacket & obj) { return PASN_OctetString::DecodeSubType(obj); }
00426 void EncodeSubType(const T38_IFPPacket & obj) { PASN_OctetString::EncodeSubType(obj); }
00427
00428 PObject * Clone() const;
00429 };
00430
00431
00432
00433
00434
00435
00436 class T38_UDPTLPacket_error_recovery_fec_info : public PASN_Sequence
00437 {
00438 #ifndef PASN_LEANANDMEAN
00439 PCLASSINFO(T38_UDPTLPacket_error_recovery_fec_info, PASN_Sequence);
00440 #endif
00441 public:
00442 T38_UDPTLPacket_error_recovery_fec_info(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00443
00444 PASN_Integer m_fec_npackets;
00445 T38_ArrayOf_PASN_OctetString m_fec_data;
00446
00447 PINDEX GetDataLength() const;
00448 PBoolean Decode(PASN_Stream & strm);
00449 void Encode(PASN_Stream & strm) const;
00450 #ifndef PASN_NOPRINTON
00451 void PrintOn(ostream & strm) const;
00452 #endif
00453 Comparison Compare(const PObject & obj) const;
00454 PObject * Clone() const;
00455 };
00456
00457
00458
00459
00460
00461
00462 class T38_UDPTLPacket_error_recovery_secondary_ifp_packets_subtype : public PASN_OctetString
00463 {
00464 #ifndef PASN_LEANANDMEAN
00465 PCLASSINFO(T38_UDPTLPacket_error_recovery_secondary_ifp_packets_subtype, PASN_OctetString);
00466 #endif
00467 public:
00468 T38_UDPTLPacket_error_recovery_secondary_ifp_packets_subtype(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00469
00470 PBoolean DecodeSubType(T38_IFPPacket & obj) { return PASN_OctetString::DecodeSubType(obj); }
00471 void EncodeSubType(const T38_IFPPacket & obj) { PASN_OctetString::EncodeSubType(obj); }
00472
00473 PObject * Clone() const;
00474 };
00475
00476
00477
00478
00479
00480
00481 class T38_UDPTLPacket : public PASN_Sequence
00482 {
00483 #ifndef PASN_LEANANDMEAN
00484 PCLASSINFO(T38_UDPTLPacket, PASN_Sequence);
00485 #endif
00486 public:
00487 T38_UDPTLPacket(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00488
00489 PASN_Integer m_seq_number;
00490 T38_UDPTLPacket_primary_ifp_packet m_primary_ifp_packet;
00491 T38_UDPTLPacket_error_recovery m_error_recovery;
00492
00493 PINDEX GetDataLength() const;
00494 PBoolean Decode(PASN_Stream & strm);
00495 void Encode(PASN_Stream & strm) const;
00496 #ifndef PASN_NOPRINTON
00497 void PrintOn(ostream & strm) const;
00498 #endif
00499 Comparison Compare(const PObject & obj) const;
00500 PObject * Clone() const;
00501 };
00502
00503
00504 #endif // __T38_H
00505
00506 #endif // if ! H323_DISABLE_T38
00507
00508
00509