adaptationlayer/tsy/nokiatsy_dll/internal/test/nokiatsy_test_tool/cbs/src/cbsblocks.cpp
changeset 4 510c70acdbf6
parent 3 1972d8c2e329
child 5 8ccc39f9d787
equal deleted inserted replaced
3:1972d8c2e329 4:510c70acdbf6
     1 /*
       
     2 * Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   Specific class for Cell Broadcast tests
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 // INCLUDE FILES
       
    22 #include <e32svr.h>
       
    23 #include <stifparser.h>
       
    24 #include <stiftestinterface.h>
       
    25 #include "cbs.h"
       
    26 #include <ctsy/serviceapi/cmmsmsutility.h>
       
    27 #include <ctsy/rmmcustomapi.h>
       
    28 
       
    29 // CONSTANTS
       
    30 
       
    31 // ============================ MEMBER FUNCTIONS ===============================
       
    32 
       
    33 // -----------------------------------------------------------------------------
       
    34 // CCbs::Delete
       
    35 // Delete here all resources allocated and opened from test methods.
       
    36 // Called from destructor.
       
    37 // -----------------------------------------------------------------------------
       
    38 //
       
    39 void CCbs::Delete()
       
    40     {
       
    41     }
       
    42 
       
    43 // -----------------------------------------------------------------------------
       
    44 // CCbs::RunMethodL
       
    45 // Run specified method. Contains also table of test mothods and their names.
       
    46 // -----------------------------------------------------------------------------
       
    47 //
       
    48 TInt CCbs::RunMethodL(
       
    49     CStifItemParser& aItem )
       
    50     {
       
    51     iCbsLog->Log(_L8("CCbs::RunMethodL"));
       
    52 
       
    53     static TStifFunctionInfo const KFunctions[] =
       
    54         {
       
    55         ENTRY( "RunIscTestCase",  CCore::RunIscTestCase),
       
    56         ENTRY( "SyncIscTestCase", CCore::SyncIscTestCase),
       
    57         ENTRY( "ActivateCbsReception", CCbs::ActivateCbsReceptionL ),
       
    58         ENTRY( "DeactivateCbsReception", CCbs::DeactivateCbsReceptionL ),
       
    59         ENTRY( "ReceiveCbs", CCbs::ReceiveCbsL ),
       
    60         ENTRY( "ReadCBSSimTopics", CCbs::ReadCBSSimTopicsL ),
       
    61         ENTRY( "DeleteCBSSimTopic", CCbs::DeleteCBSSimTopicL ),
       
    62         ENTRY( "HandleSpecifiedRequests", CCore::HandleSpecifiedRequests),
       
    63         ENTRY( "InitializeIPCRequestTable", CCore::InitializeIPCRequestTable),
       
    64         ENTRY( "SetExpectedCompleteIPC", CCore::SetExpectedCompleteIPC),
       
    65         };
       
    66 
       
    67     const TInt count = sizeof( KFunctions ) /
       
    68                         sizeof( TStifFunctionInfo );
       
    69 
       
    70     return RunInternalL( KFunctions, count, aItem );
       
    71 
       
    72     }    
       
    73     
       
    74 // -----------------------------------------------------------------------------
       
    75 // CCbs::ActivateCbsReceptionL
       
    76 // -----------------------------------------------------------------------------
       
    77 //
       
    78 TInt CCbs::ActivateCbsReceptionL(CStifItemParser& /*aItem*/)
       
    79     {
       
    80     iCbsLog->Log(_L8("CBS::ActivateCbsReception"));
       
    81 
       
    82     TInt ret = KErrGeneral;
       
    83 
       
    84     TCbsCbmiAndLangAndFilter filter;
       
    85     filter.iSetting = RMobileBroadcastMessaging::EBroadcastAcceptAll;
       
    86     CMmDataPackage package;
       
    87     package.PackData(&filter);
       
    88     ret = HandleRequestL( EMobileBroadcastMessagingReceiveMessage, &package );
       
    89     if ( KErrNone != ret )
       
    90         {
       
    91         iCbsLog->Log(_L8("Error in activating CBS reception: %d"), ret );
       
    92         }
       
    93     else
       
    94         {
       
    95         iActivateCbsReceptionPending = ETrue;
       
    96         }
       
    97     return ret;
       
    98     }
       
    99 
       
   100 // -----------------------------------------------------------------------------
       
   101 // CCbs::CompleteActivateCbsReception
       
   102 // -----------------------------------------------------------------------------
       
   103 //
       
   104 void CCbs::CompleteActivateCbsReception(TInt aErr)
       
   105     {
       
   106     iCbsLog->Log(_L8("CBS::CompleteActivateCbsReception, err=%d"),aErr);
       
   107     if (iActivateCbsReceptionPending)
       
   108         {
       
   109         iActivateCbsReceptionPending = EFalse;
       
   110         Signal( aErr );
       
   111         }
       
   112     }
       
   113 
       
   114 // -----------------------------------------------------------------------------
       
   115 // CCbs::DeactivateCbsReceptionL
       
   116 // -----------------------------------------------------------------------------
       
   117 //
       
   118 TInt CCbs::DeactivateCbsReceptionL(CStifItemParser& /*aItem*/)
       
   119     {
       
   120     iCbsLog->Log(_L8("CBS::DeactivateCbsReception"));
       
   121 
       
   122     TInt ret = KErrGeneral;
       
   123 
       
   124     TCbsCbmiAndLangAndFilter filter;
       
   125     filter.iSetting = RMobileBroadcastMessaging::EBroadcastAcceptNone;
       
   126     CMmDataPackage package;
       
   127     package.PackData(&filter);
       
   128     ret = HandleRequestL( EMobileBroadcastMessagingReceiveMessageCancel, &package );
       
   129     if ( KErrNone != ret )
       
   130         {
       
   131         iCbsLog->Log(_L8("Error in deactivating CBS reception: %d"), ret );
       
   132         }
       
   133     else
       
   134         {
       
   135         iDeactivateCbsReceptionPending = ETrue;
       
   136         }
       
   137 
       
   138     return ret;
       
   139     }
       
   140 
       
   141 // -----------------------------------------------------------------------------
       
   142 // CCbs::CompleteDeactivateCbsReception
       
   143 // -----------------------------------------------------------------------------
       
   144 //
       
   145 void CCbs::CompleteDeactivateCbsReception(TInt aErr)
       
   146     {
       
   147     iCbsLog->Log(_L8("CBS::CompleteDeactivateCbsReception, err=%d"),aErr);
       
   148     if (iDeactivateCbsReceptionPending)
       
   149         {
       
   150         iDeactivateCbsReceptionPending = EFalse;
       
   151         Signal( aErr );
       
   152         }
       
   153     }
       
   154 
       
   155 // -----------------------------------------------------------------------------
       
   156 // CCbs::ReceiveCbsL
       
   157 // -----------------------------------------------------------------------------
       
   158 //
       
   159 TInt CCbs::ReceiveCbsL(CStifItemParser& aItem)
       
   160     {
       
   161     iCbsLog->Log(_L8("CBS::ReceiveCbsL. Waiting for CBS message (be patient, please)."));
       
   162 
       
   163     // Set reference parameters for parameter checking
       
   164     TInt temp( 0 );
       
   165     aItem.GetNextInt( temp );
       
   166     iSbNumber = temp;
       
   167 
       
   168     aItem.GetNextInt( temp );
       
   169     iNumberOfPages = temp;
       
   170 
       
   171     aItem.GetNextInt( temp );
       
   172     iMessageType = temp;
       
   173 
       
   174     aItem.GetNextInt( temp );
       
   175     iMessageId = temp;
       
   176 
       
   177     aItem.GetNextInt( temp );
       
   178     iSerialNum = temp;
       
   179 
       
   180     aItem.GetNextInt( temp );
       
   181     iDCS = temp;
       
   182 
       
   183     aItem.GetNextInt( temp );
       
   184     iInfoLength = temp;
       
   185 
       
   186     // do nothing but waiting ...
       
   187     iReceiveCbsPending = ETrue;
       
   188     return KErrNone;
       
   189     }
       
   190 
       
   191 // -----------------------------------------------------------------------------
       
   192 // CCbs::CompleteReceiveCbs, GSM only
       
   193 // -----------------------------------------------------------------------------
       
   194 //
       
   195 void CCbs::CompleteReceiveGsmCbs(TInt aErr, CMmDataPackage& aData)
       
   196     {
       
   197     iCbsLog->Log(_L8("CBS::CompleteReceiveGsmCbs, err=%d"),aErr);
       
   198     if (iReceiveCbsPending)
       
   199         {
       
   200         if ( KErrNone == aErr )
       
   201             {
       
   202             _LIT8( KReceiveCbsOk, "CBS receiving ok" );
       
   203             iCbsLog->Log((TDesC8)KReceiveCbsOk );
       
   204 
       
   205             TGsmCbsMsg cbsMsg;
       
   206             aData.UnPackData( cbsMsg );
       
   207             // CBS message starts with:
       
   208             //  - serial nr MSB
       
   209             //  - serial nr LSB
       
   210             //  - message id MSB
       
   211             //  - message id LSB
       
   212             //  - data coding scheme (DCS)
       
   213             iCbsLog->Log(_L8("Received msg has serial nr=%d, cbmi=%d, dcs=%d"),
       
   214                 ((cbsMsg.iCbsMsg[0]<<8)+cbsMsg.iCbsMsg[1]),
       
   215                 ((cbsMsg.iCbsMsg[2]<<8)+cbsMsg.iCbsMsg[3]),
       
   216                 cbsMsg.iCbsMsg[4]);
       
   217 
       
   218             // Check received data
       
   219             if ( iHandleSpecifiedRequests )
       
   220                 {
       
   221                 if ( cbsMsg.iCbsMsg != iCbsMsgGSM )
       
   222                     {
       
   223                     aErr = KErrGeneral;
       
   224                     }
       
   225                 }
       
   226             }
       
   227         else
       
   228             {
       
   229             _LIT8( KReceiveCbsFailed, "CBS receiving failed: %d" );
       
   230             iCbsLog->Log((TDesC8)KReceiveCbsFailed, aErr );
       
   231             }
       
   232         iReceiveCbsPending = EFalse;
       
   233         Signal( aErr );
       
   234         }
       
   235     }
       
   236 
       
   237 // -----------------------------------------------------------------------------
       
   238 // CCbs::CompleteReceiveWcdmaCbs, WCDMA only
       
   239 // -----------------------------------------------------------------------------
       
   240 //
       
   241 void CCbs::CompleteReceiveWcdmaCbs( TInt aErr, CMmDataPackage& aData )
       
   242     {
       
   243     iCbsLog->Log(_L8("CBS::CompleteReceiveWcdmaCbs."));
       
   244     if ( iReceiveCbsPending )
       
   245         {
       
   246         if ( KErrNone == aErr )
       
   247             {
       
   248             _LIT8( KReceiveCbsOk, "CBS WCDMA receiving ok" );
       
   249             iCbsLog->Log((TDesC8)KReceiveCbsOk );
       
   250             CArrayPtrFlat<TWcdmaCbsMsg>* cbsMsg;
       
   251             TInt sbNumber;
       
   252             aData.UnPackData( cbsMsg, sbNumber );
       
   253             TWcdmaCbsMsg* wcdmaCbsMsg( cbsMsg->At( 0 ) );
       
   254             iCbsLog->Log(_L8("Received msg has serial nr=%d, cbmessage id=%d, dcs=%d"),
       
   255                 wcdmaCbsMsg->iSerialNum, wcdmaCbsMsg->iMessageId,wcdmaCbsMsg->iDCS );
       
   256 
       
   257             // Check received data
       
   258             if ( iHandleSpecifiedRequests )
       
   259                 {
       
   260                 TBuf8<RMobileBroadcastMessaging::KBroadcastPageSize>
       
   261                     iWcdmaCbsDataTemp;
       
   262                 iWcdmaCbsDataTemp.Append(
       
   263                     wcdmaCbsMsg->iWcdmaCbsData.Mid ( 0 , wcdmaCbsMsg->iInfoLength ) );
       
   264 
       
   265                 if ( iWcdmaCbsDataTemp != iCbsMsgWCDMA )
       
   266                     {
       
   267                     aErr = KErrGeneral;
       
   268                     }
       
   269                 if ( wcdmaCbsMsg->iSbNumber != iSbNumber )
       
   270                     {
       
   271                     aErr = KErrGeneral;
       
   272                     }
       
   273                 if ( wcdmaCbsMsg->iNumberOfPages != iNumberOfPages )
       
   274                     {
       
   275                     aErr = KErrGeneral;
       
   276                     }
       
   277                 if ( wcdmaCbsMsg->iMessageType != iMessageType )
       
   278                     {
       
   279                     aErr = KErrGeneral;
       
   280                     }
       
   281                 if ( wcdmaCbsMsg->iMessageId != iMessageId )
       
   282                     {
       
   283                     aErr = KErrGeneral;
       
   284                     }
       
   285                 if ( wcdmaCbsMsg->iSerialNum != iSerialNum )
       
   286                     {
       
   287                     aErr = KErrGeneral;
       
   288                     }
       
   289                 if ( wcdmaCbsMsg->iDCS != iDCS )
       
   290                     {
       
   291                     aErr = KErrGeneral;
       
   292                     }
       
   293                 if ( wcdmaCbsMsg->iInfoLength != iInfoLength )
       
   294                     {
       
   295                     aErr = KErrGeneral;
       
   296                     }
       
   297                 }
       
   298             }
       
   299          else
       
   300             {
       
   301             _LIT8( KReceiveCbsFailed, "CBS WCDMA receiving failed: %d" );
       
   302             iCbsLog->Log((TDesC8)KReceiveCbsFailed, aErr );
       
   303             }
       
   304         iReceiveCbsPending = EFalse;
       
   305         Signal( aErr );
       
   306         }
       
   307     }
       
   308 
       
   309 
       
   310 // -----------------------------------------------------------------------------
       
   311 // CCbs::ReadCBSSimTopicsL
       
   312 // -----------------------------------------------------------------------------
       
   313 //
       
   314 TInt CCbs::ReadCBSSimTopicsL(CStifItemParser& /*aItem*/)
       
   315     {
       
   316     iCbsLog->Log(_L8("CBS::ReadCBSSimTopicsL"));
       
   317     TInt ret = KErrGeneral;
       
   318     ret = HandleRequestL( ECustomStartSimCbTopicBrowsingIPC );
       
   319     if ( KErrNone != ret )
       
   320         {
       
   321         iCbsLog->Log(_L8("Error in reading CBS SIM topics: %d"), ret );
       
   322         }
       
   323     else
       
   324         {
       
   325         iReadCBSSimTopicsPending = ETrue;
       
   326         }
       
   327     return ret;
       
   328     }
       
   329 
       
   330 // -----------------------------------------------------------------------------
       
   331 // CCbs::CompleteReadCBSSimTopics
       
   332 // -----------------------------------------------------------------------------
       
   333 //
       
   334 void CCbs::CompleteReadCBSSimTopics(TInt aErr, CMmDataPackage& aData)
       
   335     {
       
   336     iCbsLog->Log(_L8("CBS::CompleteReadCBSSimTopics, err=%d"),aErr);
       
   337     if (iReadCBSSimTopicsPending)
       
   338         {
       
   339         if ( KErrNone == aErr )
       
   340             {
       
   341             CArrayFixFlat<RMmCustomAPI::TSimCbTopic>* topics;
       
   342             aData.UnPackData( topics );
       
   343             TInt count = topics->Count();
       
   344             if ( 0 < count )
       
   345                 {
       
   346                 iCbsLog->Log(_L8("%d topics read."), count);
       
   347                 for ( TInt i = 0; i < count; i++ )
       
   348                     {
       
   349                     iCbsLog->Log(_L8("  topic[%d]=%d."),i,topics->At( i ).iNumber);
       
   350                     }
       
   351                 }
       
   352             }
       
   353         iReadCBSSimTopicsPending = EFalse;
       
   354         Signal(aErr);
       
   355         }
       
   356     }
       
   357 
       
   358 // -----------------------------------------------------------------------------
       
   359 // CCbs::DeleteCBSSimTopicL
       
   360 // -----------------------------------------------------------------------------
       
   361 //
       
   362 TInt CCbs::DeleteCBSSimTopicL(CStifItemParser& aItem)
       
   363     {
       
   364     TInt nbr;
       
   365     aItem.GetNextInt(nbr);
       
   366     iCbsLog->Log(_L8("CBS::DeleteCBSSimTopicL, deleting topic %d."),nbr);
       
   367 
       
   368     TInt ret = KErrGeneral;
       
   369     TBool deleteTopic = ETrue;
       
   370     CMmDataPackage package;
       
   371     package.PackData(&nbr, &deleteTopic);
       
   372     ret = HandleRequestL( ECustomDeleteSimCbTopicIPC, &package );
       
   373     if ( KErrNone != ret )
       
   374         {
       
   375         iCbsLog->Log(_L8("Error in deleting CBS SIM topic: %d"), ret );
       
   376         }
       
   377     else
       
   378         {
       
   379         iDeleteCBSSimTopicPending = ETrue;
       
   380         }
       
   381     return ret;
       
   382     }
       
   383 
       
   384 // -----------------------------------------------------------------------------
       
   385 // CCbs::CompleteDeleteCBSSimTopic
       
   386 // -----------------------------------------------------------------------------
       
   387 //
       
   388 void CCbs::CompleteDeleteCBSSimTopic(TInt aErr)
       
   389     {
       
   390     iCbsLog->Log(_L8("CBS::CompleteDeleteCBSSimTopic, err=%d"),aErr);
       
   391     if (iDeleteCBSSimTopicPending)
       
   392         {
       
   393         iDeleteCBSSimTopicPending = EFalse;
       
   394         Signal(aErr);
       
   395         }
       
   396     }
       
   397 
       
   398 
       
   399 // ========================== OTHER EXPORTED FUNCTIONS =========================
       
   400 // None
       
   401 
       
   402 //  End of File