epoc32/include/mw/rconnmon.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
/*
williamr@2
     2
* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     3
* All rights reserved.
williamr@2
     4
* This component and the accompanying materials are made available
williamr@4
     5
* under the terms of "Eclipse Public License v1.0"
williamr@2
     6
* which accompanies this distribution, and is available
williamr@4
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@2
     8
*
williamr@2
     9
* Initial Contributors:
williamr@2
    10
* Nokia Corporation - initial contribution.
williamr@2
    11
*
williamr@2
    12
* Contributors:
williamr@2
    13
*
williamr@2
    14
* Description:  RConnectionMonitor provides an interface for an application to
williamr@2
    15
*                get information about active data connection. It also provides
williamr@2
    16
*                a way to close any connection or all the connections.
williamr@2
    17
*
williamr@2
    18
*/
williamr@2
    19
williamr@2
    20
#ifndef __CONNECTIONMONITOR_H
williamr@2
    21
#define __CONNECTIONMONITOR_H
williamr@2
    22
williamr@2
    23
#include <e32base.h>
williamr@2
    24
williamr@2
    25
williamr@2
    26
// ===========================================================================
williamr@2
    27
// TInt attribute constants, used by GetIntAttribute, SetIntAttribute.
williamr@2
    28
// ===========================================================================
williamr@2
    29
//
williamr@2
    30
/** Bearer, defined in TConnMonBearerType.
williamr@2
    31
*/
williamr@2
    32
const TUint KBearer = 1;
williamr@2
    33
/** Network status, defined in TConnMonNetworkStatus.
williamr@2
    34
*/
williamr@2
    35
const TUint KNetworkStatus = 2;
williamr@2
    36
/** Connection status, progress constants are from nifvar.h.
williamr@2
    37
*/
williamr@2
    38
const TUint KConnectionStatus = 3;
williamr@2
    39
/** Protocol, defined in TConnMonProtocolType.
williamr@2
    40
*/
williamr@2
    41
const TUint KProtocolType = 4;
williamr@2
    42
/** Network registration values defined in TConnMonNetworkRegistration.
williamr@2
    43
*/
williamr@2
    44
const TUint KNetworkRegistration = 5;
williamr@2
    45
/** Signal strength in dBm.
williamr@2
    46
*/
williamr@2
    47
const TUint KSignalStrength = 6;
williamr@2
    48
/** WLAN mode, defined in TConnMonNetworkMode.
williamr@2
    49
*/
williamr@2
    50
const TUint KNetworkMode = 7;
williamr@2
    51
/** WLAN connection security mode, defined in TConnMonSecurityMode.
williamr@2
    52
*/
williamr@2
    53
const TUint KSecurityMode = 8;
williamr@2
    54
/** Bearer information, defined in TConnMonBearerInfo.
williamr@2
    55
*/
williamr@2
    56
const TUint KBearerInfo = 9;
williamr@2
    57
/** Acceptable WLAN scan cache age in seconds. Set to -1 to use device
williamr@2
    58
default. Only has meaning if KWlanScanMaxDelay is set to 0.
williamr@2
    59
*/
williamr@2
    60
const TUint KWlanScanCacheLifetime = 10;
williamr@4
    61
williamr@4
    62
/** Network registration values defined in TConnMonNetworkRegistration_v2.
williamr@4
    63
*/
williamr@4
    64
const TUint KNetworkRegistration_v2 = 11;
williamr@4
    65
williamr@2
    66
/** QoS - Not supported.
williamr@2
    67
*/
williamr@2
    68
const TUint KTrafficClass = 30;
williamr@2
    69
/** QoS - Not supported.
williamr@2
    70
*/
williamr@2
    71
const TUint KDeliveryOrder = 31;
williamr@2
    72
/** QoS - Not supported.
williamr@2
    73
*/
williamr@2
    74
const TUint KErroneousSDUDelivery = 32;
williamr@2
    75
/** QoS - Not supported.
williamr@2
    76
*/
williamr@2
    77
const TUint KResidualBitErrorRatio = 33;
williamr@2
    78
/** QoS - Not supported.
williamr@2
    79
*/
williamr@2
    80
const TUint KSDUErrorRatio = 34;
williamr@2
    81
williamr@2
    82
williamr@2
    83
// ===========================================================================
williamr@2
    84
// TUint attribute constants, used by GetUintAttribute, SetUintAttribute.
williamr@2
    85
// ===========================================================================
williamr@2
    86
//
williamr@2
    87
/** Downlink data in bytes.
williamr@2
    88
*/
williamr@2
    89
const TUint KDownlinkData = 100;
williamr@2
    90
/** Uplink data in bytes.
williamr@2
    91
*/
williamr@2
    92
const TUint KUplinkData = 101;
williamr@2
    93
/** Used IAP ID.
williamr@2
    94
*/
williamr@2
    95
const TUint KIAPId = 102;
williamr@2
    96
/** Network ID.
williamr@2
    97
*/
williamr@2
    98
const TUint KNetworkIdentifier = 103;
williamr@2
    99
/** WLAN transmit power in mW.
williamr@2
   100
*/
williamr@2
   101
const TUint KTransmitPower = 104;
williamr@2
   102
/** Current network mode, defined in TConnMonMobilePhoneNetworkMode.
williamr@2
   103
*/
williamr@2
   104
const TUint KMobilePhoneNetworkMode = 105;
williamr@2
   105
/** QoS - Not supported.
williamr@2
   106
*/
williamr@2
   107
const TUint KMaximumBitrateDownlink = 130;
williamr@2
   108
/** QoS - Not supported.
williamr@2
   109
*/
williamr@2
   110
const TUint KMaximumBitrateUplink = 131;
williamr@2
   111
/** QoS - Not supported.
williamr@2
   112
*/
williamr@2
   113
const TUint KMaximumSDUSize = 132;
williamr@2
   114
/** QoS - Not supported.
williamr@2
   115
*/
williamr@2
   116
const TUint KTransferDelay = 133;
williamr@2
   117
/** QoS - Not supported.
williamr@2
   118
*/
williamr@2
   119
const TUint KGuaranteedBitrateDownlink = 134;
williamr@2
   120
/** QoS - Not supported.
williamr@2
   121
*/
williamr@2
   122
const TUint KGuaranteedBitrateUplink = 135;
williamr@2
   123
/** QoS - Not supported.
williamr@2
   124
*/
williamr@2
   125
const TUint KTrafficHandlingPriority = 136;
williamr@2
   126
/** Enables EConnMonConnectionActivityChange events.
williamr@2
   127
0 means off, minimum allowed is 5 seconds.
williamr@2
   128
*/
williamr@2
   129
const TUint KActivityTimeThreshold = 150;
williamr@2
   130
/** Enables EConnMonDownlinkDataThreshold events.
williamr@2
   131
0 means off, minimum allowed is 4096 bytes.
williamr@2
   132
*/
williamr@2
   133
const TUint KDownlinkDataThreshold = 151;
williamr@2
   134
/** Enables EConnMonUplinkDataThreshold events.
williamr@2
   135
0 means off, minimum allowed is 4096 bytes.
williamr@2
   136
*/
williamr@2
   137
const TUint KUplinkDataThreshold = 152;
williamr@2
   138
/** Enables EConnMonBearerAvailabilityChange events.
williamr@2
   139
*/
williamr@2
   140
const TUint KBearerAvailabilityThreshold = 153;
williamr@2
   141
/** Enables EConnMonSignalStrengthChange events.
williamr@2
   142
*/
williamr@2
   143
const TUint KSignalStrengthThreshold = 154;
williamr@2
   144
/** If set, disables EConnMonBearerChange events and enables
williamr@2
   145
EConnMonBearerInfoChange and EConnMonBearerGroupChange events instead.
williamr@2
   146
*/
williamr@2
   147
const TUint KBearerGroupThreshold = 155;
williamr@2
   148
/** Acceptable delay in seconds for receiving WLAN scan results.
williamr@2
   149
If set to 0 (default), KWlanScanCacheLifetime will be used.
williamr@2
   150
*/
williamr@2
   151
const TUint KWlanScanMaxDelay = 160;
williamr@2
   152
williamr@2
   153
williamr@2
   154
// ===========================================================================
williamr@2
   155
// TBool attribute constants, used by GetBoolAttribute, SetBoolAttribute.
williamr@2
   156
// ===========================================================================
williamr@2
   157
//
williamr@2
   158
/** Connection activity.
williamr@2
   159
*/
williamr@2
   160
const TUint KConnectionActive = 200;
williamr@2
   161
/** Bearer availability.
williamr@2
   162
*/
williamr@2
   163
const TUint KBearerAvailability = 201;
williamr@2
   164
/** Packet data availability. Can be blocked if phone call is active and no
williamr@2
   165
dual transfer mode support.
williamr@2
   166
*/
williamr@2
   167
const TUint KPacketDataAvailability = 202;
williamr@2
   168
/** Stop a connection.
williamr@2
   169
*/
williamr@2
   170
const TUint KConnectionStop = 250;
williamr@2
   171
/** Stop all connections.
williamr@2
   172
*/
williamr@2
   173
const TUint KConnectionStopAll = 251;
williamr@2
   174
williamr@2
   175
williamr@2
   176
// ===========================================================================
williamr@2
   177
// TDes attribute constants, used by GetStringAttribute, SetStringAttribute.
williamr@2
   178
// ===========================================================================
williamr@2
   179
//
williamr@2
   180
/** Name of used IAP.
williamr@2
   181
*/
williamr@2
   182
const TUint KIAPName = 300;
williamr@2
   183
/** Name of used access point.
williamr@2
   184
*/
williamr@2
   185
const TUint KAccessPointName = 301;
williamr@2
   186
/** Used telephone number.
williamr@2
   187
*/
williamr@2
   188
const TUint KTelNumber = 302;
williamr@2
   189
/** Name (SSID) of used WLAN.
williamr@2
   190
*/
williamr@2
   191
const TUint KNetworkName = 303;
williamr@2
   192
/** WLAN name (SSID) to be used in SSID scan (KWlanSsidNetworks).
williamr@2
   193
*/
williamr@2
   194
const TUint KWlanSsid = 304;
williamr@2
   195
williamr@2
   196
williamr@2
   197
// ===========================================================================
williamr@2
   198
// TPckgBuf attribute constants, used by GetPckgAttribute.
williamr@2
   199
// ===========================================================================
williamr@2
   200
//
williamr@2
   201
/** Connection start time. See TConnMonTimeBuf.
williamr@2
   202
*/
williamr@2
   203
const TUint KStartTime = 400;
williamr@2
   204
/** All clients using a connection. See TConnMonClientEnumBuf.
williamr@2
   205
*/
williamr@2
   206
const TUint KClientInfo = 401;
williamr@2
   207
/** Basic WLAN scan information. See TConnMonNetworkNamesBuf.
williamr@2
   208
*/
williamr@2
   209
const TUint KNetworkNames = 402;
williamr@2
   210
/** Available IAP IDs. See TConnMonIapInfoBuf.
williamr@2
   211
*/
williamr@2
   212
const TUint KIapAvailability = 403;
williamr@2
   213
/** Deprecated. Old WLAN scan results, use KWlanNetworks instead.
williamr@2
   214
*/
williamr@2
   215
const TUint KWLANNetworks = 404;
williamr@2
   216
/** Available SNAP IDs. See TConnMonSNAPInfoBuf.
williamr@2
   217
*/
williamr@2
   218
const TUint KSNAPsAvailability = 405;
williamr@2
   219
/** Available SNAP IDs, in a more flexible way. See ConnMonIdsArrayPckg.
williamr@2
   220
*/
williamr@2
   221
const TUint KAvailableSNAPsIds = 406;
williamr@2
   222
/** WLAN scan results. See CConnMonWlanNetworksPtrArrayPckg.
williamr@2
   223
*/
williamr@2
   224
const TUint KWlanNetworks = 407;
williamr@2
   225
/** Bearer group information. See TConnMonBearerGroupInfoBuf.
williamr@2
   226
*/
williamr@2
   227
const TUint KBearerGroupInfo = 408;
williamr@2
   228
/** WLAN SSID scan results. Scans for WLANs with a specific SSID.
williamr@2
   229
See CConnMonWlanNetworksPtrArrayPckg.
williamr@2
   230
*/
williamr@2
   231
const TUint KWlanSsidNetworks = 409;
williamr@2
   232
/** Information about the currently used WLAN.
williamr@2
   233
See CConnMonWlanNetworksPtrArrayPckg.
williamr@2
   234
*/
williamr@2
   235
const TUint KWlanCurrentNetwork = 410;
williamr@2
   236
/** Beacon frames from a WLAN scan. See CConnMonWlanProbeRawBuffersPckg.
williamr@2
   237
*/
williamr@2
   238
const TUint KWlanProbeRawBuffers = 411;
williamr@2
   239
williamr@2
   240
williamr@2
   241
/** Base value for plug-in specific attribute IDs.
williamr@2
   242
*/
williamr@2
   243
const TUint KConnMonPluginAttributeBase = 3000000;
williamr@2
   244
williamr@2
   245
williamr@2
   246
/**
williamr@2
   247
* Bearer type.
williamr@2
   248
*/
williamr@2
   249
enum TConnMonBearerType
williamr@2
   250
    {
williamr@2
   251
    EBearerUnknown           = 0,
williamr@2
   252
    EBearerCSD               = 1,  ///< CSD (GSM)
williamr@2
   253
    EBearerWCDMA             = 2,  ///< PSD (WCDMA)
williamr@2
   254
    EBearerLAN               = 3,
williamr@2
   255
    EBearerCDMA2000          = 4,
williamr@2
   256
    EBearerGPRS              = 5,
williamr@2
   257
    EBearerHSCSD             = 6,  ///< HSCSD (GSM)
williamr@2
   258
    EBearerEdgeGPRS          = 7,
williamr@2
   259
    EBearerWLAN              = 8,
williamr@2
   260
    EBearerBluetooth         = 9,
williamr@2
   261
    EBearerVirtual           = 10,
williamr@2
   262
    EBearerVirtualVPN        = 11,
williamr@2
   263
    EBearerWcdmaCSD          = 12, ///< CSD (WCDMA)
williamr@2
   264
williamr@2
   265
    EBearerExternalCSD       = 30, ///< external CSD (GSM)
williamr@2
   266
    EBearerExternalWCDMA     = 31, ///< external PSD (WCDMA)
williamr@2
   267
    EBearerExternalLAN       = 32,
williamr@2
   268
    EBearerExternalCDMA2000  = 33,
williamr@2
   269
    EBearerExternalGPRS      = 34,
williamr@2
   270
    EBearerExternalHSCSD     = 35, ///< external HSCSD (GSM)
williamr@2
   271
    EBearerExternalEdgeGPRS  = 36,
williamr@2
   272
    EBearerExternalWLAN      = 37,
williamr@2
   273
    EBearerExternalBluetooth = 38,
williamr@2
   274
    EBearerExternalWcdmaCSD  = 39, ///< external CSD (WCDMA)
williamr@2
   275
    };
williamr@2
   276
williamr@2
   277
/**
williamr@2
   278
* Bearer specific general connection ID.
williamr@2
   279
*/
williamr@2
   280
enum TConnMonBearerId
williamr@2
   281
    {
williamr@2
   282
    EBearerIdAll        = 0,
williamr@2
   283
    EBearerIdGPRS       = 2000000, ///< Internal/external GPRS and EdgeGPRS
williamr@2
   284
    EBearerIdWCDMA      = 2000001, ///< Internal/external PSD (WCDMA)
williamr@2
   285
    EBearerIdCSD        = 2000002, ///< Internal/external CSD and HSCSD (GSM)
williamr@2
   286
    EBearerIdGSM        = 2000003, ///< Union of EBearerIdGPRS and EBearerIdCSD
williamr@2
   287
    EBearerIdWLAN       = 2000004,
williamr@2
   288
    EBearerIdLAN        = 2000005,
williamr@2
   289
    EBearerIdWcdmaCSD   = 2000006, ///< Internal/external CSD (WCDMA)
williamr@2
   290
    EBearerIdCDMA2000   = 2000007,
williamr@2
   291
    EBearerIdVirtualVPN = 2000008
williamr@2
   292
    };
williamr@2
   293
williamr@2
   294
/**
williamr@2
   295
* Network status.
williamr@2
   296
*/
williamr@2
   297
enum TConnMonNetworkStatus
williamr@2
   298
    {
williamr@2
   299
    EConnMonStatusNotAvailable = 0,
williamr@2
   300
    EConnMonStatusUnattached,
williamr@2
   301
    EConnMonStatusAttached,
williamr@2
   302
    EConnMonStatusActive,
williamr@2
   303
    EConnMonStatusSuspended
williamr@2
   304
    };
williamr@2
   305
williamr@2
   306
/**
williamr@2
   307
* Protocol type (type of PDP). It may not be available for some
williamr@2
   308
* bearers (returns EProtocolTypeUnknown).
williamr@2
   309
*/
williamr@2
   310
enum TConnMonProtocolType
williamr@2
   311
    {
williamr@2
   312
    EProtocolTypeUnknown = 0,
williamr@2
   313
    EProtocolTypeIPv4,
williamr@2
   314
    EProtocolTypeIPv6,
williamr@2
   315
    EProtocolTypeX25,
williamr@2
   316
    EProtocolTypePPP,
williamr@2
   317
    EProtocolTypeCDPD,
williamr@2
   318
    EProtocolTypeIP           ///< Connection uses both IPv4 and IPv6
williamr@2
   319
    };
williamr@2
   320
williamr@2
   321
/**
williamr@2
   322
* Asyncronous request codes.
williamr@2
   323
*/
williamr@2
   324
enum TConnMonAsyncRequest
williamr@2
   325
    {
williamr@2
   326
    EConnMonGetConnectionCount = 1,
williamr@2
   327
    EConnMonGetIntAttribute,
williamr@2
   328
    EConnMonGetUintAttribute,
williamr@2
   329
    EConnMonGetBoolAttribute,
williamr@2
   330
    EConnMonGetStringAttribute,
williamr@2
   331
    EConnMonGetPckgAttribute
williamr@2
   332
    };
