commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r10088 - openbts/branches/developers/dburgess00/veryea


From: dburgess00
Subject: [Commit-gnuradio] r10088 - openbts/branches/developers/dburgess00/veryearly/Control
Date: Fri, 28 Nov 2008 23:27:42 -0700 (MST)

Author: dburgess00
Date: 2008-11-28 23:27:41 -0700 (Fri, 28 Nov 2008)
New Revision: 10088

Modified:
   openbts/branches/developers/dburgess00/veryearly/Control/CallControl.cpp
Log:
Forgot mode change for MOC call control.


Modified: 
openbts/branches/developers/dburgess00/veryearly/Control/CallControl.cpp
===================================================================
--- openbts/branches/developers/dburgess00/veryearly/Control/CallControl.cpp    
2008-11-29 06:20:48 UTC (rev 10087)
+++ openbts/branches/developers/dburgess00/veryearly/Control/CallControl.cpp    
2008-11-29 06:27:41 UTC (rev 10088)
@@ -559,8 +559,21 @@
        // If we need a TCH assignment, we do it here.
        gTransactionTable.update(transaction);
        CLDCOUT("MOC: transaction: " << transaction);
-       if (veryEarly) 
MOCController(transaction,dynamic_cast<TCHFACCHLogicalChannel*>(LCH));
-       else assignTCHF(dynamic_cast<SDCCHLogicalChannel*>(LCH),TCH);
+       if (veryEarly) {
+               // For very early assignment, we need a mode change.
+               static const L3ChannelMode mode(L3ChannelMode::SpeechV1);
+               LCH->send(L3ChannelModeModify(LCH->channelDescription(),mode));
+               const L3ChannelModeModifyAcknowledge *ack =
+                       
dynamic_cast<L3ChannelModeModifyAcknowledge*>(getMessage(LCH));
+               if (!ack) throw UnexpectedMessage();
+               // Cause 0x06 is "channel unacceptable"
+               if (ack->mode() != mode) return 
abortCall(transaction,LCH,L3Cause(0x06));
+               
MOCController(transaction,dynamic_cast<TCHFACCHLogicalChannel*>(LCH));
+       } else {
+               // For late assignment, send the TCH assignment now.
+               // This dispatcher on the next channel will continue the 
transaction.
+               assignTCHF(dynamic_cast<SDCCHLogicalChannel*>(LCH),TCH);
+       }
 }
 
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]