CUpnpControlPoint Class Reference

class CUpnpControlPoint : public CBase

An abstract control point class. This class has an interfaces for following areas:

Device discovery Resolving properties of devices and services Action requests to the services Eventing subscriptions

Since
Series60 2.6

Inherits from

Public Member Functions
~CUpnpControlPoint()
voidActionResponseReceived(CUpnpAction *)
voidActionResponseReceivedL(CUpnpAction *)
voidAddressChangedL()
TBool AllDevicesExpired(CUpnpDevice *)
CUpnpGenaMessage *CreateSubscriptionMessageL(CUpnpService &, const TDesC8 &, TInt, THTTPMsgType)
IMPORT_C const CUpnpDevice *Device(const TDesC8 &)
voidDeviceDisappeared(CUpnpDevice *)
voidDeviceDisappearedL(CUpnpDevice *)
voidDeviceDiscovered(CUpnpDevice *)
voidDeviceDiscoveredL(CUpnpDevice *)
IMPORT_C voidDeviceFoundL(CUpnpDevice &)
IMPORT_C const RPointerArray< CUpnpDevice > &DeviceList()
IMPORT_C voidDeviceLostL(CUpnpDevice &)
IMPORT_C voidDisableRadaDeviceL()
IMPORT_C voidEnableRadaDeviceL(TRequestStatus &)
IMPORT_C TIntEnableRadaDeviceL()
TInetAddr GiveAddressL(const TDesC8 &)
voidHandlePostponedInitialEventL(CUpnpGenaMessage &)
voidHttpResponseReceived(CUpnpHttpMessage *)
voidHttpResponseReceivedL(CUpnpHttpMessage *)
voidMessageReceived(CUpnpHttpMessage *)
IMPORT_C voidNetworkEvent(CUpnpNetworkEventBase *)
voidNotifyReceivedL(CUpnpHttpMessage &)
IMPORT_C const TDesC8 &Path()
voidProcessActionMessageL(CUpnpHttpMessage *)
voidProcessDeviceMessageL(CUpnpHttpMessage *)
voidProcessServiceMessageL(CUpnpHttpMessage *)
voidResubscribeL(CUpnpServiceInfo *)
IMPORT_C voidSearchL(const TDesC8 &)
IMPORT_C voidSendL(CUpnpAction *)
IMPORT_C voidSendL(CUpnpHttpMessage *)
IMPORT_C voidStartIPFilteringL(TFilteringMode)
voidStateUpdated(CUpnpService *)
voidStateUpdatedL(CUpnpService *)
IMPORT_C voidStopIPFilteringL(TFilteringMode)
IMPORT_C voidSubscribeL(CUpnpService *)
voidSubscriptionResponseReceivedL(CUpnpHttpMessage &)
voidUnSubscriptionResponseReceived()
IMPORT_C voidUnsubscribeL(const CUpnpService *)
voidUnsubscribeL(CUpnpService *, TBool)
Protected Member Functions
CUpnpControlPoint()
CUpnpControlPoint(MUpnpCpStackRequestor &, MUpnpCpHttpRequestor &)
IMPORT_C voidConstructL(const CDesC8Array &)
IMPORT_C voidConstructL(const TDesC8 &)
Private Member Functions
voidActionMessage(CUpnpHttpMessage *)
TInt CheckEventKey(const TDesC8 &, TUint32)
CUpnpServiceInfo *FindServiceInfoByGenaMessage(CUpnpGenaMessage *)
CUpnpServiceInfo *FindServiceInfoByService(CUpnpService *)
CUpnpServiceInfo *FindServiceInfoBySid(RPointerArray< CUpnpServiceInfo > &, const TDesC8 &)
TInt MapHttpError(TInt)
voidParseEventUpdateStateVariablesL(CUpnpGenaMessage &, CUpnpServiceInfo &)
voidRemoveActionsL(CUpnpDevice *)
voidRemoveFromSubscribedList(CUpnpServiceInfo *)
voidRemoveRootDeviceLD(CUpnpDevice *)
voidRemoveServicesL(CUpnpDevice *)
voidResubscribeL(CUpnpServiceInfo &)
voidSendErrorResponseL(CUpnpHttpMessage *, THttpStatusCode)
voidSendResponseMessageLD(CUpnpHttpMessage *)
THttpStatusCode ValidateEventResolveHttpResponseCode(CUpnpGenaMessage &)
Inherited Functions
CBase::CBase()
CBase::Delete(CBase *)
CBase::Extension_(TUint,TAny *&,TAny *)
CBase::operator new(TUint)
CBase::operator new(TUint,TAny *)
CBase::operator new(TUint,TLeave)
CBase::operator new(TUint,TLeave,TUint)
CBase::operator new(TUint,TUint)
CBase::~CBase()
Public Member Enumerations
enumTFilteringMode { EBoth, ERada, EControlPoint }
Public Attributes
const TIntKDefaultSubscriptionTimeout
Private Attributes
RPointerArray< CUpnpAction >iActionList
CUpnpCpbCurrentHttpClient *iCpbHttpClient
CUpnpCpbDescriptionAgent *iDescriptionAgent
CUpnpCpbDeviceRepository *iDeviceRepository
CUpnpCpbDiscoveryAgent *iDiscoveryAgent
CUpnpCpbInitialEventRetryHandler *iInitialEventRetry
CUpnpConnectionManagerNetworkEventProvider *iNetworkEventProvider
MUpnpCpHttpRequestor *constiPredefinedHttpRequestor
MUpnpCpStackRequestor *constiPredefinedStackRequestor
CUpnpContentHandlersController *iSaxController
RPointerArray< CUpnpServiceInfo >iSubscribedServicesInfos
CDesC8ArrayFlat *iTargetDeviceTypes