williamr@2
   333
williamr@2
   334
/**
williamr@2
   335
* Events sent by Connection Monitor. See SDK documentation for more details.
williamr@2
   336
*/
williamr@2
   337
enum TConnMonEvent
williamr@2
   338
    {
williamr@2
   339
    EConnMonCreateConnection          = 1,
williamr@2
   340
    EConnMonDeleteConnection          = 2,
williamr@2
   341
    EConnMonCreateSubConnection       = 3,  ///< Not supported
williamr@2
   342
    EConnMonDeleteSubConnection       = 4,  ///< Not supported
williamr@2
   343
    EConnMonDownlinkDataThreshold     = 5,
williamr@2
   344
    EConnMonUplinkDataThreshold       = 6,
williamr@2
   345
    EConnMonNetworkStatusChange       = 7,
williamr@2
   346
    EConnMonConnectionStatusChange    = 8,
williamr@2
   347
    EConnMonConnectionActivityChange  = 9,
williamr@2
   348
    EConnMonNetworkRegistrationChange = 10,
williamr@2
   349
    EConnMonBearerChange              = 11,
williamr@2
   350
    EConnMonSignalStrengthChange      = 12, ///< For cellular, not WLAN
williamr@2
   351
    EConnMonBearerAvailabilityChange  = 13,
williamr@2
   352
    EConnMonIapAvailabilityChange     = 14,
williamr@2
   353
    EConnMonTransmitPowerChange       = 15, ///< For WLAN
williamr@2
   354
    EConnMonSNAPsAvailabilityChange   = 16,
williamr@2
   355
    EConnMonNewWLANNetworkDetected    = 17,
williamr@2
   356
    EConnMonOldWLANNetworkLost        = 18,
williamr@2
   357
    EConnMonPacketDataAvailable       = 19,
williamr@2
   358
    EConnMonPacketDataUnavailable     = 20,
williamr@2
   359
    EConnMonBearerInfoChange          = 21,
williamr@2
   360
    EConnMonBearerGroupChange         = 22,
williamr@2
   361
williamr@2
   362
    EConnMonPluginEventBase           = 4000000
williamr@2
   363
    };
williamr@2
   364
williamr@2
   365
/**
williamr@2
   366
* Network registration status. Valid for CSD, GPRS and WCDMA.
williamr@2
   367
*/
williamr@2
   368
enum TConnMonNetworkRegistration
williamr@2
   369
    {
williamr@2
   370
    ENetworkRegistrationNotAvailable = 0,
williamr@2
   371
    ENetworkRegistrationUnknown,
williamr@2
   372
    ENetworkRegistrationNoService,
williamr@2
   373
    ENetworkRegistrationEmergencyOnly,
williamr@2
   374
    ENetworkRegistrationSearching,
williamr@2
   375
    ENetworkRegistrationBusy,
williamr@2
   376
    ENetworkRegistrationHomeNetwork,
williamr@2
   377
    ENetworkRegistrationDenied,
williamr@2
   378
    ENetworkRegistrationRoaming
williamr@2
   379
    };
williamr@2
   380
williamr@2
   381
/**
williamr@4
   382
* Network registration status. Valid for CSD, GPRS and WCDMA.
williamr@4
   383
* New values will be added to the end of the enumeration.
williamr@4
   384
*/
williamr@4
   385
enum TConnMonNetworkRegistration_v2
williamr@4
   386
    {
williamr@4
   387
    ENetworkRegistrationExtNotAvailable = 0,
williamr@4
   388
    ENetworkRegistrationExtUnknown,
williamr@4
   389
    ENetworkRegistrationExtNoService,
williamr@4
   390
    ENetworkRegistrationExtEmergencyOnly,
williamr@4
   391
    ENetworkRegistrationExtSearching,
williamr@4
   392
    ENetworkRegistrationExtBusy,
williamr@4
   393
    ENetworkRegistrationExtHomeNetwork,
williamr@4
   394
    ENetworkRegistrationExtDenied,
williamr@4
   395
    ENetworkRegistrationExtRoamingNational,
williamr@4
   396
    ENetworkRegistrationExtRoamingInternational
williamr@4
   397
    };
williamr@4
   398
    
williamr@4
   399
/**
williamr@2
   400
* QoS. Traffic class.
williamr@2
   401
*/
williamr@2
   402
enum TQosTrafficClass
williamr@2
   403
    {
williamr@2
   404
    EQosTrafficClassConversational = 1,
williamr@2
   405
    EQosTrafficClassStreaming,
williamr@2
   406
    EQosTrafficClassInteractive,
williamr@2
   407
    EQosTrafficClassBackground
williamr@2
   408
    };
williamr@2
   409
williamr@2
   410
/**
williamr@2
   411
* QoS. Delivery order.
williamr@2
   412
*/
williamr@2
   413
enum TQosDeliveryOrder
williamr@2
   414
    {
williamr@2
   415
    EQosDeliveryOrderYes = 1,
williamr@2
   416
    EQosDeliveryOrderNo
williamr@2
   417
    };
williamr@2
   418
williamr@2
   419
/**
williamr@2
   420
* QoS. Delivery of erroneous SDUs.
williamr@2
   421
*/
williamr@2
   422
enum TQosErroneousSDUDelivery
williamr@2
   423
    {
williamr@2
   424
    EQosErroneousSDUDeliveryYes = 1,
williamr@2
   425
    EQosErroneousSDUDeliveryNo,
williamr@2
   426
    EQosErroneousSDUDeliveryUnspecified
williamr@2
   427
    };
williamr@2
   428
williamr@2
   429
/**
williamr@2
   430
* QoS. Residual bit error ratio.
williamr@2
   431
*/
williamr@2
   432
enum TQosBitErrorRatio
williamr@2
   433
    {
williamr@2
   434
    EQosBERFivePerHundred = 1,
williamr@2
   435
    EQosBEROnePerHundred,
williamr@2
   436
    EQosBERFivePerThousand,
williamr@2
   437
    EQosBEROnePerThousand,
williamr@2
   438
    EQosBEROnePerTenThousand,
williamr@2
   439
    EQosBEROnePerMillion
williamr@2
   440
    };
williamr@2
   441
williamr@2
   442
/**
williamr@2
   443
* QoS. SDU error ratio.
williamr@2
   444
*/
williamr@2
   445
enum TQosSDUErrorRatio
williamr@2
   446
    {
williamr@2
   447
    EQosSDUErrorRatioOnePerHundred = 1,
williamr@2
   448
    EQosSDUErrorRatioSevenPerThousand,
williamr@2
   449
    EQosSDUErrorRatioOnePerThousand,
williamr@2
   450
    EQosSDUErrorRatioOnePerTenThousand,
williamr@2
   451
    EQosSDUErrorRatioOnePerHundredThousand
williamr@2
   452
    };
williamr@2
   453
williamr@2
   454
/**
williamr@2
   455
* Client-server requests.
williamr@2
   456
*/
williamr@2
   457
enum TConnMonRequests
williamr@2
   458
    {
williamr@2
   459
    EReqGetConnectionCount            = 0,
williamr@2
   460
    EReqGetConnectionInfo             = 1,
williamr@2
   461
    EReqGetSubConnectionInfo          = 2,
williamr@2
   462
    EReqGetIntAttribute               = 3,
williamr@2
   463
    EReqGetUintAttribute              = 4,
williamr@2
   464
    EReqGetBoolAttribute              = 5,
williamr@2
   465
    EReqGetStringAttribute            = 6,
williamr@2
   466
    EReqGetPckgAttribute              = 7,
williamr@2
   467
    EReqSetIntAttribute               = 8,
williamr@2
   468
    EReqSetUintAttribute              = 9,
williamr@2
   469
    EReqSetBoolAttribute              = 10,
williamr@2
   470
    EReqSetStringAttribute            = 11,
williamr@2
   471
    EReqSetPckgAttribute              = 12,
williamr@2
   472
    EReqCancelAsyncRequest            = 13,
williamr@2
   473
    EReqReceiveEvent                  = 14,
williamr@2
   474
    EReqCancelReceiveEvent            = 15,
williamr@2
   475
williamr@2
   476
    EReqPluginCreateSubSession        = 500,
williamr@2
   477
    EReqPluginCloseSubSession         = 501,
williamr@2
   478
    EReqPluginRegisterAttribute       = 502,
williamr@2
   479
    EReqPluginCancelRegisterAttribute = 503,
williamr@2
   480
    EReqPluginEvent                   = 504,
williamr@2
   481
    EReqPluginGetQuery                = 505,
williamr@2
   482
    EReqPluginCancelGetQuery          = 506,
williamr@2
   483
    EReqPluginAttribute               = 507,
williamr@2
   484
williamr@2
   485
    EReqInternalSetThreshold          = 600,
williamr@2
   486
    EReqInternalResetThreshold        = 601
williamr@2
   487
    };
williamr@2
   488
williamr@2
   489
/**
williamr@2
   490
* WLAN connection modes.
williamr@2
   491
*/
williamr@2
   492
enum TConnMonNetworkMode
williamr@2
   493
    {
williamr@2
   494
    EConnMonInfraStructure = 0,
williamr@2
   495
    EConnMonAdHoc          = 1,
williamr@2
   496
    EConnMonSecureInfra    = 2
williamr@2
   497
    };
williamr@2
   498
williamr@2
   499
/**
williamr@2
   500
* WLAN connection security modes.
williamr@2
   501
*/
williamr@2
   502
enum TConnMonSecurityMode
williamr@2
   503
    {
williamr@2
   504
    EConnMonSecurityOpen   = 0,
williamr@2
   505
    EConnMonSecurityWep    = 1,
williamr@2
   506
    EConnMonSecurity802d1x = 2,
williamr@2
   507
    EConnMonSecurityWpa    = 3,
williamr@2
   508
    EConnMonSecurityWpaPsk = 4
williamr@2
   509
    };
williamr@2
   510
williamr@2
   511
/**
williamr@2
   512
* Network Modes.
williamr@2
   513
*/
williamr@2
   514
enum TConnMonMobilePhoneNetworkMode
williamr@2
   515
    {
williamr@2
   516
    EConnMonNetworkModeUnknown = 0,  ///< Network mode is unknown
williamr@2
   517
    EConnMonNetworkModeUnregistered, ///< ME is not registered
williamr@2
   518
    EConnMonNetworkModeGsm,          ///< GSM/GPRS or DCS1800 network
williamr@2
   519
    EConnMonNetworkModeAmps,         ///< AMPS network (CDMA)
williamr@2
   520
    EConnMonNetworkModeCdma95,       ///< CDMA (IS-95) network
williamr@2
   521
    EConnMonNetworkModeCdma2000,     ///< CDMA (cdma2000) network
williamr@2
   522
    EConnMonNetworkModeWcdma,        ///< WCDMA (UTRA FDD) network
williamr@2
   523
    EConnMonNetworkModeTdcdma        ///< TD-CDMA (UTRA TDD) network (WCDMA)
williamr@2
   524
    };
williamr@2
   525
williamr@2
   526
/** Maximum size of a plug-in's event data.
williamr@2
   527
*/
williamr@2
   528
const TUint KConnMonMaxPluginDataSize = 512;
williamr@2
   529
/** Maximum size of a plug-in's attribute.
williamr@2
   530
*/
williamr@2
   531
const TUint KConnMonMaxStringAttributeLength = 64;
williamr@2
   532
williamr@2
   533
/**
williamr@2
   534
* Package class definition for getting the TTime.
williamr@2
   535
*/
williamr@2
   536
typedef TPckgBuf<TTime> TConnMonTimeBuf;
williamr@2
   537
williamr@2
   538
/** Maximum number of clients contained in TConnMonClientEnum class.
williamr@2
   539
*/
williamr@2
   540
const TUint KConnMonMaxClientUids = 10;
williamr@2
   541
williamr@2
   542
/**
williamr@2
   543
* Class to contain client UIDs of a connection.
williamr@2
   544
*/
williamr@2
   545
class TConnMonClientEnum
williamr@2
   546
    {
williamr@2
   547
public:
williamr@2
   548
    /**
williamr@2
   549
    * Constructor.
williamr@2
   550
    */
williamr@2
   551
    inline TConnMonClientEnum():iCount( 0 )
williamr@2
   552
        {
williamr@2
   553
        }
williamr@2
   554
public:
williamr@2
   555
    /**
williamr@2
   556
    * Number of UIDs in iUid array.
williamr@2
   557
    */
williamr@2
   558
    TUint iCount;
williamr@2
   559
    /**
williamr@2
   560
    * Array for client UIDs.
williamr@2
   561
    */
williamr@2
   562
    TUid iUid[KConnMonMaxClientUids];
williamr@2
   563
    };
williamr@2
   564
williamr@2
   565
/**
williamr@2
   566
* Package class definition for getting the client information.
williamr@2
   567
*/
williamr@2
   568
typedef TPckgBuf<TConnMonClientEnum> TConnMonClientEnumBuf;
williamr@2
   569
williamr@2
   570
/** Maximum number of WLANs contained in TConnMonNetworkNames class.
williamr@2
   571
*/
williamr@2
   572
const TUint KConnMonMaxNetworkCount = 10;
williamr@2
   573
williamr@2
   574
/**
williamr@2
   575
* Class to contain basic WLAN information.
williamr@2
   576
*/
williamr@2
   577
class TConnMonNetwork
williamr@2
   578
{
williamr@2
   579
public:
williamr@2
   580
    /**
williamr@2
   581
    * Constructor.
williamr@2
   582
    */
williamr@2
   583
    inline TConnMonNetwork():iType( 0 ), iSignalStrength( 0 )
williamr@2
   584
        {
williamr@2
   585
        }
williamr@2
   586
public:
williamr@2
   587
    /**
williamr@2
   588
    * WLAN name (SSID).
williamr@2
   589
    */
williamr@2
   590
    TBuf8<32> iName;
williamr@2
   591
    /**
williamr@2
   592
    * WLAN mode, defined in TConnMonNetworkMode.
williamr@2
   593
    */
williamr@2
   594
    TInt8 iType;
williamr@2
   595
    /**
williamr@2
   596
    * Signal strength in dBm. Given as absolute, correct value is negative.
williamr@2
   597
    */
williamr@2
   598
    TUint8 iSignalStrength;
williamr@2
   599
    };
williamr@2
   600
williamr@2
   601
/**
williamr@2
   602
* Class to contain an array of basic WLAN information.
williamr@2
   603
*/
williamr@2
   604
class TConnMonNetworkNames
williamr@2
   605
    {
williamr@2
   606
public:
williamr@2
   607
    /**
williamr@2
   608
    * Constructor.
williamr@2
   609
    */
williamr@2
   610
    inline TConnMonNetworkNames():iCount( 0 )
williamr@2
   611
        {
williamr@2
   612
        }
williamr@2
   613
    /**
williamr@2
   614
    * This method returns the number of WLANs contained in this class.
williamr@2
   615
    *
williamr@2
   616
    * @return Number of WLANs.
williamr@2
   617
    */
williamr@2
   618
    inline TUint Count()
williamr@2
   619
        {
williamr@2
   620
        return iCount;
williamr@2
   621
        }
williamr@2
   622
public:
williamr@2
   623
    /**
williamr@2
   624
    * Number of items in WLAN array.
williamr@2
   625
    */
williamr@2
   626
    TUint iCount;
williamr@2
   627
    /**
williamr@2
   628
    * Array of WLANs.
williamr@2
   629
    */
williamr@2
   630
    TConnMonNetwork iNetwork[KConnMonMaxNetworkCount];
williamr@2
   631
    };
williamr@2
   632
williamr@2
   633
/**
williamr@2
   634
* Package class definition for getting basic WLAN scan information.
williamr@2
   635
*/
williamr@2
   636
typedef TPckgBuf<TConnMonNetworkNames> TConnMonNetworkNamesBuf;
williamr@2
   637
williamr@2
   638
/** Maximum number of IAPs contained in TConnMonIapInfo class.
williamr@2
   639
*/
williamr@2
   640
const TUint KConnMonMaxIAPCount = 25;
williamr@2
   641
williamr@2
   642
/**
williamr@2
   643
* Class representing an IAP.
williamr@2
   644
*/
williamr@2
   645
class TConnMonIap
williamr@2
   646
    {
williamr@2
   647
public:
williamr@2
   648
    /**
williamr@2
   649
    * Constructor.
williamr@2
   650
    */
williamr@2
   651
    inline TConnMonIap():iIapId( 0 )
williamr@2
   652
        {
williamr@2
   653
        }
williamr@2
   654
public:
williamr@2
   655
    /**
williamr@2
   656
    * IAP ID number.
williamr@2
   657
    */
williamr@2
   658
    TUint iIapId;
williamr@2
   659
    };
williamr@2
   660
williamr@2
   661
/**
williamr@2
   662
* Class to contain an array of IAPs.
williamr@2
   663
*/
williamr@2
   664
class TConnMonIapInfo
williamr@2
   665
    {
williamr@2
   666
public:
williamr@2
   667
    /**
williamr@2
   668
    * Constructor.
williamr@2
   669
    */
williamr@2
   670
    inline TConnMonIapInfo():iCount( 0 )
williamr@2
   671
        {
williamr@2
   672
        }
williamr@2
   673
    /**
williamr@2
   674
    * This method returns the number of IAPs contained in this class.
williamr@2
   675
    *
williamr@2
   676
    * @return Number of IAPs.
williamr@2
   677
    */
williamr@2
   678
    inline TUint Count()
williamr@2
   679
        {
williamr@2
   680
        return iCount;
williamr@2
   681
        }
williamr@2
   682
public:
williamr@2
   683
    /**
williamr@2
   684
    * Number of items in IAP array.
williamr@2
   685
    */
williamr@2
   686
    TUint iCount;
williamr@2
   687
    /**
williamr@2
   688
    * Array of IAPs.
williamr@2
   689
    */
williamr@2
   690
    TConnMonIap iIap[KConnMonMaxIAPCount];
williamr@2
   691
    };
