williamr@2: // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef PANPROG_H williamr@2: #define PANPROG_H williamr@2: williamr@2: #include williamr@2: williamr@2: /** williamr@2: @file williamr@2: @note Constant definitions for clients using PAN agent. williamr@2: Includes constants for controlling the state of the PAN network williamr@2: */ williamr@2: williamr@2: /** williamr@2: Base value for constants for use with Control() call williamr@2: @publishedPartner williamr@2: @released williamr@2: @see RConnection::Control williamr@2: @note KCO* values for use with PAN agent williamr@2: */ williamr@2: const TInt KCOAgentPanBase = 0x1000; williamr@2: williamr@2: williamr@2: /** williamr@2: @publishedPartner williamr@2: @released williamr@2: @see RConnection::Control williamr@2: williamr@2: Bring a new device into the PAN network. The Control() call will complete as williamr@2: soon as the PAN agent has started the process, so it may be several seconds williamr@2: before the device is addressable. It is also possible for the connection williamr@2: attempt to fail even if the Control() method returns KErrNone, due to the williamr@2: actual processing occuring asynchronously. williamr@2: williamr@2: @code williamr@2: RConnection connection; williamr@2: TBTDevAddr remoteDeviceToAdd; williamr@2: ... williamr@2: williamr@2: ... williamr@2: TPtr8 ptr = remoteDeviceToAdd.Des(); williamr@2: User::LeaveIfError(connection.Control(KCOLAgent, KCOAgentPanConnectDevice, ptr)); williamr@2: @endcode williamr@2: williamr@2: The use of a temporary TPtr is safe, as the Control method is synchronous. williamr@2: williamr@2: @note KCO* value for use with PAN agent williamr@2: */ williamr@2: const TInt KCOAgentPanConnectDevice = KCOAgentPanBase | KConnReadUserDataBit; williamr@2: williamr@2: williamr@2: /** williamr@2: @publishedPartner williamr@2: @released williamr@2: @see RConnection::Control williamr@2: williamr@2: Attempt to remove a connected device from the PAN network. williamr@2: williamr@2: @code williamr@2: RConnection connection; williamr@2: TBTDevAddr remoteDeviceToRemove; williamr@2: ... williamr@2: williamr@2: ... williamr@2: TPtr8 ptr = remoteDeviceToRemove.Des(); williamr@2: User::LeaveIfError(connection.Control(KCOLAgent, KCOAgentPanDisconnectDevice, ptr)); williamr@2: @endcode williamr@2: williamr@2: The use of a temporary TPtr is safe, as the Control method is synchronous. williamr@2: williamr@2: @note KCO* value for use with PAN agent williamr@2: */ williamr@2: const TInt KCOAgentPanDisconnectDevice = KCOAgentPanBase + 1 | KConnReadUserDataBit; williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @publishedPartner williamr@2: @released williamr@2: @see RConnection::Control williamr@2: williamr@2: Return a list of connected devices. If the buffer supplied is too small to williamr@2: hold all of the device addresses, as many as will fit will be returned. The williamr@2: descriptor length will be adjusted to reflect the total connected device count. williamr@2: williamr@2: @note Devices which are still in the process of connecting to the PAN network williamr@2: will not be included. williamr@2: williamr@2: @code williamr@2: RConnection connection; williamr@2: ... williamr@2: williamr@2: ... williamr@2: TBuf8<7 * sizeof(TBTDevAddr)> buffer; williamr@2: User::LeaveIfError(connection.Control(KCOLAgent, KCOAgentPanEnumerateDevices, buffer)); williamr@2: williamr@2: // For a c-style array: williamr@2: TInt connectedDevices = buffer.Length() / sizeof(TBTDevAddr); williamr@2: const TBTDevAddr* devices = reinterpret_cast(buffer.Ptr()); williamr@2: const TBTDevAddr device2 = devices[2]; williamr@2: williamr@2: // Or to iterate through the list: williamr@2: TInt start = 0; williamr@2: while (start < buffer.Length()) williamr@2: { williamr@2: const TBTDevAddr* thisDevice = reinterpret_cast(buffer.Ptr() + start); williamr@2: start += sizeof(TBTDevAddr); williamr@2: } williamr@2: @endcode williamr@2: williamr@2: @note KCO* value for use with PAN agent williamr@2: */ williamr@2: const TInt KCOAgentPanEnumerateDevices = KCOAgentPanBase + 2 | KConnWriteUserDataBit; williamr@2: williamr@2: enum TPANAgentProgress williamr@2: /** williamr@2: PAN agent progress values williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: EPanAgtInitialising = KMinAgtProgress, williamr@2: EPanAgtConnected = KConnectionOpen, ///< Agent is up and running williamr@2: EPanAgtIdle, ///< Agent is idle williamr@2: EPanAgtListening, ///< Listening for incoming connections williamr@2: EPanAgtURole, ///< In U role williamr@2: EPanAgtGnRole, ///< In GN role williamr@2: EPanAgtNapRole, ///< In NAP role williamr@2: EPanAgtConnectedNewDevice, ///< A device has connected williamr@2: EPanAgtDisconnectedDevice, ///< A device has disconnected williamr@2: EPanAgtReconfiguringPiconet, ///< Role change is in progress williamr@2: EPanAgtUplinkRequired, ///< A connection authorised to use the uplink exists williamr@2: EPanAgtUplinkNotRequired, ///< A connection authorised to use the uplink does not exists williamr@2: EPanAgtDisconnecting = KConnectionStartingClose, williamr@2: EPanAgtDisconnected = KConnectionClosed williamr@2: }; williamr@2: williamr@2: enum TPanNapNetworkType williamr@2: /** williamr@2: Type of network provided by the NAP gateway williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: EPstn = 0x0000, williamr@2: EIsdn = 0x0001, williamr@2: EDsl = 0x0002, williamr@2: ECableModem = 0x0003, williamr@2: E10MbEthernet = 0x0004, williamr@2: E100MbEthernet = 0x0005, williamr@2: E4MbTokenRing = 0x0006, williamr@2: E16MbTokenRing = 0x0007, williamr@2: E100MbTokenRing = 0x0008, williamr@2: EFddi = 0x0009, williamr@2: EGsm = 0x000A, williamr@2: ECdma = 0x000B, williamr@2: EGprs = 0x000C, williamr@2: E3GCellular = 0x000D, williamr@2: EOther = 0xFFFE williamr@2: }; williamr@2: williamr@2: #endif // PANPROG_H