Constructor & Destructor Documentation

CUpnpControlPoint()

IMPORT_CCUpnpControlPoint()[protected]

Basic constructor function. Should be called in the constructor of the deriving class.

CUpnpControlPoint(MUpnpCpStackRequestor &, MUpnpCpHttpRequestor &)

IMPORT_CCUpnpControlPoint(MUpnpCpStackRequestor &aStackRequestor,
MUpnpCpHttpRequestor &aHttpRequestor
)[protected]

For internal, automated test cases use only.

Parameters

MUpnpCpStackRequestor & aStackRequestor
MUpnpCpHttpRequestor & aHttpRequestor

~CUpnpControlPoint()

IMPORT_C~CUpnpControlPoint()[virtual]

Virtual destructor function.

Member Functions Documentation

ActionMessage(CUpnpHttpMessage *)

voidActionMessage(CUpnpHttpMessage *aHttpMessage)[private]
ActionMessage
Since
Series60 3.1

Parameters

CUpnpHttpMessage * aHttpMessage

ActionResponseReceived(CUpnpAction *)

voidActionResponseReceived(CUpnpAction *aAction)
Non-leaving caller of callback function for action responses.
Since
Series60 3.2
CUpnpControlPoint::ActionResponseReceivedL

Parameters

CUpnpAction * aAction

ActionResponseReceivedL(CUpnpAction *)

voidActionResponseReceivedL(CUpnpAction *aAction)[pure virtual]
Callback function for action responses. This function is called
Since
Series60 2.6

Parameters

CUpnpAction * aAction

AddressChangedL()

voidAddressChangedL()

This function will be invoke if IP Address of UPnP changes

AllDevicesExpired(CUpnpDevice *)

TBool AllDevicesExpired(CUpnpDevice *aDevice)
Checks if all device in tree expired
Since
Series60 3.2

Parameters

CUpnpDevice * aDevice

CheckEventKey(const TDesC8 &, TUint32)

TInt CheckEventKey(const TDesC8 &aIncomingSeq,
TUint32aExistingSeq
)[private]
CheckEventKey
Since
Series60 3.2

Parameters

const TDesC8 & aIncomingSeqincoming event key in notify message
TUint32 aExistingSeqexisting event key

ConstructL(const CDesC8Array &)

IMPORT_C voidConstructL(const CDesC8Array &aTargetDeviceTypes)[protected]
One of the two ConstructL functions of CUpnpControlPoint has to be called in the ConstructL (or corresponding) function of the deriving class. Sets essential variables and the target device types. Examples of target device types:
  • AV control point: MediaServer:1, MediaRenderer:1

  • Lighting control point: SaunaLight:1, CandleLight:1 (an imaginary example)

Since
Series60 2.6

Parameters

const CDesC8Array & aTargetDeviceTypesA descriptor array containing the target device types in separate descriptors.

ConstructL(const TDesC8 &)