williamr@2
   692
williamr@2
   693
/** Package class definiton for getting available IAPs.
williamr@2
   694
*/
williamr@2
   695
typedef TPckgBuf<TConnMonIapInfo> TConnMonIapInfoBuf;
williamr@2
   696
williamr@2
   697
/** Maximum number of SNAPs contained in TConnMonSNAPInfo class.
williamr@2
   698
*/
williamr@2
   699
const TUint KConnMonMaxSNAPsCount = 25;
williamr@2
   700
williamr@2
   701
/**
williamr@2
   702
* Class representing a SNAP.
williamr@2
   703
*/
williamr@2
   704
class TConnMonSNAPId
williamr@2
   705
    {
williamr@2
   706
public:
williamr@2
   707
    /**
williamr@2
   708
    * Constructor.
williamr@2
   709
    */
williamr@2
   710
    inline TConnMonSNAPId():iSNAPId( 0 )
williamr@2
   711
        {
williamr@2
   712
        }
williamr@2
   713
public:
williamr@2
   714
    /**
williamr@2
   715
    * SNAP ID number.
williamr@2
   716
    */
williamr@2
   717
    TUint iSNAPId;
williamr@2
   718
    };
williamr@2
   719
williamr@2
   720
/**
williamr@2
   721
* Class to contain an array of SNAPs.
williamr@2
   722
*/
williamr@2
   723
class TConnMonSNAPInfo
williamr@2
   724
    {
williamr@2
   725
public:
williamr@2
   726
    /**
williamr@2
   727
    * Constructor.
williamr@2
   728
    */
williamr@2
   729
    inline TConnMonSNAPInfo():iCount( 0 )
williamr@2
   730
        {
williamr@2
   731
        }
williamr@2
   732
    /**
williamr@2
   733
    * This method returns the number of SNAPs contained in this class.
williamr@2
   734
    *
williamr@2
   735
    * @return Number of SNAPs.
williamr@2
   736
    */
williamr@2
   737
    inline TUint Count()
williamr@2
   738
        {
williamr@2
   739
        return iCount;
williamr@2
   740
        }
williamr@2
   741
public:
williamr@2
   742
    /**
williamr@2
   743
    * Number of items in SNAP array.
williamr@2
   744
    */
williamr@2
   745
    TUint iCount;
williamr@2
   746
    /**
williamr@2
   747
    * Array of SNAPs.
williamr@2
   748
    */
williamr@2
   749
    TConnMonSNAPId iSNAP[KConnMonMaxSNAPsCount];
williamr@2
   750
    };
williamr@2
   751
williamr@2
   752
/** Package class definiton for getting available SNAPs.
williamr@2
   753
*/
williamr@2
   754
typedef TPckgBuf<TConnMonSNAPInfo> TConnMonSNAPInfoBuf;
williamr@2
   755
williamr@2
   756
/**
williamr@2
   757
* Bearer group definition, new values will be added to the end of the
williamr@2
   758
* enumeration.
williamr@2
   759
*/
williamr@2
   760
enum TConnMonBearerGroup
williamr@2
   761
    {
williamr@2
   762
    EBearerGroupUnknown                    = 0,
williamr@2
   763
    EBearerGroupCellular                   = 0x00000001,
williamr@2
   764
    EBearerGroupNonCellular                = 0x00000002,
williamr@2
   765
    EBearerGroupCellularPacket             = 0x00000004,
williamr@2
   766
    EBearerGroupCircuitSwitched            = 0x00000008,
williamr@2
   767
    EBearerGroup2G                         = 0x00000010,
williamr@2
   768
    EBearerGroup2GPacket                   = 0x00000020,
williamr@2
   769
    EBearerGroup3G                         = 0x00000040,
williamr@2
   770
    EBearerGroup3GPacket                   = 0x00000080,
williamr@2
   771
    EBearerGroupHSPA                       = 0x00000100,
williamr@2
   772
    EBearerGroupLANBased                   = 0x00000200,
williamr@2
   773
    EBearerGroupWLAN                       = 0x00000400,
williamr@2
   774
    EBearerGroupIPOverConnectivityProtocol = 0x00000800,
williamr@2
   775
    EBearerGroupWired                      = 0x00001000,
williamr@2
   776
    EBearerGroupVirtual                    = 0x00002000
williamr@2
   777
    };
williamr@2
   778
williamr@2
   779
/**
williamr@2
   780
* Bearer definition, new values will be added to the end of the enumeration.
williamr@2
   781
* These are used if KBearerInfo attribute is set or in events if
williamr@2
   782
* KBearerGroupThreshold is set.
williamr@2
   783
*/
williamr@2
   784
enum TConnMonBearerInfo
williamr@2
   785
    {
williamr@2
   786
    EBearerInfoUnknown = 0,
williamr@2
   787
    EBearerInfoCSD,
williamr@2
   788
    EBearerInfoWCDMA,
williamr@2
   789
    EBearerInfoLAN,
williamr@2
   790
    EBearerInfoCDMA2000,
williamr@2
   791
    EBearerInfoGPRS,
williamr@2
   792
    EBearerInfoHSCSD,
williamr@2
   793
    EBearerInfoEdgeGPRS,
williamr@2
   794
    EBearerInfoWLAN,
williamr@2
   795
    EBearerInfoBluetooth,
williamr@2
   796
    EBearerInfoVirtual,
williamr@2
   797
    EBearerInfoVirtualVPN,
williamr@2
   798
    EBearerInfoWcdmaCSD,
williamr@2
   799
    EBearerInfoHSDPA,
williamr@2
   800
    EBearerInfoHSUPA,
williamr@2
   801
    EBearerInfoHSxPA
williamr@2
   802
    };
williamr@2
   803
williamr@2
   804
/**
williamr@2
   805
* Class to contain bearer group information.
williamr@2
   806
*/
williamr@2
   807
class TConnMonBearerGroupInfo
williamr@2
   808
    {
williamr@2
   809
public:
williamr@2
   810
    /**
williamr@2
   811
    * Constructor.
williamr@2
   812
    */
williamr@2
   813
    inline TConnMonBearerGroupInfo():
williamr@2
   814
            iInternal( ETrue ),
williamr@2
   815
            iBearerGroups( 0 ),
williamr@2
   816
            iBearerGroups2( 0 )
williamr@2
   817
        {
williamr@2
   818
        }
williamr@2
   819
public:
williamr@2
   820
    /**
williamr@2
   821
    * Connection is internal or external.
williamr@2
   822
    */
williamr@2
   823
    TBool iInternal;
williamr@2
   824
    /**
williamr@2
   825
    * Bearer group bitmask.
williamr@2
   826
    */
williamr@2
   827
    TUint iBearerGroups;
williamr@2
   828
    /**
williamr@2
   829
    * Reserved for future use.
williamr@2
   830
    */
williamr@2
   831
    TUint iBearerGroups2;
williamr@2
   832
    };
williamr@2
   833
williamr@2
   834
/** Package class definiton for getting bearer group information.
williamr@2
   835
*/
williamr@2
   836
typedef TPckgBuf<TConnMonBearerGroupInfo> TConnMonBearerGroupInfoBuf;
williamr@2
   837
williamr@2
   838
/**
williamr@2
   839
* Class to represent a WLAN. Used when reporting WLAN scan results back to a
williamr@2
   840
* client.
williamr@2
   841
*/
williamr@2
   842
NONSHARABLE_CLASS( CConnMonWlanNetwork ) : public CBase
williamr@2
   843
    {
williamr@2
   844
public:
williamr@2
   845
    /** Maximum length of a WLAN name (SSID).
williamr@2
   846
    */
williamr@2
   847
    static const TUint KMaxNameLength = 32;
williamr@2
   848
    /** WLAN BSSID length (mac address).
williamr@2
   849
    */
williamr@2
   850
    static const TUint KWlanBssId = 6;
williamr@2
   851
    /** Reserved for future use.
williamr@2
   852
    */
williamr@2
   853
    static const TUint KExtraCount = 10;
williamr@2
   854
williamr@2
   855
    /**
williamr@2
   856
    * Constructor.
williamr@2
   857
    *
williamr@2
   858
    * @param aName Name (SSID) of the network.
williamr@2
   859
    * @param aConnectionMode Mode of the network.
williamr@2
   860
    * @param aSignalStrength Signal strength of the network.
williamr@2
   861
    * @param aSecurityMode Security mode of the network.
williamr@2
   862
    * @param aBssId Mac address (BSSID) of the base station.
williamr@2
   863
    * @param aVendorData Not in use.
williamr@2
   864
    * @return Pointer to the created CConnMonWlanNetwork object.
williamr@2
   865
    */
williamr@2
   866
    IMPORT_C static CConnMonWlanNetwork* NewL(
williamr@2
   867
            const TBuf<KMaxNameLength>& aName,
williamr@2
   868
            TUint aConnectionMode,
williamr@2
   869
            TUint aSignalStrength,
williamr@2
   870
            TUint aSecurityMode,
williamr@2
   871
            const TBuf8<KWlanBssId>& aBssId,
williamr@2
   872
            const TDesC& aVendorData );
williamr@2
   873
williamr@2
   874
    /**
williamr@2
   875
    * Constructor.
williamr@2
   876
    *
williamr@2
   877
    * @return Pointer to the created empty CConnMonWlanNetwork object.
williamr@2
   878
    */
williamr@2
   879
    IMPORT_C static CConnMonWlanNetwork* NewL();
williamr@2
   880
williamr@2
   881
    /**
williamr@2
   882
    * Copy constructor.
williamr@2
   883
    *
williamr@2
   884
    * @param aConnMonWlanNetwork The object which is copied.
williamr@2
   885
    * @return Pointer to the created CConnMonWlanNetwork object.
williamr@2
   886
    */
williamr@2
   887
    IMPORT_C static CConnMonWlanNetwork* NewL(
williamr@2
   888
            CConnMonWlanNetwork& aConnMonWlanNetwork );
williamr@2
   889
williamr@2
   890
    /**
williamr@2
   891
    * Destructor.
williamr@2
   892
    */
williamr@2
   893
    IMPORT_C ~CConnMonWlanNetwork();
williamr@2
   894
williamr@2
   895
    /**
williamr@2
   896
    * Assignment operator.
williamr@2
   897
    *
williamr@2
   898
    * @param aConnMonWlanNetwork The object which is assigned.
williamr@2
   899
    */
williamr@2
   900
    IMPORT_C CConnMonWlanNetwork& operator=(
williamr@2
   901
            CConnMonWlanNetwork& aConnMonWlanNetwork );
williamr@2
   902
williamr@2
   903
    /**
williamr@2
   904
    * Compares two networks by signal strength.
williamr@2
   905
    *
williamr@2
   906
    * @param aFirst Reference to first WLAN object.
williamr@2
   907
    * @param aSecond Reference to second WLAN object.
williamr@2
   908
    * @return Result of the comparison, 1 if first is less than second, 0 if
williamr@2
   909
    * they are equal and -1 otherwise.
williamr@2
   910
    */
williamr@2
   911
    IMPORT_C static TInt CompareBySignal(
williamr@2
   912
            const CConnMonWlanNetwork& aFirst,
williamr@2
   913
            const CConnMonWlanNetwork& aSecond );
williamr@2
   914
williamr@2
   915
    /**
williamr@2
   916
    * Obtains the name (SSID) of the network.
williamr@2
   917
    *
williamr@2
   918
    * @return Name of the wlan network.
williamr@2
   919
    */
williamr@2
   920
    inline TBuf<KMaxNameLength> Name()
williamr@2
   921
        {
williamr@2
   922
        return iName;
williamr@2
   923
        }
williamr@2
   924
williamr@2
   925
    /**
williamr@2
   926
    * Obtains the connection mode of the network.
williamr@2
   927
    *
williamr@2
   928
    * @return Connection mode (defined in TConnMonNetworkMode).
williamr@2
   929
    */
williamr@2
   930
    inline TUint ConnectionMode()
williamr@2
   931
        {
williamr@2
   932
        return iConnectionMode;
williamr@2
   933
        }
williamr@2
   934
williamr@2
   935
    /**
williamr@2
   936
    * Obtains the signal strength of the network.
williamr@2
   937
    *
williamr@2
   938
    * @return Signal strength in dBm.
williamr@2
   939
    */
williamr@2
   940
    inline TUint SignalStrength()
williamr@2
   941
        {
williamr@2
   942
        return iSignalStrength;
williamr@2
   943
        }
williamr@2
   944
williamr@2
   945
    /**
williamr@2
   946
    * Obtains the security mode of the network.
williamr@2
   947
    *
williamr@2
   948
    * @return Security mode (defined in TConnMonSecurityMode).
williamr@2
   949
    */
williamr@2
   950
    inline TUint SecurityMode()
williamr@2
   951
        {
williamr@2
   952
        return iSecurityMode;
williamr@2
   953
        }
williamr@2
   954
williamr@2
   955
    /**
williamr@2
   956
    * Obtains the mac address (BSSID) of the base station.
williamr@2
   957
    *
williamr@2
   958
    * @return Mac address (BSSID).
williamr@2
   959
    */
williamr@2
   960
    inline TBuf8<KWlanBssId> WlanBssid()
williamr@2
   961
        {
williamr@2
   962
        return iWlanBssId;
williamr@2
   963
        }
williamr@2
   964
williamr@2
   965
    /**
williamr@2
   966
    * Obtains a pointer to vendor specific data buffer.
williamr@2
   967
    * Ownership of the data is NOT transferred. Not in use, use package
williamr@2
   968
    * attribute KWlanProbeRawBuffers instead.
williamr@2
   969
    *
williamr@2
   970
    * @return Pointer to vendor specific data if available.
williamr@2
   971
    */
williamr@2
   972
    inline HBufC* VendorData()
williamr@2
   973
        {
williamr@2
   974
        return iVendorData;
williamr@2
   975
        }
williamr@2
   976
williamr@2
   977
    /**
williamr@2
   978
    * Writes object of class CConnMonWlanNetwork to memory.
williamr@2
   979
    * Ownership of newly created buffer is transferred to caller.
williamr@2
   980
    *
williamr@2
   981
    * @return Pointer to heap descriptor. NULL if memory allocation failed.
williamr@2
   982
    */
williamr@2
   983
    IMPORT_C const HBufC* ToBuf() const;
williamr@2
   984
williamr@2
   985
    /**
williamr@2
   986
    * Reads object of class CConnMonWlanNetwork from memory.
williamr@2
   987
    *
williamr@2
   988
    * @param aPtrC Pointer to the beginning of the CConnMonWlanNetwork object
williamr@2
   989
    * in buffer.
williamr@2
   990
    * @param aConnMonWlanNetwork Pointer to CConnMonWlanNetwork object where
williamr@2
   991
    * unpacked contents are written.
williamr@2
   992
    * @return A Symbian OS error code.
williamr@2
   993
    */
williamr@2
   994
    IMPORT_C static TInt FromPtrC(
williamr@2
   995
            const TPtrC& aPtrC,
williamr@2
   996
            CConnMonWlanNetwork* aConnMonWlanNetwork );
williamr@2
   997
williamr@2
   998
private:
williamr@2
   999
    /**
williamr@2
  1000
    * Constructor.
williamr@2
  1001
    */
williamr@2
  1002
    CConnMonWlanNetwork();
williamr@2
  1003
williamr@2
  1004
    /**
williamr@2
  1005
    * Constructor.
williamr@2
  1006
    *
williamr@2
  1007
    * @param aName Name (SSID) of the network.
williamr@2
  1008
    * @param aConnectionMode Mode of the network.
williamr@2
  1009
    * @param aSignalStrength Signal strength of the network.
williamr@2
  1010
    * @param aSecurityMode Security mode of the network.
williamr@2
  1011
    * @param aBssId Mac address (BSSID) of the base station.
williamr@2
  1012
    * @param aVendorData Not in use.
williamr@2
  1013
    */
williamr@2
  1014
    CConnMonWlanNetwork(
williamr@2
  1015
            const TBuf<KMaxNameLength>& aName,
williamr@2
  1016
            TUint aConnectionMode,
williamr@2
  1017
            TUint aSignalStrength,
williamr@2
  1018
            TUint aSecurityMode,
williamr@2
  1019
            const TBuf8<KWlanBssId>& aBssId,
williamr@2
  1020
            const TDesC& aVendorData );
williamr@2
  1021
williamr@2
  1022
    /**
williamr@2
  1023
    * Second-phase constructor.
williamr@2
  1024
    */
williamr@2
  1025
    void ConstructL();
williamr@2
  1026
williamr@2
  1027
private:
williamr@2
  1028
    TBuf<KMaxNameLength> iName;   // Network name
williamr@2
  1029
    TUint iConnectionMode;        // WLAN mode, see TConnMonNetworkMode
williamr@2
  1030
    TUint iSignalStrength;        // Signal strength in absolute dBm
williamr@2
  1031
    TUint iSecurityMode;          // See TConnMonSecurityMode
williamr@2
  1032
    TBuf8<KWlanBssId> iWlanBssId; // BSSID
williamr@2
  1033
    HBufC* iVendorData;           // For vendor specific data
williamr@2
  1034
    TUint iExtraBuf[KExtraCount]; // Reserved for future
williamr@2
  1035
    };
williamr@2
  1036
williamr@2
  1037
/** Class definition for a pointer array of CConnMonWlanNetwork objects.
williamr@2
  1038
*/
williamr@2
  1039
typedef RPointerArray<CConnMonWlanNetwork> RConnMonWlanNetworksPtrArray;
williamr@2
  1040
williamr@2
  1041
/**
williamr@2
  1042
* Class to contain a package of a pointer array of CConnMonWlanNetwork objects.
williamr@2
  1043
*/
williamr@2
  1044
