OPAL  Version 3.18.8
frame.h
Go to the documentation of this file.
1 /*
2  *
3  * Inter Asterisk Exchange 2
4  *
5  * Open Phone Abstraction Library (OPAL)
6  *
7  * Define the classes that carry information over the ethernet.
8  *
9  * Copyright (c) 2005 Indranet Technologies Ltd.
10  *
11  * The contents of this file are subject to the Mozilla Public License
12  * Version 1.0 (the "License"); you may not use this file except in
13  * compliance with the License. You may obtain a copy of the License at
14  * http://www.mozilla.org/MPL/
15  *
16  * Software distributed under the License is distributed on an "AS IS"
17  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
18  * the License for the specific language governing rights and limitations
19  * under the License.
20  *
21  * The Original Code is Open Phone Abstraction Library.
22  *
23  * The Initial Developer of the Original Code is Indranet Technologies Ltd.
24  *
25  * The author of this code is Derek J Smithies
26  */
27 
28 #ifndef OPAL_IAX2_FRAME_H
29 #define OPAL_IAX2_FRAME_H
30 
31 #ifndef _PTLIB_H
32 #include <ptlib.h>
33 #endif
34 
35 #include <opal_config.h>
36 
37 #if OPAL_IAX2
38 
39 #include <iax2/ies.h>
40 #include <iax2/remote.h>
41 
42 #include <ptlib/sockets.h>
43 
44 #ifdef P_USE_PRAGMA
45 #pragma interface
46 #endif
47 
48 class IAX2Frame;
49 class IAX2FrameList;
50 class IAX2FullFrame;
51 class IAX2FullFrameCng;
52 class IAX2FullFrameDtmf;
53 class IAX2FullFrameHtml;
54 class IAX2FullFrameImage;
55 class IAX2FullFrameNull;
58 class IAX2FullFrameText;
59 class IAX2FullFrameVideo;
60 class IAX2FullFrameVoice;
61 class IAX2EndPoint;
62 class IAX2Processor;
63 class IAX2CallProcessor;
64 class IAX2IeList;
65 class IAX2MiniFrame;
66 class IAX2Transmitter;
67 
68 
69 
71 class IAX2Frame : public PObject
72 {
73  PCLASSINFO(IAX2Frame, PObject);
74  public:
76  IAX2Frame(IAX2EndPoint &_endpoint);
77 
79  virtual ~IAX2Frame();
80 
83  PBoolean ReadNetworkPacket(PUDPSocket &sock);
84 
86  virtual PBoolean ProcessNetworkPacket();
87 
89  virtual PBoolean IsFullFrame() { return isFullFrame; }
90 
92  PBoolean IsVideo() const { return isVideo; }
93 
95  PBoolean IsAudio() const { return isAudio; }
96 
100  virtual BYTE *GetMediaDataPointer() { return data.GetPointer(); }
101 
105  virtual PINDEX GetMediaDataSize() { return DataSize();}
106 
108  PINDEX DataSize() { return data.GetSize(); }
109 
112 
114  const BYTE * GetDataPointer() { return data + currentReadIndex; }
115 
123 
126 
128  PINDEX GetUnReadBytes() { return data.GetSize() - currentReadIndex; }
129 
131  virtual PBoolean WriteHeader() { return false; }
132 
135  virtual PBoolean TransmitPacket(PUDPSocket &sock);
136 
138  virtual void PrintOn(ostream & strm) const;
139 
141  static DWORD CalcTimeStamp(const PTimeInterval & callStartTick);
142 
146  virtual void BuildTimeStamp(const PTimeInterval & callStartTick);
147 
150 
153  PString IdString() const;
154 
156  DWORD GetTimeStamp() { return timeStamp; }
157 
159  void SetTimeStamp(DWORD newValue);
160 
162  virtual PBoolean CallMustBeActive() { return true; }
163 
166  undefType = 0,
167  dtmfType = 1,
168  voiceType = 2,
169  videoType = 3,
171  nullType = 5,
173  textType = 7,
174  imageType = 8,
175  htmlType = 9,
176  cngType = 10,
178  };
179 
183 
187  virtual void InitialiseHeader(IAX2Processor * /*processor*/) { }
188 
191  PBoolean CanRetransmitFrame() const {return canRetransmitFrame; }
192 
195  PString GetConnectionToken() const { return connectionToken; }
196 
199  void SetConnectionToken(PString newToken) { connectionToken = newToken; }
200 
203  void BuildConnectionToken();
204 
207  PBoolean EncryptContents(IAX2Encryption &encData);
208 
210  virtual PINDEX GetEncryptionOffset();
211 
212  protected:
213 
217  PBoolean DecryptContents(IAX2Encryption & encryption);
218 
222 
226 
229  PBoolean Read1Byte(BYTE & res);
230 
233  PBoolean Read2Bytes(PINDEX & res);
234 
237  PBoolean Read2Bytes(WORD & res);
238 
241  PBoolean Read4Bytes(DWORD & res);
242 
245  void Write1Byte(BYTE newVal);
246 
249  void Write1Byte(PINDEX newVal);
250 
253  void Write2Bytes(PINDEX newVal);
254 
257  void Write4Bytes(unsigned int newVal);
258 
260  void ZeroAllValues();
261 
264 
267  PBYTEArray data;
268 
270  PBoolean isFullFrame;
271 
273  PBoolean isVideo;
274 
276  PBoolean isAudio;
277 
280 
283 
285  DWORD timeStamp;
286 
289 
295 
299 };
300 
302 
303 class IAX2MiniFrame : public IAX2Frame
304 {
305  PCLASSINFO(IAX2MiniFrame, IAX2Frame);
306  public:
309  IAX2MiniFrame(const IAX2Frame & srcFrame);
310 
312  IAX2MiniFrame(IAX2EndPoint & _endpoint);
313 
322  IAX2MiniFrame(IAX2Processor * con, PBYTEArray &sound, PBoolean isAudio, DWORD usersTimeStamp = 0);
323 
325  virtual ~IAX2MiniFrame();
326 
329  virtual PBoolean ProcessNetworkPacket();
330 
332  virtual PBoolean WriteHeader();
333 
335  virtual void PrintOn(ostream & strm) const;
336 
339  virtual BYTE *GetMediaDataPointer();
340 
342  virtual PINDEX GetMediaDataSize();
343 
345  void AlterTimeStamp(PINDEX newValue);
346 
352  virtual void InitialiseHeader(IAX2Processor *processor);
353 
355  virtual PINDEX GetEncryptionOffset();
356 
357  protected:
359  void ZeroAllValues();
360 };
361 
364 
365 class IAX2FullFrame : public IAX2Frame
366 {
367  PCLASSINFO(IAX2FullFrame, IAX2Frame);
368  public:
371  IAX2FullFrame(const IAX2Frame & srcFrame);
372 
375  IAX2FullFrame(IAX2EndPoint &_endpoint);
376 
379  virtual ~IAX2FullFrame();
380 
382  PBoolean IsAckFrame() { return isAckFrame; }
383 
385  PBoolean IsPingFrame();
386 
388  PBoolean IsNewFrame();
389 
391  PBoolean IsLagRqFrame();
392 
394  PBoolean IsLagRpFrame();
395 
397  PBoolean IsPongFrame();
398 
400  PBoolean IsAuthReqFrame();
401 
403  PBoolean IsVnakFrame();
404 
406  PBoolean IsRegReqFrame();
407 
409  PBoolean IsRegAuthFrame();
410 
412  PBoolean IsRegAckFrame();
413 
415  PBoolean IsRegRelFrame();
416 
418  PBoolean IsRegRejFrame();
419 
421  PBoolean IsCallTokenFrame();
422 
425  PBoolean FrameIncrementsInSeqNo();
426 
429  virtual PBoolean IsFullFrame() { return true; }
430 
434  PBoolean IsHangupFrame();
435 
437  void ZeroAllValues();
438 
441  virtual PBoolean ProcessNetworkPacket();
442 
445  virtual PBoolean TransmitPacket(PUDPSocket &sock);
446 
448  PString GetFullFrameName() const;
449 
451  virtual PString GetSubClassName() const
452  { return PString(" subclass=") + PString(subClass); }
453 
457  void MarkDeleteNow();
458 
463  void MarkVnakSendNow();
464 
467  virtual BYTE *GetMediaDataPointer();
468 
470  virtual PINDEX GetMediaDataSize();
471 
473  PINDEX GetSubClass() const { return subClass; }
474 
476  void SetSubClass(PINDEX newValue) { subClass = newValue;}
477 
481  virtual PBoolean WriteHeader();
482 
485  void ModifyFrameHeaderSequenceNumbers(PINDEX inNo, PINDEX outNo);
486 
491  void ModifyFrameTimeStamp(PINDEX newTimeStamp);
492 
494  virtual PBoolean InformationElementsPresent() { return false; }
495 
498  PBoolean SendFrameNow() { return sendFrameNow; }
499 
502  PBoolean DeleteFrameNow() { return deleteFrameNow; }
503 
506 
508  virtual void PrintOn(ostream & strm) const;
509 
511  void MarkAsResent();
512 
515  PBoolean operator *= (IAX2FullFrame & other);
516 
522  };
523 
525  virtual BYTE GetFullFrameType() { return 0; }
526 
528  virtual PINDEX GetEncryptionOffset() { return 4; }
529 
530  protected:
532  virtual PBoolean CallMustBeActive() { return callMustBeActive; }
533 
535  void UnCompressSubClass(BYTE a);
536 
538  int CompressSubClass();
539 
541  void ClearListFlags();
542 
548  virtual void InitialiseHeader(IAX2Processor *processor);
549 
550 #ifdef DOC_PLUS_PLUS
551 
554  void OnTransmissionTimeout(PTimer &, INT);
555 #else
556  PDECLARE_NOTIFIER(PTimer, IAX2FullFrame, OnTransmissionTimeout);
557 #endif
558 
560 
562  int subClass;
563 
565  PTimeInterval retryDelta;
566 
568  PTimeInterval timeOffset;
569 
571  PINDEX retries;
572 
574  enum RetryTime {
575  minRetryTime = 1000,
576  maxRetryTime = 010000,
578  };
579 
582 
584  PBoolean sendFrameNow;
585 
587  PBoolean deleteFrameNow;
588 
590  PBoolean packetResent;
591 
594 
596  PBoolean isAckFrame;
597 };
598 
600 
606 {
607  PCLASSINFO(IAX2FullFrameDtmf, IAX2FullFrame);
608  public:
611  IAX2FullFrameDtmf(const IAX2Frame & srcFrame);
612 
615  IAX2FullFrameDtmf(const IAX2FullFrame & srcFrame);
616 
619  IAX2FullFrameDtmf(IAX2Processor *processor,
620  char subClassValue
621  );
622 
625  IAX2FullFrameDtmf(IAX2Processor *processor,
626  PString subClassValue
627  );
628 
629 
631  virtual PString GetSubClassName() const;
632 
634  enum DtmfSc {
635  dtmf0 = 48,
636  dtmf1 = 49,
637  dtmf2 = 50,
638  dtmf3 = 51,
639  dtmf4 = 52,
640  dtmf5 = 53,
641  dtmf6 = 54,
642  dtmf7 = 55,
643  dtmf8 = 56,
644  dtmf9 = 57,
645  dtmfA = 65,
646  dtmfB = 66,
647  dtmfC = 67,
648  dtmfD = 68,
649  dtmfStar = 42,
650  dtmfHash = 35
651  };
652 
654  virtual BYTE GetFullFrameType() { return dtmfType; }
655 
656  protected:
657 };
658 
660 
668 {
669  PCLASSINFO(IAX2FullFrameVoice, IAX2FullFrame);
670  public:
671 
674  IAX2FullFrameVoice(const IAX2Frame & srcFrame);
675 
678  IAX2FullFrameVoice(const IAX2FullFrame & srcFrame);
679 
688  IAX2FullFrameVoice(IAX2CallProcessor *processor, PBYTEArray &sound,
689  PINDEX usersTimeStamp = 0);
690 
692  virtual ~IAX2FullFrameVoice();
693 
695  virtual PString GetSubClassName() const;
696 
699  static PString GetSubClassName(unsigned testValue);
700 
704  static PString GetOpalNameOfCodec(PINDEX testValue);
705 
708  static unsigned short OpalNameToIax2Value(const PString opalName);
709 
711  enum AudioSc {
712  g7231 = 1,
713  gsm = 2,
714  g711ulaw = 4,
715  g711alaw = 8,
716  mp3 = 0x10,
717  adpcm = 0x20,
718  pcm = 0x40,
719  lpc10 = 0x80,
720  g729 = 0x100,
721  speex = 0x200,
722  ilbc = 0x400,
724  };
725 
727  virtual BYTE GetFullFrameType() { return voiceType; }
728 };
730 
736 {
737  PCLASSINFO(IAX2FullFrameVideo, IAX2FullFrame);
738  public:
739 
742  IAX2FullFrameVideo(const IAX2Frame & srcFrame);
743 
746  IAX2FullFrameVideo(const IAX2FullFrame & srcFrame);
747 
749  virtual PString GetSubClassName() const;
750 
752  enum VideoSc {
753  jpeg = 0x10000,
754  png = 0x20000,
755  h261 = 0x40000,
756  h263 = 0x80000
757  };
758 
760  virtual BYTE GetFullFrameType() { return videoType; }
761  protected:
762 };
763 
765 
771 {
773  public:
774 
776  enum SessionSc {
777  hangup = 1,
778  ring = 2,
779  ringing = 3,
780  answer = 4,
781  busy = 5,
782  tkoffhk = 6,
783  offhook = 7,
785  flashhook = 9,
786  wink = 10,
787  option = 11,
788  keyRadio = 12,
789  unkeyRadio = 13,
792  callOnHold = 16,
794  stopSounds = 255
795  };
796 
797 
798 
801  IAX2FullFrameSessionControl(const IAX2Frame & srcFrame);
802 
805  IAX2FullFrameSessionControl(const IAX2FullFrame & srcFrame);
806 
810  PINDEX subClassValue
811  );
812 
816  SessionSc subClassValue
817  );
818 
821 
823  virtual PString GetSubClassName() const;
824 
826  virtual BYTE GetFullFrameType() { return controlType; }
827 
828  protected:
829 };
830 
832 
839 {
840  PCLASSINFO(IAX2FullFrameNull, IAX2FullFrame);
841  public:
845 
849  IAX2FullFrameNull(const IAX2Frame & srcFrame);
850 
854  IAX2FullFrameNull(const IAX2FullFrame & srcFrame);
855 
857  virtual PString GetSubClassName() const { return PString(""); }
858 
860  virtual BYTE GetFullFrameType() { return nullType; }
861 
862  protected:
863 };
864 
866 
873 {
875  public:
876 
878  enum ProtocolSc {
879  cmdNew = 1,
880  cmdPing = 2,
881  cmdPong = 3,
882  cmdAck = 4,
883  cmdHangup = 5,
884  cmdReject = 6,
885  cmdAccept = 7,
888  cmdInval = 10,
889  cmdLagRq = 11,
890  cmdLagRp = 12,
891  cmdRegReq = 13,
892  cmdRegAuth = 14,
893  cmdRegAck = 15,
894  cmdRegRej = 16,
895  cmdRegRel = 17,
896  cmdVnak = 18,
897  cmdDpReq = 19,
898  cmdDpRep = 20,
899  cmdDial = 21,
900  cmdTxreq = 22,
901  cmdTxcnt = 23,
902  cmdTxacc = 24,
903  cmdTxready = 25,
904  cmdTxrel = 26,
905  cmdTxrej = 27,
906  cmdQuelch = 28,
907  cmdUnquelch = 29,
908  cmdPoke = 30,
909  cmdPage = 31,
910  cmdMwi = 32,
912  cmdTransfer = 34,
914  cmdFwDownl = 36,
915  cmdFwData = 37,
916  cmdTxMedia = 38,
917  cmdRtKey = 39,
919  };
920 
924  IAX2FullFrameProtocol(const IAX2Frame & srcFrame);
925 
929  IAX2FullFrameProtocol(const IAX2FullFrame & srcFrame);
930 
934  PINDEX subClassValue,
937  );
938 
942  ProtocolSc subClassValue,
945  );
946 
953  ProtocolSc subClassValue,
954  IAX2FullFrame *inReplyTo,
957  );
958 
960  virtual ~IAX2FullFrameProtocol();
961 
964 
966  virtual PBoolean InformationElementsPresent() { return !ieElements.IsEmpty(); }
967 
970 
972  virtual PString GetSubClassName() const;
973 
975  static PString GetSubClassName(unsigned t);
976 
978  void AppendIe(IAX2Ie *newElement) { ieElements.Append(newElement); }
979 
982  void WriteIeAsBinaryData();
983 
987  void CopyDataFromIeListTo(IAX2IeData &res);
988 
991  void GetRemoteCapability(unsigned int & capability,
992  unsigned int & preferred);
993 
996  virtual BYTE GetFullFrameType() { return iax2ProtocolType; }
997 
999  virtual void PrintOn(ostream & strm) const;
1000 
1003  PBoolean GetCallTokenIe(IAX2IeCallToken & callToken);
1004 
1005  protected:
1006 
1009  PBoolean ReadInformationElements();
1010 
1011 
1015 
1017 #if PTRACING
1018  friend ostream & operator<<(ostream & o, ProtocolSc t);
1019 #endif
1020 };
1021 
1023 
1029 {
1030  PCLASSINFO(IAX2FullFrameText, IAX2FullFrame);
1031  public:
1032 
1035  IAX2FullFrameText(IAX2Processor *processor,
1036  const PString& textValue
1037  );
1038 
1041  IAX2FullFrameText(const IAX2Frame & srcFrame);
1042 
1045  IAX2FullFrameText(const IAX2FullFrame & srcFrame);
1046 
1048  virtual PString GetSubClassName() const;
1049 
1051  virtual BYTE GetFullFrameType() { return textType; }
1052 
1054  PString GetTextString() const;
1055 
1056  protected:
1057 
1059  PString internalText;
1060 };
1062 
1068 {
1069  PCLASSINFO(IAX2FullFrameImage, IAX2FullFrame);
1070  public:
1071 
1074  IAX2FullFrameImage(const IAX2Frame & srcFrame);
1075 
1078  IAX2FullFrameImage(const IAX2FullFrame & srcFrame);
1079 
1081  virtual PString GetSubClassName() const;
1082 
1084  virtual BYTE GetFullFrameType() { return imageType; }
1085  protected:
1086 };
1087 
1089 
1095 {
1096  PCLASSINFO(IAX2FullFrameHtml, IAX2FullFrame);
1097  public:
1098 
1101  IAX2FullFrameHtml(const IAX2Frame & srcFrame);
1102 
1105  IAX2FullFrameHtml(const IAX2FullFrame & srcFrame);
1106 
1108  virtual PString GetSubClassName() const;
1109 
1111  virtual BYTE GetFullFrameType() { return htmlType; }
1112  protected:
1113 };
1114 
1116 
1121 {
1122  PCLASSINFO(IAX2FullFrameCng, IAX2FullFrame);
1123  public:
1124 
1127  IAX2FullFrameCng(const IAX2Frame & srcFrame);
1128 
1131  IAX2FullFrameCng(const IAX2FullFrame & srcFrame);
1132 
1134  virtual PString GetSubClassName() const;
1135 
1137  virtual BYTE GetFullFrameType() { return cngType; }
1138  protected:
1139 };
1140 
1142 
1149 class IAX2FrameList : public PList<IAX2Frame>
1150 {
1151  public:
1153  void ReportList(PString & answer);
1154 
1157 
1159  void Initialise();
1160 
1162  void GrabContents(IAX2FrameList &src);
1163 
1167 
1172 
1174  void AddNewFrame(IAX2Frame *src);
1175 
1177  void GetResendFramesDeleteOldFrames(IAX2FrameList & framesToSend);
1178 
1180  void MarkAllAsResent();
1181 
1182  protected:
1184  PDECLARE_MUTEX(mutex);
1185 };
1186 
1188 
1193 {
1194  PCLASSINFO(IAX2ActiveFrameList, IAX2FrameList);
1195  public:
1197 };
1199 
1200 
1201 #endif // OPAL_IAX2
1202 
1203 #endif // OPAL_IAX2_FRAME_H
1204 
1205 /* The comment below is magic for those who use emacs to edit this file.
1206  * With the comment below, the tab key does auto indent to 2 spaces.
1207  *
1208  * Local Variables:
1209  * mode:c
1210  * c-basic-offset:2
1211  * End:
1212  */
Definition: frame.h:781
void SetRetransmissionRequired()
PBoolean Read1Byte(BYTE &res)
Definition: frame.h:880
Definition: frame.h:640
virtual BYTE GetFullFrameType()
Definition: frame.h:760
Definition: frame.h:644
PString connectionToken
Definition: frame.h:294
void AlterTimeStamp(PINDEX newValue)
void Initialise()
PBoolean Read2Bytes(PINDEX &res)
virtual PString GetSubClassName() const
Definition: remote.h:223
void GetResendFramesDeleteOldFrames(IAX2FrameList &framesToSend)
Definition: frame.h:889
Definition: frame.h:916
virtual PINDEX GetEncryptionOffset()
Definition: frame.h:713
PString GetTextString() const
Definition: frame.h:892
static PString GetOpalNameOfCodec(PINDEX testValue)
Definition: frame.h:577
virtual PString GetSubClassName() const
Definition: frame.h:650
void GetRemoteCapability(unsigned int &capability, unsigned int &preferred)
IAX2FrameType GetFrameType()
Definition: frame.h:182
virtual PString GetSubClassName() const
Definition: frame.h:520
Definition: frame.h:1149
Definition: frame.h:838
virtual PString GetSubClassName() const
Definition: frame.h:857
PBoolean CanRetransmitFrame() const
Definition: frame.h:191
PBoolean IsRegReqFrame()
virtual PBoolean WriteHeader()
Definition: frame.h:667
PBoolean IsLagRqFrame()
PBoolean IsAudio() const
Definition: frame.h:95
PINDEX DataSize()
Definition: frame.h:108
void Write4Bytes(unsigned int newVal)
virtual BYTE GetFullFrameType()
Definition: frame.h:860
Definition: frame.h:643
IAX2Remote remote
Definition: frame.h:221
Definition: frame.h:170
Definition: frame.h:717
virtual PString GetSubClassName() const
Definition: iax2ep.h:100
Definition: remote.h:52
Definition: frame.h:648
Definition: frame.h:168
void ClearListFlags()
virtual ~IAX2MiniFrame()
IAX2FullFrameCng(const IAX2Frame &srcFrame)
PBoolean DecryptContents(IAX2Encryption &encryption)
Definition: frame.h:645
virtual BYTE GetFullFrameType()
Definition: frame.h:654
Definition: frame.h:176
PBoolean operator*=(IAX2FullFrame &other)
Definition: frame.h:756
IAX2SequenceNumbers sequence
Definition: frame.h:581
PBoolean IsVideo() const
Definition: frame.h:92
virtual BYTE GetFullFrameType()
Definition: frame.h:525
Definition: frame.h:881
Definition: frame.h:719
Definition: frame.h:898
Definition: frame.h:755
Definition: frame.h:647
Definition: frame.h:575
virtual void PrintOn(ostream &strm) const
ProtocolSc GetSubClass() const
Definition: frame.h:969
Definition: frame.h:754
virtual void PrintOn(ostream &strm) const
VideoSc
Definition: frame.h:752
Definition: frame.h:908
Definition: frame.h:641
Definition: frame.h:174
Definition: ies.h:2078
IAX2FullFrameVideo(const IAX2Frame &srcFrame)
void ModifyFrameTimeStamp(PINDEX newTimeStamp)
IAX2MiniFrame(const IAX2Frame &srcFrame)
ConnectionRequired
Definition: frame.h:519
PBoolean IsVnakFrame()
Definition: frame.h:888
PBoolean IsRegAckFrame()
Definition: frame.h:365
virtual BYTE GetFullFrameType()
Definition: frame.h:1111
Definition: frame.h:897
IAX2FrameType
Definition: frame.h:165
virtual ~IAX2FullFrameProtocol()
void ZeroAllValues()
Definition: frame.h:722
Definition: frame.h:166
Definition: frame.h:903
Definition: frame.h:303
Definition: frame.h:895
virtual BYTE * GetMediaDataPointer()
Definition: frame.h:914
void ZeroAllValues()
virtual void PrintOn(ostream &strm) const
PTimeInterval timeOffset
Definition: frame.h:568
Definition: frame.h:521
PINDEX GetUnReadBytes()
Definition: frame.h:128
PString GetFullFrameName() const
PBoolean IsAuthReqFrame()
Definition: frame.h:1094
ProtocolSc
Definition: frame.h:878
Definition: frame.h:778
PBoolean IsNewFrame()
IAX2FullFrameNull(IAX2EndPoint &endpoint)
Definition: frame.h:844
Definition: frame.h:175
void GrabContents(IAX2FrameList &src)
virtual void InitialiseHeader(IAX2Processor *processor)
virtual void InitialiseHeader(IAX2Processor *)
Definition: frame.h:187
PString GetConnectionToken() const
Definition: frame.h:195
Definition: frame.h:173
PINDEX currentWriteIndex
Definition: frame.h:282
Definition: callprocessor.h:53
Definition: frame.h:642
PBoolean canRetransmitFrame
Definition: frame.h:288
PTimeInterval retryDelta
Definition: frame.h:565
PBoolean IsLagRpFrame()
AudioSc
Definition: frame.h:711
virtual PBoolean TransmitPacket(PUDPSocket &sock)
Definition: frame.h:639
IAX2FullFrameHtml(const IAX2Frame &srcFrame)
Definition: frame.h:715
Definition: frame.h:882
Definition: frame.h:890
virtual PINDEX GetMediaDataSize()
IAX2Frame * BuildAppropriateFrameType()
virtual PString GetSubClassName() const
Definition: frame.h:451
DWORD timeStamp
Definition: frame.h:285
void MarkVnakSendNow()
virtual PBoolean ProcessNetworkPacket()
Definition: frame.h:901
virtual BYTE GetFullFrameType()
Definition: frame.h:727
PBoolean packetResent
Definition: frame.h:590
virtual PBoolean ProcessNetworkPacket()
void MarkAllAsResent()
IAX2FullFrameVoice(const IAX2Frame &srcFrame)
PBoolean deleteFrameNow
Definition: frame.h:587
Definition: frame.h:635
virtual ~IAX2FullFrameSessionControl()
Definition: frame.h:820
void DeleteMatchingSendFrame(IAX2FullFrame *reply)
PBoolean callMustBeActive
Definition: frame.h:593
IAX2EndPoint & GetEndpoint()
Definition: frame.h:149
void MarkDeleteNow()
Definition: iedata.h:51
virtual PBoolean TransmitPacket(PUDPSocket &sock)
virtual BYTE * GetMediaDataPointer()
Definition: frame.h:100
void SetSubClass(PINDEX newValue)
Definition: frame.h:476
void AddNewFrame(IAX2Frame *src)
void Write1Byte(BYTE newVal)
Definition: frame.h:872
virtual PBoolean WriteHeader()
Definition: frame.h:131
IAX2FullFrameImage(const IAX2Frame &srcFrame)
IAX2FullFrameDtmf(const IAX2Frame &srcFrame)
Definition: frame.h:721
virtual BYTE GetFullFrameType()
Definition: frame.h:996
DtmfSc
Definition: frame.h:634
PINDEX GetSubClass() const
Definition: frame.h:473
void SendVnakRequestedFrames(IAX2FullFrameProtocol &src)
PBoolean sendFrameNow
Definition: frame.h:584
Definition: frame.h:1120
virtual PINDEX GetMediaDataSize()
IAX2ActiveFrameList()
Definition: frame.h:1196
virtual PINDEX GetEncryptionOffset()
PBoolean SendFrameNow()
Definition: frame.h:498
Definition: frame.h:177
virtual PBoolean IsFullFrame()
Definition: frame.h:429
IAX2FullFrameText(IAX2Processor *processor, const PString &textValue)
Definition: frame.h:1028
PBoolean IsAckFrame()
Definition: frame.h:382
Definition: frame.h:907
Definition: frame.h:712
virtual PString GetSubClassName() const
PDECLARE_MUTEX(mutex)
Definition: frame.h:718
void UnCompressSubClass(BYTE a)
int CompressSubClass()
Definition: frame.h:576
virtual PINDEX GetEncryptionOffset()
Definition: frame.h:528
Definition: frame.h:786
PBYTEArray data
Definition: frame.h:267
Definition: frame.h:649
IAX2SequenceNumbers & GetSequenceInfo()
Definition: frame.h:505
IAX2EndPoint & endpoint
Definition: frame.h:263
IAX2FullFrameProtocol(const IAX2Frame &srcFrame)
virtual PString GetSubClassName() const
void AppendIe(IAX2Ie *newElement)
Definition: frame.h:978
PINDEX retries
Definition: frame.h:571
static unsigned short OpalNameToIax2Value(const PString opalName)
Definition: frame.h:909
virtual ~IAX2FullFrameVoice()
virtual PBoolean IsFullFrame()
Definition: frame.h:89
Definition: remote.h:338
Definition: frame.h:904
void ZeroAllValues()
virtual PString GetSubClassName() const
Definition: frame.h:735
SessionSc
Definition: frame.h:776
PBoolean isVideo
Definition: frame.h:273
Definition: frame.h:894
PBoolean IsHangupFrame()
ostream & operator<<(ostream &strm, OpalSilenceDetector::Mode mode)
Definition: frame.h:1192
Definition: frame.h:917
Definition: processor.h:132
IAX2FullFrameSessionControl(const IAX2Frame &srcFrame)
Definition: frame.h:637
Definition: frame.h:1067
PINDEX currentReadIndex
Definition: frame.h:279
IAX2IeList ieElements
Definition: frame.h:1014
IAX2Frame * GetLastFrame()
virtual void PrintOn(ostream &strm) const
virtual BYTE * GetMediaDataPointer()
Definition: frame.h:714
void SetTimeStamp(DWORD newValue)
Definition: frame.h:167
virtual PBoolean WriteHeader()
Definition: frame.h:891
void ModifyFrameHeaderSequenceNumbers(PINDEX inNo, PINDEX outNo)
void SetConnectionToken(PString newToken)
Definition: frame.h:199
Definition: frame.h:883
PBoolean GetCallTokenIe(IAX2IeCallToken &callToken)
Definition: frame.h:896
virtual BYTE GetFullFrameType()
Definition: frame.h:1051
IAX2FrameType frameType
Definition: frame.h:225
Definition: frame.h:605
Definition: frame.h:171
DWORD presetTimeStamp
Definition: frame.h:298
Definition: frame.h:885
IAX2Remote & GetRemoteInfo()
Definition: frame.h:111
Definition: frame.h:879
Definition: frame.h:172
void CopyDataFromIeListTo(IAX2IeData &res)
Definition: frame.h:720
Definition: frame.h:899
IAX2FullFrame(const IAX2Frame &srcFrame)
virtual PBoolean InformationElementsPresent()
Definition: frame.h:966
PBoolean FrameIncrementsInSeqNo()
PBoolean isAckFrame
Definition: frame.h:596
Definition: frame.h:646
Definition: frame.h:900
Definition: ies.h:51
Definition: frame.h:906
const BYTE * GetDataPointer()
Definition: frame.h:114
Definition: frame.h:902
static DWORD CalcTimeStamp(const PTimeInterval &callStartTick)
PString IdString() const
virtual BYTE GetFullFrameType()
Definition: frame.h:826
PBoolean IsRegRelFrame()
virtual ~IAX2FullFrame()
PBoolean Read4Bytes(DWORD &res)
PBoolean ReadInformationElements()
virtual PBoolean CallMustBeActive()
Definition: frame.h:162
virtual ~IAX2Frame()
virtual BYTE GetFullFrameType()
Definition: frame.h:1084
PBoolean ReadNetworkPacket(PUDPSocket &sock)
PBoolean DeleteFrameNow()
Definition: frame.h:502
Definition: frame.h:893
virtual BYTE GetFullFrameType()
Definition: frame.h:1137
virtual PString GetSubClassName() const
PBoolean isAudio
Definition: frame.h:276
Definition: frame.h:71
DWORD GetTimeStamp()
Definition: frame.h:156
PBoolean IsRegAuthFrame()
Definition: frame.h:716
void OnTransmissionTimeout(PTimer &, INT)
PTimer transmissionTimer
Definition: frame.h:559
Definition: frame.h:638
Definition: frame.h:910
virtual PBoolean InformationElementsPresent()
Definition: frame.h:494
void ReportList(PString &answer)
virtual PINDEX GetMediaDataSize()
Definition: frame.h:105
Definition: frame.h:884
Definition: frame.h:915
Definition: frame.h:905
IAX2Frame(IAX2EndPoint &_endpoint)
Definition: frame.h:912
virtual PBoolean ProcessNetworkPacket()
Definition: frame.h:169
Definition: frame.h:753
PString internalText
Definition: frame.h:1059
Definition: frame.h:886
PBoolean isFullFrame
Definition: frame.h:270
virtual void InitialiseHeader(IAX2Processor *processor)
int subClass
Definition: frame.h:562
PBoolean IsPingFrame()
void MarkAsResent()
Definition: frame.h:770
Definition: ies.h:2143
RetryTime
Definition: frame.h:574
PBoolean IsCallTokenFrame()
Definition: frame.h:636
PBoolean EncryptContents(IAX2Encryption &encData)
PBoolean IsPongFrame()
void BuildConnectionToken()
virtual PString GetSubClassName() const
Definition: frame.h:887
virtual PBoolean CallMustBeActive()
Definition: frame.h:532
virtual void BuildTimeStamp(const PTimeInterval &callStartTick)
PBoolean IsRegRejFrame()
void Write2Bytes(PINDEX newVal)