IMPORT_C voidConstructL(const TDesC8 &aTargetDeviceType)[protected]
One of the two ConstructL functions of CUpnpControlPoint has to be called in the ConstructL (or corresponding) function of the deriving class. Sets essential variables and the target device types. Examples of target device types:
  • Printer control point: Printer:1

  • Cooking control point: RobotCook:1 (an imaginary example)

Since
Series60 2.6

Parameters

const TDesC8 & aTargetDeviceTypeA descriptor containing the target device type

CreateSubscriptionMessageL(CUpnpService &, const TDesC8 &, TInt, THTTPMsgType)

CUpnpGenaMessage *CreateSubscriptionMessageL(CUpnpService &aService,
const TDesC8 &aPath,
TIntaTimeout,
THTTPMsgTypeaType
)

This function creates Gena subscription message, which will be used for data retrieval.

Parameters

CUpnpService & aService
const TDesC8 & aPath
TInt aTimeout
THTTPMsgType aType

Device(const TDesC8 &)

IMPORT_C const CUpnpDevice *Device(const TDesC8 &aUuid)
Device getter.
Since
Series 60 2.6

Parameters

const TDesC8 & aUuidA Universal Unique Identifier of device.

DeviceDisappeared(CUpnpDevice *)

voidDeviceDisappeared(CUpnpDevice *aDevice)
Non-leaving caller of callback function for device disappearance.
Since
Series60 3.2
CUpnpControlPoint::DeviceDisappearedL

Parameters

CUpnpDevice * aDevice

DeviceDisappearedL(CUpnpDevice *)

voidDeviceDisappearedL(CUpnpDevice *aDevice)[pure virtual]

Callback function for device disappearance. This function is called once for every device that has disappeared.

Notice that before this, the device is removed from the generic control point
Since
Series60 2.6

Parameters

CUpnpDevice * aDeviceThe disappeared device.

DeviceDiscovered(CUpnpDevice *)

voidDeviceDiscovered(CUpnpDevice *aDevice)
Non-leaving caller of callback function for device discovery.
Since
Series60 3.2
CUpnpControlPoint::DeviceDiscoveredL

Parameters

CUpnpDevice * aDevice

DeviceDiscoveredL(CUpnpDevice *)

voidDeviceDiscoveredL(CUpnpDevice *aDevice)[pure virtual]
Callback function for device discovery. This function is called once for every device. The device is already then in the device list accessible through DeviceList() function.
Since
Series60 2.6

Parameters

CUpnpDevice * aDeviceThe newly discovered device.

DeviceFoundL(CUpnpDevice &)

IMPORT_C voidDeviceFoundL(CUpnpDevice &aDevice)
For internal use; called by CUpnpDispatcher.
Since
Series60 2.6

Parameters

CUpnpDevice & aDeviceThe target service.

DeviceList()

IMPORT_C const RPointerArray< CUpnpDevice > &DeviceList()const