class CConnMonWlanNetworksPtrArrayPckg : public CBase
williamr@2
  1045
    {
williamr@2
  1046
public:
williamr@2
  1047
    /**
williamr@2
  1048
    * Constructor. Constructs the package of an array of pointers to
williamr@2
  1049
    * CConnMonWlanNetwork objects on the heap.
williamr@2
  1050
    *
williamr@2
  1051
    * @param aRef Array of pointers to CConnMonWlanNetwork objects.
williamr@2
  1052
    * @param aBufSize Size of the buffer, intended to contain the package.
williamr@2
  1053
    */
williamr@2
  1054
    CConnMonWlanNetworksPtrArrayPckg(
williamr@2
  1055
            const RPointerArray<CConnMonWlanNetwork>& aRef,
williamr@2
  1056
            TUint aBufSize );
williamr@2
  1057
williamr@2
  1058
    /**
williamr@2
  1059
    * Constructor. Constructs an empty package on the heap.
williamr@2
  1060
    *
williamr@2
  1061
    * @param aBufSize Size of the buffer, intended to contain the package.
williamr@2
  1062
    */
williamr@2
  1063
    IMPORT_C CConnMonWlanNetworksPtrArrayPckg( TUint aBufSize );
williamr@2
  1064
williamr@2
  1065
    /**
williamr@2
  1066
    * Destructor.
williamr@2
  1067
    */
williamr@2
  1068
    IMPORT_C virtual ~CConnMonWlanNetworksPtrArrayPckg();
williamr@2
  1069
williamr@2
  1070
    /**
williamr@2
  1071
    * Unpacks the package to a pointer array of CConnMonWlanNetwork objects.
williamr@2
  1072
    *
williamr@2
  1073
    * @param aRef Array that will contain the pointers to unpacked objects.
williamr@2
  1074
    */
williamr@2
  1075
    IMPORT_C void UnpackToL( RPointerArray<CConnMonWlanNetwork>& aRef ) const;
williamr@2
  1076
williamr@2
  1077
    /**
williamr@2
  1078
    * Obtains a pointer to the package buffer.
williamr@2
  1079
    *
williamr@2
  1080
    * @return Pointer to the package buffer.
williamr@2
  1081
    */
williamr@2
  1082
    IMPORT_C HBufC* Buf() const;
williamr@2
  1083
williamr@2
  1084
private:
williamr@2
  1085
    /**
williamr@2
  1086
    * Pointer to the package Buffer on the heap.
williamr@2
  1087
    */
williamr@2
  1088
    HBufC* iBuf;
williamr@2
  1089
    };
williamr@2
  1090
williamr@2
  1091
/**
williamr@2
  1092
* Class to represent a WLAN beacon frame. Used when reporting WLAN scan
williamr@2
  1093
* results back to a client.
williamr@2
  1094
*/
williamr@2
  1095
NONSHARABLE_CLASS( CConnMonWlanProbeRawBuffer ) : public CBase
williamr@2
  1096
    {
williamr@2
  1097
    public:
williamr@2
  1098
    /**
williamr@2
  1099
    * Constructor.
williamr@2
  1100
    *
williamr@2
  1101
    * @param aRawBuffer Beacon frame buffer to be copied to this object.
williamr@2
  1102
    * @return Pointer to the created CConnMonWlanProbeRawBuffer object.
williamr@2
  1103
    */
williamr@2
  1104
    IMPORT_C static CConnMonWlanProbeRawBuffer* NewL(
williamr@2
  1105
            const HBufC8* aRawBuffer );
williamr@2
  1106
williamr@2
  1107
    /**
williamr@2
  1108
    * Constructor.
williamr@2
  1109
    *
williamr@2
  1110
    * @return Pointer to the created empty CConnMonWlanProbeRawBuffer object.
williamr@2
  1111
    */
williamr@2
  1112
    IMPORT_C static CConnMonWlanProbeRawBuffer* NewL();
williamr@2
  1113
williamr@2
  1114
    /**
williamr@2
  1115
    * Copy constructor.
williamr@2
  1116
    *
williamr@2
  1117
    * @param aConnMonWlanProbeRawBuffer The object which is copied.
williamr@2
  1118
    * @return Pointer to the created CConnMonWlanProbeRawBuffer object.
williamr@2
  1119
    */
williamr@2
  1120
    IMPORT_C static CConnMonWlanProbeRawBuffer* NewL(
williamr@2
  1121
            CConnMonWlanProbeRawBuffer& aConnMonWlanProbeRawBuffer );
williamr@2
  1122
williamr@2
  1123
    /**
williamr@2
  1124
    * Destructor.
williamr@2
  1125
    */
williamr@2
  1126
    IMPORT_C virtual ~CConnMonWlanProbeRawBuffer();
williamr@2
  1127
williamr@2
  1128
    /**
williamr@2
  1129
    * Assignment operator.
williamr@2
  1130
    *
williamr@2
  1131
    * @param aConnMonWlanProbeRawBuffer The object which is assigned.
williamr@2
  1132
    */
williamr@2
  1133
    IMPORT_C CConnMonWlanProbeRawBuffer& operator=(
williamr@2
  1134
            CConnMonWlanProbeRawBuffer& aConnMonWlanProbeRawBuffer );
williamr@2
  1135
williamr@2
  1136
    /**
williamr@2
  1137
    * Obtains a pointer to the beacon frame buffer.
williamr@2
  1138
    *
williamr@2
  1139
    * @return Pointer to the beacon frame buffer.
williamr@2
  1140
    */
williamr@2
  1141
    IMPORT_C HBufC8* RawBuffer() const;
williamr@2
  1142
williamr@2
  1143
    /**
williamr@2
  1144
    * Writes object of class CConnMonWlanProbeRawBuffer to memory.
williamr@2
  1145
    * Ownership of newly created buffer is transferred to caller.
williamr@2
  1146
    *
williamr@2
  1147
    * @return Pointer to heap descriptor, NULL if memory allocation failed.
williamr@2
  1148
    */
williamr@2
  1149
    const HBufC8* ToBuf() const;
williamr@2
  1150
williamr@2
  1151
    /**
williamr@2
  1152
    * Reads object of class CConnMonWlanProbeRawBuffer from memory.
williamr@2
  1153
    *
williamr@2
  1154
    * @param aPtrC Pointer to the beginning of the CConnMonWlanProbeRawBuffer
williamr@2
  1155
    * object in buffer.
williamr@2
  1156
    * @param aConnMonWlanProbeRawBuffer Pointer to CConnMonWlanProbeRawBuffer
williamr@2
  1157
    * object where unpacked contents are written.
williamr@2
  1158
    * @return A Symbian OS error code.
williamr@2
  1159
    */
williamr@2
  1160
    static TInt FromPtrC(
williamr@2
  1161
            const TPtrC8& aPtrC,
williamr@2
  1162
            CConnMonWlanProbeRawBuffer* aConnMonWlanProbeRawBuffer );
williamr@2
  1163
williamr@2
  1164
private:
williamr@2
  1165
    /**
williamr@2
  1166
    * Constructor.
williamr@2
  1167
    */
williamr@2
  1168
    CConnMonWlanProbeRawBuffer();
williamr@2
  1169
williamr@2
  1170
    /**
williamr@2
  1171
    * Second-phase constructor.
williamr@2
  1172
    */
williamr@2
  1173
    void ConstructL();
williamr@2
  1174
williamr@2
  1175
    /**
williamr@2
  1176
    * Second-phase constructor.
williamr@2
  1177
    *
williamr@2
  1178
    * @param aRawBuffer Buffer to be copied to this object.
williamr@2
  1179
    */
williamr@2
  1180
    void ConstructL( const HBufC8* aRawBuffer );
williamr@2
  1181
williamr@2
  1182
private:
williamr@2
  1183
    HBufC8* iRawBuffer; // Beacon frame buffer
williamr@2
  1184
    };
williamr@2
  1185
williamr@2
  1186
/** Class definition for a pointer array of CConnMonWlanProbeRawBuffer objects.
williamr@2
  1187
*/
williamr@2
  1188
typedef RPointerArray<CConnMonWlanProbeRawBuffer> RConnMonWlanProbeRawBuffersPtrArray;
williamr@2
  1189
williamr@2
  1190
/**
williamr@2
  1191
* Class to contain a package of a pointer array of CConnMonWlanProbeRawBuffer
williamr@2
  1192
* objects.
williamr@2
  1193
*/
williamr@2
  1194
class CConnMonWlanProbeRawBuffersPckg : public CBase
williamr@2
  1195
    {
williamr@2
  1196
public:
williamr@2
  1197
    /**
williamr@2
  1198
    * Constructor. Constructs the package of an array of pointers to
williamr@2
  1199
    * CConnMonWlanProbeRawBuffer objects on the heap.
williamr@2
  1200
    *
williamr@2
  1201
    * @param aRef Array of pointers to CConnMonWlanProbeRawBuffer objects.
williamr@2
  1202
    * @param aBufSize Size of the buffer, intended to contain the package.
williamr@2
  1203
    */
williamr@2
  1204
    CConnMonWlanProbeRawBuffersPckg(
williamr@2
  1205
            const RConnMonWlanProbeRawBuffersPtrArray& aRef,
williamr@2
  1206
            TUint aBufSize );
williamr@2
  1207
williamr@2
  1208
    /**
williamr@2
  1209
    * Constructor. Constructs an empty package on the heap.
williamr@2
  1210
    *
williamr@2
  1211
    * @param aBufSize Size of the buffer, intended to contain the package.
williamr@2
  1212
    */
williamr@2
  1213
    IMPORT_C CConnMonWlanProbeRawBuffersPckg( TUint aBufSize );
williamr@2
  1214
williamr@2
  1215
    /**
williamr@2
  1216
    * Destructor.
williamr@2
  1217
    */
williamr@2
  1218
    IMPORT_C virtual ~CConnMonWlanProbeRawBuffersPckg();
williamr@2
  1219
williamr@2
  1220
    /**
williamr@2
  1221
    * Unpacks the package to a pointer array of CConnMonWlanProbeRawBuffer
williamr@2
  1222
    * objects.
williamr@2
  1223
    *
williamr@2
  1224
    * @param aRef Array that will contain the pointers to unpacked objects.
williamr@2
  1225
    */
williamr@2
  1226
    IMPORT_C void UnpackToL( RConnMonWlanProbeRawBuffersPtrArray& aRef ) const;
williamr@2
  1227
williamr@2
  1228
    /**
williamr@2
  1229
    * Obtains a pointer to the package buffer.
williamr@2
  1230
    *
williamr@2
  1231
    * @return Pointer to the package buffer.
williamr@2
  1232
    */
williamr@2
  1233
    IMPORT_C HBufC8* Buf() const;
williamr@2
  1234
williamr@2
  1235
    /**
williamr@2
  1236
    * Obtains the total number of found WLANs.
williamr@2
  1237
    *
williamr@2
  1238
    * @return Total count (iBuf[0]).
williamr@2
  1239
    */
williamr@2
  1240
    IMPORT_C TUint Total() const;
williamr@2
  1241
williamr@2
  1242
    /**
williamr@2
  1243
    * Obtains the number of trasferred WLANs. This will be less than total
williamr@2
  1244
    * count if there was not enough memory in buffer to include all found
williamr@2
  1245
    * WLANs.
williamr@2
  1246
    *
williamr@2
  1247
    * @return Transfered count in buffer (iBuf[1]).
williamr@2
  1248
    */
williamr@2
  1249
    IMPORT_C TUint Count() const;
williamr@2
  1250
williamr@2
  1251
private:
williamr@2
  1252
    /**
williamr@2
  1253
    * Pointer to the package buffer on the heap.
williamr@2
  1254
    */
williamr@2
  1255
    HBufC8* iBuf;
williamr@2
  1256
    };
williamr@2
  1257
williamr@2
  1258
/**
williamr@2
  1259
* Interface template for the class T serialization to/from HBuf/TPtr.
williamr@2
  1260
* Class T could be any type of class (T, C, etc.).
williamr@2
  1261
*/
williamr@2
  1262
template <class T>
williamr@2
  1263
    class MDesSerializer
williamr@2
  1264
    {
williamr@2
  1265
public:
williamr@2
  1266
    /**
williamr@2
  1267
    * Have to pack the object of class T to HBufC.
williamr@2
  1268
    * Ownership of newly created pointer is transferred to caller.
williamr@2
  1269
    *
williamr@2
  1270
    * @return Pointer to the heap descriptor.
williamr@2
  1271
    */
williamr@2
  1272
    virtual const HBufC* ToBuf() const = 0;
williamr@2
  1273
williamr@2
  1274
    /**
williamr@2
  1275
    * Have to unpack object of class T from aPtrC.
williamr@2
  1276
    *
williamr@2
  1277
    * @return Constant pointer to the heap descriptor.
williamr@2
  1278
    */
williamr@2
  1279
    static T FromPtrC( const TPtrC& aPtrC );
williamr@2
  1280
    };
williamr@2
  1281
williamr@2
  1282
/**
williamr@2
  1283
* Class representing an ID number.
williamr@2
  1284
* MDesSerializer - abstract interface for class serialization.
williamr@2
  1285
*/
williamr@2
  1286
class TConnMonId : public MDesSerializer<TConnMonId>
williamr@2
  1287
    {
williamr@2
  1288
public:
williamr@2
  1289
    /**
williamr@2
  1290
    * Defines the maximum size of the object in TChar's.
williamr@2
  1291
    * +1 is for rounding to bigger integer.
williamr@2
  1292
    */
williamr@2
  1293
    static const TUint KMaxSize = ( sizeof( TUint ) ) / sizeof( TChar ) + 1;
williamr@2
  1294
williamr@2
  1295
    /**
williamr@2
  1296
    * Defines shifts of fields inside the object.
williamr@2
  1297
    */
williamr@2
  1298
    enum FieldsShifts
williamr@2
  1299
        {
williamr@2
  1300
        EId = 0
williamr@2
  1301
        };
williamr@2
  1302
williamr@2
  1303
    /**
williamr@2
  1304
    * Constructor.
williamr@2
  1305
    *
williamr@2
  1306
    * @param aId ID number.
williamr@2
  1307
    */
williamr@2
  1308
    IMPORT_C TConnMonId( TUint aId );
williamr@2
  1309
williamr@2
  1310
    /**
williamr@2
  1311
    * Obtains the ID number.
williamr@2
  1312
    *
williamr@2
  1313
    * @return ID number.
williamr@2
  1314
    */
williamr@2
  1315
    IMPORT_C TUint Id() const;
williamr@2
  1316
williamr@2
  1317
    // From MDesSerializer
williamr@2
  1318
williamr@2
  1319
    /**
williamr@2
  1320
    * Writes object of class TConnMonId to memory.
williamr@2
  1321
    * Ownership of newly created buffer is transferred to caller.
williamr@2
  1322
    *
williamr@2
  1323
    * @return Pointer to heap descriptor, NULL if memory allocation failed.
williamr@2
  1324
    */
williamr@2
  1325
    IMPORT_C const HBufC* ToBuf() const;
williamr@2
  1326
williamr@2
  1327
    /**
williamr@2
  1328
    * Reads object of class TConnMonId from memory.
williamr@2
  1329
    *
williamr@2
  1330
    * @param aPtrC Pointer to the beginning of the TConnMonId object in buffer.
williamr@2
  1331
    * @return The newly created TConnMonId object.
williamr@2
  1332
    */
williamr@2
  1333
    IMPORT_C static TConnMonId FromPtrC( const TPtrC& aPtrC );
williamr@2
  1334
williamr@2
  1335
protected:
williamr@2
  1336
    /**
williamr@2
  1337
    * ID number.
williamr@2
  1338
    */
williamr@2
  1339
    const TUint iId;
williamr@2
  1340
    };
williamr@2
  1341
williamr@2
  1342
/** Class definition for an array of TConnMonId objects.
williamr@2
  1343
*/
williamr@2
  1344
typedef RArray<TConnMonId> RConnMonIdsArray;
williamr@2
  1345
williamr@2
  1346
/**
williamr@2
  1347
* Class to contain a package of an array of TConnMonId objects.
williamr@2
  1348
*/
williamr@2
  1349
class ConnMonIdsArrayPckg
williamr@2
  1350
    {
williamr@2
  1351
public:
williamr@2
  1352
    /**
williamr@2
  1353
    * Constructor. Constructs the package of an array of TConnMonId objects
williamr@2
  1354
    * on the heap.
williamr@2
  1355
    *
williamr@2
  1356
    * @param aRef Array of TConnMonId objects.
williamr@2
  1357
    * @param aBufSize Size of the buffer, intended to contain the package.
williamr@2
  1358
    */
williamr@2
  1359
    ConnMonIdsArrayPckg( const RArray<TConnMonId>& aRef, TUint aBufSize );
williamr@2
  1360
williamr@2
  1361
    /**
williamr@2
  1362
    * Constructor. Constructs an empty package on the heap.
williamr@2
  1363
    *
williamr@2
  1364
    * @param aBufSize Size of the buffer, intended to contain the package.
williamr@2
  1365
    */
williamr@2
  1366
    IMPORT_C ConnMonIdsArrayPckg( TUint aBufSize );
williamr@2
  1367
williamr@2
  1368
    /**
williamr@2
  1369
    * Destructor.
williamr@2
  1370
    */
williamr@2
  1371
    IMPORT_C virtual ~ConnMonIdsArrayPckg();
williamr@2
  1372
williamr@2
  1373
    /**
williamr@2
  1374
    * Unpacks the package to an array of TConnMonId objects.
williamr@2
  1375
    *
williamr@2
  1376
    * @param aRef Array that will contain the unpacked objects.
williamr@2
  1377
    */
williamr@2
  1378
    IMPORT_C void UnpackToL( RArray<TConnMonId>& aRef ) const;
williamr@2
  1379
williamr@2
  1380
    /**
williamr@2
  1381
    * Obtains a pointer to the package buffer.
williamr@2
  1382
    *
williamr@2
  1383
    * @return Pointer to the package buffer.
williamr@2
  1384
    */
williamr@2
  1385
    IMPORT_C HBufC* Buf() const;
williamr@2
  1386
williamr@2
  1387
protected:
williamr@2
  1388
    /**
williamr@2
  1389
    * Pointer to the package buffer on the heap.
williamr@2
  1390
    */
williamr@2
  1391
    HBufC* iBuf;
williamr@2
  1392
    };
