diff -r 000000000000 -r 29b1cd4cb562 bluetooth/btstack/avctp/avctputils.h --- /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 +