Returns the device list maintained by CUpnpControlPoint. Only target type devices are added to this list. (Recall: target types are defined in ConstructL(...) function of CUpnpControlPoint.

While discovering devices, the DeviceDiscovered(...) function is called once for every device after the device has been added to this list.

DeviceLostL(CUpnpDevice &)

IMPORT_C voidDeviceLostL(CUpnpDevice &aDevice)
For internal use; called by CUpnpDispatcher.
Since
Series60 2.6

Parameters

CUpnpDevice & aDeviceThe target service.

DisableRadaDeviceL()

IMPORT_C voidDisableRadaDeviceL()

Stops rada device synchronusly sience Series60 5.0

EnableRadaDeviceL(TRequestStatus &)

IMPORT_C voidEnableRadaDeviceL(TRequestStatus &aStatus)

Starts rada device asynchronusly sience Series60 5.0

Parameters

TRequestStatus & aStatusasychronus object to completes the request

EnableRadaDeviceL()

IMPORT_C TIntEnableRadaDeviceL()

Starts rada device synchronusly sience Series60 5.0

FindServiceInfoByGenaMessage(CUpnpGenaMessage *)

CUpnpServiceInfo *FindServiceInfoByGenaMessage(CUpnpGenaMessage *aGenaMsg)[private]

FindServiceInfoByGenaMessage

Parameters

CUpnpGenaMessage * aGenaMsg

FindServiceInfoByService(CUpnpService *)

CUpnpServiceInfo *FindServiceInfoByService(CUpnpService *aService)[private]

FindServiceInfoByService

Parameters

CUpnpService * aService

FindServiceInfoBySid(RPointerArray< CUpnpServiceInfo > &, const TDesC8 &)

CUpnpServiceInfo *FindServiceInfoBySid(RPointerArray< CUpnpServiceInfo > &aInfos,
const TDesC8 &aSid
)[private]

Parameters

RPointerArray< CUpnpServiceInfo > & aInfos
const TDesC8 & aSid

GiveAddressL(const TDesC8 &)

TInetAddr GiveAddressL(const TDesC8 &aUrl)
Gets address from Url
Since
Series60 3.2

Parameters

const TDesC8 & aUrl

HandlePostponedInitialEventL(CUpnpGenaMessage &)

voidHandlePostponedInitialEventL(CUpnpGenaMessage &aGenaMsg)

Provides handling for postponed initial event that comes before subscription transaction has been completed

Parameters

CUpnpGenaMessage & aGenaMsg

HttpResponseReceived(CUpnpHttpMessage *)

voidHttpResponseReceived(CUpnpHttpMessage *aMessage)
Non-leaving caller of callback function for HTTP responses.
Since
Series60 3.2
CUpnpControlPoint::HttpResponseReceivedL

Parameters

CUpnpHttpMessage * aMessage

HttpResponseReceivedL(CUpnpHttpMessage *)

voidHttpResponseReceivedL(CUpnpHttpMessage *aMessage)[pure virtual]
Callback function for HTTP responses
Since
Series60 2.6

Parameters

CUpnpHttpMessage * aMessage

MapHttpError(TInt)

TInt MapHttpError(TIntaError)[private]
MapHttpError
Since
Series60 3.2

Parameters

TInt aError

MessageReceived(CUpnpHttpMessage *)

voidMessageReceived(CUpnpHttpMessage *aHttpMessage)
For internal use.
Since
Series60 2.6

Parameters

CUpnpHttpMessage * aHttpMessage

NetworkEvent(CUpnpNetworkEventBase *)

IMPORT_C voidNetworkEvent(CUpnpNetworkEventBase *aEvent)

It is called from bottom layer when network event occurs [callback method] sience Series60 5.0

Parameters

CUpnpNetworkEventBase * aEvent

NotifyReceivedL(CUpnpHttpMessage &)

voidNotifyReceivedL(CUpnpHttpMessage &aHttpMessage)
NotifyReceivedL
Since
Series60 2.6

Parameters

CUpnpHttpMessage & aHttpMessage

ParseEventUpdateStateVariablesL(CUpnpGenaMessage &, CUpnpServiceInfo &)

voidParseEventUpdateStateVariablesL(CUpnpGenaMessage &aGenaMsg,
CUpnpServiceInfo &aInfo
)[private]

Parameters

CUpnpGenaMessage & aGenaMsg
CUpnpServiceInfo & aInfo

Path()

IMPORT_C const TDesC8 &Path()
For internal use; called by CUpnpDispatcher.
Since
Series60 2.6

ProcessActionMessageL(CUpnpHttpMessage *)

voidProcessActionMessageL(CUpnpHttpMessage *aHttpMessage)
ProcessActionMessageL
Since
Series60 3.2

Parameters

CUpnpHttpMessage * aHttpMessage

ProcessDeviceMessageL(CUpnpHttpMessage *)

voidProcessDeviceMessageL(CUpnpHttpMessage *aHttpMessage)
ProcessDeviceMessageL
Since
Series60 5.0

Parameters

CUpnpHttpMessage * aHttpMessage

ProcessServiceMessageL(CUpnpHttpMessage *)

voidProcessServiceMessageL(CUpnpHttpMessage *aHttpMessage)
ProcessServiceMessageL
Since
Series60 5.0

Parameters

CUpnpHttpMessage * aHttpMessage

RemoveActionsL(CUpnpDevice *)

voidRemoveActionsL(CUpnpDevice *aDevice)[private]
RemoveActionsL
Since
Series60 3.2

Parameters

CUpnpDevice * aDevice

RemoveFromSubscribedList(CUpnpServiceInfo *)

voidRemoveFromSubscribedList(CUpnpServiceInfo *aServiceInfoToRemove)[private]

RemoveFromSubscribedListD

Parameters

CUpnpServiceInfo * aServiceInfoToRemoveservice info that will be removed from subscribed list

RemoveRootDeviceLD(CUpnpDevice *)

voidRemoveRootDeviceLD(CUpnpDevice *aDevice)[private]
Removes root device from device repository, and deletes passed object
Since
Series60 3.2

Parameters

CUpnpDevice * aDevice

RemoveServicesL(CUpnpDevice *)

voidRemoveServicesL(CUpnpDevice *aDevice)[private]
RemoveServicesL
Since
Series60 3.2

Parameters

CUpnpDevice * aDevice

ResubscribeL(CUpnpServiceInfo *)

voidResubscribeL(CUpnpServiceInfo *aServiceInfo)

Resubscribes to a service.

Parameters

CUpnpServiceInfo * aServiceInfoThe target, already subscribed service info

ResubscribeL(CUpnpServiceInfo &)

voidResubscribeL(CUpnpServiceInfo &aInfo)[private]

Parameters

CUpnpServiceInfo & aInfo

SearchL(const TDesC8 &)

IMPORT_C voidSearchL(const TDesC8 &aSearchString)
Make a SSDP search. Search string should be some of these strings (defined in UPnP Device Architecture):
  • urn:schemas-upnp-org:device:deviceType:v, where deviceType:v should be replaced by target device type and version. Search for devices of specific type.

  • urn:schemas-upnp-org:service:serviceType:v, where serviceType:v should be replaced by target service type and version. Search for services of specific type.

  • upnp:rootdevice Search for root devices.

  • ssdp:all Search for any devices or services

Since
Series60 2.6

Parameters

const TDesC8 & aSearchStringThe search target.

SendErrorResponseL(CUpnpHttpMessage *, THttpStatusCode)

voidSendErrorResponseL(CUpnpHttpMessage *aHttpMessage,
THttpStatusCodeaCode
)[private]
Send a proper error basing on httpmsg
Since
Series60 2.6

Parameters

CUpnpHttpMessage * aHttpMessagehttp message
THttpStatusCode aCodeerror code

SendL(CUpnpAction *)

IMPORT_C voidSendL(CUpnpAction *aAction)

Sends an action. This action can be instantiated using CUpnpService::CreateActionLC() function. Target addresses and some other necessary information are added in the action during construction. After instantiation of the action, set the arguments using e.g. CUpnpAction::SetArgument() function. After this, you are ready to call this function. After the target service has reacted to the action, it will send a response. This response is forwarded to ActionResponseReceived function.

The user of this function has the responsibility to delete the CUpnpAction instance.
Since
Series60 2.6

Parameters

CUpnpAction * aActionThe action to be sent.

SendL(CUpnpHttpMessage *)

IMPORT_C voidSendL(CUpnpHttpMessage *aMessage)

Sends a HTTP message. This HTTP message can be instantiated in many ways; it's recommended to use RUpnpHttpMessageFactory class. When the response to this request has been receiveid, the HttpResponseReceived() virtual function is called.

Notice that the user of this function has the responsibility to delete the CUpnpHttpMessage instance.
Since
Series60 2.6

Parameters

CUpnpHttpMessage * aMessageThe message to be sent.

SendResponseMessageLD(CUpnpHttpMessage *)

voidSendResponseMessageLD(CUpnpHttpMessage *aResponse)[private]

Sends a HTTP message that is response and destroy it. Leave safe.

Parameters

CUpnpHttpMessage * aResponse

StartIPFilteringL(TFilteringMode)

IMPORT_C voidStartIPFilteringL(TFilteringModeaMode = EBoth)

Parameters

TFilteringMode aMode = EBoth

StateUpdated(CUpnpService *)

voidStateUpdated(CUpnpService *aService)
Non-leaving caller of callback function for eventing.
Since
Series60 3.2
CUpnpControlPoint::StateUpdatedL

Parameters

CUpnpService * aService

StateUpdatedL(CUpnpService *)

voidStateUpdatedL(CUpnpService *aService)[pure virtual]

Callback function for eventing. This function is called when a) before this, we have made a subscription to the service b) at least one of the evented state variables of the service has changed