williamr@2
  1393
williamr@2
  1394
// Forward declarations
williamr@2
  1395
class CConnMonEventBase;
williamr@2
  1396
class CConnMonEventHandler;
williamr@2
  1397
williamr@2
  1398
/**
williamr@2
  1399
* Client application must implement the MConnectionMonitorObserver interface in
williamr@2
  1400
* order to receive notifications. MConnectionMonitorObserver::EventL() method
williamr@2
  1401
* will be called every time an event arrives.
williamr@2
  1402
*
williamr@2
  1403
* @lib CONNMON.LIB
williamr@2
  1404
*/
williamr@2
  1405
class MConnectionMonitorObserver
williamr@2
  1406
    {
williamr@2
  1407
public:
williamr@2
  1408
    /**
williamr@2
  1409
    * This method is called every time an event occurs.
williamr@2
  1410
    *
williamr@2
  1411
    * @param aConnMonEvent The event information.
williamr@2
  1412
    */
williamr@2
  1413
    virtual void EventL( const CConnMonEventBase &aConnMonEvent ) = 0;
williamr@2
  1414
    };
williamr@2
  1415
williamr@2
  1416
/**
williamr@2
  1417
* RConnectionMonitor
williamr@2
  1418
*
williamr@2
  1419
* @lib CONNMON.LIB
williamr@2
  1420
*/
williamr@2
  1421
class RConnectionMonitor : public RSessionBase
williamr@2
  1422
    {
williamr@2
  1423
public:
williamr@2
  1424
    /**
williamr@2
  1425
    * Constructor.
williamr@2
  1426
    */
williamr@2
  1427
    inline RConnectionMonitor():
williamr@2
  1428
            RSessionBase(),
williamr@2
  1429
            iHandler( 0 ),
williamr@2
  1430
            iPtrArray(),
williamr@2
  1431
            iIndex( 0 )
williamr@2
  1432
        {
williamr@2
  1433
        }
williamr@2
  1434
williamr@2
  1435
public:
williamr@2
  1436
    /**
williamr@2
  1437
    * Connects the client to the Connection Monitor Server. It must be called
williamr@2
  1438
    * before any of other methods during the Connection Monitor session.
williamr@2
  1439
    *
williamr@2
  1440
    * @return KErrNone if successful, a system-wide error code if not.
williamr@2
  1441
    */
williamr@2
  1442
    IMPORT_C TInt ConnectL();
williamr@2
  1443
williamr@2
  1444
    /**
williamr@2
  1445
    * Closes the Connection Monitor session. An opened RConnectionMonitor must
williamr@2
  1446
    * be closed explicitily to prevent a resource (memory) leak.
williamr@2
  1447
    */
williamr@2
  1448
    IMPORT_C void Close();
williamr@2
  1449
williamr@2
  1450
    /**
williamr@2
  1451
    * Gathers information on currently active connections.
williamr@2
  1452
    *
williamr@2
  1453
    * @param aConnectionCount On completion, contains the number of active
williamr@2
  1454
    * connections.
williamr@2
  1455
    * @param aStatus KErrNone if successful, a system-wide error code if not.
williamr@2
  1456
    */
williamr@2
  1457
    IMPORT_C void GetConnectionCount(
williamr@2
  1458
            TUint& aConnectionCount,
williamr@2
  1459
            TRequestStatus& aStatus );
williamr@2
  1460
williamr@2
  1461
    /**
williamr@2
  1462
    * Gets the connection ID and the count of the subconnections for the given
williamr@2
  1463
    * index. GetConnectionCount() must be called to gather the information on
williamr@2
  1464
    * active connections before calling this method.
williamr@2
  1465
    *
williamr@2
  1466
    * @param aIndex Must be between 1 and the count returned by
williamr@2
  1467
    * GetConnectionCount().
williamr@2
  1468
    * @param aConnectionId On return, contains the connection ID.
williamr@2
  1469
    * @param aSubConnectionCount On return, contains the number of
williamr@2
  1470
    * subconnections.
williamr@2
  1471
    * @return KErrNone if successful, a system-wide error code if not.
williamr@2
  1472
    */
williamr@2
  1473
    IMPORT_C TInt GetConnectionInfo(
williamr@2
  1474
            const TUint aIndex,
williamr@2
  1475
            TUint& aConnectionId,
williamr@2
  1476
            TUint& aSubConnectionCount ) const;
williamr@2
  1477
williamr@2
  1478
    /**
williamr@2
  1479
    * Gets the subconnection ID for the given index.
williamr@2
  1480
    *
williamr@2
  1481
    * @param aConnectionId Connection ID.
williamr@2
  1482
    * @param aIndex Must be between 1 and the subconnection count returned by
williamr@2
  1483
    * GetConnectionInfo().
williamr@2
  1484
    * @param aSubConnectionId On return, contains the subconnection ID.
williamr@2
  1485
    * @return KErrNone if successful, a system-wide error code if not.
williamr@2
  1486
    */
williamr@2
  1487
    IMPORT_C TInt GetSubConnectionInfo(
williamr@2
  1488
            const TUint aConnectionId,
williamr@2
  1489
            const TUint aIndex,
williamr@2
  1490
            TUint& aSubConnectionId ) const;
williamr@2
  1491
williamr@2
  1492
    /**
williamr@2
  1493
    * Gets the value for a TInt attribute.
williamr@2
  1494
    *
williamr@2
  1495
    * @param aConnectionId Connection ID.
williamr@2
  1496
    * @param aSubConnectionId Subconnection ID. If set to 0, method applies to
williamr@2
  1497
    * connection.
williamr@2
  1498
    * @param aAttribute Identifies the attribute to be retrieved.
williamr@2
  1499
    * @param aValue On completion, contains the requested TInt attribute.
williamr@2
  1500
    * @param aStatus KErrNone if successful, a system-wide error code if not.
williamr@2
  1501
    */
williamr@2
  1502
    IMPORT_C void GetIntAttribute(
williamr@2
  1503
            const TUint aConnectionId,
williamr@2
  1504
            const TUint aSubConnectionId,
williamr@2
  1505
            const TUint aAttribute,
williamr@2
  1506
            TInt& aValue,
williamr@2
  1507
            TRequestStatus& aStatus );
williamr@2
  1508
williamr@2
  1509
    /**
williamr@2
  1510
    * Gets the value for a TUint attribute.
williamr@2
  1511
    *
williamr@2
  1512
    * @param aConnectionId Connection ID.
williamr@2
  1513
    * @param aSubConnectionId Subconnection ID. If set to 0, method applies to
williamr@2
  1514
    * connection.
williamr@2
  1515
    * @param aAttribute Identifies the attribute to be retrieved.
williamr@2
  1516
    * @param aValue On completion, contains the requested TUint attribute.
williamr@2
  1517
    * @param aStatus KErrNone if successful, a system-wide error code if not.
williamr@2
  1518
    */
williamr@2
  1519
    IMPORT_C void GetUintAttribute(
williamr@2
  1520
            const TUint aConnectionId,
williamr@2
  1521
            const TUint aSubConnectionId,
williamr@2
  1522
            const TUint aAttribute,
williamr@2
  1523
            TUint& aValue,
williamr@2
  1524
            TRequestStatus& aStatus );
williamr@2
  1525
williamr@2
  1526
    /**
williamr@2
  1527
    * Gets the value for a TBool attribute.
williamr@2
  1528
    *
williamr@2
  1529
    * @param aConnectionId Connection ID.
williamr@2
  1530
    * @param aSubConnectionId Subconnection ID. If set to 0, method applies to
williamr@2
  1531
    * connection.
williamr@2
  1532
    * @param aAttribute Identifies the attribute to be retrieved.
williamr@2
  1533
    * @param aValue On completion, contains the requested TBool attribute.
williamr@2
  1534
    * @param aStatus KErrNone if successful, a system-wide error code if not.
williamr@2
  1535
    */
williamr@2
  1536
    IMPORT_C void GetBoolAttribute(
williamr@2
  1537
            const TUint aConnectionId,
williamr@2
  1538
            const TUint aSubConnectionId,
williamr@2
  1539
            const TUint aAttribute,
williamr@2
  1540
            TBool& aValue,
williamr@2
  1541
            TRequestStatus& aStatus );
williamr@2
  1542
williamr@2
  1543
    /**
williamr@2
  1544
    * Gets the value for a string attribute.
williamr@2
  1545
    *
williamr@2
  1546
    * @param aConnectionId Connection ID.
williamr@2
  1547
    * @param aSubConnectionId Subconnection ID. If set to 0, method applies to
williamr@2
  1548
    * connection.
williamr@2
  1549
    * @param aAttribute Identifies the attribute to be retrieved.
williamr@2
  1550
    * @param aValue On completion, contains the requested string. Use a 16-bit
williamr@2
  1551
    * descriptor!
williamr@2
  1552
    * @param aStatus KErrNone if successful, a system-wide error code if not.
williamr@2
  1553
    */
williamr@2
  1554
    IMPORT_C void GetStringAttribute(
williamr@2
  1555
            const TUint aConnectionId,
williamr@2
  1556
            const TUint aSubConnectionId,
williamr@2
  1557
            const TUint aAttribute,
williamr@2
  1558
            TDes& aValue,
williamr@2
  1559
            TRequestStatus& aStatus ) const;
williamr@2
  1560
williamr@2
  1561
    /**
williamr@2
  1562
    * Gets the value for a packaged attribute.
williamr@2
  1563
    *
williamr@2
  1564
    * @param aConnectionId Connection ID.
williamr@2
  1565
    * @param aSubConnectionId Subconnection ID. If set to 0, method applies to
williamr@2
  1566
    * connection.
williamr@2
  1567
    * @param aAttribute Identifies the attribute to be retrieved.
williamr@2
  1568
    * @param aValue On completion, contains the requested packaged attribute.
williamr@2
  1569
    * @param aStatus KErrNone if successful, a system-wide error code if not.
williamr@2
  1570
    */
williamr@2
  1571
    IMPORT_C void GetPckgAttribute(
williamr@2
  1572
            const TUint aConnectionId,
williamr@2
  1573
            const TUint aSubConnectionId,
williamr@2
  1574
            const TUint aAttribute,
williamr@2
  1575
            TDes8& aValue,
williamr@2
  1576
            TRequestStatus& aStatus ) const;
williamr@2
  1577
williamr@2
  1578
    /**
williamr@2
  1579
    * Gets the value for a packaged attribute.
williamr@2
  1580
    *
williamr@2
  1581
    * @param aConnectionId Connection ID.
williamr@2
  1582
    * @param aSubConnectionId Subconnection ID. If set to 0, method applies to
williamr@2
  1583
    * connection.
williamr@2
  1584
    * @param aAttribute Identifies the attribute to be retrieved.
williamr@2
  1585
    * @param aValue On completion, contains the requested packaged attribute.
williamr@2
  1586
    * @param aStatus KErrNone if successful, a system-wide error code if not.
williamr@2
  1587
    */
williamr@2
  1588
    IMPORT_C void GetPckgAttribute(
williamr@2
  1589
            const TUint aConnectionId,
williamr@2
  1590
            const TUint aSubConnectionId,
williamr@2
  1591
            const TUint aAttribute,
williamr@2
  1592
            TDes16& aValue,
williamr@2
  1593
            TRequestStatus& aStatus ) const;
williamr@2
  1594
williamr@2
  1595
    /**
williamr@2
  1596
    * Sets the value for a TInt attribute.
williamr@2
  1597
    *
williamr@2
  1598
    * @param aConnectionId Connection ID.
williamr@2
  1599
    * @param aSubConnectionId Subconnection ID. If set to 0, method applies to
williamr@2
  1600
    * connection.
williamr@2
  1601
    * @param aAttribute Identifies the attribute to be set.
williamr@2
  1602
    * @param aValue The value to be set.
williamr@2
  1603
    * @return KErrNone if successful, a system-wide error code if not.
williamr@2
  1604
    */
williamr@2
  1605
    IMPORT_C TInt SetIntAttribute(
williamr@2
  1606
            const TUint aConnectionId,
williamr@2
  1607
            const TUint aSubConnectionId,
williamr@2
  1608
            const TUint aAttribute,
williamr@2
  1609
            const TInt aValue ) const;
williamr@2
  1610
williamr@2
  1611
    /**
williamr@2
  1612
    * Sets the value for a TUint attribute.
williamr@2
  1613
    *
williamr@2
  1614
    * @param aConnectionId Connection ID.
williamr@2
  1615
    * @param aSubConnectionId Subconnection ID. If set to 0, method applies to
williamr@2
  1616
    * connection.
williamr@2
  1617
    * @param aAttribute Identifies the attribute to be set.
williamr@2
  1618
    * @param aValue The value to be set.
williamr@2
  1619
    * @return KErrNone if successful, a system-wide error code if not.
williamr@2
  1620
    */
williamr@2
  1621
    IMPORT_C TInt SetUintAttribute(
williamr@2
  1622
            const TUint aConnectionId,
williamr@2
  1623
            const TUint aSubConnectionId,
williamr@2
  1624
            const TUint aAttribute,
williamr@2
  1625
            const TUint aValue ) const;
williamr@2
  1626
williamr@2
  1627
    /**
williamr@2
  1628
    * Sets the value for a TBool attribute.
williamr@2
  1629
    *
williamr@2
  1630
    * This method can be used to stop a connection (KConnectionStop).
williamr@2
  1631
    * @param aConnectionId Connection ID.
williamr@2
  1632
    * @param aSubConnectionId Subconnection ID. If set to 0, method applies to
williamr@2
  1633
    * connection.
williamr@2
  1634
    * @param aAttribute Identifies the attribute to be set.
williamr@2
  1635
    * @param aValue The value to be set.
williamr@2
  1636
    * @return KErrNone if successful, a system-wide error code if not.
williamr@2
  1637
    */
williamr@2
  1638
    IMPORT_C TInt SetBoolAttribute(
williamr@2
  1639
            const TUint aConnectionId,
williamr@2
  1640
            const TUint aSubConnectionId,
williamr@2
  1641
            const TUint aAttribute,
williamr@2
  1642
            const TBool aValue ) const;
williamr@2
  1643
williamr@2
  1644
    /**
williamr@2
  1645
    * Sets the value for a string attribute.
williamr@2
  1646
    *
williamr@2
  1647
    * @param aConnectionId Connection ID.
williamr@2
  1648
    * @param aSubConnectionId Subconnection ID. If set to 0, method applies to
williamr@2
  1649
    * connection.
williamr@2
  1650
    * @param aAttribute Identifies the attribute to be set.
williamr@2
  1651
    * @param aValue The string value to be set. Must be a 16-bit descriptor.
williamr@2
  1652
    * @return KErrNone if successful, a system-wide error code if not.
williamr@2
  1653
    */
williamr@2
  1654
    IMPORT_C TInt SetStringAttribute(
williamr@2
  1655
            const TUint aConnectionId,
williamr@2
  1656
            const TUint aSubConnectionId,
williamr@2
  1657
            const TUint aAttribute,
williamr@2
  1658
            const TDes& aValue ) const;
williamr@2
  1659
williamr@2
  1660
    /**
williamr@2
  1661
    * Sets the value for a packaged attribute. There is currently no packaged
williamr@2
  1662
    * attributes that can be set.
williamr@2
  1663
    *
williamr@2
  1664
    * @param aConnectionId Connection ID.
williamr@2
  1665
    * @param aSubConnectionId Subconnection ID. If set to 0, method applies to
williamr@2
  1666
    * connection.
williamr@2
  1667
    * @param aAttribute Identifies the attribute to be set.
williamr@2
  1668
    * @param aValue The value to be set.
williamr@2
  1669
    * @return KErrNone if successful, a system-wide error code if not.
williamr@2
  1670
    */
williamr@2
  1671
    IMPORT_C TInt SetPckgAttribute(
williamr@2
  1672
            const TUint aConnectionId,
williamr@2
  1673
            const TUint aSubConnectionId,
williamr@2
  1674
            const TUint aAttribute,
williamr@2
  1675
            const TDes8& aValue ) const;
williamr@2
  1676
williamr@2
  1677
    /**
williamr@2
  1678
    * Cancels an asyncronous request. If there is several active requests of
williamr@2
  1679
    * the same type (for example GetIntAttribute), they will all be cancelled.
williamr@2
  1680
    * When a request is cancelled, it is completed with error code KErrCancel.
williamr@2
  1681
    *
williamr@2
  1682
    * @param aReqToCancel Identifies the request type to be cancelled.
williamr@2
  1683
    * The different types are defined in TConnMonAsyncRequest.
williamr@2
  1684
    */
williamr@2
  1685
    IMPORT_C void CancelAsyncRequest( TInt aReqToCancel );
williamr@2
  1686
williamr@2
  1687
    /**
williamr@2
  1688
    * Registers an event observer to catch connection monitor events.
williamr@2
  1689
    *
williamr@2
  1690
    * @param aObserver The event observer.
williamr@2
  1691
    * @return KErrNone if successful, a system-wide error code if not.
williamr@2
  1692
    */
williamr@2
  1693
    IMPORT_C TInt NotifyEventL( MConnectionMonitorObserver& aObserver );
williamr@2
  1694
williamr@2
  1695
    /**
williamr@2
  1696
    * Cancels the notifications from connection monitor.
williamr@2
  1697
    */
williamr@2
  1698
    IMPORT_C void CancelNotifications();
williamr@2
  1699
williamr@2
  1700
private:
williamr@2
  1701
    void ReceiveEvent(
williamr@2
  1702
            TDes8& aBuffer,
williamr@2
  1703
            TDes8& aExtraBuf,
williamr@2
  1704
            TRequestStatus& aStatus );
williamr@2
  1705
    void CancelReceiveEvent();
williamr@2
  1706
    TBool IsConnected() const;
williamr@2
  1707
    TPtr8& NextPtr();
williamr@2
  1708
williamr@2
  1709
private:
williamr@2
  1710
    CConnMonEventHandler* iHandler;
williamr@2
  1711
    RArray<TPtr8> iPtrArray;
williamr@2
  1712
    TInt iIndex;
williamr@2
  1713
williamr@2
  1714
private:
williamr@2
  1715
    friend class CConnMonEventHandler;
williamr@2
  1716
    };
