--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetooth/btstack/avctp/avctputils.h Fri Jan 15 08:13:17 2010 +0200
@@ -0,0 +1,201 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Utility functions for AVCTP
+//
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef AVCTPUTILS_H
+#define AVCTPUTILS_H
+
+
+/*
+@internalTechnology
+*/
+namespace SymbianAvctp
+{
+
+_LIT(KAvctpPanicName, "AvctpPrtPanic");
+
+/**
+AVCTP panic codes
+*/
+enum TPanic
+ {
+ /** ESock has done something unexpected */
+ EUnexpectedEsockEvent = 0,
+ /** Unable to set remote address on lower protocol */
+ EErrorSettingAddress = 1,
+ /** We don't support (dis)connection data */
+ EDisconnectDataNotSupported = 2,
+ /** We don't support the graceful close of the lower protocol Sap */
+ ELowerProtocolSapCanClose = 3,
+ /** We don't support Active Open calls since AVCTP is connectionless*/
+ EActiveOpenNotSupported = 4,
+ /** We don't support Passive Open calls since AVCTP is connectionless*/
+ EPassiveOpenNotSupported = 5,
+ /** The protocol hasn't been bound to a lower protocol */
+ ENotBound = 6,
+ /** Unknown packet type */
+ EUnknownPacketType = 7,
+ /** The idle timer has expired but we're not idle */
+ EIdleTimeoutWhenNotIdle = 8,
+ /** The lower protocol SAP's remote address and the passed address don't match */
+ EMismatchedAddressAndSap = 9,
+ /** There must be at least one data client pending a join in the join async callback */
+ EDataClientsPendingJoinWasZero = 10,
+ /** We've unexpectedly found a null TPid */
+ ENullPid = 11,
+ /** We've unexpectedly found a null TBTDevAddr */
+ ENullTBTDevAddr = 12,
+ /** We've should've had a null TBTDevAddr at this point*/
+ ETBTDevAddrNotNull = 13,
+ /** L2CAP shouldn't have given us an error */
+ EUnexpectedErrorFromL2CAP = 14,
+ /** We're expecting a Lower Protocol SAP we could use at this point*/
+ ENullLowerProtocolSap = 15,
+ /** Expected a usable Muxer at this point */
+ ENullMuxer = 15,
+ /** Unexpected Muxer Event*/
+ EUnexpectedMuxerEvent = 16,
+ /** The muxer shouldn't have any data clients ! */
+ EMuxerHasADataClient = 17,
+ /** A sap is being asked to bind to a Pid when it's already bound to one */
+ ESapAlreadyBound = 18,
+ /** A muxer is being asked to bind to a remote address when it's already bound to one */
+ EMuxerAlreadyBound = 19,
+ /** A sap Link Manager is being asked to bind to a Pid when it's already bound to one */
+ ESapLinksMgrAlreadyBound = 20,
+ /** No data clients are allowed on a CAvctpTransport */
+ EUnexpectedDataClient = 21,
+ /** When the Control EConnectRspAccept is called on the SapLinksMgr,
+ the muxer that is addressed by the Control must be Connected */
+ EMuxerNotConnected = 22,
+ /** We should've had a muxer at this point */
+ EMuxerNotFound = 23,
+ /** We've received an unexpected Avctp Sub Conn Event*/
+ EUnexpectedAvctpSubConnEvent = 24,
+ /** The protocol has received a badly formed message in control plane*/
+ EProtocolReceivingBadlyFormedControlMessage = 25,
+ /** The protocol has received a message from a protocol it was not expecting*/
+ EProtocolReceivingControlFromUnexpectedProtocol = 26,
+ /** A Muxer isn't clear to send when it should be */
+ EMuxerBlocked = 27,
+ /** We expected to have a proper packet */
+ ENullPacket = 28,
+ /** Avctp is connectionless so a valid sockAddr must be supplied to the Sap */
+ ENullSockAddr = 29,
+ /** We expected a usable Avctp Packet Manager at this point */
+ ENullPacketMgr = 30,
+ /** We expected a null packet mgr pointer */
+ ENonNullPacketMgr = 31,
+ /** We've some how ended up with the wrong BT address */
+ EWrongBTAddress = 32,
+ /** The muxer must be blocked if the packet manager has is still working on a
+ partial packet when a sap wants to write to it*/
+ EMuxerNotBlocked = 33,
+ /** A packet is in the wrong state */
+ EInvalidPacketState = 34,
+ /** The Q Count doesn't match what we thought it was */
+ EOutboundQCountIncorrect = 35,
+ /** Avctp doesn't support Ioctls */
+ EIoctlsNotSupported = 36,
+ /** Avctp doesn't support parameters being set on it's subconnections */
+ EParameterSettingNotSupported = 37,
+ /** Someone has tried to get a non Mtu Option */
+ ENonMtuOption = 38,
+ /** Stub Panic for exported Avctp functions */
+ EAvctpStubUsedInANonAvBuild = 39,
+ /** We expected to find a SapLinksMgr */
+ ESapLinksMgrNotFound = 40,
+ /** No events for this address */
+ EMuxEventsNotFound = 41,
+ /** DeliverEvent has been called, but there is no request from the client outstanding
+ so this event would be dropped by ESock */
+ EAttemptToDeliverEventWithNoNotificationOutstanding = 42,
+ EUnexpectedErrorCode = 43,
+ /**
+ An unexpected comms-framework message has been received by a node
+ This panic code should never happen
+ */
+ EUnexpectedMessage = 43,
+
+ /**
+ An attempt was made to use an RNodeInterface who's communication channel was closed
+ This panic code should never happen
+ */
+ ENodeInterfaceUnusable = 44,
+ EAvctpMuxerStateOutOfBounds = 45,
+ EAvctpTransportNotFound = 46,
+ EAvctpInvalidChannelNotify = 47,
+ EAvctpInvalidChannel = 48,
+ EAvctpUnexpectedIoctlCompletion = 49,
+ EUnexpectedIdleMuxer = 50,
+ ENewDataNotSupported = 51,
+ EAvctpClientNotFound = 52,
+ EAvctpInvalidAddress = 53,
+ /** SetOption called on an CServProviderBase returned an error*/
+ ESetOptionError = 54,
+ EGetOptionError = 55,
+ EAvctpInvalidFragmenterState = 56,
+ EAvctpEmptyIndicationQueue = 57,
+ EAvctpInvalidSecChannelRefCount = 58,
+ ESetRemNameError = 59,
+ EAvctpFragmenterNonEmptyPdu = 60,
+ EAvctpFragmenterEmptyPdu = 61,
+ EAvctpFragmenterInvalidHeaderType = 62,
+ EAvctpControlSAPOpetationNotSupported = 63,
+ EAvctpDataSAPNullSocket = 64,
+ EAvctpRMBufChainSplitError = 65,
+ EAvctpInvalidChannelIoctl = 66,
+ EAvctpSapClosed = 67,
+ ENullAvctpProtocol = 68,
+ };
+
+/**
+Panics raised by state machine default behaviour are multiplied by this
+factor. The less signifigant digits are then available to carry a state
+index, allowing more information when fixing defects.
+
+For example, a bad event passed to the Avctp muxer state machine may raise
+panic 'AvctpPrtPanic 161001' if it occurs in the 'Link Pending' state.
+*/
+const TInt KStatePanicMultiplier = 10000;
+
+/**
+A delimiter to prevent a panic code of 0 creating ambigious panics.
+Without this panic code 0 in state 8 and panic code 8 (not in the state
+machine) would be identical.
+*/
+const TInt KStatePanicDelimiter = 1000; // '1' is the delimiter
+
+/**
+If for any reason the current state cannot be found, this value is placed
+in the state field of a panic.
+*/
+const TInt KUnknownState = KStatePanicDelimiter - 1;
+
+const TInt KBTAddressLength = 12; // used to allocate a TBuf<> needed to get the readable BTDevAddress
+void Panic(TPanic aPanic);
+
+void Panic(TPanic aPanic, TInt aState);
+
+} // end of namespace SymbianAvctp
+
+#endif // AVCTPUTILS_H
+