• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* ------------------------------------------------------------------
2  * Copyright (C) 1998-2009 PacketVideo
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13  * express or implied.
14  * See the License for the specific language governing permissions
15  * and limitations under the License.
16  * -------------------------------------------------------------------
17  */
18 // ----------------------------------------------------------------------
19 //
20 // This Software is an original work of authorship of PacketVideo Corporation.
21 // Portions of the Software were developed in collaboration with NTT  DoCoMo,
22 // Inc. or were derived from the public domain or materials licensed from
23 // third parties.  Title and ownership, including all intellectual property
24 // rights in and to the Software shall remain with PacketVideo Corporation
25 // and NTT DoCoMo, Inc.
26 //
27 // -----------------------------------------------------------------------
28 
29 #include    "tscmain.h"
30 #include    "h245pri.h"         /* Primitive Infomation Header               */
31 #include    "h245_deleter.h"    // (RAN-LEAK) - Prototypes for deep delete
32 #include    "h245_copier.h"     // (RAN-LEAK) - Prototypes for deep copy
33 #include    "cpvh223multiplex.h"
34 #include    "logicalchannel.h"
35 #include    "oscl_mem.h"
36 #include    "tsc_constants.h"
37 #include    "tsc_statemanager.h"
38 #include    "tsc_lc.h"
39 #include    "tsc_clc.h"
40 #include    "tsc_blc.h"
41 #include    "tsc_mt.h"
42 #include    "tsc_component.h"
43 #include    "tsc_channelcontrol.h"
44 #include    "tsc_capability.h"
45 
46 // =============================================================
47 // =============================================================
48 // =====   HANDLING ROUTINES FOR USER EVENTS (FROM APP)    =====
49 // =============================================================
50 // =============================================================
51 
52 /*****************************************************************************/
53 /*  function name        : OpenSession                                   */
54 /*  input data           : PS_ControlMsgHeader         Dummy Pointer                */
55 /*  output data          : uint32                 Terminal Status              */
56 /*  draw time            : '96.10.09                                         */
57 /*---------------------------------------------------------------------------*/
58 /*  Note: This one is now called automatically when the TscMain thread      */
59 /*        is created.  No queue message is required. (RAN)                   */
60 /*                                                                           */
61 /*              Copyright (C) 1996 NTT DoCoMo                                */
62 /*****************************************************************************/
OpenSession(void)63 uint32 TSC_324m::OpenSession(void)
64 {
65     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
66                     (0, "TSC_324m: OpenSession.\n"));
67 
68     if (iSuppInfoLen)
69     {
70         /* Send supp info in UII msg  and wait for TCS from remote terminal */
71         Tsc_UII_Alphanumeric(iSuppInfo, (uint16)iSuppInfoLen);
72     }
73     else
74     {
75         CEStart();      // INITIATE CE-SEND
76         Tsc_IdcVi();    // Send vendor information
77         MSDStart();     // INITIATE MSD
78     }
79     return(PhaseD_CSUP);
80 }
81 
82 // ----------------------------------------------------------------
83 // NOTE: The 'PhaseF Closing Channels' routines are removed.  (RAN)
84 // These were:
85 //   Status09Event12(), Status09Event13(),
86 //   Status09Event17(), Status09Event18()
87 // ----------------------------------------------------------------
88 
89 // =============================================================
90 // SessionClose_Comm()
91 //
92 // TSC Session Close (in Ongoing Communication) command received from user.
93 // =============================================================
SessionClose_Comm()94 uint32 TSC_324m::SessionClose_Comm()
95 {
96     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
97                     (0, "TSC_324m: SessionClose_Comm ... Start.\n"));
98     iTerminalStatus = PhaseF_End;
99     StopData();
100     iTSCcomponent->CloseChannels();
101     /* Primitive Send */
102     EndSessionCommand();
103     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
104                     (0, "TSC_324m: EndSession complete.\n"));
105     return(iTerminalStatus);
106 }
107 
108 // =============================================================
109 // SessionClose_CSUP()
110 //
111 // TSC Session Close (in Call Setup).
112 // =============================================================
SessionClose_CSUP()113 uint32 TSC_324m::SessionClose_CSUP()
114 {
115     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
116                     (0, "TSC_324m::SessionClose_CSUP"));
117     iTerminalStatus = PhaseF_End;
118     SignalCsupComplete(PVMFFailure);
119     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
120                     (0, "TSC_324m: EndSession complete."));
121     return(iTerminalStatus);
122 }
123 
124 
125 // =============================================================
126 // =============================================================
127 // === HANDLING ROUTINES FOR SIGNAL ENTITY EVENTS (FROM 245) ===
128 // =============================================================
129 // =============================================================
130 
131 /*****************************************************************************/
132 /*  function name        : LcEtbIdc           E_PtvId_Lc_Etb_Idc  */
133 /*  function outline     : Status04/Event09 procedure                        */
134 /*  function discription : Status04Event09( pReceiveInf )                */
135 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
136 /*  output data          : uint32                 Terminal Status              */
137 /*  draw time            : '96.10.09                                         */
138 /*---------------------------------------------------------------------------*/
139 /*  amendment career(x)  :                                                   */
140 /*                                                                           */
141 /*              Copyright (C) 1996 NTT DoCoMo                                */
142 /*****************************************************************************/
LcEtbIdc(PS_ControlMsgHeader pReceiveInf)143 uint32 TSC_324m::LcEtbIdc(PS_ControlMsgHeader pReceiveInf)
144 {
145     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
146                     (0, "TSC_324m: LcEtbIdc.\n"));
147     return iTSCcomponent->LcEtbIdc(pReceiveInf);
148 }
149 
150 /*****************************************************************************/
151 /*  function name        : Status04Event10           E_PtvId_Lc_Etb_Cfm  */
152 /*  function outline     : Status04/Event10 procedure                        */
153 /*  function discription : Status04Event10( pReceiveInf )                */
154 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
155 /*  output data          : uint32                 Terminal Status              */
156 /*  draw time            : '96.10.09                                         */
157 /*---------------------------------------------------------------------------*/
158 /*  amendment career(x)  :                                                   */
159 /*                                                                           */
160 /*              Copyright (C) 1996 NTT DoCoMo                                */
161 /*****************************************************************************/
LcEtbCfm(PS_ControlMsgHeader pReceiveInf)162 uint32 TSC_324m::LcEtbCfm(PS_ControlMsgHeader pReceiveInf)
163 {
164     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
165                     (0, "TSC_324m: LcEtbCfm.\n"));
166     return iTSCcomponent->LcEtbCfm(pReceiveInf);
167 }
168 
169 // =============================================================
170 // Status04Event11()                     E_PtvId_Lc_Rls_Idc
171 //
172 // This is LCSE RELEASE.indication.
173 // =============================================================
LcRlsIdc(PS_ControlMsgHeader pReceiveInf)174 uint32 TSC_324m::LcRlsIdc(PS_ControlMsgHeader pReceiveInf)
175 {
176     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
177                     (0, "TSC_324m: LcRlsIdc.\n"));
178     return iTSCcomponent->LcRlsIdc(pReceiveInf);
179 }
180 
181 /*****************************************************************************/
182 /*  function name        : Status04Event13           E_PtvId_Lc_Err_Idc  */
183 /*  function outline     : Status04/Event13 procedure                        */
184 /*  function discription : Status04Event13( pReceiveInf )                */
185 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
186 /*  output data          : uint32                 Terminal Status              */
187 /*  draw time            : '96.10.09                                         */
188 /*---------------------------------------------------------------------------*/
189 /*  amendment career(x)  :                                                   */
190 /*                                                                           */
191 /*              Copyright (C) 1996 NTT DoCoMo                                */
192 /*****************************************************************************/
LcErrIdc(PS_ControlMsgHeader pReceiveInf)193 uint32 TSC_324m::LcErrIdc(PS_ControlMsgHeader  pReceiveInf)
194 {
195     OSCL_UNUSED_ARG(pReceiveInf);
196     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
197                     (0, "TSC_324m: Logical channel error indication.\n"));
198 
199     /*
200     ErrCode_Lc_A ,      // ( 6) inappropriate message ( OpenLogicalChannelAck )
201 
202     ErrCode_Lc_B ,      // ( 7) inappropriate message ( OpenLogicalChannelReject )
203 
204     ErrCode_Lc_C ,      // ( 8) inappropriate message ( CloseLogicalChannelAck )
205 
206     ErrCode_Lc_D ,      // ( 9) no response from Peer LCSE / B-LCSE ( Timer T103 Expiry ) */
207 
208     /*  switch(pReceiveInf->pParameter){
209           case ErrCode_Lc_A:
210             break;
211           case ErrCode_Lc_B:
212             break;
213           case ErrCode_Lc_C:
214             break;
215           case ErrCode_Lc_D:
216             break;
217         }
218     */
219     /* Buffer Free */
220 //    OSCL_DEFAULT_FREE( pReceiveInf->pParameter );
221 //    OSCL_DEFAULT_FREE( pReceiveInf );
222 
223     return(PhaseE_Comm);
224 }
225 
226 /*****************************************************************************/
227 /*  function name        : Status04Event14          E_PtvId_Blc_Etb_Idc  */
228 /*  function outline     : Status04/Event14 procedure                        */
229 /*  function discription : Status04Event14( pReceiveInf )                */
230 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
231 /*  output data          : uint32                 Terminal Status              */
232 /*  draw time            : '96.10.09                                         */
233 /*---------------------------------------------------------------------------*/
234 /*  amendment career(x)  :                                                   */
235 /*                                                                           */
236 /*              Copyright (C) 1996 NTT DoCoMo                                */
237 /*****************************************************************************/
BlcEtbIdc(PS_ControlMsgHeader pReceiveInf)238 uint32 TSC_324m::BlcEtbIdc(PS_ControlMsgHeader pReceiveInf)
239 {
240     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
241                     (0, "TSC_324m: BlcEtbIdc.\n"));
242     return iTSCcomponent->BlcEtbIdc(pReceiveInf);
243 }
244 
245 
246 /*****************************************************************************/
247 /*  function name        : Status04Event15          E_PtvId_Blc_Etb_Cfm  */
248 /*  function outline     : Status04/Event15 procedure                        */
249 /*  function discription : Status04Event15( pReceiveInf )                */
250 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
251 /*  output data          : uint32                 Terminal Status              */
252 /*  draw time            : '96.10.09                                         */
253 /*---------------------------------------------------------------------------*/
254 /*  amendment career(x)  :                                                   */
255 /*                                                                           */
256 /*              Copyright (C) 1996 NTT DoCoMo                                */
257 /*****************************************************************************/
BlcEtbCfm(PS_ControlMsgHeader pReceiveInf)258 uint32 TSC_324m::BlcEtbCfm(PS_ControlMsgHeader pReceiveInf)
259 {
260     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
261                     (0, "TSC_324m::BlcEtbCfm forward(%d), reverse(%d))\n",
262                      pReceiveInf->InfSupplement1,  pReceiveInf->InfSupplement2));
263     if (iLoopbackMode == PV_LOOPBACK_NONE)
264     {
265         iTSCcomponent->BlcEtbCfm(pReceiveInf);
266     }
267     return PhaseE_Comm;
268 }
269 
270 // =============================================================
271 // Status04Event16()                   E_PtvId_Blc_Rls_Idc
272 //
273 // This is BLCSE RELEASE.indication.  It is called when
274 // a Bi-Dir OLCReject is received.  It could be from an incoming or outgoing SE
275 // =============================================================
BlcRlsIdc(PS_ControlMsgHeader pReceiveInf)276 uint32 TSC_324m::BlcRlsIdc(PS_ControlMsgHeader pReceiveInf)
277 {
278     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
279                     (0, "TSC_324m: BlcRlsIdc.\n"));
280     return iTSCcomponent->BlcRlsIdc(pReceiveInf);
281 }
282 
283 
284 /*****************************************************************************/
285 /*  function name        : Status04Event18          E_PtvId_Blc_Err_Idc  */
286 /*  function outline     : Status04/Event18 procedure                        */
287 /*  function discription : Status04Event18( pReceiveInf )                */
288 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
289 /*  output data          : uint32                 Terminal Status              */
290 /*  draw time            : '96.10.09                                         */
291 /*---------------------------------------------------------------------------*/
292 /*  amendment career(x)  :                                                   */
293 /*                                                                           */
294 /*              Copyright (C) 1996 NTT DoCoMo                                */
295 /*****************************************************************************/
BlcErrIdc(PS_ControlMsgHeader pReceiveInf)296 uint32 TSC_324m::BlcErrIdc(PS_ControlMsgHeader  pReceiveInf)
297 {
298     OSCL_UNUSED_ARG(pReceiveInf);
299     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
300                     (0, "TSC_324m::BlcErrIdc "));
301     return PhaseE_Comm;
302 }
303 
304 /*****************************************************************************/
305 /*  function name        : Status04Event22           E_PtvId_Mt_Trf_Idc  */
306 /*  function outline     : Status04/Event22 procedure                        */
307 /*  function discription : Status04Event22( pReceiveInf )                */
308 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
309 /*  output data          : uint32                 Terminal Status              */
310 /*  draw time            : '96.10.09                                         */
311 /*---------------------------------------------------------------------------*/
312 /*  amendment career(x)  :                                                   */
313 /*                                                                           */
314 /*              Copyright (C) 1996 NTT DoCoMo                                */
315 /*****************************************************************************/
Status04Event22(PS_ControlMsgHeader pReceiveInf)316 uint32 TSC_324m::Status04Event22(PS_ControlMsgHeader  pReceiveInf)
317 {
318     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
319                     (0, "TSC_324m::Status04Event22"));
320     return MuxTableTransferIndication(pReceiveInf);
321 }
322 
MuxTableTransferIndication(PS_ControlMsgHeader pReceiveInf)323 uint32 TSC_324m::MuxTableTransferIndication(PS_ControlMsgHeader  pReceiveInf)
324 {
325     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
326                     (0, "TSC_324m::MuxTableTransferIndication, wnsrp status=%d",
327                      iSrp->WnsrpStatusGet()));
328     PS_MuxDescriptor pMux = (PS_MuxDescriptor)pReceiveInf->pParameter;
329     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
330                     (0, "TSC_324m::Status04Event22 Received mux entries sn=%d, num mux entries=%d",
331                      pReceiveInf->InfSupplement1, pMux->size_of_multiplexEntryDescriptors));
332 
333     CPVMultiplexDescriptor desc(pMux);
334     ((CPVH223Multiplex*)iH223)->SetIncomingMuxTableEntries(&desc);
335 
336     /* If WNSRP is enabled and Mux Entry TSC_WNSRP_MUX_ENTRY_NUMBER is received, disable WNSRP */
337     if (iSrp->WnsrpStatusGet() == SRP::WNSRP_TX_SUPPORT)
338     {
339         PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
340                         (0, "TSC_324m::Status04Event22 WNSRP is ON.  Checking for mux entry 15."));
341         for (unsigned entry_num = 0; entry_num < (unsigned)pMux->size_of_multiplexEntryDescriptors; entry_num++)
342         {
343             if (pMux->multiplexEntryDescriptors[entry_num].multiplexTableEntryNumber ==
344                     TSC_WNSRP_MUX_ENTRY_NUMBER)
345             {
346                 PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
347                                 (0, "TSC_324m::Status04Event22 Received new descriptor for mux entry 15.  Disabling WNSRP."));
348                 iSrp->DisableWNSRPSupport();
349                 PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
350                                 (0, "TSC_324m::Status04Event22 Received new descriptor for mux entry 15.  Flushing control channel."));
351                 /* Flush the control logical channel */
352                 PVMFStatus aStatus = PVMFFailure;
353                 H223OutgoingChannelPtr outgoing_control_channel;
354                 aStatus = iH223->GetOutgoingChannel(0, outgoing_control_channel);
355                 if (aStatus == PVMFSuccess)
356                 {
357                     outgoing_control_channel->Flush();
358                 }
359                 else
360                 {
361                     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_WARNING,
362                                     (0, "TSC_324m::MuxTableTransferIndication Error - Failed to lookup logical channel 0"));
363                     return iTerminalStatus;
364                 }
365                 PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
366                                 (0, "TSC_324m::Status04Event22 Received new descriptor for mux entry 15.  Done."));
367                 break;
368             }
369         }
370     }
371     /* TRANSFER.response(MT) Primitive Send */
372     iTSCmt.MtTrfRps(pReceiveInf->InfSupplement1, pMux); // Pass pMux on for response.
373     desc.descriptor = NULL;
374     return 0;
375 }
376 
377 /*****************************************************************************/
378 /*  function name        : Status04Event23            E_PtvId_Mt_Trf_Cfm */
379 /*  function outline     : Status04/Event23 procedure                        */
380 /*  function discription : Status04Event23( pReceiveInf )                */
381 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
382 /*  output data          : uint32                 Terminal Status              */
383 /*  draw time            : '96.10.09                                         */
384 /*---------------------------------------------------------------------------*/
385 /*  amendment career(x)  :                                                   */
386 /*                                                                           */
387 /*              Copyright (C) 1996 NTT DoCoMo                                */
388 /*****************************************************************************/
Status04Event23(PS_ControlMsgHeader pReceiveInf)389 uint32 TSC_324m::Status04Event23(PS_ControlMsgHeader  pReceiveInf)
390 {
391     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
392                     (0, "TSC_324m::Status04Event23 sn=%d", pReceiveInf->InfSupplement1));
393     iTSCcomponent->MuxTableSendComplete(pReceiveInf->InfSupplement1, PVMFSuccess);
394     return 0;
395 }
396 
397 
TcsMsdComplete()398 OsclAny TSC_324m::TcsMsdComplete()
399 {
400     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
401                     (0, "TSC_324m::TcsMsdComplete"));
402     SignalCsupComplete(PVMFSuccess);
403     iTSCcomponent->TcsMsdComplete();
404 }
405 
SignalCsupComplete(PVMFStatus status)406 OsclAny TSC_324m::SignalCsupComplete(PVMFStatus status)
407 {
408     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
409                     (0, "TSC_324m::SignalCsupComplete(%d)\n", status));
410     iObserver->ConnectComplete(status);
411     // update the node state
412     if (status == PVMFSuccess)
413     {
414         iTerminalStatus = PhaseE_Comm;
415     }
416 }
417 
418 /*****************************************************************************/
419 /*  function name        : Status04Event24            E_PtvId_Mt_Rjt_Idc */
420 /*  function outline     : Status04/Event24 procedure                        */
421 /*  function discription : Status04Event24( pReceiveInf )                */
422 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
423 /*  output data          : uint32                 Terminal Status              */
424 /*  draw time            : '96.10.09                                         */
425 /*---------------------------------------------------------------------------*/
426 /*  amendment career(x)  :                                                   */
427 /*                                                                           */
428 /*              Copyright (C) 1996 NTT DoCoMo                                */
429 /*****************************************************************************/
Status04Event24(PS_ControlMsgHeader pReceiveInf)430 uint32 TSC_324m::Status04Event24(PS_ControlMsgHeader  pReceiveInf)
431 {
432     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_WARNING,
433                     (0, "TSC_324m::Status04Event24 Mux table reject received dir(%d), sn(%d)",
434                      pReceiveInf->InfSupplement1, pReceiveInf->InfSupplement2));
435     if ((S_InfHeader::TDirection)pReceiveInf->InfSupplement1 == S_InfHeader::OUTGOING)
436     {
437         iTSCcomponent->MuxTableSendComplete(pReceiveInf->InfSupplement2,
438                                             PVMFFailure);
439     }
440     return(PhaseD_CSUP);
441 }
442 
443 // =============================================================
444 // Status04Event50()                  E_PtvId_Blc_Etb_Cfm2
445 //
446 // This is "BLCSE ESTABLISH.confirm2"
447 // It is called when SE receives an OLCConfirm (Bi-Dir).
448 // =============================================================
BlcEtbCfm2(PS_ControlMsgHeader pReceiveInf)449 uint32 TSC_324m::BlcEtbCfm2(PS_ControlMsgHeader  pReceiveInf)
450 {
451     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
452                     (0, "TSC_324m: BlcEtbCfm2.\n"));
453     return iTSCcomponent->BlcEtbCfm2(pReceiveInf);
454 }
455 
456 
457 /*****************************************************************************/
458 /*  function name        : Status08Event12           E_PtvId_Lc_Rls_Cfm  */
459 /*  function outline     : Status08/Event12 procedure                        */
460 /*  function discription : Status08Event12( pReceiveInf )                */
461 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
462 /*  output data          : uint32                 Terminal Status              */
463 /*  draw time            : '00.4.13                                          */
464 /*---------------------------------------------------------------------------*/
LcRlsCfm(PS_ControlMsgHeader pReceiveInf)465 uint32 TSC_324m::LcRlsCfm(PS_ControlMsgHeader pReceiveInf)
466 {
467     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
468                     (0, "TSC_324m: LcRlsCfm.\n"));
469     iTSCcomponent->LcRlsCfm(pReceiveInf);
470     return(PhaseE_Comm);
471 }
472 
473 
474 /*****************************************************************************/
475 /*  function name        : Status08Event17          E_PtvId_Blc_Rls_Cfm  */
476 /*  function outline     : Status08/Event17 procedure                        */
477 /*  function discription : Status08Event17( pReceiveInf )                */
478 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
479 /*  output data          : uint32                 Terminal Status              */
480 /*  draw time            : '00.4.13                                         */
481 /*---------------------------------------------------------------------------*/
482 /* RAN - Bi-Dir OLCAck */
BlcRlsCfm(PS_ControlMsgHeader pReceiveInf)483 uint32 TSC_324m::BlcRlsCfm(PS_ControlMsgHeader pReceiveInf)
484 {
485     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
486                     (0, "TSC_324m: BlcRlsCfm.\n"));
487     iTSCcomponent->BlcRlsCfm(pReceiveInf);
488     return(PhaseE_Comm);
489 }
490 
491 /*****************************************************************************/
492 /*  function name        : Status08Event19          E_PtvId_Clc_Cls_Idc  */
493 /*  function outline     : Status08/Event19 procedure                        */
494 /*  function discription : Status08Event19( pReceiveInf )                */
495 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
496 /*  output data          : uint32                 Terminal Status              */
497 /*  draw time            : '96.10.09                                         */
498 /*---------------------------------------------------------------------------*/
499 /*  amendment career(x)  :                                                   */
500 /*                                                                           */
501 /*              Copyright (C) 1996 NTT DoCoMo                                */
502 /*****************************************************************************/
Status08Event19(PS_ControlMsgHeader pReceiveInf)503 uint32 TSC_324m::Status08Event19(PS_ControlMsgHeader pReceiveInf)
504 {
505     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
506                     (0, "TSC_324m: Status08Event19.\n"));
507     return iTSCcomponent->Status08Event19(pReceiveInf);
508 }
509 
510 /*****************************************************************************/
511 /*  function name        : Status08Event20          E_PtvId_Clc_Cls_Cfm  */
512 /*  function outline     : Status08/Event20 procedure                        */
513 /*  function discription : Status08Event20( pReceiveInf )                */
514 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
515 /*  output data          : uint32                 Terminal Status              */
516 /*  draw time            : '96.10.09                                         */
517 /*---------------------------------------------------------------------------*/
518 /*  amendment career(x)  :                                                   */
519 /*                                                                           */
520 /*              Copyright (C) 1996 NTT DoCoMo                                */
521 /*****************************************************************************/
Status08Event20(PS_ControlMsgHeader pReceiveInf)522 uint32 TSC_324m::Status08Event20(PS_ControlMsgHeader  pReceiveInf)
523 {
524     OSCL_UNUSED_ARG(pReceiveInf);
525     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
526                     (0, "TSC_324m: RequestChannelClose(S)...Complete\n"));
527     return(PhaseE_Comm);
528 }
529 
530 /*****************************************************************************/
531 /*  function name        : Status08Event21           E_PtvId_Clc_Rjt_Idc */
532 /*  function outline     : Status08/Event21 procedure                        */
533 /*  function discription : Status08Event21( pReceiveInf )                */
534 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
535 /*  output data          : uint32                 Terminal Status              */
536 /*  draw time            : '96.10.09                                         */
537 /*---------------------------------------------------------------------------*/
538 /*  amendment career(x)  :                                                   */
539 /*                                                                           */
540 /*              Copyright (C) 1996 NTT DoCoMo                                */
541 /*****************************************************************************/
Status08Event21(PS_ControlMsgHeader pReceiveInf)542 uint32 TSC_324m::Status08Event21(PS_ControlMsgHeader  pReceiveInf)
543 {
544     OSCL_UNUSED_ARG(pReceiveInf);
545     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
546                     (0, "TSC_324m: RequestChannelClose(%d)...Failed\n", pReceiveInf->InfSupplement1));
547     return(PhaseE_Comm);
548 }
549 
550 /*****************************************************************************/
551 /*  function name        : Status08Event22            E_PtvId_Mt_Trf_Idc */
552 /*  function outline     : Status08/Event22 procedure                        */
553 /*  function discription : Status08Event22( pReceiveInf )                */
554 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
555 /*  output data          : uint32                 Terminal Status              */
556 /*  draw time            : '96.10.09                                         */
557 /*---------------------------------------------------------------------------*/
558 /*  amendment career(x)  :                                                   */
559 /*                                                                           */
560 /*              Copyright (C) 1996 NTT DoCoMo                                */
561 /*****************************************************************************/
Status08Event22(PS_ControlMsgHeader pReceiveInf)562 uint32 TSC_324m::Status08Event22(PS_ControlMsgHeader  pReceiveInf)
563 {
564     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
565                     (0, "TSC_324m::Status08Event22 Received mux entries sn=%d",
566                      pReceiveInf->InfSupplement1));
567     return MuxTableTransferIndication(pReceiveInf);
568 }
569 
570 /*****************************************************************************/
571 /*  function name        : Status08Event23            E_PtvId_Mt_Trf_Cfm */
572 /*  function outline     : Status08/Event23 procedure                        */
573 /*  function discription : Status08Event23( pReceiveInf )                */
574 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
575 /*  output data          : uint32                 Terminal Status              */
576 /*  draw time            : '96.10.09                                         */
577 /*---------------------------------------------------------------------------*/
578 /*  amendment career(x)  :                                                   */
579 /*                                                                           */
580 /*              Copyright (C) 1996 NTT DoCoMo                                */
581 /*****************************************************************************/
Status08Event23(PS_ControlMsgHeader pReceiveInf)582 uint32 TSC_324m::Status08Event23(PS_ControlMsgHeader  pReceiveInf)
583 {
584     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
585                     (0, "TSC_324m::Status04Event23 sn=%d",
586                      pReceiveInf->InfSupplement1));
587     iTSCcomponent->MuxTableSendComplete(pReceiveInf->InfSupplement1,
588                                         PVMFSuccess);
589     return(PhaseE_Comm);
590 }
591 
592 /*****************************************************************************/
593 /*  function name        : Status08Event24            E_PtvId_Mt_Rjt_Idc */
594 /*  function outline     : Status08/Event24 procedure                        */
595 /*  function discription : Status08Event24( pReceiveInf )                */
596 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
597 /*  output data          : uint32                 Terminal Status              */
598 /*  draw time            : '96.10.09                                         */
599 /*---------------------------------------------------------------------------*/
600 /*  amendment career(x)  :                                                   */
601 /*                                                                           */
602 /*              Copyright (C) 1996 NTT DoCoMo                                */
603 /*****************************************************************************/
Status08Event24(PS_ControlMsgHeader pReceiveInf)604 uint32 TSC_324m::Status08Event24(PS_ControlMsgHeader  pReceiveInf)
605 {
606     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_WARNING,
607                     (0, "TSC_324m::Status08Event24 Mux table reject received dir(%d), sn(%d)",
608                      pReceiveInf->InfSupplement1, pReceiveInf->InfSupplement2));
609     if ((S_InfHeader::TDirection)pReceiveInf->InfSupplement1 ==
610             S_InfHeader::OUTGOING)
611     {
612         iTSCcomponent->MuxTableSendComplete(pReceiveInf->InfSupplement2,
613                                             PVMFFailure);
614     }
615     return(PhaseE_Comm);
616 }
617 
618 /*****************************************************************************/
619 /*  function name        : Status08Event25          E_PtvId_Rme_Send_Idc */
620 /*  function outline     : Status08/Event25 procedure                        */
621 /*  function discription : Status08Event25( pReceiveInf )                */
622 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
623 /*  output data          : uint32                 Terminal Status              */
624 /*  draw time            : '96.10.09                                         */
625 /*---------------------------------------------------------------------------*/
626 /*  amendment career(x)  :                                                   */
627 /*                                                                           */
628 /*              Copyright (C) 1996 NTT DoCoMo                                */
629 /*****************************************************************************/
Status08Event25(PS_ControlMsgHeader pReceiveInf)630 uint32 TSC_324m::Status08Event25(PS_ControlMsgHeader  pReceiveInf)
631 {
632     OSCL_UNUSED_ARG(pReceiveInf);
633     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
634                     (0, "TSC_324m::Status08Event25 RME received.  Rejecting it."));
635     RmeRjtReq();
636     return(PhaseE_Comm);
637 }
638 
639 /*****************************************************************************/
640 /*  function name        : Status08Event26          E_PtvId_Rme_Send_Cfm */
641 /*  function outline     : Status08/Event26 procedure                        */
642 /*  function discription : Status08Event26( pReceiveInf )                */
643 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
644 /*  output data          : uint32                 Terminal Status              */
645 /*  draw time            : '96.10.09                                         */
646 /*---------------------------------------------------------------------------*/
647 /*  amendment career(x)  :                                                   */
648 /*                                                                           */
649 /*              Copyright (C) 1996 NTT DoCoMo                                */
650 /*****************************************************************************/
Status08Event26(PS_ControlMsgHeader pReceiveInf)651 uint32 TSC_324m::Status08Event26(PS_ControlMsgHeader  pReceiveInf)
652 {
653     OSCL_UNUSED_ARG(pReceiveInf);
654     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
655                     (0, "TSC: RME complete.\n"));
656 
657     return(PhaseE_Comm);
658 }
659 
660 /*****************************************************************************/
661 /*  function name        : Status08Event27         E_PtvId_Rme_Rjt_Idc   */
662 /*  function outline     : Status08/Event27 procedure                        */
663 /*  function discription : Status08Event27( pReceiveInf )                */
664 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
665 /*  output data          : uint32                 Terminal Status              */
666 /*  draw time            : '96.10.09                                         */
667 /*---------------------------------------------------------------------------*/
668 /*  amendment career(x)  :                                                   */
669 /*                                                                           */
670 /*              Copyright (C) 1996 NTT DoCoMo                                */
671 /*****************************************************************************/
Status08Event27(PS_ControlMsgHeader pReceiveInf)672 uint32 TSC_324m::Status08Event27(PS_ControlMsgHeader  pReceiveInf)
673 {
674     OSCL_UNUSED_ARG(pReceiveInf);
675     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
676                     (0, "TSC: RME failed: reject indication.\n"));
677     /*  NO ACTION FOR NOW.  MAY WANT TO ADD BETTER HANDLING LATER.
678     */
679     return(PhaseE_Comm);
680 }
681 
682 /*****************************************************************************/
683 /*  function name        : ModeRequestIndication           E_PtvId_Mr_Trf_Idc  */
684 /*  function outline     : ModeRequestIndication procedure                        */
685 /*  function discription : ModeRequestIndication( pReceiveInf )                */
686 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
687 /*  output data          : uint32                 Terminal Status              */
688 /*  draw time            : '96.10.09                                         */
689 /*---------------------------------------------------------------------------*/
690 /*  amendment career(x)  :                                                   */
691 /*                                                                           */
692 /*              Copyright (C) 1996 NTT DoCoMo                                */
693 /*****************************************************************************/
694 /* WWURM: modified to handle incoming request mode message */
ModeRequestIndication(PS_ControlMsgHeader pReceiveInf)695 uint32 TSC_324m::ModeRequestIndication(PS_ControlMsgHeader  pReceiveInf)
696 {
697     OSCL_UNUSED_ARG(pReceiveInf);
698     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
699                     (0, "TSC_324m::ModeRequestIndication"));
700     MrRjtReq();
701     return(PhaseE_Comm);
702 }
703 
704 // -------------------------------------------------
705 // getModeRequestInfo()
706 //
707 // WWURM: help function for request mode message.
708 // -------------------------------------------------
getModeRequestInfo(PS_ControlMsgHeader pReceiveInf,int32 * param1,int32 * param2)709 OsclAny TSC_324m::getModeRequestInfo(PS_ControlMsgHeader pReceiveInf,
710                                      int32 *param1, int32 *param2)
711 {
712     OSCL_UNUSED_ARG(pReceiveInf);
713     OSCL_UNUSED_ARG(param2);
714     OSCL_UNUSED_ARG(param1);
715 }
716 
717 /*****************************************************************************/
718 /*  function name        : Status08Event29           E_PtvId_Mr_Trf_Cfm  */
719 /*  function outline     : Status08/Event29 procedure                        */
720 /*  function discription : Status08Event29( pReceiveInf )                */
721 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
722 /*  output data          : uint32                 Terminal Status              */
723 /*  draw time            : '96.10.09                                         */
724 /*---------------------------------------------------------------------------*/
725 /*  amendment career(x)  :                                                   */
726 /*                                                                           */
727 /*              Copyright (C) 1996 NTT DoCoMo                                */
728 /*****************************************************************************/
Status08Event29(PS_ControlMsgHeader pReceiveInf)729 uint32 TSC_324m::Status08Event29(PS_ControlMsgHeader  pReceiveInf)
730 {
731     OSCL_UNUSED_ARG(pReceiveInf);
732     return(PhaseE_Comm);
733 }
734 
735 /*****************************************************************************/
736 /*  function name        : Status08Event30            E_PtvId_Mr_Rjt_Idc */
737 /*  function outline     : Status08/Event30 procedure                        */
738 /*  function discription : Status08Event30( pReceiveInf )                */
739 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
740 /*  output data          : uint32                 Terminal Status              */
741 /*  draw time            : '96.10.09                                         */
742 /*---------------------------------------------------------------------------*/
743 /*  amendment career(x)  :                                                   */
744 /*                                                                           */
745 /*              Copyright (C) 1996 NTT DoCoMo                                */
746 /*****************************************************************************/
Status08Event30(PS_ControlMsgHeader pReceiveInf)747 uint32 TSC_324m::Status08Event30(PS_ControlMsgHeader  pReceiveInf)
748 {
749     OSCL_UNUSED_ARG(pReceiveInf);
750     return(PhaseE_Comm);
751 }
752 
753 /*****************************************************************************/
754 /*  function name        : Status08Event31           E_PtvId_Rtd_Trf_Cfm */
755 /*  function outline     : Status08/Event31 procedure                        */
756 /*  function discription : Status08Event31( pReceiveInf )                */
757 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
758 /*  output data          : uint32                 Terminal Status              */
759 /*  draw time            : '96.10.09                                         */
760 /*---------------------------------------------------------------------------*/
761 /*  amendment career(x)  :                                                   */
762 /*                                                                           */
763 /*              Copyright (C) 1996 NTT DoCoMo                                */
764 /*****************************************************************************/
Status08Event31(PS_ControlMsgHeader pReceiveInf)765 uint32 TSC_324m::Status08Event31(PS_ControlMsgHeader  pReceiveInf)
766 {
767     OSCL_UNUSED_ARG(pReceiveInf);
768     uint32 rtd = (uint32)((PS_Delay_Rtd)pReceiveInf->pParameter)->Delay_Value;
769     iNumRtdRequests++;
770 
771     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
772                     (0, "TSC_324m::Status08Event31 - iNumRtdRequests = %d, RTD = %d ms",
773                      iNumRtdRequests, rtd));
774     iRtdAve += rtd;
775     if (rtd < iRtdMin)
776     {
777         iRtdMin = rtd;
778     }
779     if (rtd > iRtdMax)
780     {
781         iRtdMax = rtd;
782     }
783 
784     return(PhaseE_Comm);
785 }
786 
787 /*****************************************************************************/
788 /*  function name        : Status08Event32           E_PtvId_Rtd_Exp_Idc */
789 /*  function outline     : Status08/Event32 procedure                        */
790 /*  function discription : Status08Event32( pReceiveInf )                */
791 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
792 /*  output data          : uint32                 Terminal Status              */
793 /*  draw time            : '96.10.09                                         */
794 /*---------------------------------------------------------------------------*/
795 /*  amendment career(x)  :                                                   */
796 /*                                                                           */
797 /*              Copyright (C) 1996 NTT DoCoMo                                */
798 /*****************************************************************************/
Status08Event32(PS_ControlMsgHeader pReceiveInf)799 uint32 TSC_324m::Status08Event32(PS_ControlMsgHeader  pReceiveInf)
800 {
801     OSCL_UNUSED_ARG(pReceiveInf);
802     return(PhaseE_Comm);
803 }
804 
805 //===============================================================
806 // SendTerminalCapabilitySet()               E_PtvId_Cmd_Stcs_Cfm (RAN)
807 //
808 // Handle a received SendTerminalCapabilitySet codeword.
809 //===============================================================
SendTerminalCapabilitySet(PS_ControlMsgHeader pReceiveInf)810 uint32 TSC_324m::SendTerminalCapabilitySet(PS_ControlMsgHeader  pReceiveInf)
811 {
812     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
813                     (0, "TSC_324m::SendTerminalCapabilitySet"));
814     OSCL_UNUSED_ARG(pReceiveInf);
815     CEStart();
816     return(PhaseE_Comm);
817 }
818 
819 //===============================================================
820 // FlowControlCommandReceived()                 E_PtvId_Cmd_Fc_Cfm (RAN)
821 //
822 // This routine handles a received FlowControl (FC) command.
823 // For now it does nothing but print the command received message.
824 // But later we should pass the received params up to application layer.
825 //===============================================================
FlowControlCommandReceived(PS_ControlMsgHeader pReceiveInf)826 uint32 TSC_324m::FlowControlCommandReceived(PS_ControlMsgHeader  pReceiveInf)
827 {
828     OSCL_UNUSED_ARG(pReceiveInf);
829     SendFunctionNotSupportedIndication(2, pReceiveInf->EncodedMsg,
830                                        (uint16)pReceiveInf->EncodedMsgSize);//unknown function
831 
832     return(PhaseE_Comm);
833 }
834 
835 //===============================================================
836 // MiscCmdRecv()              E_PtvId_Cmd_Mscl_Cfm (RAN)
837 //
838 // This routine handles a received Miscellaneous (MSCL) command.
839 //===============================================================
MiscCmdRecv(PS_ControlMsgHeader pReceiveInf)840 uint32 TSC_324m::MiscCmdRecv(PS_ControlMsgHeader  pReceiveInf)
841 {
842     PS_MiscellaneousCommand mc;
843     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
844                     (0, "TSC_324m::MiscCmdRecv - Received Miscellaneous command"));
845     mc = (PS_MiscellaneousCommand) pReceiveInf->pParameter;
846 
847     // if command is a request for new I-Frame, then verify outgoing
848     // channel exists and request new I-Frame from observer
849     if (mc->mcType.index == 5)    // 5 = videoFastUpdatePicture
850     {
851         PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
852                         (0, "TSC_324m: MiscCmdRecv - Received videoFastUpdatePicture, lcn(%d)\n",
853                          mc->logicalChannelNumber));
854         if (iTerminalStatus != PhaseE_Comm)
855         {
856             PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
857                             (0, "TSC_324m: MiscCmdRecv Error - invalid state(%d)",
858                              iTerminalStatus));
859             return iTerminalStatus;
860         }
861         H223OutgoingChannelPtr lcn;
862         PVMFStatus aStatus = iH223->GetOutgoingChannel(mc->logicalChannelNumber,
863                              lcn);
864         if (aStatus != PVMFSuccess)
865         {
866             PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
867                             (0, "TSC_324m::MiscCmdRecv Error - Request I-Frame for invalid channel ID=%d",
868                              mc->logicalChannelNumber));
869             return iTerminalStatus;
870         }
871         if (iObserver) iObserver->RequestFrameUpdate(lcn);
872     }
873     if (mc->mcType.index == 7)    // 7 = videoSpatialTemporalTradeoff
874     {
875         PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
876                         (0, "TSC_324m: MiscCmdRecv - Received videoTemporalSpatialTradeOff lcn(%d), value(%d)",
877                          mc->logicalChannelNumber, mc->mcType.videoTemporalSpatialTradeOff));
878         if (iTerminalStatus != PhaseE_Comm)
879         {
880             PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
881                             (0, "TSC_324m: MiscCmdRecv Error - invalid state(%d)",
882                              iTerminalStatus));
883             return iTerminalStatus;
884         }
885         if (iTSC_324mObserver)
886         {
887             iTSC_324mObserver->VideoSpatialTemporalTradeoffCommandReceived(mc->logicalChannelNumber,
888                     mc->mcType.videoTemporalSpatialTradeOff);
889         }
890     }
891     else if (mc->mcType.index == 11)   // 11 = maxMuxPduSize
892     {
893         PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
894                         (0, "TSC_324m: MiscCmdRecv - Received maxMuxPduSize, size(%d)\n",
895                          mc->mcType.maxH223MUXPDUsize));
896         TPVStatusCode ret = iH223->SetMaxOutgoingPduSize(mc->mcType.maxH223MUXPDUsize);
897         if (ret != EPVT_Success)
898         {
899             PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
900                             (0, "TSC_324m: Error - Request maxMuxPduSize(%d), error(%d)\n",
901                              mc->mcType.maxH223MUXPDUsize, ret));
902         }
903     }
904     return(iTerminalStatus);
905 }
906 
907 //===============================================================
908 // Status08Event55()               E_PtvId_Cmd_Hmr_Cfm (RAN)
909 //
910 // This routine handles a received H223MultiplexReconfiguration (HMR) command.
911 // For now it does nothing but print the command received message.
912 // But later we should pass the received params up to application layer.
913 //===============================================================
Status08Event55(PS_ControlMsgHeader pReceiveInf)914 uint32 TSC_324m::Status08Event55(PS_ControlMsgHeader  pReceiveInf)
915 {
916     OSCL_UNUSED_ARG(pReceiveInf);
917     SendFunctionNotSupportedIndication(2, pReceiveInf->EncodedMsg,
918                                        (uint16)pReceiveInf->EncodedMsgSize);//unknown function
919     return(PhaseE_Comm);
920 }
921 
922 /*****************************************************************************/
923 /*  function name        : EndSessionRecv          E_PtvId_Cmd_Es_Cfm    */
924 /*  function outline     : EndSessionCommand Receive procedure               */
925 /*  function discription : EndSessionRecv( pReceiveInf )                 */
926 /*  input data           : PS_ControlMsgHeader         Receive InfHeader Pointer    */
927 /*  output data          : uint32                 Terminal Status              */
928 /*  draw time            : '96.10.09                                         */
929 /*---------------------------------------------------------------------------*/
930 /*  amendment career(x)  :                                                   */
931 /*                                                                           */
932 /*              Copyright (C) 1996 NTT DoCoMo                                */
933 /*****************************************************************************/
EndSessionRecv(PS_ControlMsgHeader pReceiveInf)934 uint32 TSC_324m::EndSessionRecv(PS_ControlMsgHeader  pReceiveInf)
935 {
936     OSCL_UNUSED_ARG(pReceiveInf);
937     PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
938                     (0, "TSC_324m::EndSessionRecv"));
939     iDisconnectInitiator |= EPVT_REMOTE;
940     switch (iInterfaceState)
941     {
942         case EPVMFNodeStarted:
943         case EPVMFNodePaused:
944             iObserver->DisconnectRequestReceived();
945             break;
946         default:
947             PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
948                             (0, "EndSession...Received in invalid state"));
949             PVLOGGER_LOGMSG(PVLOGMSG_INST_HLDBG, iLogger, PVLOGMSG_STACK_TRACE,
950                             (0, "TSC_324m::EndSessionRecv Ignoring end session due to invalid state(%d)",
951                              iInterfaceState));
952     }
953     StopData();
954     iTSCcomponent->CloseChannels();
955     return PhaseF_End;
956 }
957 
958 
959 // ===============================================================
960 // StopData()
961 //
962 // Sets flags in the H324 system table which stop data transmission
963 // for each open, outgoing logical channel.
964 // ================================================================
StopData()965 OsclAny TSC_324m::StopData()
966 {
967     iTSCcomponent->StopData();
968 }
969 
970 
971 // ======================================================
972 // GetDecoderConfigFromOLC()
973 //
974 // Returns the decoder configuration info from an incoming
975 // OLC codeword.  The info is copied from either the
976 // Forward or Reverse LogicalChannelParameters, depending
977 // on the value of input argument forRev:
978 //
979 //     forRev = 0  --> info from Forward Parameters
980 //     forRev = 1  --> info from Reverse Parameters
981 //
982 // Note that if 'pPara' does not have genericVideo description
983 //   (i.e. MPEG4), then a NULL string is returned.
984 // =======================================================
GetDecoderConfigFromOLC(PS_ForwardReverseParam pPara,uint32 forRev,uint16 * nOctets)985 uint8* GetDecoderConfigFromOLC(PS_ForwardReverseParam pPara, uint32 forRev, uint16 *nOctets)
986 {
987     uint32 i = 0, n = 0;
988     PS_GenericCapability pGenericCap = NULL;
989     PS_GenericParameter nonCollapsing = NULL;
990     uint8* ret = NULL;
991 
992     if (forRev)     /* reverse */
993     {
994         if (pPara->reverseLogicalChannelParameters.dataType.videoData->index == 5) /* genericVideoCapability */
995         {
996             pGenericCap = pPara->reverseLogicalChannelParameters.dataType.videoData->genericVideoCapability;
997         }
998     }
999     else        /* forward  */
1000     {
1001         if (pPara->forwardLogicalChannelParameters.dataType.videoData->index == 5) /* genericVideoCapability */
1002         {
1003             pGenericCap = pPara->forwardLogicalChannelParameters.dataType.videoData->genericVideoCapability;
1004         }
1005     }
1006 
1007     if (pGenericCap != NULL)    /* Search for decoderConfig parameters */
1008     {
1009         n = pGenericCap->size_of_nonCollapsing;
1010         for (i = 0; i < n; i++)
1011         {
1012             nonCollapsing = &pGenericCap->nonCollapsing[i];
1013             if (nonCollapsing->parameterIdentifier.standard == 2)
1014             {
1015                 *nOctets = nonCollapsing->parameterValue.octetString->size;
1016                 ret = (uint8*) OSCL_DEFAULT_MALLOC(*nOctets);
1017                 oscl_memcpy(ret, nonCollapsing->parameterValue.octetString->data, *nOctets);
1018                 return ret;
1019             }
1020         }
1021     }
1022     *nOctets = 0;   /* None found; return empty string */
1023     return NULL;
1024 }
1025 
1026 // =========================================================
1027 // ShowTsc()
1028 //
1029 // This function takes an output analysis line, adds the
1030 // proper indent, and sends the result out to the display
1031 // routine.  The 'tag' argument is simply passed on.
1032 // =========================================================
ShowTsc(uint16 tag,uint16 indent,char * inString)1033 OsclAny TSC_324m::ShowTsc(uint16 tag, uint16 indent, char* inString)
1034 {
1035     OSCL_UNUSED_ARG(inString);
1036     OSCL_UNUSED_ARG(indent);
1037     OSCL_UNUSED_ARG(tag);
1038 #ifdef PVTsc_Analyzer
1039     uint32 i;
1040     char outString[200];
1041 
1042     /* Construct outString with proper indent */
1043     for (i = 0; i < indent; ++i)
1044     {
1045         outString[i] = ' ';
1046     }
1047     sprintf(outString + i, "%s", inString);
1048 
1049     /* Send outString to display */
1050     PV//Tsc_Analyzer(tag,outString);         /* The real deal */
1051 #endif
1052 }
1053 
1054 // =======================================================
1055 // //Tsc_Analyzer()
1056 //
1057 // Display messages using the central Tsc_Analyzer functions.
1058 // =======================================================
1059 /*OsclAny TSC_324m::Tsc_Analyzer(char* msg)
1060 {
1061 #ifdef PVTsc_Analyzer
1062     ShowTsc(Tsc_Analyzer_TSC,0,msg);
1063 #endif
1064 }*/
1065 
1066 
1067 
1068 
1069 
1070 // =======================================================
1071 // CheckAltCapSet()                             (RAN-32K)
1072 //
1073 // This routine checks an AlternativeCapabilitySet structure
1074 //   to see if a particular entry number is present.  Simple.
1075 // =======================================================
CheckAltCapSet(PS_AlternativeCapabilitySet pAltCapSet,uint32 entry,uint32 * preference_index)1076 uint32 TSC_324m::CheckAltCapSet(PS_AlternativeCapabilitySet pAltCapSet,
1077                                 uint32 entry, uint32* preference_index)
1078 {
1079     uint32 i;
1080     *preference_index = 999;
1081     for (i = 0; i < pAltCapSet->size; ++i)
1082     {
1083         if (pAltCapSet->item[i] == entry)
1084         {
1085             *preference_index = i;
1086             return(true);
1087         }
1088     }
1089 
1090     return(false);
1091 }
1092 
1093 
GetRemoteCapability()1094 CPvtTerminalCapability* TSC_324m::GetRemoteCapability()
1095 {
1096     return iTSCcapability.GetRemoteCapability();
1097 }
1098