williamr@2
  1717
williamr@2
  1718
/**
williamr@2
  1719
* Base class for all ConnMon event types.
williamr@2
  1720
*
williamr@2
  1721
* Example how to convert an event according to type.
williamr@2
  1722
* @code
williamr@2
  1723
* void CMyConnMonObserver::EventL( const CConnMonEventBase& aEvent )
williamr@2
  1724
*     {
williamr@2
  1725
*     switch( aEvent.EventType() )
williamr@2
  1726
*         {
williamr@2
  1727
*         case EConnMonCreateConnection:
williamr@2
  1728
*             CConnMonCreateConnection* realEvent;
williamr@2
  1729
*             realEvent = (CConnMonCreateConnection*) &aEvent;
williamr@2
  1730
*             //...
williamr@2
  1731
* @endcode
williamr@2
  1732
*/
williamr@2
  1733
NONSHARABLE_CLASS( CConnMonEventBase ) : public CBase
williamr@2
  1734
    {
williamr@2
  1735
public:
williamr@2
  1736
    /**
williamr@2
  1737
    * Constructor.
williamr@2
  1738
    *
williamr@2
  1739
    * @param aEventType Event type.
williamr@2
  1740
    * @param iConnectionId Connection ID.
williamr@2
  1741
    */
williamr@2
  1742
    CConnMonEventBase( const TInt aEventType, const TUint iConnectionId );
williamr@2
  1743
williamr@2
  1744
    /**
williamr@2
  1745
    * Destructor.
williamr@2
  1746
    */
williamr@2
  1747
    ~CConnMonEventBase();
williamr@2
  1748
williamr@2
  1749
public:
williamr@2
  1750
    /**
williamr@2
  1751
    * Gets the type of the event.
williamr@2
  1752
    *
williamr@2
  1753
    * @return Type of the event. Values are defined in TConnMonEventType.
williamr@2
  1754
    */
williamr@2
  1755
    IMPORT_C TInt EventType() const;
williamr@2
  1756
williamr@2
  1757
    /**
williamr@2
  1758
    * Gets the connection ID of the connection.
williamr@2
  1759
    *
williamr@2
  1760
    * @return Connection ID.
williamr@2
  1761
    */
williamr@2
  1762
    IMPORT_C TUint ConnectionId() const;
williamr@2
  1763
williamr@2
  1764
private:
williamr@2
  1765
    TInt iEventType;
williamr@2
  1766
    TUint iConnectionId;
williamr@2
  1767
    };
williamr@2
  1768
williamr@2
  1769
/**
williamr@2
  1770
* This event is triggered when a new connection has been created. The
williamr@2
  1771
* connection ID passed in the event is a new ID number that ConnMon assigned to
williamr@2
  1772
* the new connection.
williamr@2
  1773
*
williamr@2
  1774
* @lib CONNMON.LIB
williamr@2
  1775
*/
williamr@2
  1776
NONSHARABLE_CLASS( CConnMonCreateConnection ) : public CConnMonEventBase
williamr@2
  1777
    {
williamr@2
  1778
public:
williamr@2
  1779
    /**
williamr@2
  1780
    * Constructor.
williamr@2
  1781
    *
williamr@2
  1782
    * @param aConnectionId Connection ID.
williamr@2
  1783
    */
williamr@2
  1784
    CConnMonCreateConnection( const TUint aConnectionId );
williamr@2
  1785
williamr@2
  1786
    /**
williamr@2
  1787
    * Destructor.
williamr@2
  1788
    */
williamr@2
  1789
    ~CConnMonCreateConnection();
williamr@2
  1790
    };
williamr@2
  1791
williamr@2
  1792
/**
williamr@2
  1793
* This event is triggered when a connection has been deleted. The connection ID
williamr@2
  1794
* passed in the event is the connection ID of the deleted connection.
williamr@2
  1795
*
williamr@2
  1796
* @lib CONNMON.LIB
williamr@2
  1797
*/
williamr@2
  1798
NONSHARABLE_CLASS( CConnMonDeleteConnection ) : public CConnMonEventBase
williamr@2
  1799
    {
williamr@2
  1800
public:
williamr@2
  1801
    /**
williamr@2
  1802
    * Constructor.
williamr@2
  1803
    *
williamr@2
  1804
    * @param aConnectionId Connection ID.
williamr@2
  1805
    * @param aDownlinkData Downlink data volume.
williamr@2
  1806
    * @param aUplinkData Uplink data volume.
williamr@2
  1807
    * @param aAuthDelete Was connection stopped in an authoritative way.
williamr@2
  1808
    */
williamr@2
  1809
    CConnMonDeleteConnection(
williamr@2
  1810
            const TUint aConnectionId,
williamr@2
  1811
            const TUint aDownlinkData,
williamr@2
  1812
            const TUint aUplinkData,
williamr@2
  1813
            const TBool aAuthDelete );
williamr@2
  1814
williamr@2
  1815
    /**
williamr@2
  1816
    * Destructor.
williamr@2
  1817
    */
williamr@2
  1818
    ~CConnMonDeleteConnection();
williamr@2
  1819
williamr@2
  1820
public:
williamr@2
  1821
    /**
williamr@2
  1822
    * Gets the downlink data volume.
williamr@2
  1823
    *
williamr@2
  1824
    * @return Downlink data volume in bytes.
williamr@2
  1825
    */
williamr@2
  1826
    IMPORT_C TUint DownlinkData() const;
williamr@2
  1827
williamr@2
  1828
    /**
williamr@2
  1829
    * Gets the uplink data volume.
williamr@2
  1830
    *
williamr@2
  1831
    * @return Uplink data volume in bytes.
williamr@2
  1832
    */
williamr@2
  1833
    IMPORT_C TUint UplinkData() const;
williamr@2
  1834
williamr@2
  1835
    /**
williamr@2
  1836
    * Checks if the connection was stopped in an authoritative way.
williamr@2
  1837
    * ETrue will be returned if the user has deactivated the connection by
williamr@2
  1838
    * using Connection Monitor or if some application has issued
williamr@2
  1839
    * RConnection::Stop( RConnection::EStopAuthoritative ).
williamr@2
  1840
    *
williamr@2
  1841
    * @return ETrue if connection has been deactivated in an authoritative
williamr@2
  1842
    * way, otherwise returns EFalse.
williamr@2
  1843
    */
williamr@2
  1844
    IMPORT_C TBool AuthoritativeDelete() const;
williamr@2
  1845
williamr@2
  1846
private:
williamr@2
  1847
    TUint iDownlinkData;
williamr@2
  1848
    TUint iUplinkData;
williamr@2
  1849
    TBool iAuthDelete;
williamr@2
  1850
    };
williamr@2
  1851
williamr@2
  1852
/**
williamr@2
  1853
* This event is triggered when a new subconnection has been created.
williamr@2
  1854
* Subconnections are not supported currently.
williamr@2
  1855
*
williamr@2
  1856
* @lib CONNMON.LIB
williamr@2
  1857
*/
williamr@2
  1858
NONSHARABLE_CLASS( CConnMonCreateSubConnection ) : public CConnMonEventBase
williamr@2
  1859
    {
williamr@2
  1860
public:
williamr@2
  1861
    /**
williamr@2
  1862
    * Constructor.
williamr@2
  1863
    *
williamr@2
  1864
    * @param aConnectionId Connection ID.
williamr@2
  1865
    * @param aSubConnectionId Subconnection ID.
williamr@2
  1866
    */
williamr@2
  1867
    CConnMonCreateSubConnection(
williamr@2
  1868
            const TUint aConnectionId,
williamr@2
  1869
            const TUint aSubConnectionId );
williamr@2
  1870
williamr@2
  1871
    /**
williamr@2
  1872
    * Destructor.
williamr@2
  1873
    */
williamr@2
  1874
    ~CConnMonCreateSubConnection();
williamr@2
  1875
williamr@2
  1876
public:
williamr@2
  1877
    /**
williamr@2
  1878
    * Gets the new subconnection ID.
williamr@2
  1879
    *
williamr@2
  1880
    * @return Subconnection ID.
williamr@2
  1881
    */
williamr@2
  1882
    IMPORT_C TUint SubConnectionId() const;
williamr@2
  1883
williamr@2
  1884
private:
williamr@2
  1885
    TUint iSubConnectionId;
williamr@2
  1886
    };
williamr@2
  1887
williamr@2
  1888
/**
williamr@2
  1889
* This event is triggered when a subconnection has been deleted.
williamr@2
  1890
* Subconnections are not supported currently.
williamr@2
  1891
*
williamr@2
  1892
* @lib CONNMON.LIB
williamr@2
  1893
*/
williamr@2
  1894
NONSHARABLE_CLASS( CConnMonDeleteSubConnection ) : public CConnMonEventBase
williamr@2
  1895
    {
williamr@2
  1896
public:
williamr@2
  1897
    /**
williamr@2
  1898
    * Constructor.
williamr@2
  1899
    *
williamr@2
  1900
    * @param aConnectionId Connection ID.
williamr@2
  1901
    * @param aSubConnectionId Subconnection ID.
williamr@2
  1902
    * @param aDownlinkData Downlink data volume.
williamr@2
  1903
    * @param aUplinkData Uplink data volume.
williamr@2
  1904
    * @param aAuthDelete Was connection stopped in an authoritative way.
williamr@2
  1905
    */
williamr@2
  1906
    CConnMonDeleteSubConnection(
williamr@2
  1907
            const TUint aConnectionId,
williamr@2
  1908
            const TUint aSubConnectionId,
williamr@2
  1909
            const TUint aDownlinkData,
williamr@2
  1910
            const TUint aUplinkData,
williamr@2
  1911
            const TBool aAuthDelete );
williamr@2
  1912
williamr@2
  1913
    /**
williamr@2
  1914
    * Destructor.
williamr@2
  1915
    */
williamr@2
  1916
    ~CConnMonDeleteSubConnection();
williamr@2
  1917
williamr@2
  1918
public:
williamr@2
  1919
    /**
williamr@2
  1920
    * Gets the subconnection ID of the deleted subconnection.
williamr@2
  1921
    *
williamr@2
  1922
    * @return Subconnection ID.
williamr@2
  1923
    */
williamr@2
  1924
    IMPORT_C TUint SubConnectionId() const;
williamr@2
  1925
williamr@2
  1926
    /**
williamr@2
  1927
    * Gets the downlink data volume.
williamr@2
  1928
    *
williamr@2
  1929
    * @return Downlink data volume in bytes.
williamr@2
  1930
    */
williamr@2
  1931
    IMPORT_C TUint DownlinkData() const;
williamr@2
  1932
williamr@2
  1933
    /**
williamr@2
  1934
    * Gets the uplink data volume.
williamr@2
  1935
    *
williamr@2
  1936
    * @return Uplink data volume in bytes.
williamr@2
  1937
    */
williamr@2
  1938
    IMPORT_C TUint UplinkData() const;
williamr@2
  1939
williamr@2
  1940
    /**
williamr@2
  1941
    * Checks if the connection was stopped in an authoritative way.
williamr@2
  1942
    * ETrue will be returned if the user has deactivated the connection by
williamr@2
  1943
    * using Connection Monitor or if some application has issued
williamr@2
  1944
    * RConnection::Stop( RConnection::EStopAuthoritative ).
williamr@2
  1945
    *
williamr@2
  1946
    * @return ETrue if connection has been deactivated in an authoritative
williamr@2
  1947
    * way, otherwise returns EFalse.
williamr@2
  1948
    */
williamr@2
  1949
    IMPORT_C TBool AuthoritativeDelete() const;
williamr@2
  1950
williamr@2
  1951
private:
williamr@2
  1952
    TUint iSubConnectionId;
williamr@2
  1953
    TUint iDownlinkData;
williamr@2
  1954
    TUint iUplinkData;
williamr@2
  1955
    TBool iAuthDelete;
williamr@2
  1956
    };
williamr@2
  1957
williamr@2
  1958
/**
williamr@2
  1959
* This event is triggered when there is a sufficient change in the volume of
williamr@2
  1960
* downlink data for a specific connection. The event is sent each time a client
williamr@2
  1961
* specified amount (KDownlinkDataThreshold) of new data has been sent. If
williamr@2
  1962
* another ConnMon client has requested for these events for the same
williamr@2
  1963
* connection, the smallest threshold value will be used globally. If
williamr@2
  1964
* KDownlinkDataThreshold is 0 (default), events will not be sent for that
williamr@2
  1965
* connection. To prevent rapid flooding of these events, different bearers have
williamr@2
  1966
* appropriate minimum threshold values which will be used to override too small
williamr@2
  1967
* thresholds when necessary.
williamr@2
  1968
*
williamr@2
  1969
* @lib CONNMON.LIB
williamr@2
  1970
*/
williamr@2
  1971
NONSHARABLE_CLASS( CConnMonDownlinkDataThreshold ) : public CConnMonEventBase
williamr@2
  1972
    {
williamr@2
  1973
public:
williamr@2
  1974
    /**
williamr@2
  1975
    * Constructor.
williamr@2
  1976
    *
williamr@2
  1977
    * @param aConnectionId Connection ID.
williamr@2
  1978
    * @param aSubConnectionId Subconnection ID.
williamr@2
  1979
    * @param aDownlinkData Downlink data volume.
williamr@2
  1980
    */
williamr@2
  1981
    CConnMonDownlinkDataThreshold(
williamr@2
  1982
            const TUint aConnectionId,
williamr@2
  1983
            const TUint aSubConnectionId,
williamr@2
  1984
            const TUint aDownlinkData );
williamr@2
  1985
williamr@2
  1986
    /**
williamr@2
  1987
    * Destructor.
williamr@2
  1988
    */
williamr@2
  1989
    ~CConnMonDownlinkDataThreshold();
williamr@2
  1990
williamr@2
  1991
public:
williamr@2
  1992
    /**
williamr@2
  1993
    * Gets the subconnection ID.
williamr@2
  1994
    *
williamr@2
  1995
    * @return Subconnection ID.
williamr@2
  1996
    */
williamr@2
  1997
    IMPORT_C TUint SubConnectionId() const;
williamr@2
  1998
williamr@2
  1999
    /**
williamr@2
  2000
    * Gets the downlink data volume.
williamr@2
  2001
    *
williamr@2
  2002
    * @return Downlink data volume in bytes.
williamr@2
  2003
    */
williamr@2
  2004
    IMPORT_C TUint DownlinkData() const;
williamr@2
  2005
williamr@2
  2006
private:
williamr@2
  2007
    TUint iSubConnectionId;
williamr@2
  2008
    TUint iDownlinkData;
williamr@2
  2009
    };
williamr@2
  2010
williamr@2
  2011
/**
williamr@2
  2012
* This event is triggered when there is a sufficient change in the volume of
williamr@2
  2013
* uplink data for a specific connection. The event is sent each time a client
williamr@2
  2014
* specified amount (KUplinkDataThreshold) of new data has been received. If
williamr@2
  2015
* another ConnMon client has requested for these events for the same
williamr@2
  2016
* connection, the smallest threshold value will be used globally. If
williamr@2
  2017
* KUplinkDataThreshold is 0 (default), events will not be sent for that
williamr@2
  2018
* connection. To prevent rapid flooding of these events, different bearers have
williamr@2
  2019
* appropriate minimum threshold values which will be used to override too small
williamr@2
  2020
* thresholds when necessary.
williamr@2
  2021
*
williamr@2
  2022
* @lib CONNMON.LIB
williamr@2
  2023
*/
williamr@2
  2024
NONSHARABLE_CLASS( CConnMonUplinkDataThreshold ) : public CConnMonEventBase
williamr@2
  2025
    {
williamr@2
  2026
public:
williamr@2
  2027
    /**
williamr@2
  2028
    * Constructor.
williamr@2
  2029
    *
williamr@2
  2030
    * @param aConnectionId Connection ID.
williamr@2
  2031
    * @param aSubConnectionId Subconnection ID.
williamr@2
  2032
    * @param aUplinkData Uplink data volume.
williamr@2
  2033
    */
williamr@2
  2034
    CConnMonUplinkDataThreshold(
williamr@2
  2035
            const TUint aConnectionId,
williamr@2
  2036
            const TUint aSubConnectionId,
williamr@2
  2037
            const TUint aUplinkData );
williamr@2
  2038
williamr@2
  2039
    /**
williamr@2
  2040
    * Destructor.
williamr@2
  2041
    */
williamr@2
  2042
    ~CConnMonUplinkDataThreshold();
williamr@2
  2043
williamr@2
  2044
public:
williamr@2
  2045
    /**
williamr@2
  2046
    * Gets the subconnection ID.
williamr@2
  2047
    *
williamr@2
  2048
    * @return Subconnection ID.
williamr@2
  2049
    */
williamr@2
  2050
    IMPORT_C TUint SubConnectionId() const;
williamr@2
  2051
williamr@2
  2052
    /**
williamr@2
  2053
    * Gets the uplink data volume.
williamr@2
  2054
    *
williamr@2
  2055
    * @return Uplink data volume in bytes.
williamr@2
  2056
    */
williamr@2
  2057
    IMPORT_C TUint UplinkData() const;
williamr@2
  2058
williamr@2
  2059
private:
williamr@2
  2060
    TUint iSubConnectionId;
williamr@2
  2061
    TUint iUplinkData;
williamr@2
  2062
    };
williamr@2
  2063
williamr@2
  2064