Note that you cannot see which of the evented state variables has changed. Fortunately, there are not many evented state variables.
Since
Series60 2.6

Parameters

CUpnpService * aServiceAt least one of the evented state variables of this service has changed. CUpnpControlPoint class owns the CUpnpService instance; do not delete it after inspection!

StopIPFilteringL(TFilteringMode)

IMPORT_C voidStopIPFilteringL(TFilteringModeaMode = EBoth)

Parameters

TFilteringMode aMode = EBoth

SubscribeL(CUpnpService *)

IMPORT_C voidSubscribeL(CUpnpService *aService)

Subscribes to a service. This starts the eventing to this control point done by the target service. Practically, the StateUpdated virtual function is called when an event is received.

It's necessary to subscribe to a service when the service is used by this control point.

See service definitions to see the list of the evented state variables; not every state variable is evented.

It's not needed to maintain a separate list of subscribed services in the deriving class. Control point manages a such list. If the target service is already evented, this function does nothing.
Since
Series60 2.6

Parameters

CUpnpService * aServiceThe target service.

SubscriptionResponseReceivedL(CUpnpHttpMessage &)

voidSubscriptionResponseReceivedL(CUpnpHttpMessage &aHttpMessage)
SubscriptionResponseReceivedL
Since
Series60 2.6

