You can subscribe to this list here.
| 2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2009 |
Jan
(5) |
Feb
(6) |
Mar
(1) |
Apr
(8) |
May
(5) |
Jun
(12) |
Jul
(38) |
Aug
|
Sep
|
Oct
(11) |
Nov
(21) |
Dec
(6) |
| 2010 |
Jan
(16) |
Feb
(15) |
Mar
(11) |
Apr
(1) |
May
|
Jun
(3) |
Jul
(13) |
Aug
|
Sep
(17) |
Oct
(16) |
Nov
|
Dec
(3) |
| 2011 |
Jan
(8) |
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Vyacheslav F. <vf...@us...> - 2009-07-02 06:55:59
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv10082 Modified Files: pmodeme.cxx Log Message: Fixed +VSM=? and +VLS=? for modem type autodetecting by VentaFax Thanks Dmitry (gorod225) Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.62 retrieving revision 1.63 diff -C2 -d -r1.62 -r1.63 *** pmodeme.cxx 2 Jul 2009 05:41:37 -0000 1.62 --- pmodeme.cxx 2 Jul 2009 06:55:30 -0000 1.63 *************** *** 25,28 **** --- 25,32 ---- * * $Log$ + * Revision 1.63 2009/07/02 06:55:30 vfrolov + * Fixed +VSM=? and +VLS=? for modem type autodetecting by VentaFax + * Thanks Dmitry (gorod225) + * * Revision 1.62 2009/07/02 05:41:37 vfrolov * Enabled +VIT > 0 (for compatibility with some voice applications) *************** *** 2500,2503 **** --- 2504,2508 ---- resp += "\r\n1,\"T\",00000000,00000000,00000000"; resp += "\r\n5,\"ST\",00000000,00000000,00000000"; + resp += "\r\n7,\"MST\",00000000,00000000,00000000"; crlf = TRUE; break; *************** *** 2513,2516 **** --- 2518,2522 ---- case 1: case 5: + case 7: ok = FALSE; *************** *** 2656,2659 **** --- 2662,2666 ---- resp += "\r\n5,\"G.711A\",8,0,(8000),(0),(0)"; resp += "\r\n128,\"8-BIT LINEAR\",8,0,(8000),(0),(0)"; + resp += "\r\n129,\"ADPCM (NOT IMPLEMENTED)\",0,0,(0),(0),(0)"; resp += "\r\n130,\"UNSIGNED PCM\",8,0,(8000),(0),(0)"; resp += "\r\n131,\"G.711 ULAW\",8,0,(8000),(0),(0)"; |
|
From: Vyacheslav F. <vf...@us...> - 2009-07-02 05:41:41
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31894 Modified Files: pmodeme.cxx Log Message: Enabled +VIT > 0 (for compatibility with some voice applications) Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.61 retrieving revision 1.62 diff -C2 -d -r1.61 -r1.62 *** pmodeme.cxx 1 Jul 2009 15:11:58 -0000 1.61 --- pmodeme.cxx 2 Jul 2009 05:41:37 -0000 1.62 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.62 2009/07/02 05:41:37 vfrolov + * Enabled +VIT > 0 (for compatibility with some voice applications) + * * Revision 1.61 2009/07/01 15:11:58 vfrolov * Fixed codec 128,"8-BIT LINEAR" *************** *** 2470,2474 **** break; default: ! if (ParseNum(&pCmd) != 0) err = TRUE; } --- 2473,2477 ---- break; default: ! if (ParseNum(&pCmd) < 0) err = TRUE; } |
|
From: Vyacheslav F. <vf...@us...> - 2009-07-01 15:12:04
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv3223 Modified Files: pmodeme.cxx Log Message: Fixed codec 128,"8-BIT LINEAR" Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.60 retrieving revision 1.61 diff -C2 -d -r1.60 -r1.61 *** pmodeme.cxx 1 Jul 2009 10:52:06 -0000 1.60 --- pmodeme.cxx 1 Jul 2009 15:11:58 -0000 1.61 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.61 2009/07/01 15:11:58 vfrolov + * Fixed codec 128,"8-BIT LINEAR" + * * Revision 1.60 2009/07/01 10:52:06 vfrolov * Enabled +VSM=<cml> w/o <vsr> *************** *** 3041,3049 **** switch (P.Vcml()) { case 0: - case 128: while (count--) *ps++ = (PInt16)((PInt16)(*pb++)*256); break; case 1: case 130: while (count--) --- 3044,3052 ---- switch (P.Vcml()) { case 0: while (count--) *ps++ = (PInt16)((PInt16)(*pb++)*256); break; case 1: + case 128: case 130: while (count--) *************** *** 3518,3526 **** switch (P.Vcml()) { case 0: - case 128: while (count--) *pb++ = (signed char)((*ps++)/256); break; case 1: case 130: while (count--) --- 3521,3529 ---- switch (P.Vcml()) { case 0: while (count--) *pb++ = (signed char)((*ps++)/256); break; case 1: + case 128: case 130: while (count--) |
|
From: Vyacheslav F. <vf...@us...> - 2009-07-01 10:52:34
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv15598 Modified Files: pmodeme.cxx Log Message: Enabled +VSM=<cml> w/o <vsr> Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.59 retrieving revision 1.60 diff -C2 -d -r1.59 -r1.60 *** pmodeme.cxx 1 Jul 2009 08:20:39 -0000 1.59 --- pmodeme.cxx 1 Jul 2009 10:52:06 -0000 1.60 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.60 2009/07/01 10:52:06 vfrolov + * Enabled +VSM=<cml> w/o <vsr> + * * Revision 1.59 2009/07/01 08:20:39 vfrolov * Implemented +VIP command *************** *** 2672,2709 **** break; - if (*pCmd != ',') { - err = TRUE; - break; - } - - pCmd++; - - int vsr = ParseNum(&pCmd, 4, 4, 8000); - - if (vsr != 8000) { - err = TRUE; - break; - } - - int scs = 0; - int sel = 0; - if (*pCmd == ',') { pCmd++; - scs = ParseNum(&pCmd); ! if (scs != 0) { err = TRUE; break; } if (*pCmd == ',') { pCmd++; ! sel = ParseNum(&pCmd); ! if (sel != 0) { err = TRUE; break; } } } --- 2675,2709 ---- break; if (*pCmd == ',') { pCmd++; ! int vsr = ParseNum(&pCmd, 4, 4, 8000); ! ! if (vsr != 8000) { err = TRUE; break; } + int scs = 0; + int sel = 0; + if (*pCmd == ',') { pCmd++; ! scs = ParseNum(&pCmd); ! if (scs != 0) { err = TRUE; break; } + + if (*pCmd == ',') { + pCmd++; + sel = ParseNum(&pCmd); + + if (sel != 0) { + err = TRUE; + break; + } + } } } |
|
From: Vyacheslav F. <vf...@us...> - 2009-07-01 08:21:04
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv27127 Modified Files: pmodeme.cxx Log Message: Implemented +VIP command Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.58 retrieving revision 1.59 diff -C2 -d -r1.58 -r1.59 *** pmodeme.cxx 30 Jun 2009 13:55:27 -0000 1.58 --- pmodeme.cxx 1 Jul 2009 08:20:39 -0000 1.59 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.59 2009/07/01 08:20:39 vfrolov + * Implemented +VIP command + * * Revision 1.58 2009/06/30 13:55:27 vfrolov * Added +VSM codecs *************** *** 259,263 **** { enum { ! MaxReg = 60, MaxBit = 7 }; --- 262,268 ---- { enum { ! MaxReg = 59, ! MaxRegVoice = MaxReg - 10, ! MinRegVoice = MaxRegVoice - 9, MaxBit = 7 }; *************** *** 281,291 **** DeclareRegisterByte(DialTimeDTMF, 11); ! DeclareRegisterByte(Vcml, MaxReg - 12); ! DeclareRegisterByte(Vsds, MaxReg - 11); ! DeclareRegisterByte(Vsdi, MaxReg - 10); ! DeclareRegisterByte(VgrInterval, MaxReg - 9); ! DeclareRegisterByte(VgtInterval, MaxReg - 8); ! DeclareRegisterByte(VraInterval, MaxReg - 7); ! DeclareRegisterByte(VrnInterval, MaxReg - 6); DeclareRegisterByte(IfcByDCE, MaxReg - 5); DeclareRegisterByte(IfcByDTE, MaxReg - 4); --- 286,297 ---- DeclareRegisterByte(DialTimeDTMF, 11); ! DeclareRegisterByte(Vcml, MaxRegVoice - 6); ! DeclareRegisterByte(Vsds, MaxRegVoice - 5); ! DeclareRegisterByte(Vsdi, MaxRegVoice - 4); ! DeclareRegisterByte(VgrInterval, MaxRegVoice - 3); ! DeclareRegisterByte(VgtInterval, MaxRegVoice - 2); ! DeclareRegisterByte(VraInterval, MaxRegVoice - 1); ! DeclareRegisterByte(VrnInterval, MaxRegVoice - 0); ! DeclareRegisterByte(IfcByDCE, MaxReg - 5); DeclareRegisterByte(IfcByDTE, MaxReg - 4); *************** *** 349,352 **** --- 355,359 ---- Profile &operator=(const Profile &p); + Profile &SetVoiceProfile(const Profile &p); void ModemClass(const PString &_modemClass) { *************** *** 382,385 **** --- 389,394 ---- PBoolean audioClass; }; + + static const Profile Profiles[1]; /////////////////////////////////////////////////////////////// class Timeout : public PTimer *************** *** 602,606 **** Profile P; - Profile Profiles[1]; PMutex Mutex; --- 611,614 ---- *************** *** 751,754 **** --- 759,768 ---- return *this; } + + Profile &Profile::SetVoiceProfile(const Profile &p) { + for (PINDEX r = MinRegVoice ; r <= MaxRegVoice ; r++) + S[r] = p.S[r]; + return *this; + } /////////////////////////////////////////////////////////////// ModemEngineBody::ModemEngineBody(ModemEngine &_parent, const PNotifier &_callbackEndPoint) *************** *** 2413,2416 **** --- 2427,2457 ---- case 'I': switch (*pCmd++) { + case 'P': // +VIP + { + int val; + + if (*pCmd == '=') { + pCmd++; + if (*pCmd == '?') { + pCmd++; + resp.sprintf("\r\n(0-%u)", sizeof(Profiles)/sizeof(Profiles[0]) - 1); + crlf = TRUE; + break; + } + + val = ParseNum(&pCmd); + + if( val < 0 || val > ((int)(sizeof(Profiles)/sizeof(Profiles[0])) - 1)) { + err = TRUE; + break; + } + } else { + val = 0; + } + + PWaitAndSignal mutexWait(Mutex); + P.SetVoiceProfile(Profiles[val]); + } + break; case 'T': // +VIT switch (*pCmd++) { |
|
From: Vyacheslav F. <vf...@us...> - 2009-06-30 14:53:40
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv19178 Modified Files: pmodeme.cxx Log Message: Added +VSM codecs 128,"8-BIT LINEAR",8,0,(8000),(0),(0) 130,"UNSIGNED PCM",8,0,(8000),(0),(0) 131,"G.711 ULAW",8,0,(8000),(0),(0) Added +VLS 5,"ST",00000000,00000000,00000000 Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -d -r1.57 -r1.58 *** pmodeme.cxx 30 Jun 2009 10:50:33 -0000 1.57 --- pmodeme.cxx 30 Jun 2009 13:55:27 -0000 1.58 *************** *** 25,28 **** --- 25,36 ---- * * $Log$ + * Revision 1.58 2009/06/30 13:55:27 vfrolov + * Added +VSM codecs + * 128,"8-BIT LINEAR",8,0,(8000),(0),(0) + * 130,"UNSIGNED PCM",8,0,(8000),(0),(0) + * 131,"G.711 ULAW",8,0,(8000),(0),(0) + * Added +VLS + * 5,"ST",00000000,00000000,00000000 + * * Revision 1.57 2009/06/30 10:50:33 vfrolov * Added +VSM codecs *************** *** 2441,2444 **** --- 2449,2453 ---- resp += "\r\n0,\"\",00000000,00000000,00000000"; resp += "\r\n1,\"T\",00000000,00000000,00000000"; + resp += "\r\n5,\"ST\",00000000,00000000,00000000"; crlf = TRUE; break; *************** *** 2453,2456 **** --- 2462,2466 ---- } case 1: + case 5: ok = FALSE; *************** *** 2595,2598 **** --- 2605,2611 ---- resp += "\r\n4,\"G.711U\",8,0,(8000),(0),(0)"; resp += "\r\n5,\"G.711A\",8,0,(8000),(0),(0)"; + resp += "\r\n128,\"8-BIT LINEAR\",8,0,(8000),(0),(0)"; + resp += "\r\n130,\"UNSIGNED PCM\",8,0,(8000),(0),(0)"; + resp += "\r\n131,\"G.711 ULAW\",8,0,(8000),(0),(0)"; resp += "\r\n132,\"G.711 ALAW\",8,0,(8000),(0),(0)"; crlf = TRUE; *************** *** 2606,2609 **** --- 2619,2625 ---- case 4: case 5: + case 128: + case 130: + case 131: case 132: break; *************** *** 2984,2995 **** --- 3000,3014 ---- switch (P.Vcml()) { case 0: + case 128: while (count--) *ps++ = (PInt16)((PInt16)(*pb++)*256); break; case 1: + case 130: while (count--) *ps++ = (PInt16)((PInt16)(*pb++)*256 - 0x8000); break; case 4: + case 131: while (count--) *ps++ = (PInt16)ulaw2linear(*pb++); *************** *** 3458,3469 **** --- 3477,3491 ---- switch (P.Vcml()) { case 0: + case 128: while (count--) *pb++ = (signed char)((*ps++)/256); break; case 1: + case 130: while (count--) *pb++ = (signed char)((*ps++ + 0x8000)/256); break; case 4: + case 131: while (count--) *pb++ = (signed char)linear2ulaw(*ps++); |
|
From: Vyacheslav F. <vf...@us...> - 2009-06-30 10:51:12
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv21404 Modified Files: pmodeme.cxx Log Message: Added +VSM codecs 0,"SIGNED PCM",8,0,(8000),(0),(0) 1,"UNSIGNED PCM",8,0,(8000),(0),(0) Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.56 retrieving revision 1.57 diff -C2 -d -r1.56 -r1.57 *** pmodeme.cxx 29 Jun 2009 15:36:38 -0000 1.56 --- pmodeme.cxx 30 Jun 2009 10:50:33 -0000 1.57 *************** *** 25,28 **** --- 25,33 ---- * * $Log$ + * Revision 1.57 2009/06/30 10:50:33 vfrolov + * Added +VSM codecs + * 0,"SIGNED PCM",8,0,(8000),(0),(0) + * 1,"UNSIGNED PCM",8,0,(8000),(0),(0) + * * Revision 1.56 2009/06/29 15:36:38 vfrolov * Added ability to dial in connection establised state *************** *** 2586,2591 **** case '?': pCmd++; ! resp += "\r\n4,\"G711U\",8,0,(8000),(0),(0)"; ! resp += "\r\n5,\"G711A\",8,0,(8000),(0),(0)"; resp += "\r\n132,\"G.711 ALAW\",8,0,(8000),(0),(0)"; crlf = TRUE; --- 2591,2598 ---- case '?': pCmd++; ! resp += "\r\n0,\"SIGNED PCM\",8,0,(8000),(0),(0)"; ! resp += "\r\n1,\"UNSIGNED PCM\",8,0,(8000),(0),(0)"; ! resp += "\r\n4,\"G.711U\",8,0,(8000),(0),(0)"; ! resp += "\r\n5,\"G.711A\",8,0,(8000),(0),(0)"; resp += "\r\n132,\"G.711 ALAW\",8,0,(8000),(0),(0)"; crlf = TRUE; *************** *** 2595,2598 **** --- 2602,2607 ---- switch (cml) { + case 0: + case 1: case 4: case 5: *************** *** 2974,2977 **** --- 2983,2994 ---- switch (P.Vcml()) { + case 0: + while (count--) + *ps++ = (PInt16)((PInt16)(*pb++)*256); + break; + case 1: + while (count--) + *ps++ = (PInt16)((PInt16)(*pb++)*256 - 0x8000); + break; case 4: while (count--) *************** *** 3439,3444 **** count /= sizeof(*ps); - switch (P.Vcml()) { case 4: while (count--) --- 3456,3468 ---- count /= sizeof(*ps); switch (P.Vcml()) { + case 0: + while (count--) + *pb++ = (signed char)((*ps++)/256); + break; + case 1: + while (count--) + *pb++ = (signed char)((*ps++ + 0x8000)/256); + break; case 4: while (count--) |
|
From: Vyacheslav F. <vf...@us...> - 2009-06-29 15:36:42
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv16966 Modified Files: pmodeme.cxx Log Message: Added ability to dial in connection establised state Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.55 retrieving revision 1.56 diff -C2 -d -r1.55 -r1.56 *** pmodeme.cxx 29 Jun 2009 13:28:42 -0000 1.55 --- pmodeme.cxx 29 Jun 2009 15:36:38 -0000 1.56 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.56 2009/06/29 15:36:38 vfrolov + * Added ability to dial in connection establised state + * * Revision 1.55 2009/06/29 13:28:42 vfrolov * Added +VSM codecs *************** *** 1512,1516 **** timerRing.Stop(); callDirection = cdIncoming; ! forceFaxMode = P.FaxClass(); if (!connectionEstablished) { --- 1515,1519 ---- timerRing.Stop(); callDirection = cdIncoming; ! forceFaxMode = TRUE; if (!connectionEstablished) { *************** *** 1623,1626 **** --- 1626,1631 ---- { + PWaitAndSignal mutexWait(Mutex); + PString num; PString LocalPartyName; *************** *** 1629,1632 **** --- 1634,1640 ---- int setCallDirection = cdOutgoing; + if (!CallToken().IsEmpty() && !pPlayTone) + pPlayTone = new PDTMFEncoder; + while (!err) { char ch = *pCmd++; *************** *** 1742,1748 **** if (!err) { - PWaitAndSignal mutexWait(Mutex); - if (!CallToken().IsEmpty()) { _ClearCall(); --- 1750,1767 ---- if (!err) { if (!CallToken().IsEmpty()) { + if (connectionEstablished) { + callDirection = setCallDirection; + forceFaxMode = (forceFaxMode || setForceFaxMode); + param = chEvent1; + state = stConnectHandle; + parent.SignalDataReady(); + + if (audioEngine && callDirection == cdOutgoing && P.FaxClass()) + audioEngine->SendOnIdle(EngineBase::dtCng); + + break; + } + _ClearCall(); *************** *** 1758,1765 **** } - if (P.FaxClass()) - forceFaxMode = setForceFaxMode; - callDirection = setCallDirection; timerRing.Stop(); state = stConnectWait; --- 1777,1783 ---- } callDirection = setCallDirection; + forceFaxMode = setForceFaxMode; + timerRing.Stop(); state = stConnectWait; *************** *** 3161,3165 **** switch(param) { case chEvent1: ! if (forceFaxMode) { param = chDelay; timeout.Start(1000); // wait 1 sec before request mode --- 3179,3183 ---- switch(param) { case chEvent1: ! if (forceFaxMode && P.FaxClass()) { param = chDelay; timeout.Start(1000); // wait 1 sec before request mode |
|
From: Vyacheslav F. <vf...@us...> - 2009-06-29 13:28:45
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv27105 Modified Files: pmodeme.cxx Log Message: Added +VSM codecs 4,"G711U",8,0,(8000),(0),(0) 5,"G711A",8,0,(8000),(0),(0) Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.54 retrieving revision 1.55 diff -C2 -d -r1.54 -r1.55 *** pmodeme.cxx 25 Jun 2009 16:48:52 -0000 1.54 --- pmodeme.cxx 29 Jun 2009 13:28:42 -0000 1.55 *************** *** 25,28 **** --- 25,33 ---- * * $Log$ + * Revision 1.55 2009/06/29 13:28:42 vfrolov + * Added +VSM codecs + * 4,"G711U",8,0,(8000),(0),(0) + * 5,"G711A",8,0,(8000),(0),(0) + * * Revision 1.54 2009/06/25 16:48:52 vfrolov * Added stub for +VSD command *************** *** 238,242 **** { enum { ! MaxReg = 50, MaxBit = 7 }; --- 243,247 ---- { enum { ! MaxReg = 60, MaxBit = 7 }; *************** *** 260,275 **** DeclareRegisterByte(DialTimeDTMF, 11); ! DeclareRegisterByte(Vsds, 39); ! DeclareRegisterByte(Vsdi, 40); ! DeclareRegisterByte(VgrInterval, 41); ! DeclareRegisterByte(VgtInterval, 42); ! DeclareRegisterByte(VraInterval, 43); ! DeclareRegisterByte(VrnInterval, 44); ! DeclareRegisterByte(IfcByDCE, 45); ! DeclareRegisterByte(IfcByDTE, 46); ! DeclareRegisterByte(ClearMode, 47); ! DeclareRegisterByte(DelayFrmConnect, 48); ! DeclareRegisterByte(DidMode, 49); ! DeclareRegisterByte(CidMode, 50); void Flo(BYTE val) { IfcByDTE(val); IfcByDCE(val); } --- 265,281 ---- DeclareRegisterByte(DialTimeDTMF, 11); ! DeclareRegisterByte(Vcml, MaxReg - 12); ! DeclareRegisterByte(Vsds, MaxReg - 11); ! DeclareRegisterByte(Vsdi, MaxReg - 10); ! DeclareRegisterByte(VgrInterval, MaxReg - 9); ! DeclareRegisterByte(VgtInterval, MaxReg - 8); ! DeclareRegisterByte(VraInterval, MaxReg - 7); ! DeclareRegisterByte(VrnInterval, MaxReg - 6); ! DeclareRegisterByte(IfcByDCE, MaxReg - 5); ! DeclareRegisterByte(IfcByDTE, MaxReg - 4); ! DeclareRegisterByte(ClearMode, MaxReg - 3); ! DeclareRegisterByte(DelayFrmConnect, MaxReg - 2); ! DeclareRegisterByte(DidMode, MaxReg - 1); ! DeclareRegisterByte(CidMode, MaxReg - 0); void Flo(BYTE val) { IfcByDTE(val); IfcByDCE(val); } *************** *** 481,493 **** void ResetDleData() { dleData.Clean(); - dleData.BitRev(TRUE); dataCount = 0; moreFrames = FALSE; } PBoolean SendStart(int dt, int br, PString &resp) { PWaitAndSignal mutexWait(Mutex); dataType = dt; ResetDleData(); state = stSend; --- 487,513 ---- void ResetDleData() { dleData.Clean(); dataCount = 0; moreFrames = FALSE; } + void SetBitRevDleData() { + if (P.AudioClass()) { + switch (P.Vcml()) { + case 132: + dleData.BitRev(TRUE); + break; + default: + dleData.BitRev(FALSE); + } + } else { + dleData.BitRev(TRUE); + } + } + PBoolean SendStart(int dt, int br, PString &resp) { PWaitAndSignal mutexWait(Mutex); dataType = dt; ResetDleData(); + SetBitRevDleData(); state = stSend; *************** *** 508,511 **** --- 528,532 ---- PWaitAndSignal mutexWait(Mutex); dataType = dt; + SetBitRevDleData(); state = stRecvBegWait; timeout.Start(60000); *************** *** 701,704 **** --- 722,726 ---- Vsds(128); Vsdi(50); + Vcml(132); asciiResultCodes(TRUE); noResultCodes(FALSE); *************** *** 2546,2549 **** --- 2568,2573 ---- case '?': pCmd++; + resp += "\r\n4,\"G711U\",8,0,(8000),(0),(0)"; + resp += "\r\n5,\"G711A\",8,0,(8000),(0),(0)"; resp += "\r\n132,\"G.711 ALAW\",8,0,(8000),(0),(0)"; crlf = TRUE; *************** *** 2553,2556 **** --- 2577,2582 ---- switch (cml) { + case 4: + case 5: case 132: break; *************** *** 2583,2587 **** scs = ParseNum(&pCmd); ! if (scs < 0) { err = TRUE; break; --- 2609,2613 ---- scs = ParseNum(&pCmd); ! if (scs != 0) { err = TRUE; break; *************** *** 2592,2596 **** sel = ParseNum(&pCmd); ! if (sel < 0) { err = TRUE; break; --- 2618,2622 ---- sel = ParseNum(&pCmd); ! if (sel != 0) { err = TRUE; break; *************** *** 2598,2606 **** } } } } break; case '?': ! resp += "\r\n132"; crlf = TRUE; break; --- 2624,2634 ---- } } + + P.Vcml((BYTE)cml); } } break; case '?': ! resp.sprintf("\r\n%u,8000,0,0", (unsigned)P.Vcml()); crlf = TRUE; break; *************** *** 2927,2932 **** PInt16 *ps = Buf2; ! while (count--) ! *ps++ = (PInt16)alaw2linear(*pb++); count = int(pb - (const signed char *)Buf); --- 2955,2969 ---- PInt16 *ps = Buf2; ! switch (P.Vcml()) { ! case 4: ! while (count--) ! *ps++ = (PInt16)ulaw2linear(*pb++); ! break; ! case 5: ! case 132: ! while (count--) ! *ps++ = (PInt16)alaw2linear(*pb++); ! break; ! } count = int(pb - (const signed char *)Buf); *************** *** 3384,3389 **** count /= sizeof(*ps); ! while (count--) ! *pb++ = (signed char)linear2alaw(*ps++); count = int(pb - (signed char *)Buf); --- 3421,3436 ---- count /= sizeof(*ps); ! ! switch (P.Vcml()) { ! case 4: ! while (count--) ! *pb++ = (signed char)linear2ulaw(*ps++); ! break; ! case 5: ! case 132: ! while (count--) ! *pb++ = (signed char)linear2alaw(*ps++); ! break; ! } count = int(pb - (signed char *)Buf); |
|
From: Vyacheslav F. <vf...@us...> - 2009-06-29 13:18:26
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv25453 Modified Files: dle.h Log Message: Disabled changing bitRev in Clean() Index: dle.h =================================================================== RCS file: /cvsroot/t38modem/t38modem/dle.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** dle.h 10 Sep 2008 11:15:00 -0000 1.4 --- dle.h 29 Jun 2009 13:18:23 -0000 1.5 *************** *** 4,8 **** * T38FAX Pseudo Modem * ! * Copyright (c) 2001-2008 Vyacheslav Frolov * * Open H323 Project --- 4,8 ---- * T38FAX Pseudo Modem * ! * Copyright (c) 2001-2009 Vyacheslav Frolov * * Open H323 Project *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.5 2009/06/29 13:18:23 vfrolov + * Disabled changing bitRev in Clean() + * * Revision 1.4 2008/09/10 11:15:00 frolov * Ported to OPAL SVN trunk *************** *** 50,65 **** public: DLEData() : dle(FALSE), recvEtx(FALSE), bitRev(FALSE) { } ! int PutDleData(const void *pBuf, PINDEX count); int GetDleData(void *pBuf, PINDEX count); ! void BitRev(PBoolean _bitRev) { bitRev = _bitRev; } ! virtual void Clean() { DataStream::Clean(); ! dle = recvEtx = bitRev = FALSE; } protected: ! PBoolean dle; PBoolean recvEtx; --- 53,68 ---- public: DLEData() : dle(FALSE), recvEtx(FALSE), bitRev(FALSE) { } ! int PutDleData(const void *pBuf, PINDEX count); int GetDleData(void *pBuf, PINDEX count); ! void BitRev(PBoolean _bitRev) { bitRev = _bitRev; } ! virtual void Clean() { DataStream::Clean(); ! dle = recvEtx = FALSE; } protected: ! PBoolean dle; PBoolean recvEtx; |
|
From: Vyacheslav F. <vf...@us...> - 2009-06-25 16:48:56
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv30943 Modified Files: pmodeme.cxx Log Message: Added stub for +VSD command Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.53 retrieving revision 1.54 diff -C2 -d -r1.53 -r1.54 *** pmodeme.cxx 25 Jun 2009 12:46:38 -0000 1.53 --- pmodeme.cxx 25 Jun 2009 16:48:52 -0000 1.54 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.54 2009/06/25 16:48:52 vfrolov + * Added stub for +VSD command + * * Revision 1.53 2009/06/25 12:46:38 vfrolov * Implemented dialing followed answering ("ATD<dialstring>;A") *************** *** 257,260 **** --- 260,265 ---- DeclareRegisterByte(DialTimeDTMF, 11); + DeclareRegisterByte(Vsds, 39); + DeclareRegisterByte(Vsdi, 40); DeclareRegisterByte(VgrInterval, 41); DeclareRegisterByte(VgtInterval, 42); *************** *** 694,697 **** --- 699,704 ---- VraInterval(50); VrnInterval(10); + Vsds(128); + Vsdi(50); asciiResultCodes(TRUE); noResultCodes(FALSE); *************** *** 2493,2496 **** --- 2500,2543 ---- case 'S': switch (*pCmd++) { + case 'D': // +VSD + switch (*pCmd++) { + case '=': + switch (*pCmd) { + case '?': + pCmd++; + resp += "\r\n(0-255),(0-255)"; + crlf = TRUE; + break; + default: + { + int sds = ParseNum(&pCmd); + + if (sds < 0 || *pCmd != ',') { + err = TRUE; + break; + } + + pCmd++; + + int sdi = ParseNum(&pCmd); + + if (sdi < 0) { + err = TRUE; + break; + } + + P.Vsds((BYTE)sds); + P.Vsdi((BYTE)sdi); + } + } + break; + case '?': + resp.sprintf("\r\n%u,%u", (unsigned)P.Vsds(), (unsigned)P.Vsdi()); + crlf = TRUE; + break; + default: + err = TRUE; + } + break; case 'M': // +VSM switch (*pCmd++) { |
|
From: Vyacheslav F. <vf...@us...> - 2009-06-25 14:54:36
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv27983 Modified Files: pmodeme.cxx Log Message: Implemented dialing followed answering ("ATD<dialstring>;A") Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** pmodeme.cxx 24 Jun 2009 13:12:58 -0000 1.52 --- pmodeme.cxx 25 Jun 2009 12:46:38 -0000 1.53 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.53 2009/06/25 12:46:38 vfrolov + * Implemented dialing followed answering ("ATD<dialstring>;A") + * * Revision 1.52 2009/06/24 13:12:58 vfrolov * Implemented +VEM and +VIT commands *************** *** 1595,1600 **** PBoolean local = FALSE; PBoolean setForceFaxMode = FALSE; - for (char ch ; (ch = *pCmd) != 0 && !err ; pCmd++) { if (!pPlayTone) { switch (ch) { --- 1598,1632 ---- PBoolean local = FALSE; PBoolean setForceFaxMode = FALSE; + int setCallDirection = cdOutgoing; + + while (!err) { + char ch = *pCmd++; + + if (ch == 0) { + pCmd--; + break; + } + + if (ch == ';') { + for (;;) { + switch (*pCmd++) { + case 0: + pCmd--; + break; + case ' ': + case ';': + continue; + case 'A': + setCallDirection = cdIncoming; + setForceFaxMode = TRUE; + break; + default: + err = TRUE; + } + break; + } + break; + } if (!pPlayTone) { switch (ch) { *************** *** 1700,1704 **** forceFaxMode = setForceFaxMode; ! callDirection = cdOutgoing; timerRing.Stop(); state = stConnectWait; --- 1732,1736 ---- forceFaxMode = setForceFaxMode; ! callDirection = setCallDirection; timerRing.Stop(); state = stConnectWait; |
|
From: Vyacheslav F. <vf...@us...> - 2009-06-24 14:10:46
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv31756 Modified Files: pmodeme.cxx Log Message: Added stubs for +VRA and +VRN Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** pmodeme.cxx 24 Jun 2009 08:04:46 -0000 1.49 --- pmodeme.cxx 24 Jun 2009 12:19:01 -0000 1.50 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.50 2009/06/24 12:19:01 vfrolov + * Added stubs for +VRA and +VRN + * * Revision 1.49 2009/06/24 08:04:46 vfrolov * Added semicolon concatenating of commands *************** *** 245,248 **** --- 248,253 ---- DeclareRegisterByte(DialTimeDTMF, 11); + DeclareRegisterByte(VraInterval, 43); + DeclareRegisterByte(VrnInterval, 44); DeclareRegisterByte(IfcByDCE, 45); DeclareRegisterByte(IfcByDTE, 46); *************** *** 676,679 **** --- 681,686 ---- DialTimeDTMF(70); Echo(TRUE); + VraInterval(50); + VrnInterval(10); asciiResultCodes(TRUE); noResultCodes(FALSE); *************** *** 2258,2261 **** --- 2265,2326 ---- case 'R': switch (*pCmd++) { + case 'A': // +VRA + switch (*pCmd++) { + case '=': + switch (*pCmd) { + case '?': + pCmd++; + resp += "\r\n(0-255)"; + crlf = TRUE; + break; + default: + { + int val = ParseNum(&pCmd); + + if (val >= 0) { + P.VraInterval((BYTE)val); + } else { + err = TRUE; + } + } + } + break; + case '?': + resp.sprintf("\r\n%u", (unsigned)P.VraInterval()); + crlf = TRUE; + break; + default: + err = TRUE; + } + break; + case 'N': // +VRN + switch (*pCmd++) { + case '=': + switch (*pCmd) { + case '?': + pCmd++; + resp += "\r\n(0-255)"; + crlf = TRUE; + break; + default: + { + int val = ParseNum(&pCmd); + + if (val >= 0) { + P.VrnInterval((BYTE)val); + } else { + err = TRUE; + } + } + } + break; + case '?': + resp.sprintf("\r\n%u", (unsigned)P.VrnInterval()); + crlf = TRUE; + break; + default: + err = TRUE; + } + break; case 'X': // +VRX if (!HandleClass8Cmd(&pCmd, resp, ok, crlf)) |
|
From: Vyacheslav F. <vf...@us...> - 2009-06-24 14:10:45
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv2882 Modified Files: pmodeme.cxx Log Message: Added stubs for +VGR and +VGT commands Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** pmodeme.cxx 24 Jun 2009 12:19:01 -0000 1.50 --- pmodeme.cxx 24 Jun 2009 12:48:37 -0000 1.51 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.51 2009/06/24 12:48:37 vfrolov + * Added stubs for +VGR and +VGT commands + * * Revision 1.50 2009/06/24 12:19:01 vfrolov * Added stubs for +VRA and +VRN *************** *** 248,251 **** --- 251,256 ---- DeclareRegisterByte(DialTimeDTMF, 11); + DeclareRegisterByte(VgrInterval, 41); + DeclareRegisterByte(VgtInterval, 42); DeclareRegisterByte(VraInterval, 43); DeclareRegisterByte(VrnInterval, 44); *************** *** 2219,2222 **** --- 2224,2291 ---- } break; + case 'G': + switch (*pCmd++) { + case 'R': // +VGR + switch (*pCmd++) { + case '=': + switch (*pCmd) { + case '?': + pCmd++; + resp += "\r\n(0-255)"; + crlf = TRUE; + break; + default: + { + int val = ParseNum(&pCmd); + + if (val >= 0) { + P.VgrInterval((BYTE)val); + } else { + err = TRUE; + } + } + } + break; + case '?': + resp.sprintf("\r\n%u", (unsigned)P.VgrInterval()); + crlf = TRUE; + break; + default: + err = TRUE; + } + break; + case 'T': // +VGT + switch (*pCmd++) { + case '=': + switch (*pCmd) { + case '?': + pCmd++; + resp += "\r\n(0-255)"; + crlf = TRUE; + break; + default: + { + int val = ParseNum(&pCmd); + + if (val >= 0) { + P.VgtInterval((BYTE)val); + } else { + err = TRUE; + } + } + } + break; + case '?': + resp.sprintf("\r\n%u", (unsigned)P.VgtInterval()); + crlf = TRUE; + break; + default: + err = TRUE; + } + break; + default: + err = TRUE; + } + break; case 'L': switch (*pCmd++) { |
|
From: Vyacheslav F. <vf...@us...> - 2009-06-24 13:13:22
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv7363 Modified Files: pmodeme.cxx Log Message: Implemented +VEM and +VIT commands Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.51 retrieving revision 1.52 diff -C2 -d -r1.51 -r1.52 *** pmodeme.cxx 24 Jun 2009 12:48:37 -0000 1.51 --- pmodeme.cxx 24 Jun 2009 13:12:58 -0000 1.52 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.52 2009/06/24 13:12:58 vfrolov + * Implemented +VEM and +VIT commands + * * Revision 1.51 2009/06/24 12:48:37 vfrolov * Added stubs for +VGR and +VGT commands *************** *** 2224,2227 **** --- 2227,2258 ---- } break; + case 'E': + switch (*pCmd++) { + case 'M': // +VEM + switch (*pCmd++) { + case '=': + switch (*pCmd) { + case '?': + pCmd++; + resp += "\r\n(0)"; + crlf = TRUE; + break; + default: + if (ParseNum(&pCmd) != 0) + err = TRUE; + } + break; + case '?': + resp.sprintf("\r\n0"); + crlf = TRUE; + break; + default: + err = TRUE; + } + break; + default: + err = TRUE; + } + break; case 'G': switch (*pCmd++) { *************** *** 2288,2291 **** --- 2319,2350 ---- } break; + case 'I': + switch (*pCmd++) { + case 'T': // +VIT + switch (*pCmd++) { + case '=': + switch (*pCmd) { + case '?': + pCmd++; + resp += "\r\n(0)"; + crlf = TRUE; + break; + default: + if (ParseNum(&pCmd) != 0) + err = TRUE; + } + break; + case '?': + resp.sprintf("\r\n0"); + crlf = TRUE; + break; + default: + err = TRUE; + } + break; + default: + err = TRUE; + } + break; case 'L': switch (*pCmd++) { |
|
From: Vyacheslav F. <vf...@us...> - 2009-06-24 08:04:51
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv19119 Modified Files: pmodeme.cxx Log Message: Added semicolon concatenating of commands Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.48 retrieving revision 1.49 diff -C2 -d -r1.48 -r1.49 *** pmodeme.cxx 22 Jun 2009 16:05:48 -0000 1.48 --- pmodeme.cxx 24 Jun 2009 08:04:46 -0000 1.49 *************** *** 4,8 **** * T38FAX Pseudo Modem * ! * Copyright (c) 2001-2008 Vyacheslav Frolov * * Open H323 Project --- 4,8 ---- * T38FAX Pseudo Modem * ! * Copyright (c) 2001-2009 Vyacheslav Frolov * * Open H323 Project *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.49 2009/06/24 08:04:46 vfrolov + * Added semicolon concatenating of commands + * * Revision 1.48 2009/06/22 16:05:48 vfrolov * Added ability to dial extension numbers *************** *** 1554,1557 **** --- 1557,1561 ---- switch( *pCmd++ ) { case ' ': + case ';': break; case 'A': // Accept incoming call |
|
From: Vyacheslav F. <vf...@us...> - 2009-06-22 16:05:57
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv10199 Modified Files: pmodeme.cxx Log Message: Added ability to dial extension numbers Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** pmodeme.cxx 6 May 2009 09:17:23 -0000 1.47 --- pmodeme.cxx 22 Jun 2009 16:05:48 -0000 1.48 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.48 2009/06/22 16:05:48 vfrolov + * Added ability to dial extension numbers + * * Revision 1.47 2009/05/06 09:17:23 vfrolov * Enabled dialing characters # and * *************** *** 236,239 **** --- 239,245 ---- BYTE name() const { BYTE val; GetReg(byte, val); return val; } + DeclareRegisterByte(DialTimeComma, 8); + DeclareRegisterByte(DialTimeDTMF, 11); + DeclareRegisterByte(IfcByDCE, 45); DeclareRegisterByte(IfcByDTE, 46); *************** *** 408,414 **** enum { ! chEvent, chDelay, chHandle, }; --- 414,423 ---- enum { ! chEvent1, chDelay, + chEvent2, + chWaitAudioEngine, chHandle, + chWaitPlayTone, }; *************** *** 524,527 **** --- 533,538 ---- int dataType; + PDTMFEncoder *pPlayTone; + DLEData dleData; PINDEX dataCount; *************** *** 659,662 **** --- 670,675 ---- } + DialTimeComma(2); + DialTimeDTMF(70); Echo(TRUE); asciiResultCodes(TRUE); *************** *** 692,696 **** forceFaxMode(FALSE), connectionEstablished(FALSE), ! state(stCommand) { } --- 705,710 ---- forceFaxMode(FALSE), connectionEstablished(FALSE), ! state(stCommand), ! pPlayTone(NULL) { } *************** *** 714,717 **** --- 728,736 ---- _Detach(audioEngine); } + + if (pPlayTone) { + myPTRACE(1, "ModemEngineBody::~ModemEngineBody pPlayTone is not NULL"); + delete pPlayTone; + } } *************** *** 776,780 **** } else if (CallToken() == request("calltoken")) { if (state == stConnectWait) { ! param = chEvent; state = stConnectHandle; parent.SignalDataReady(); --- 795,799 ---- } else if (CallToken() == request("calltoken")) { if (state == stConnectWait) { ! param = chEvent1; state = stConnectHandle; parent.SignalDataReady(); *************** *** 915,918 **** --- 934,943 ---- audioEngine->SendOnIdle(EngineBase::dtCng); + if (state == stConnectHandle && param == chWaitAudioEngine) { + param = chHandle; + timeout.Stop(); + parent.SignalDataReady(); + } + myPTRACE(1, "ModemEngineBody::Attach audioEngine Attached"); return TRUE; *************** *** 964,967 **** --- 989,998 ---- timeout.Stop(); break; + case stConnectHandle: + if (param == chWaitPlayTone) { + param = chHandle; + timeout.Stop(); + } + break; } } *************** *** 1331,1334 **** --- 1362,1366 ---- case 'B': case 'C': + case 'D': case '*': case '#': { *************** *** 1546,1550 **** for (char ch ; (ch = *pCmd) != 0 && !err ; pCmd++) { ! switch (ch) { case '0': case '1': --- 1578,1583 ---- for (char ch ; (ch = *pCmd) != 0 && !err ; pCmd++) { ! if (!pPlayTone) { ! switch (ch) { case '0': case '1': *************** *** 1583,1588 **** --- 1616,1661 ---- local = FALSE; break; + case '@': + pPlayTone = new PDTMFEncoder; + break; default: err = TRUE; + } + } else { + switch (ch) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + case 'A': + case 'B': + case 'C': + case 'D': + case '*': + case '#': { + unsigned ms = P.DialTimeDTMF(); + + pPlayTone->AddTone(ch, ms); + myPTRACE(2, "Encoded DTMF tone \"" << ch << ":" << ms << "\", size=" << pPlayTone->GetSize()); + pPlayTone->Generate(' ', 0, 0, ms); + myPTRACE(2, "Encoded tone \"0 0:" << ms << "\", size=" << pPlayTone->GetSize()); + break; + } + case ',': { + unsigned ms = unsigned(P.DialTimeComma()) * 1000; + + pPlayTone->Generate(' ', 0, 0, ms); + myPTRACE(2, "Encoded tone \"0 0:" << ms << "\", size=" << pPlayTone->GetSize()); + break; + } + default: + err = TRUE; + } } } *************** *** 2668,2675 **** } ! if( timeout.Get() ) { PWaitAndSignal mutexWait(Mutex); switch( state ) { - case stConnectWait: case stReqModeAckWait: case stRecvBegWait: --- 2741,2747 ---- } ! if (timeout.Get()) { PWaitAndSignal mutexWait(Mutex); switch( state ) { case stReqModeAckWait: case stRecvBegWait: *************** *** 2682,2686 **** break; case stConnectHandle: ! param = chHandle; break; } --- 2754,2765 ---- break; case stConnectHandle: ! if (param == chDelay) { ! param = chEvent2; ! break; ! } ! case stConnectWait: ! resp = RC_NO_CARRIER(); ! state = stCommand; ! _ClearCall(); break; } *************** *** 2768,2772 **** PWaitAndSignal mutexWait(Mutex); switch(param) { ! case chEvent: if (forceFaxMode) { param = chDelay; --- 2847,2851 ---- PWaitAndSignal mutexWait(Mutex); switch(param) { ! case chEvent1: if (forceFaxMode) { param = chDelay; *************** *** 2774,2778 **** --- 2853,2897 ---- break; } + param = chEvent2; + case chEvent2: + if (pPlayTone && !audioEngine) { + param = chWaitAudioEngine; + timeout.Start(60000); + break; + } + param = chHandle; case chHandle: + if (pPlayTone) { + PBoolean err = FALSE; + + if (audioEngine && audioEngine->SendStart(EngineBase::dtRaw, 0)) { + PINDEX len = pPlayTone->GetSize(); + + if (len) { + const PInt16 *ps = pPlayTone->GetPointer(); + audioEngine->Send(ps, len*sizeof(*ps)); + } + + if (audioEngine->SendStop(FALSE, NextSeq())) { + param = chWaitPlayTone; + timeout.Start(60000); + } else { + err = TRUE; + } + } else { + err = TRUE; + } + + if (err) { + resp = RC_ERROR(); + state = stCommand; + _ClearCall(); + } + + delete pPlayTone; + pPlayTone = NULL; + break; + } + connectionEstablished = TRUE; |
|
From: Vyacheslav F. <vf...@us...> - 2009-05-29 13:04:37
|
Update of /cvsroot/t38modem/t38modem/opal In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv29074 Modified Files: h323cap.cxx Log Message: Removed CreateChannel() overloading Index: h323cap.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/opal/h323cap.cxx,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** h323cap.cxx 10 Sep 2008 11:15:00 -0000 1.2 --- h323cap.cxx 29 May 2009 13:03:56 -0000 1.3 *************** *** 4,8 **** * T38FAX Pseudo Modem * ! * Copyright (c) 2007-2008 Vyacheslav Frolov * * Open H323 Project --- 4,8 ---- * T38FAX Pseudo Modem * ! * Copyright (c) 2007-2009 Vyacheslav Frolov * * Open H323 Project *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.3 2009/05/29 13:03:56 vfrolov + * Removed CreateChannel() overloading + * * Revision 1.2 2008/09/10 11:15:00 frolov * Ported to OPAL SVN trunk *************** *** 71,85 **** //@} - /**@name Operations */ - //@{ - virtual H323Channel * CreateChannel( - H323Connection & connection, ///< Owner connection for channel - H323Channel::Directions dir, ///< Direction of channel - unsigned sessionID, ///< Session ID for RTP channel - const H245_H2250LogicalChannelParameters * param - ///< Parameters for channel - ) const; - //@} - protected: const OpalMediaFormat &mediaFormat; --- 74,77 ---- *************** *** 98,120 **** H323_REGISTER_CAPABILITY(MyH323_T38CapabilityCor, (const char *)OpalT38_IFP_COR) H323_REGISTER_CAPABILITY(MyH323_T38CapabilityPre, (const char *)OpalT38_IFP_PRE) - - ///////////////////////////////////////////////////////////////////////////// - // - // Implementation - // - ///////////////////////////////////////////////////////////////////////////// - H323Channel * MyH323_T38Capability::CreateChannel( - H323Connection & connection, - H323Channel::Directions direction, - unsigned int sessionID, - const H245_H2250LogicalChannelParameters * params) const - { - PTRACE(1, "MyH323_T38Capability::CreateChannel " - << connection - << " sessionID=" << sessionID - << " direction=" << direction); - - return connection.CreateRealTimeLogicalChannel(*this, direction, sessionID, params); - } ///////////////////////////////////////////////////////////////////////////// --- 90,93 ---- |
|
From: Vyacheslav F. <vf...@us...> - 2009-05-29 13:01:45
|
Update of /cvsroot/t38modem/t38modem/opal In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv28631 Modified Files: sipep.cxx h323ep.cxx Log Message: Ported to OPAL trunk Index: sipep.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/opal/sipep.cxx,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** sipep.cxx 7 Apr 2009 12:49:18 -0000 1.4 --- sipep.cxx 29 May 2009 13:01:40 -0000 1.5 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.5 2009/05/29 13:01:40 vfrolov + * Ported to OPAL trunk + * * Revision 1.4 2009/04/07 12:49:18 vfrolov * Implemented --sip-proxy and --sip-register options *************** *** 74,83 **** virtual PBoolean SetUpConnection(); - virtual RTP_Session * CreateSession( - const OpalTransport & transport, - unsigned sessionID, - RTP_QOS * rtpqos - ); - virtual OpalMediaFormatList GetMediaFormats() const; --- 77,80 ---- *************** *** 354,367 **** } - RTP_Session * MySIPConnection::CreateSession( - const OpalTransport & transport, - unsigned sessionID, - RTP_QOS * rtpqos) - { - PTRACE(3, "MySIPConnection::CreateSession " << sessionID << " t=" << transport); - - return SIPConnection::CreateSession(transport, sessionID, rtpqos); - } - OpalMediaFormatList MySIPConnection::GetMediaFormats() const { --- 351,354 ---- Index: h323ep.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/opal/h323ep.cxx,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** h323ep.cxx 24 Sep 2008 14:39:21 -0000 1.4 --- h323ep.cxx 29 May 2009 13:01:41 -0000 1.5 *************** *** 4,8 **** * T38FAX Pseudo Modem * ! * Copyright (c) 2007-2008 Vyacheslav Frolov * * Open H323 Project --- 4,8 ---- * T38FAX Pseudo Modem * ! * Copyright (c) 2007-2009 Vyacheslav Frolov * * Open H323 Project *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.5 2009/05/29 13:01:41 vfrolov + * Ported to OPAL trunk + * * Revision 1.4 2008/09/24 14:39:21 frolov * Removed capabilities adding *************** *** 77,86 **** virtual PBoolean SetUpConnection(); - virtual RTP_Session * CreateSession( - const OpalTransport & transport, - unsigned sessionID, - RTP_QOS * rtpqos - ); - virtual void AdjustMediaFormats( OpalMediaFormatList & mediaFormats ///< Media formats to use --- 80,83 ---- *************** *** 296,309 **** } - RTP_Session * MyH323Connection::CreateSession( - const OpalTransport & transport, - unsigned sessionID, - RTP_QOS * rtpqos) - { - PTRACE(3, "MyH323Connection::CreateSession " << sessionID << " t=" << transport); - - return H323Connection::CreateSession(transport, sessionID, rtpqos); - } - void MyH323Connection::AdjustMediaFormats(OpalMediaFormatList & mediaFormats) const { --- 293,296 ---- |
|
From: Vyacheslav F. <vf...@us...> - 2009-05-19 07:29:23
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv2098 Modified Files: drv_pty.cxx Log Message: Commented Termios code uncompatible with some systems Index: drv_pty.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/drv_pty.cxx,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** drv_pty.cxx 13 Mar 2009 09:44:32 -0000 1.9 --- drv_pty.cxx 19 May 2009 07:29:04 -0000 1.10 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.10 2009/05/19 07:29:04 vfrolov + * Commented Termios code uncompatible with some systems + * * Revision 1.9 2009/03/13 09:44:32 vfrolov * Fixed Segmentation fault (wrong PString usage) *************** *** 519,522 **** --- 522,526 ---- #endif + #if 0 struct termios Termios; *************** *** 539,542 **** --- 543,547 ---- return FALSE; } + #endif #ifdef USE_UNIX98_PTY |
|
From: Vyacheslav F. <vf...@us...> - 2009-05-06 09:17:43
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv16838 Modified Files: pmodeme.cxx Log Message: Enabled dialing characters # and * Index: pmodeme.cxx =================================================================== RCS file: /cvsroot/t38modem/t38modem/pmodeme.cxx,v retrieving revision 1.46 retrieving revision 1.47 diff -C2 -d -r1.46 -r1.47 *** pmodeme.cxx 10 Sep 2008 11:15:00 -0000 1.46 --- pmodeme.cxx 6 May 2009 09:17:23 -0000 1.47 *************** *** 25,28 **** --- 25,31 ---- * * $Log$ + * Revision 1.47 2009/05/06 09:17:23 vfrolov + * Enabled dialing characters # and * + * * Revision 1.46 2008/09/10 11:15:00 frolov * Ported to OPAL SVN trunk *************** *** 292,296 **** return TRUE; } ! Profile &operator=(const Profile &p); --- 295,299 ---- return TRUE; } ! Profile &operator=(const Profile &p); *************** *** 332,340 **** PCLASSINFO(Timeout, PTimer); public: ! Timeout(const PNotifier &callback, PBoolean _continuous = FALSE) ! : state(0), continuous(_continuous) { SetNotifier(callback); } ! void Start(unsigned period) { PWaitAndSignal mutexWait(Mutex); --- 335,343 ---- PCLASSINFO(Timeout, PTimer); public: ! Timeout(const PNotifier &callback, PBoolean _continuous = FALSE) ! : state(0), continuous(_continuous) { SetNotifier(callback); } ! void Start(unsigned period) { PWaitAndSignal mutexWait(Mutex); *************** *** 347,351 **** } } ! void Stop() { PWaitAndSignal mutexWait(Mutex); --- 350,354 ---- } } ! void Stop() { PWaitAndSignal mutexWait(Mutex); *************** *** 353,360 **** PTimer::operator=(0); } ! ! PBoolean Get() { ! PWaitAndSignal mutexWait(Mutex); ! if( state == 2 ) { state = continuous ? 1 : 0; return TRUE; --- 356,363 ---- PTimer::operator=(0); } ! ! PBoolean Get() { ! PWaitAndSignal mutexWait(Mutex); ! if (state == 2) { state = continuous ? 1 : 0; return TRUE; *************** *** 369,373 **** PTimer::OnTimeout(); } ! int state; PBoolean continuous; --- 372,376 ---- PTimer::OnTimeout(); } ! int state; PBoolean continuous; *************** *** 403,407 **** cdIncoming, }; ! enum { chEvent, --- 406,410 ---- cdIncoming, }; ! enum { chEvent, *************** *** 530,534 **** PMutex Mutex; ! DeclareStringParam(CallToken) DeclareStringParam(SrcNum) --- 533,537 ---- PMutex Mutex; ! DeclareStringParam(CallToken) DeclareStringParam(SrcNum) *************** *** 608,615 **** return; } ! for(;;) { PBYTEArray bresp; ! if (stop) break; --- 611,618 ---- return; } ! for(;;) { PBYTEArray bresp; ! if (stop) break; *************** *** 655,659 **** S[r] = 0; } ! Echo(TRUE); asciiResultCodes(TRUE); --- 658,662 ---- S[r] = 0; } ! Echo(TRUE); asciiResultCodes(TRUE); *************** *** 731,737 **** if (CallToken().IsEmpty()) return; ! timerRing.Stop(); ! PStringToString request; request.SetAt("modemtoken", parent.modemToken()); --- 734,740 ---- if (CallToken().IsEmpty()) return; ! timerRing.Stop(); ! PStringToString request; request.SetAt("modemtoken", parent.modemToken()); *************** *** 750,758 **** { myPTRACE(1, "ModemEngineBody::Request request={\n" << request << "}"); ! PString command = request("command"); request.SetAt("response", "reject"); ! if( command == "call" ) { PWaitAndSignal mutexWait(Mutex); --- 753,761 ---- { myPTRACE(1, "ModemEngineBody::Request request={\n" << request << "}"); ! PString command = request("command"); request.SetAt("response", "reject"); ! if( command == "call" ) { PWaitAndSignal mutexWait(Mutex); *************** *** 1002,1013 **** const char *pEnd = *ppCmd; int num = 0; ! for( ; isdigit(*pEnd) ; pEnd++ ) { num = (num * 10) + (*pEnd - '0'); } ! PINDEX len = PINDEX(pEnd - *ppCmd); *ppCmd = pEnd; ! if (len < minDigits || len > maxDigits || num > maxNum) return -1; --- 1005,1016 ---- const char *pEnd = *ppCmd; int num = 0; ! for( ; isdigit(*pEnd) ; pEnd++ ) { num = (num * 10) + (*pEnd - '0'); } ! PINDEX len = PINDEX(pEnd - *ppCmd); *ppCmd = pEnd; ! if (len < minDigits || len > maxDigits || num > maxNum) return -1; *************** *** 1022,1027 **** { PBoolean T; ! ! switch( *(*ppCmd - 2) ) { case 'T': T = TRUE; --- 1025,1030 ---- { PBoolean T; ! ! switch (*(*ppCmd - 2)) { case 'T': T = TRUE; *************** *** 1035,1040 **** int dt; ! ! switch( *(*ppCmd - 1) ) { case 'S': dt = EngineBase::dtSilence; --- 1038,1043 ---- int dt; ! ! switch (*(*ppCmd - 1)) { case 'S': dt = EngineBase::dtSilence; *************** *** 1049,1053 **** return FALSE; } ! if (dt == EngineBase::dtSilence) { switch( *(*ppCmd)++ ) { --- 1052,1056 ---- return FALSE; } ! if (dt == EngineBase::dtSilence) { switch( *(*ppCmd)++ ) { *************** *** 1541,1553 **** PBoolean local = FALSE; PBoolean setForceFaxMode = FALSE; ! ! for( char ch ; (ch = *pCmd) != 0 && !err ; pCmd++ ) { ! if( isdigit(ch) ) { ! if (local) ! LocalPartyName += ch; ! else ! num += ch; ! } else { ! switch( ch ) { case '.': case ' ': --- 1544,1567 ---- PBoolean local = FALSE; PBoolean setForceFaxMode = FALSE; ! ! for (char ch ; (ch = *pCmd) != 0 && !err ; pCmd++) { ! switch (ch) { ! case '0': ! case '1': ! case '2': ! case '3': ! case '4': ! case '5': ! case '6': ! case '7': ! case '8': ! case '9': ! case '*': ! case '#': ! if (local) ! LocalPartyName += ch; ! else ! num += ch; ! break; case '.': case ' ': *************** *** 1571,1578 **** default: err = TRUE; - } } } ! if (!err) { PWaitAndSignal mutexWait(Mutex); --- 1585,1591 ---- default: err = TRUE; } } ! if (!err) { PWaitAndSignal mutexWait(Mutex); *************** *** 1599,1603 **** state = stConnectWait; timeout.Start(60000); ! PStringToString request; request.SetAt("modemtoken", parent.modemToken()); --- 1612,1616 ---- state = stConnectWait; timeout.Start(60000); ! PStringToString request; request.SetAt("modemtoken", parent.modemToken()); *************** *** 1605,1609 **** request.SetAt("number", num); request.SetAt("localpartyname", LocalPartyName); ! Mutex.Signal(); callbackEndPoint(request, 3); --- 1618,1622 ---- request.SetAt("number", num); request.SetAt("localpartyname", LocalPartyName); ! Mutex.Signal(); callbackEndPoint(request, 3); *************** *** 1611,1615 **** PString response = request("response"); ! if (response == "confirm") { CallToken(request("calltoken")); --- 1624,1628 ---- PString response = request("response"); ! if (response == "confirm") { CallToken(request("calltoken")); *************** *** 1660,1665 **** { int val = ParseNum(&pCmd, 0, 1); ! ! switch( val ) { case 0: resp += "\r\n" + PString(Model); --- 1673,1678 ---- { int val = ParseNum(&pCmd, 0, 1); ! ! switch (val) { case 0: resp += "\r\n" + PString(Model); *************** *** 1711,1717 **** { int r = ParseNum(&pCmd); ! ! if( r >= 0 ) { ! switch( *pCmd++ ) { case '=': { --- 1724,1730 ---- { int r = ParseNum(&pCmd); ! ! if (r >= 0) { ! switch (*pCmd++) { case '=': { *************** *** 1725,1730 **** { BYTE val; ! ! if( P.GetReg(r, val) ) { resp.sprintf("\r\n%3.3u", (unsigned)val); crlf = TRUE; --- 1738,1743 ---- { BYTE val; ! ! if (P.GetReg(r, val)) { resp.sprintf("\r\n%3.3u", (unsigned)val); crlf = TRUE; *************** *** 1737,1743 **** { int b = ParseNum(&pCmd, 1, 1, 7); ! ! if( b >= 0 ) { ! switch( *pCmd++ ) { case '=': { --- 1750,1756 ---- { int b = ParseNum(&pCmd, 1, 1, 7); ! ! if (b >= 0) { ! switch (*pCmd++) { case '=': { *************** *** 1751,1756 **** { PBoolean val; ! ! if( P.GetBit(r, b, val) ) { resp.sprintf("\r\n%u", (unsigned)val); crlf = TRUE; --- 1764,1769 ---- { PBoolean val; ! ! if (P.GetBit(r, b, val)) { resp.sprintf("\r\n%u", (unsigned)val); crlf = TRUE; *************** *** 2469,2475 **** int len = buf.GetSize(); const BYTE *pBuf = buf; ! ! while( len > 0 ) { ! switch( state ) { case stCommand: { --- 2482,2488 ---- int len = buf.GetSize(); const BYTE *pBuf = buf; ! ! while (len > 0) { ! switch (state) { case stCommand: { *************** *** 2477,2485 **** lastPtyActivity = PTime(); } ! ! while( state == stCommand && len > 0 ) { const BYTE *pEnd = (const BYTE *)memchr(pBuf, '\r', len); ! ! if( pEnd == NULL ) { cmd += PString((const char *)pBuf, len); if( Echo() ) --- 2490,2498 ---- lastPtyActivity = PTime(); } ! ! while (state == stCommand && len > 0) { const BYTE *pEnd = (const BYTE *)memchr(pBuf, '\r', len); ! ! if (pEnd == NULL) { cmd += PString((const char *)pBuf, len); if( Echo() ) *************** *** 2520,2526 **** { int lendone = dleData.PutDleData(pBuf, len); ! ! if( lendone > 0 ) { ! if( Echo() ) bresp.Concatenate(PBYTEArray(pBuf, lendone)); len -= lendone; --- 2533,2539 ---- { int lendone = dleData.PutDleData(pBuf, len); ! ! if (lendone > 0) { ! if (Echo()) bresp.Concatenate(PBYTEArray(pBuf, lendone)); len -= lendone; *************** *** 2552,2557 **** switch( dt ) { case EngineBase::dtHdlc: ! if( dataCount < 2 && (dataCount + count) >= 2 && ! (Buf[1 - dataCount] & 0x08) == 0 ) { moreFrames = TRUE; } --- 2565,2571 ---- switch( dt ) { case EngineBase::dtHdlc: ! if (dataCount < 2 && (dataCount + count) >= 2 && ! (Buf[1 - dataCount] & 0x08) == 0) ! { moreFrames = TRUE; } *************** *** 2629,2633 **** { PString resp; ! { PWaitAndSignal mutexWait(Mutex); --- 2643,2647 ---- { PString resp; ! { PWaitAndSignal mutexWait(Mutex); *************** *** 2786,2797 **** request.SetAt("calltoken", CallToken()); request.SetAt("mode", "fax"); ! Mutex.Signal(); callbackEndPoint(request, 4); Mutex.Wait(); ! PString response = request("response"); ! ! if (response == "confirm" ) { } else { state = stCommand; --- 2800,2811 ---- request.SetAt("calltoken", CallToken()); request.SetAt("mode", "fax"); ! Mutex.Signal(); callbackEndPoint(request, 4); Mutex.Wait(); ! PString response = request("response"); ! ! if (response == "confirm") { } else { state = stCommand; *************** *** 3047,3056 **** break; } ! ! if( resp.GetLength() ) { resp = RC_PREF() + resp; PBYTEArray _bresp((const BYTE *)(const char *)resp, resp.GetLength()); ! myPTRACE(1, "<-- " << PRTHEX(_bresp)); bresp.Concatenate(_bresp); --- 3061,3070 ---- break; } ! ! if (resp.GetLength()) { resp = RC_PREF() + resp; PBYTEArray _bresp((const BYTE *)(const char *)resp, resp.GetLength()); ! myPTRACE(1, "<-- " << PRTHEX(_bresp)); bresp.Concatenate(_bresp); |
|
From: Vyacheslav F. <vf...@us...> - 2009-05-06 09:12:36
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv15483 Modified Files: version.h Log Message: Post-tagging version change Index: version.h =================================================================== RCS file: /cvsroot/t38modem/t38modem/version.h,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** version.h 10 Sep 2008 11:15:00 -0000 1.27 --- version.h 6 May 2009 09:12:22 -0000 1.28 *************** *** 30,34 **** #define MINOR_VERSION 1 #define BUILD_TYPE ReleaseCode ! #define BUILD_NUMBER 0 #endif // _T38M_VERSION_H --- 30,34 ---- #define MINOR_VERSION 1 #define BUILD_TYPE ReleaseCode ! #define BUILD_NUMBER 1 #endif // _T38M_VERSION_H |
|
From: Vyacheslav F. <vf...@us...> - 2009-04-16 16:37:59
|
Update of /cvsroot/t38modem/homepage In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv2551 Modified Files: index.html Log Message: Updated for v1.1.0 Index: index.html =================================================================== RCS file: /cvsroot/t38modem/homepage/index.html,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** index.html 16 Apr 2009 14:54:46 -0000 1.1 --- index.html 16 Apr 2009 16:37:46 -0000 1.2 *************** *** 9,48 **** <hr> ! <b>Download</b> t38modem from the SourceForge downloads section, or directly from the openh323 CVS repository, using:<br><br> ! For release 1.0.0:<p> ! <i>cvs -d:pserver:ano...@op...:/cvsroot/openh323 login </i> (press 'Enter' when asked for password), then<br> ! <i>cvs -z3 -d:pserver:ano...@op...:/cvsroot/openh323 co -r v1_0_0 t38modem</i><br><br> For the latest snapshot:<p> ! <i>cvs -d:pserver:ano...@op...:/cvsroot/openh323 login </i> (press 'Enter' when asked for password), then<br> ! <i>cvs -z3 -d:pserver:ano...@op...:/cvsroot/openh323 co t38modem</i><br><br> ! ! <hr> ! ! <b>Installation</b> instructions and documentation are available in the README file included in the distribution.<br><br> ! <hr> - <b>Mailing List</b> is currently <a href=http://www.openh323.org/mailman/listinfo/t38>here</a> [www.openh323.org]<br><br> <hr> ! <b>Mailing List Archives</b> are currently <a href=http://www.openh323.org/pipermail/t38/>here</a> [www.openh323.org]<br><br> <hr> <b>Miscelaneous</b><br><br> ! <li> Latest version is <b>1.0.0</b>. Please do NOT use version 0.6.2 as available at www.openh323.org. This site has not been updated for a while. ! <li> A lot of the references here are in regards to compiling/runing t38modem on linux, (RHES,CentOS,FC2,FC3,FC4 have been shown to work). ! <li> Version 1.0.0 introduces Unix98 PTY support, so 'Legacy Character Devices' are no longer needed. Note that the labels used for the actual devices change because of this. </li> ! <li> For versions prior to 1.0.0 you will need a linux kernel that has support for 'Legacy Character Devices'. If you do not have '/dev/ttyx0', you will need to recompile your kernel with 'CONFIG_LEGACY_PTYS=y', and 'CONFIG_LEGACY_PTY_COUNT=256. The menuconfig section is 'Device Drivers -> Character Devices -> Legacy (BSD) PTY Support'. This option is enabled in FC2 default kernels, but not in FC3 and FC4 default kernels. Click <a href=kernelcompile.txt>here</a> for some more info as to how to recompile your Fedora/CentOS/RedHat kernel. ! <li> You will need Pwlib and OpenH323 available from <a href=http://www.voxgratia.org/>http://www.voxgratia.org/</a> ! <li> README file for latest release is available <a href=README.txt>here</a>. ! <li> CHANGES file for latest release is available <a href=CHANGES.txt>here</a>. ! <li> Use the mailing list if you have any issues/questions! <br><br> <hr> ! Last updated: <b>10 Sep 2008</b> </html> --- 9,62 ---- <hr> ! <b>Download</b> t38modem from the ! <a href="http://sourceforge.net/project/showfiles.php?group_id=152230&package_id=168445">SourceForge downloads section</a>, ! or directly from the openh323 CVS repository, using:<br><br> ! For the latest release:<p> ! <i> ! cvs -d:pserver:ano...@t3...:/cvsroot/t38modem login ! </i> (press 'Enter' when asked for password), then<br> ! <i> ! cvs -z3 -d:pserver:ano...@t3...:/cvsroot/t38modem co -P -r RELEASED t38modem ! </i><br><br> For the latest snapshot:<p> ! <i> ! cvs -d:pserver:ano...@t3...:/cvsroot/t38modem login ! </i> (press 'Enter' when asked for password), then<br> ! <i> ! cvs -z3 -d:pserver:ano...@t3...:/cvsroot/t38modem co -P t38modem ! </i><br><br> <hr> ! <b>Installation</b> instructions and documentation are available in the ReadMe.txt file included in the distribution.<br><br> <hr> <b>Miscelaneous</b><br><br> ! <li> UNIX Users: Version 1.0.0 introduces Unix98 PTY support, so 'Legacy Character Devices' are no longer needed. Note that the labels used for the actual devices change because of this. ! For versions prior to 1.0.0 you will need a linux kernel that has support for 'Legacy Character Devices'. If you do not have '/dev/ttyx0', you will need to recompile your kernel with 'CONFIG_LEGACY_PTYS=y', and 'CONFIG_LEGACY_PTY_COUNT=256. The menuconfig section is 'Device Drivers -> Character Devices -> Legacy (BSD) PTY Support'. This option is enabled in FC2 default kernels, but not in FC3 and FC4 default kernels. Click <a href=kernelcompile.txt>here</a> for some more info as to how to recompile your Fedora/CentOS/RedHat kernel. ! <li> Windows Users: You need two COM ports connected via Null-modem cable to create one modem. Use ! <a href="http://com0com.sourceforge.net/">Null-modem emulator</a> ! for this. ! <li> You will need ! <a href="http://www.opalvoip.org/">OPAL</a> ! or ! <a href="http://www.h323plus.org/">H323plus</a> ! or ! <a href="http://openh323.sourceforge.net/">OpenH323</a>. ! <li> ReadMe.txt file for latest release is available ! <a href="http://t38modem.cvs.sourceforge.net/*checkout*/t38modem/t38modem/ReadMe.txt?revision=RELEASED">here</a>. ! <li> Changes.txt file for latest release is available ! <a href="http://t38modem.cvs.sourceforge.net/*checkout*/t38modem/t38modem/Changes.txt?revision=RELEASED">here</a>. ! <li> Use the ! <a href="http://sourceforge.net/forum/?group_id=152230">forums</a> ! if you have any issues/questions! <br><br> <hr> ! Last updated: <b>16 Apr 2009</b> </html> |
|
From: Vyacheslav F. <vf...@us...> - 2009-04-16 14:55:02
|
Update of /cvsroot/t38modem/homepage In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv22143 Added Files: index.html kernelcompile.txt Log Message: Initial revision --- NEW FILE: kernelcompile.txt --- Kernel RPM re-compile from source RPM Download the .src.rpm package from your local mirror. (As of FC3, the default build no longer includes the 'kernel-source' package, sadly, so we need to get it manually) Install it: rpm -ivh kernel-2.6.12-1.1376_FC3.src.rpm cd /usr/src/redhat/SOURCES edit all .config files that apply (i686 for example), and add the two lines below to the end of it. CONFIG_LEGACY_PTYS=y CONFIG_LEGACY_PTY_COUNT=256 cd /usr/src/redhat/SPECS edit the spec file identify the custom build release (remove the 'rhbsys' line at the end): %define release %(R="$Revision: 1.1 $"; RR="${R##: }"; echo ${RR%%?})_FC3_pty rpmbuild -ba --target i686 kernel-2.6.spec find the rpm in /root/src/redhat/RPMS/i686, and install using rpm -ivh check your grub.conf to make sure it's the default boot kernel, reboot. after reboot, check that the new kernel is running, and verify the existance of '/dev/ttyx0' (and other /dev/ttyx[]) devices. --- NEW FILE: index.html --- <html> <title> t38modem at SourceForge </title> <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=148904&type=3" width="125" height="37" border="0" alt="SourceForge.net Logo" /></a> <a href="http://sourceforge.net/projects/t38modem">t38modem project</a> [sourceforge.net]. <h3>Some quick starters to get you running with t38modem.</h3> <hr> <b>Download</b> t38modem from the SourceForge downloads section, or directly from the openh323 CVS repository, using:<br><br> For release 1.0.0:<p> <i>cvs -d:pserver:ano...@op...:/cvsroot/openh323 login </i> (press 'Enter' when asked for password), then<br> <i>cvs -z3 -d:pserver:ano...@op...:/cvsroot/openh323 co -r v1_0_0 t38modem</i><br><br> For the latest snapshot:<p> <i>cvs -d:pserver:ano...@op...:/cvsroot/openh323 login </i> (press 'Enter' when asked for password), then<br> <i>cvs -z3 -d:pserver:ano...@op...:/cvsroot/openh323 co t38modem</i><br><br> <hr> <b>Installation</b> instructions and documentation are available in the README file included in the distribution.<br><br> <hr> <b>Mailing List</b> is currently <a href=http://www.openh323.org/mailman/listinfo/t38>here</a> [www.openh323.org]<br><br> <hr> <b>Mailing List Archives</b> are currently <a href=http://www.openh323.org/pipermail/t38/>here</a> [www.openh323.org]<br><br> <hr> <b>Miscelaneous</b><br><br> <li> Latest version is <b>1.0.0</b>. Please do NOT use version 0.6.2 as available at www.openh323.org. This site has not been updated for a while. <li> A lot of the references here are in regards to compiling/runing t38modem on linux, (RHES,CentOS,FC2,FC3,FC4 have been shown to work). <li> Version 1.0.0 introduces Unix98 PTY support, so 'Legacy Character Devices' are no longer needed. Note that the labels used for the actual devices change because of this. </li> <li> For versions prior to 1.0.0 you will need a linux kernel that has support for 'Legacy Character Devices'. If you do not have '/dev/ttyx0', you will need to recompile your kernel with 'CONFIG_LEGACY_PTYS=y', and 'CONFIG_LEGACY_PTY_COUNT=256. The menuconfig section is 'Device Drivers -> Character Devices -> Legacy (BSD) PTY Support'. This option is enabled in FC2 default kernels, but not in FC3 and FC4 default kernels. Click <a href=kernelcompile.txt>here</a> for some more info as to how to recompile your Fedora/CentOS/RedHat kernel. <li> You will need Pwlib and OpenH323 available from <a href=http://www.voxgratia.org/>http://www.voxgratia.org/</a> <li> README file for latest release is available <a href=README.txt>here</a>. <li> CHANGES file for latest release is available <a href=CHANGES.txt>here</a>. <li> Use the mailing list if you have any issues/questions! <br><br> <hr> Last updated: <b>10 Sep 2008</b> </html> |
|
From: Vyacheslav F. <vf...@us...> - 2009-04-16 11:44:04
|
Update of /cvsroot/t38modem/t38modem In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv19285 Modified Files: Changes.txt Log Message: Added Changelog for t38modem 1.1.0 Index: Changes.txt =================================================================== RCS file: /cvsroot/t38modem/t38modem/Changes.txt,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Changes.txt 17 Jul 2007 10:07:34 -0000 1.7 --- Changes.txt 16 Apr 2009 11:43:44 -0000 1.8 *************** *** 8,12 **** */ ! Changelog for t38modem 1.0.0 * Added OPAL support. --- 8,26 ---- */ ! Changelog for t38modem 1.1.0 (Apr 16 2009) ! ! * Fixed 100% CPU usage at the begining of T.38 session. ! * Fixed transmission fail with ECM. ! * Added H323Plus support. ! * Added OPAL v3.6 Lalande support. ! * (OPAL) Added STUN support. ! * (OPAL) Added ability to set outbound proxy for SIP. ! * (OPAL) Added ability to set registrar for SIP. ! * (OPAL) options --h323-redundancy, --h323-repeat, --sip-redundancy ! and --sip-repeat are disabled (because no support in OPAL). ! ! Oct 6 2008 - t38modem moved to http://sourceforge.net/projects/t38modem/. ! ! Changelog for t38modem 1.0.0 (Aug 29 2008) * Added OPAL support. *************** *** 19,23 **** * Added Unix98 PTY support. ! Changelog for t38modem 0.8.4 * Fixed incompatibilities with some endpoints. --- 33,37 ---- * Added Unix98 PTY support. ! Changelog for t38modem 0.8.4 (Mar 22 2007) * Fixed incompatibilities with some endpoints. *************** *** 30,44 **** openh323 since version 1.19.1. ! Changelog for t38modem 0.8.3 * Fixed race condition on start up. * Added -v option to keep Debian packaging happy. ! Changelog for t38modem 0.8.2 * Fixed incompatibilities with some endpoints. * Fixed UDPTL size. ! Changelog for t38modem 0.8.1 * Fixed incompatibilities with some fax applications. --- 44,58 ---- openh323 since version 1.19.1. ! Changelog for t38modem 0.8.3 (Jun 29 2006) * Fixed race condition on start up. * Added -v option to keep Debian packaging happy. ! Changelog for t38modem 0.8.2 (Sep 14 2005) * Fixed incompatibilities with some endpoints. * Fixed UDPTL size. ! Changelog for t38modem 0.8.1 (Mar 31 2005) * Fixed incompatibilities with some fax applications. *************** *** 46,54 **** * Fixed some bugs. ! Changelog for t38modem 0.8.0 * Ported to Windows. ! Changelog for t38modem 0.7.0 * Implemented FCS generation. The DCE transfers FCS octets after --- 60,68 ---- * Fixed some bugs. ! Changelog for t38modem 0.8.0 (Oct 29 2004) * Ported to Windows. ! Changelog for t38modem 0.7.0 (Jul 7 2004) * Implemented FCS generation. The DCE transfers FCS octets after *************** *** 58,59 **** --- 72,87 ---- * Implemented ECM support. + Jun 2003 - t38modem moved to http://openh323.sourceforge.net/. + Jun 6 2003 - t38modem 0.6.3 released. + Jan 15 2003 - t38modem 0.6.2 released. + Jan 6 2003 - t38modem 0.6.1 released. + Dec 12 2002 - t38modem 0.6.0 released. + Nov 14 2002 - t38modem 0.5.0 released. + Aug 16 2002 - t38modem 0.4.2 released. + Jul 9 2002 - t38modem 0.4.1 released. + Mar 26 2002 - t38modem 0.4.0 released. + Feb 12 2002 - t38modem 0.1.0 released. + Jan 1 2002 - t38modem commited to http://www.openh323.org/. + Dec 2001 - t38modem can send faxes. + Oct 2001 - t38modem can receive faxes. + Sep 2001 - t38modem project started. |