/**
williamr@2
  2065
* This event is triggered when network status changes for some packet data
williamr@2
  2066
* connection. The connection ID passed in the event is a bearer specific
williamr@2
  2067
* connection ID (see TConnMonBearerId). The same information can be retrieved
williamr@2
  2068
* with TInt attribute KNetworkStatus.
williamr@2
  2069
*
williamr@2
  2070
* @lib CONNMON.LIB
williamr@2
  2071
*/
williamr@2
  2072
NONSHARABLE_CLASS( CConnMonNetworkStatusChange ) : public CConnMonEventBase
williamr@2
  2073
    {
williamr@2
  2074
public:
williamr@2
  2075
    /**
williamr@2
  2076
    * Constructor.
williamr@2
  2077
    *
williamr@2
  2078
    * @param aConnectionId Connection ID.
williamr@2
  2079
    * @param aNetworkStatus Network status.
williamr@2
  2080
    */
williamr@2
  2081
    CConnMonNetworkStatusChange(
williamr@2
  2082
            const TUint aConnectionId,
williamr@2
  2083
            const TInt aNetworkStatus );
williamr@2
  2084
williamr@2
  2085
    /**
williamr@2
  2086
    * Destructor.
williamr@2
  2087
    */
williamr@2
  2088
    ~CConnMonNetworkStatusChange();
williamr@2
  2089
williamr@2
  2090
public:
williamr@2
  2091
    /**
williamr@2
  2092
    * Gets the network status.
williamr@2
  2093
    *
williamr@2
  2094
    * @return Network status. Values are defined in TConnMonNetworkStatus.
williamr@2
  2095
    */
williamr@2
  2096
    IMPORT_C TInt NetworkStatus() const;
williamr@2
  2097
williamr@2
  2098
private:
williamr@2
  2099
    TInt iNetworkStatus;
williamr@2
  2100
    };
williamr@2
  2101
williamr@2
  2102
/**
williamr@2
  2103
* This event is triggered when the status of some connection changes.
williamr@2
  2104
* The same information can be retrieved with TInt attribute KConnectionStatus.
williamr@2
  2105
* Connection status values are defined in nifvar.h.
williamr@2
  2106
*
williamr@2
  2107
* @lib CONNMON.LIB
williamr@2
  2108
*/
williamr@2
  2109
NONSHARABLE_CLASS( CConnMonConnectionStatusChange ) : public CConnMonEventBase
williamr@2
  2110
    {
williamr@2
  2111
public:
williamr@2
  2112
    /**
williamr@2
  2113
    * Constructor.
williamr@2
  2114
    *
williamr@2
  2115
    * @param aConnectionId Connection ID.
williamr@2
  2116
    * @param aSubConnectionId Subconnection ID.
williamr@2
  2117
    * @param aConnectionStatus Connection status.
williamr@2
  2118
    */
williamr@2
  2119
    CConnMonConnectionStatusChange(
williamr@2
  2120
            const TUint aConnectionId,
williamr@2
  2121
            const TUint aSubConnectionId,
williamr@2
  2122
            const TInt aConnectionStatus );
williamr@2
  2123
williamr@2
  2124
    /**
williamr@2
  2125
    * Destructor.
williamr@2
  2126
    */
williamr@2
  2127
    ~CConnMonConnectionStatusChange();
williamr@2
  2128
williamr@2
  2129
public:
williamr@2
  2130
    /**
williamr@2
  2131
    * Gets the subconnection ID.
williamr@2
  2132
    *
williamr@2
  2133
    * @return Subconnection ID.
williamr@2
  2134
    */
williamr@2
  2135
    IMPORT_C TUint SubConnectionId() const;
williamr@2
  2136
williamr@2
  2137
    /**
williamr@2
  2138
    * Gets the connection status.
williamr@2
  2139
    *
williamr@2
  2140
    * @return Connection status. Values are defined in nifvar.h.
williamr@2
  2141
    */
williamr@2
  2142
    IMPORT_C TInt ConnectionStatus() const;
williamr@2
  2143
williamr@2
  2144
private:
williamr@2
  2145
    TUint iSubConnectionId;
williamr@2
  2146
    TInt iConnectionStatus;
williamr@2
  2147
    };
williamr@2
  2148
williamr@2
  2149
/**
williamr@2
  2150
* This event is triggered when some connection changes from active to idle or
williamr@2
  2151
* vice versa. The client must set KActivityTimeThreshold to receive these
williamr@2
  2152
* events. KActivityTimeThreshold defines the period (in seconds) for checking
williamr@2
  2153
* wether the connection is active or not. The minimum allowed value is 5
williamr@2
  2154
* seconds. The connection is considered active, if data has been passed during
williamr@2
  2155
* the last period, otherwise it is considered inactive. The same information
williamr@2
  2156
* can be retrieved with TBool attribute KConnectionActive.
williamr@2
  2157
*
williamr@2
  2158
* @lib CONNMON.LIB
williamr@2
  2159
*/
williamr@2
  2160
NONSHARABLE_CLASS( CConnMonConnectionActivityChange ) : public CConnMonEventBase
williamr@2
  2161
    {
williamr@2
  2162
public:
williamr@2
  2163
    /**
williamr@2
  2164
    * Constructor.
williamr@2
  2165
    *
williamr@2
  2166
    * @param aConnectionId Connection ID.
williamr@2
  2167
    * @param aSubConnectionId Subconnection ID.
williamr@2
  2168
    * @param aActivity Connection activity.
williamr@2
  2169
    */
williamr@2
  2170
    CConnMonConnectionActivityChange(
williamr@2
  2171
            const TUint aConnectionId,
williamr@2
  2172
            const TUint aSubConnectionId,
williamr@2
  2173
            const TBool aActivity );
williamr@2
  2174
williamr@2
  2175
    /**
williamr@2
  2176
    * Destructor.
williamr@2
  2177
    */
williamr@2
  2178
    ~CConnMonConnectionActivityChange();
williamr@2
  2179
williamr@2
  2180
public:
williamr@2
  2181
    /**
williamr@2
  2182
    * Gets the subconnection ID.
williamr@2
  2183
    *
williamr@2
  2184
    * @return Subconnection ID.
williamr@2
  2185
    */
williamr@2
  2186
    IMPORT_C TUint SubConnectionId() const;
williamr@2
  2187
williamr@2
  2188
    /**
williamr@2
  2189
    * Gets the connection activity.
williamr@2
  2190
    *
williamr@2
  2191
    * @return ETrue if the connection is active, EFalse if not.
williamr@2
  2192
    */
williamr@2
  2193
    IMPORT_C TBool ConnectionActivity() const;
williamr@2
  2194
williamr@2
  2195
private:
williamr@2
  2196
    TUint iSubConnectionId;
williamr@2
  2197
    TBool iActivity;
williamr@2
  2198
    };
williamr@2
  2199
williamr@2
  2200
/**
williamr@2
  2201
* This event is triggered when network registration status (GSM/GPRS/WCDMA)
williamr@2
  2202
* changes. The connection ID passed in the event is a bearer specific
williamr@2
  2203
* connection ID (see TConnMonBearerId). The same information can be retrieved
williamr@2
  2204
* with TInt attribute KNetworkRegistration. Network registration values are
williamr@2
  2205
* defined in TConnMonNetworkRegistration.
williamr@2
  2206
*
williamr@2
  2207
* @lib CONNMON.LIB
williamr@2
  2208
*/
williamr@2
  2209
NONSHARABLE_CLASS( CConnMonNetworkRegistrationChange ) : public CConnMonEventBase
williamr@2
  2210
    {
williamr@2
  2211
public:
williamr@2
  2212
    /**
williamr@2
  2213
    * Constructor.
williamr@2
  2214
    *
williamr@2
  2215
    * @param aConnectionId Connection ID.
williamr@2
  2216
    * @param aRegistrationStatus Network registration status.
williamr@2
  2217
    */
williamr@2
  2218
    CConnMonNetworkRegistrationChange(
williamr@2
  2219
            const TUint aConnectionId,
williamr@2
  2220
            const TInt aRegistrationStatus );
williamr@2
  2221
williamr@2
  2222
    /**
williamr@2
  2223
    * Destructor.
williamr@2
  2224
    */
williamr@2
  2225
    ~CConnMonNetworkRegistrationChange();
williamr@2
  2226
williamr@2
  2227
public:
williamr@2
  2228
    /**
williamr@2
  2229
    * Gets the network registration status.
williamr@2
  2230
    *
williamr@2
  2231
    * @return Registration status. Values are defined in
williamr@2
  2232
    * TConnMonNetworkRegistration.
williamr@2
  2233
    */
williamr@2
  2234
    IMPORT_C TInt RegistrationStatus() const;
williamr@2
  2235
williamr@2
  2236
private:
williamr@2
  2237
    TInt iRegistrationStatus;
williamr@2
  2238
    };
williamr@2
  2239
williamr@2
  2240
/**
williamr@2
  2241
* This event is triggered when bearer type (GPRS/EdgeGPRS/WCDMA) changes. The
williamr@2
  2242
* connection ID passed in the event is a bearer specific connection ID, either
williamr@2
  2243
* EBearerIdGPRS or EBearerIdWCDMA (see TConnMonBearerId). The new bearer passed
williamr@2
  2244
* in the event can be EBearerGPRS, EBearerEdgeGPRS or EBearerWCDMA (see
williamr@2
  2245
* TConnMonBearerType). The same information can be retrieved with TInt
williamr@2
  2246
* attribute KBearer.
williamr@2
  2247
*
williamr@2
  2248
* Note: If TUint attribute KBearerGroupThreshold is set, these events are
williamr@2
  2249
* disabled and events EConnMonBearerInfoChange and EConnMonBearerGroupChange
williamr@2
  2250
* are used instead. Use these events, for example, if HSDPA related information
williamr@2
  2251
* is required.
williamr@2
  2252
*
williamr@2
  2253
* @lib CONNMON.LIB
williamr@2
  2254
*/
williamr@2
  2255
NONSHARABLE_CLASS( CConnMonBearerChange ) : public CConnMonEventBase
williamr@2
  2256
    {
williamr@2
  2257
public:
williamr@2
  2258
    /**
williamr@2
  2259
    * Constructor.
williamr@2
  2260
    *
williamr@2
  2261
    * @param aConnectionId Connection ID.
williamr@2
  2262
    * @param aBearer Bearer.
williamr@2
  2263
    */
williamr@2
  2264
    CConnMonBearerChange( const TUint aConnectionId, const TInt aBearer );
williamr@2
  2265
williamr@2
  2266
    /**
williamr@2
  2267
    * Destructor.
williamr@2
  2268
    */
williamr@2
  2269
    ~CConnMonBearerChange();
williamr@2
  2270
williamr@2
  2271
public:
williamr@2
  2272
    /**
williamr@2
  2273
    * Gets the new bearer.
williamr@2
  2274
    *
williamr@2
  2275
    * @return New bearer. Values are defined in TConnMonBearerType.
williamr@2
  2276
    */
williamr@2
  2277
    IMPORT_C TInt Bearer() const;
williamr@2
  2278
williamr@2
  2279
private:
williamr@2
  2280
    TInt iBearer;
williamr@2
  2281
    };
williamr@2
  2282
williamr@2
  2283
/**
williamr@2
  2284
* This event is triggered when signal strength changes. The connection ID
williamr@2
  2285
* passed in the event is a bearer specific connection ID (see
williamr@2
  2286
* TConnMonBearerId). This event is valid only for cellular (GPRS, WCDMA, etc.)
williamr@2
  2287
* bearers and not for other bearers, e.g. WLAN. The client must set
williamr@2
  2288
* KSignalStrengthThreshold to 1 to receive these events.
williamr@2
  2289
*
williamr@2
  2290
* @lib CONNMON.LIB
williamr@2
  2291
*/
williamr@2
  2292
NONSHARABLE_CLASS( CConnMonSignalStrengthChange ) : public CConnMonEventBase
williamr@2
  2293
    {
williamr@2
  2294
public:
williamr@2
  2295
    /**
williamr@2
  2296
    * Constructor.
williamr@2
  2297
    *
williamr@2
  2298
    * @param aConnectionId Connection ID.
williamr@2
  2299
    * @param aSignalStrength Signal strength in dBm.
williamr@2
  2300
    */
williamr@2
  2301
    CConnMonSignalStrengthChange(
williamr@2
  2302
            const TUint aConnectionId,
williamr@2
  2303
            const TInt aSignalStrength );
williamr@2
  2304
williamr@2
  2305
    /**
williamr@2
  2306
    * Destructor.
williamr@2
  2307
    */
williamr@2
  2308
    ~CConnMonSignalStrengthChange();
williamr@2
  2309
williamr@2
  2310
public:
williamr@2
  2311
    /**
williamr@2
  2312
    * Gets the signal strength.
williamr@2
  2313
    *
williamr@2
  2314
    * @return Signal strength in dBm.
williamr@2
  2315
    */
williamr@2
  2316
    IMPORT_C TInt SignalStrength() const;
williamr@2
  2317
williamr@2
  2318
private:
williamr@2
  2319
    TInt iSignalStrength;
williamr@2
  2320
    };
williamr@2
  2321
williamr@2
  2322
/**
williamr@2
  2323
* This event is triggered when the availability of some bearer changes. The
williamr@2
  2324
* connection ID passed in the event is a bearer specific connection ID (see
williamr@2
  2325
* TConnMonBearerId). The client must set KBearerAvailabilityThreshold to 1 to
williamr@2
  2326
* receive these events. Using this event for detecting changes in WLAN
williamr@2
  2327
* availability requires WLAN background scanning to be enabled.
williamr@2
  2328
*
williamr@2
  2329
* @lib CONNMON.LIB
williamr@2
  2330
*/
williamr@2
  2331
NONSHARABLE_CLASS( CConnMonBearerAvailabilityChange ) : public CConnMonEventBase
williamr@2
  2332
    {
williamr@2
  2333
public:
williamr@2
  2334
    /**
williamr@2
  2335
    * Constructor.
williamr@2
  2336
    *
williamr@2
  2337
    * @param aConnectionId Connection ID.
williamr@2
  2338
    * @param aAvailability Availability of the bearer.
williamr@2
  2339
    */
williamr@2
  2340
    CConnMonBearerAvailabilityChange(
williamr@2
  2341
            const TUint aConnectionId,
williamr@2
  2342
            const TBool aAvailability );
williamr@2
  2343
williamr@2
  2344
    /**
williamr@2
  2345
    * Destructor.
williamr@2
  2346
    */
williamr@2
  2347
    ~CConnMonBearerAvailabilityChange();
williamr@2
  2348
williamr@2
  2349
public:
williamr@2
  2350
    /**
williamr@2
  2351
    * Gets the availability of the bearer.
williamr@2
  2352
    *
williamr@2
  2353
    * @return ETrue if the bearer is available, EFalse if not.
williamr@2
  2354
    */
williamr@2
  2355
    IMPORT_C TBool Availability() const;
williamr@2
  2356
williamr@2
  2357
private:
williamr@2
  2358
    TBool iAvailability;
williamr@2
  2359
    };
williamr@2
  2360
williamr@2
  2361
/**
williamr@2
  2362
* This event is triggered when a plug-in sends a bearer specific event that is
williamr@2
  2363
* unknown to ConnMon.
williamr@2
  2364
*
williamr@2
  2365
* @lib CONNMON.LIB
williamr@2
  2366
*/
williamr@2
  2367
NONSHARABLE_CLASS( CConnMonGenericEvent ) : public CConnMonEventBase
williamr@2
  2368
    {
williamr@2
  2369
public:
williamr@2
  2370
    /**
williamr@2
  2371
    * Constructor.
williamr@2
  2372
    *
williamr@2
  2373
    * @param aType Event type.
williamr@2
  2374
    * @param aConnectionId Connection ID.
williamr@2
  2375
    * @param aData Pointer to the event data.
williamr@2
  2376
    */
williamr@2
  2377
    CConnMonGenericEvent(
williamr@2
  2378
            const TUint aType,
williamr@2
  2379
            const TUint aConnectionId,
williamr@2
  2380
            TAny* aData );
williamr@2
  2381
williamr@2
  2382
    /**
williamr@2
  2383
    * Destructor.
williamr@2
  2384
    */
williamr@2
  2385
    ~CConnMonGenericEvent();
williamr@2
  2386
williamr@2
  2387
public:
williamr@2
  2388
    /**
williamr@2
  2389
    * Gets a pointer to the event data.
williamr@2
  2390
    * The pointer is valid only inside EventL().
williamr@2
  2391
    *
williamr@2
  2392
    * @return Pointer to the event data.
williamr@2
  2393
    */
williamr@2
  2394
    IMPORT_C TAny* Data() const;
williamr@2
  2395
williamr@2
  2396
private:
williamr@2
  2397
    TAny* iData;
williamr@2
  2398
    };
williamr@2
  2399
williamr@2
  2400
/**
williamr@2
  2401
* This event is triggered when IAP availability changes. The connection ID
williamr@2
  2402
* passed in the event is the generic connection ID EBearerIdAll. The ID numbers
williamr@2
  2403
* of available IAPs are included in the event (see TConnMonIapInfo). The same
williamr@2
  2404
* information can be retrieved with packaged attribute KIapAvailability.
williamr@2
  2405
*
williamr@2
  2406
* @lib CONNMON.LIB
williamr@2
  2407
*/
williamr@2
  2408
NONSHARABLE_CLASS( CConnMonIapAvailabilityChange ) : public CConnMonEventBase
williamr@2
  2409
    {
williamr@2
  2410
public:
williamr@2
  2411
    /**
williamr@2
  2412
    * Constructor.
williamr@2
  2413
    *
williamr@2
  2414
    * @param aConnectionId Connection ID.
williamr@2
  2415
    * @param aIapInfoPtr Pointer to the IAP availability information.
williamr@2
  2416
    */
williamr@2
  2417
    CConnMonIapAvailabilityChange(
williamr@2
  2418
            const TUint aConnectionId,
williamr@2
  2419
            const TConnMonIapInfo* aIapInfoPtr );
williamr@2
  2420
williamr@2
  2421
    /**
williamr@2
  2422
    * Destructor.
williamr@2
  2423
    */
williamr@2
  2424
    ~CConnMonIapAvailabilityChange();
williamr@2
  2425
williamr@2
  2426
public:
williamr@2
  2427
    /**
williamr@2
  2428
    * Gets the IAP availability information.
williamr@2
  2429
    *
williamr@2
  2430
    * @return IAP availability information.
williamr@2
  2431
    */
williamr@2
  2432
    IMPORT_C TConnMonIapInfo IapAvailability() const;
williamr@2
  2433
williamr@2
  2434
private:
williamr@2
  2435
    TConnMonIapInfo iIapInfo;
williamr@2
  2436
    };