Parameters

CUpnpHttpMessage & aHttpMessage

UnSubscriptionResponseReceived()

voidUnSubscriptionResponseReceived()
UnSubscriptionResponseReceived
Since
Series60 3.2

UnsubscribeL(const CUpnpService *)

IMPORT_C voidUnsubscribeL(const CUpnpService *aService)
Removes the subscription of the target services. Practically, eventing from target service is stopped
Since
Series60 2.6

Parameters

const CUpnpService * aServiceThe target service.

UnsubscribeL(CUpnpService *, TBool)

voidUnsubscribeL(CUpnpService *aService,
TBoolaSendUnsubscribeMessage
)
Removes the subscription of the target services. Practically, eventing from target service is stopped
Since
Series60 2.6

Parameters

CUpnpService * aServiceThe target service.
TBool aSendUnsubscribeMessageETrue if unsubscription message is sent to remote host. Otherwise EFalse ( only remove service ).

ValidateEventResolveHttpResponseCode(CUpnpGenaMessage &)

THttpStatusCode ValidateEventResolveHttpResponseCode(CUpnpGenaMessage &aGenaMsg)[private]

Parameters

CUpnpGenaMessage & aGenaMsg

Member Enumerations Documentation

Enum TFilteringMode

Enumerators

EBoth
ERada
EControlPoint

Member Data Documentation

const TInt KDefaultSubscriptionTimeout

const TIntKDefaultSubscriptionTimeout[static]

RPointerArray< CUpnpAction > iActionList

RPointerArray< CUpnpAction >iActionList[private]

CUpnpCpbCurrentHttpClient * iCpbHttpClient

CUpnpCpbCurrentHttpClient *iCpbHttpClient[private]

CUpnpCpbDescriptionAgent * iDescriptionAgent

CUpnpCpbDescriptionAgent *iDescriptionAgent[private]

CUpnpCpbDeviceRepository * iDeviceRepository

CUpnpCpbDeviceRepository *iDeviceRepository[private]

CUpnpCpbDiscoveryAgent * iDiscoveryAgent

CUpnpCpbDiscoveryAgent *iDiscoveryAgent[private]

CUpnpCpbInitialEventRetryHandler * iInitialEventRetry

CUpnpCpbInitialEventRetryHandler *iInitialEventRetry[private]

CUpnpConnectionManagerNetworkEventProvider * iNetworkEventProvider

CUpnpConnectionManagerNetworkEventProvider *iNetworkEventProvider[private]

MUpnpCpHttpRequestor *const iPredefinedHttpRequestor

MUpnpCpHttpRequestor *constiPredefinedHttpRequestor[private]

MUpnpCpStackRequestor *const iPredefinedStackRequestor

MUpnpCpStackRequestor *constiPredefinedStackRequestor[private]

CUpnpContentHandlersController * iSaxController

CUpnpContentHandlersController *iSaxController[private]

RPointerArray< CUpnpServiceInfo > iSubscribedServicesInfos

RPointerArray< CUpnpServiceInfo >iSubscribedServicesInfos[private]

CDesC8ArrayFlat * iTargetDeviceTypes

CDesC8ArrayFlat *iTargetDeviceTypes[private]