williamr@2
  2437
williamr@2
  2438
/**
williamr@2
  2439
* This event is triggered when the used WLAN transmit power changes. The
williamr@2
  2440
* connection ID passed in the event is the bearer specific connection ID
williamr@2
  2441
* EBearerIdWLAN. Transmit power is given in milliwatts (mW). The same
williamr@2
  2442
* information can be retrieved with TUint attribute KTransmitPower.
williamr@2
  2443
*
williamr@2
  2444
* @lib CONNMON.LIB
williamr@2
  2445
*/
williamr@2
  2446
NONSHARABLE_CLASS( CConnMonTransmitPowerChange ) : public CConnMonEventBase
williamr@2
  2447
    {
williamr@2
  2448
public:
williamr@2
  2449
    /**
williamr@2
  2450
    * Constructor.
williamr@2
  2451
    *
williamr@2
  2452
    * @param aConnectionId Connection ID.
williamr@2
  2453
    * @param aTransmitPower Transmit power in mW.
williamr@2
  2454
    */
williamr@2
  2455
    CConnMonTransmitPowerChange(
williamr@2
  2456
            const TUint aConnectionId,
williamr@2
  2457
            const TUint aTransmitPower );
williamr@2
  2458
williamr@2
  2459
    /**
williamr@2
  2460
    * Destructor.
williamr@2
  2461
    */
williamr@2
  2462
    ~CConnMonTransmitPowerChange();
williamr@2
  2463
williamr@2
  2464
public:
williamr@2
  2465
    /**
williamr@2
  2466
    * Gets the transmit power.
williamr@2
  2467
    *
williamr@2
  2468
    * @return Transmit power in mW.
williamr@2
  2469
    */
williamr@2
  2470
    IMPORT_C TUint TransmitPower() const;
williamr@2
  2471
williamr@2
  2472
private:
williamr@2
  2473
    TUint iTransmitPower;
williamr@2
  2474
    };
williamr@2
  2475
williamr@2
  2476
/**
williamr@2
  2477
* This event is triggered when SNAP availability changes. The connection ID
williamr@2
  2478
* passed in the event is the generic connection ID EBearerIdAll. The ID numbers
williamr@2
  2479
* of available SNAPs are included in the event (see TConnMonSNAPInfo). The same
williamr@2
  2480
* information can be retrieved with packaged attributes KSNAPsAvailability and
williamr@2
  2481
* KAvailableSNAPsIds.
williamr@2
  2482
*
williamr@2
  2483
* @lib CONNMON.LIB
williamr@2
  2484
*/
williamr@2
  2485
NONSHARABLE_CLASS( CConnMonSNAPsAvailabilityChange ) : public CConnMonEventBase
williamr@2
  2486
    {
williamr@2
  2487
public:
williamr@2
  2488
    /**
williamr@2
  2489
    * Constructor.
williamr@2
  2490
    *
williamr@2
  2491
    * @param aConnectionId Connection ID.
williamr@2
  2492
    * @param aSNAPsAvailable Number of available SNAPs.
williamr@2
  2493
    * @param aSNAPInfoPtr Pointer to the SNAP availability information.
williamr@2
  2494
    */
williamr@2
  2495
    CConnMonSNAPsAvailabilityChange(
williamr@2
  2496
            const TUint aConnectionId,
williamr@2
  2497
            const TUint aSNAPsAvailable,
williamr@2
  2498
            const TConnMonSNAPInfo* aSNAPInfoPtr );
williamr@2
  2499
williamr@2
  2500
    /**
williamr@2
  2501
    * Destructor.
williamr@2
  2502
    */
williamr@2
  2503
    ~CConnMonSNAPsAvailabilityChange();
williamr@2
  2504
williamr@2
  2505
public:
williamr@2
  2506
    /**
williamr@2
  2507
    * Gets the SNAP availability information.
williamr@2
  2508
    *
williamr@2
  2509
    * @return SNAP availability information.
williamr@2
  2510
    */
williamr@2
  2511
    IMPORT_C TConnMonSNAPInfo SNAPAvailability() const;
williamr@2
  2512
williamr@2
  2513
    /**
williamr@2
  2514
    * Gets the number of available SNAPs.
williamr@2
  2515
    *
williamr@2
  2516
    * @return Number of available SNAPs.
williamr@2
  2517
    */
williamr@2
  2518
    IMPORT_C TUint SNAPsAvailabile() const;
williamr@2
  2519
williamr@2
  2520
private:
williamr@2
  2521
    TConnMonSNAPInfo iSNAPInfo;
williamr@2
  2522
    TUint iSNAPsAvailable;
williamr@2
  2523
    };
williamr@2
  2524
williamr@2
  2525
/**
williamr@2
  2526
* This event is triggered when new WLAN networks are detected during a WLAN
williamr@2
  2527
* scan. The connection ID passed in the event is the bearer specific connection
williamr@2
  2528
* ID EBearerIdWLAN. To receive these events, WLAN background scanning must be
williamr@2
  2529
* enabled, or some other mechanism must be used to trigger the necessary WLAN
williamr@2
  2530
* scans.
williamr@2
  2531
*
williamr@2
  2532
* @lib CONNMON.LIB
williamr@2
  2533
*/
williamr@2
  2534
NONSHARABLE_CLASS( CConnMonNewWLANNetworkDetected ) : public CConnMonEventBase
williamr@2
  2535
    {
williamr@2
  2536
public:
williamr@2
  2537
    /**
williamr@2
  2538
    * Constructor.
williamr@2
  2539
    *
williamr@2
  2540
    * @param aConnectionId Connection ID.
williamr@2
  2541
    */
williamr@2
  2542
    CConnMonNewWLANNetworkDetected( const TUint aConnectionId );
williamr@2
  2543
williamr@2
  2544
    /**
williamr@2
  2545
    * Destructor.
williamr@2
  2546
    */
williamr@2
  2547
    ~CConnMonNewWLANNetworkDetected();
williamr@2
  2548
    };
williamr@2
  2549
williamr@2
  2550
/**
williamr@2
  2551
* This event is triggered when one or more WLAN networks have been lost since
williamr@2
  2552
* the last WLAN scan. The connection ID passed in the event is the bearer
williamr@2
  2553
* specific connection ID EBearerIdWLAN. To receive these events, WLAN
williamr@2
  2554
* background scanning must be enabled, or some other mechanism must be used to
williamr@2
  2555
* trigger the necessary WLAN scans.
williamr@2
  2556
*
williamr@2
  2557
* @lib CONNMON.LIB
williamr@2
  2558
*/
williamr@2
  2559
NONSHARABLE_CLASS( CConnMonOldWLANNetworkLost ) : public CConnMonEventBase
williamr@2
  2560
    {
williamr@2
  2561
public:
williamr@2
  2562
    /**
williamr@2
  2563
    * Constructor.
williamr@2
  2564
    *
williamr@2
  2565
    * @param aConnectionId Connection ID.
williamr@2
  2566
    */
williamr@2
  2567
    CConnMonOldWLANNetworkLost( const TUint aConnectionId );
williamr@2
  2568
williamr@2
  2569
    /**
williamr@2
  2570
    * Destructor.
williamr@2
  2571
    */
williamr@2
  2572
    ~CConnMonOldWLANNetworkLost();
williamr@2
  2573
    };
williamr@2
  2574
williamr@2
  2575
/**
williamr@2
  2576
* This event is triggered when GPRS or WCDMA bearer availability changes, a
williamr@2
  2577
* phone call is started, or a phone call ends. The connection ID passed in the
williamr@2
  2578
* event is a bearer specific connection ID, either EBearerIdGPRS or
williamr@2
  2579
* EBearerIdWCDMA (see TConnMonBearerId).
williamr@2
  2580
*
williamr@2
  2581
* EConnMonPacketDataUnavailable and EConnMonPacketDataAvailable events form a
williamr@2
  2582
* pair. Two events are always sent, one with connection ID EBearerIdGPRS for 2G
williamr@2
  2583
* network, and one with connection ID EBearerIdWCDMA for 3G network. The event
williamr@2
  2584
* for the network that the phone is not registered to is always of type
williamr@2
  2585
* EConnMonPacketDataUnavailable. If the phone does not support dual transfer
williamr@2
  2586
* mode and a call is started, a GPRS or WCDMA packet data connection will be
williamr@2
  2587
* put on hold. In this scenario, both will be of type
williamr@2
  2588
* EConnMonPacketDataUnavailable. The same information can be retrieved with
williamr@2
  2589
* TBool attribute KPacketDataAvailability.
williamr@2
  2590
*
williamr@2
  2591
* @lib CONNMON.LIB
williamr@2
  2592
*/
williamr@2
  2593
NONSHARABLE_CLASS( CConnMonPacketDataUnavailable ) : public CConnMonEventBase
williamr@2
  2594
    {
williamr@2
  2595
public:
williamr@2
  2596
    /**
williamr@2
  2597
    * Constructor.
williamr@2
  2598
    *
williamr@2
  2599
    * @param aConnectionId Bearer specific connection ID, EBearerIdGPRS or
williamr@2
  2600
    * EBearerIdWCDMA.
williamr@2
  2601
    */
williamr@2
  2602
    CConnMonPacketDataUnavailable( const TUint aConnectionId );
williamr@2
  2603
williamr@2
  2604
    /**
williamr@2
  2605
    * Destructor.
williamr@2
  2606
    */
williamr@2
  2607
    virtual ~CConnMonPacketDataUnavailable();
williamr@2
  2608
    };
williamr@2
  2609
williamr@2
  2610
/**
williamr@2
  2611
* This event is triggered when GPRS or WCDMA bearer availability changes, a
williamr@2
  2612
* phone call is started, or a phone call ends. The connection ID passed in the
williamr@2
  2613
* event is a bearer specific connection ID, either EBearerIdGPRS or
williamr@2
  2614
* EBearerIdWCDMA (see TConnMonBearerId).
williamr@2
  2615
*
williamr@2
  2616
* EConnMonPacketDataAvailable and EConnMonPacketDataUnavailable events form a
williamr@2
  2617
* pair. Two events are always sent, one with connection ID EBearerIdGPRS for 2G
williamr@2
  2618
* network, and one with connection ID EBearerIdWCDMA for 3G network. The event
williamr@2
  2619
* for the network that the phone is not registered to is always of type
williamr@2
  2620
* EConnMonPacketDataUnavailable. If the phone does not support dual transfer
williamr@2
  2621
* mode and a call is started, a GPRS or WCDMA packet data connection will be
williamr@2
  2622
* put on hold. In this scenario, both will be of type
williamr@2
  2623
* EConnMonPacketDataUnavailable. The same information can be retrieved with
williamr@2
  2624
* TBool attribute KPacketDataAvailability.
williamr@2
  2625
*
williamr@2
  2626
* @lib CONNMON.LIB
williamr@2
  2627
*/
williamr@2
  2628
NONSHARABLE_CLASS( CConnMonPacketDataAvailable ) : public CConnMonEventBase
williamr@2
  2629
    {
williamr@2
  2630
public:
williamr@2
  2631
    /**
williamr@2
  2632
    * Constructor.
williamr@2
  2633
    *
williamr@2
  2634
    * @param aConnectionId Bearer specific connection ID, EBearerIdGPRS or
williamr@2
  2635
    * EBearerIdWCDMA.
williamr@2
  2636
    */
williamr@2
  2637
    CConnMonPacketDataAvailable( const TUint aConnectionId );
williamr@2
  2638
williamr@2
  2639
    /**
williamr@2
  2640
    * Destructor.
williamr@2
  2641
    */
williamr@2
  2642
    virtual ~CConnMonPacketDataAvailable();
williamr@2
  2643
    };
williamr@2
  2644
williamr@2
  2645
/**
williamr@2
  2646
* This event is triggered when there is a change in bearer information for an
williamr@2
  2647
* existing connection, or if the network mode changes e.g. from 2G to 3G. For
williamr@2
  2648
* connection specific events, the connection ID passed in the event is the
williamr@2
  2649
* respective connection specific ID, and for network level events, the
williamr@2
  2650
* connection ID is EBearerIdAll. The same connection level information can be
williamr@2
  2651
* retrieved with TInt attribute KBearerInfo. The bearer info values are defined
williamr@2
  2652
* in TConnMonBearerInfo.
williamr@2
  2653
*
williamr@2
  2654
* Note: The client needs to set the TUint attribute KBearerGroupThreshold in
williamr@2
  2655
* order to receive these events. This also disables EConnMonBearerChange events.
williamr@2
  2656
*
williamr@2
  2657
* @lib CONNMON.LIB
williamr@2
  2658
*/
williamr@2
  2659
NONSHARABLE_CLASS( CConnMonBearerInfoChange ) : public CConnMonEventBase
williamr@2
  2660
    {
williamr@2
  2661
public:
williamr@2
  2662
    /**
williamr@2
  2663
    * Constructor.
williamr@2
  2664
    *
williamr@2
  2665
    * @param aConnectionId Connection ID.
williamr@2
  2666
    * @param aBearerInfo Bearer information.
williamr@2
  2667
    */
williamr@2
  2668
    CConnMonBearerInfoChange(
williamr@2
  2669
            const TUint aConnectionId,
williamr@2
  2670
            const TInt aBearerInfo );
williamr@2
  2671
williamr@2
  2672
    /**
williamr@2
  2673
    * Destructor.
williamr@2
  2674
    */
williamr@2
  2675
    ~CConnMonBearerInfoChange();
williamr@2
  2676
williamr@2
  2677
public:
williamr@2
  2678
    /**
williamr@2
  2679
    * Gets the new bearer information. Values are defined in TConnMonBearerInfo.
williamr@2
  2680
    *
williamr@2
  2681
    * @return New bearer information.
williamr@2
  2682
    */
williamr@2
  2683
    IMPORT_C TInt BearerInfo() const;
williamr@2
  2684
williamr@2
  2685
private:
williamr@2
  2686
    TInt iBearerInfo;
williamr@2
  2687
    };
williamr@2
  2688
williamr@2
  2689
/**
williamr@2
  2690
* This event is triggered when there is a change in bearer group information
williamr@2
  2691
* for an existing connection. The connection ID passed in the event is the
williamr@2
  2692
* respective connection specific ID. The same information can be retrieved with
williamr@2
  2693
* packaged attribute KBearerGroupInfo. The bearer group bitmask is defined in
williamr@2
  2694
* TConnMonBearerGroup.
williamr@2
  2695
*
williamr@2
  2696
* Note: The client needs to set the TUint attribute KBearerGroupThreshold in
williamr@2
  2697
* order to receive these events. This also disables EConnMonBearerChange events.
williamr@2
  2698
*
williamr@2
  2699
* @lib CONNMON.LIB
williamr@2
  2700
*/
williamr@2
  2701
NONSHARABLE_CLASS( CConnMonBearerGroupChange ) : public CConnMonEventBase
williamr@2
  2702
    {
williamr@2
  2703
public:
williamr@2
  2704
    /**
williamr@2
  2705
    * Constructor.
williamr@2
  2706
    *
williamr@2
  2707
    * @param aConnectionId Connection ID.
williamr@2
  2708
    * @param aBearerGroups1 First bearer group bitmask.
williamr@2
  2709
    * @param aBearerGroups2 Second bearer group bitmask.
williamr@2
  2710
    * @param aInternal ETrue if connection is internal, EFalse if external.
williamr@2
  2711
    */
williamr@2
  2712
    CConnMonBearerGroupChange(
williamr@2
  2713
            const TUint aConnectionId,
williamr@2
  2714
            const TUint aBearerGroups1,
williamr@2
  2715
            const TUint aBearerGroups2,
williamr@2
  2716
            const TBool aInternal );
williamr@2
  2717
williamr@2
  2718
    /**
williamr@2
  2719
    * Destructor.
williamr@2
  2720
    */
williamr@2
  2721
    ~CConnMonBearerGroupChange();
williamr@2
  2722
williamr@2
  2723
public:
williamr@2
  2724
    /**
williamr@2
  2725
    * Gets the new bearer groups. Values are defined in TConnMonBearerGroup.
williamr@2
  2726
    *
williamr@2
  2727
    * @param aBearerGroups1 Will contain the first bearer group bitmask.
williamr@2
  2728
    * @param aBearerGroups2 Will contain the second bearer group bitmask.
williamr@2
  2729
    */
williamr@2
  2730
    IMPORT_C void BearerGroups(
williamr@2
  2731
            TUint& aBearerGroups1,
williamr@2
  2732
            TUint& aBearerGroups2 ) const;
williamr@2
  2733
williamr@2
  2734
    /**
williamr@2
  2735
    * Gets the information whether the current connection bearer is internal
williamr@2
  2736
    * or external.
williamr@2
  2737
    *
williamr@2
  2738
    * @return ETrue if the bearer is internal and EFalse if external.
williamr@2
  2739
    */
williamr@2
  2740
    IMPORT_C TBool Internal() const;
williamr@2
  2741
williamr@2
  2742
private:
williamr@2
  2743
    TBool iInternal;      // ETrue for internal, EFalse for external connection.
williamr@2
  2744
    TUint iBearerGroups1; // Contains the groups as bitmask.
williamr@2
  2745
    TUint iBearerGroups2; // Reserved for the future use.
williamr@2
  2746
    };
williamr@2
  2747
williamr@2
  2748
#endif // __CONNECTIONMONITOR_H
williamr@2
  2749
williamr@2
  2750
// End of file