diff -r 000000000000 -r 29b1cd4cb562 bluetooth/btstack/linkmgr/linkutil.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bluetooth/btstack/linkmgr/linkutil.h Fri Jan 15 08:13:17 2010 +0200 @@ -0,0 +1,224 @@ +// Copyright (c) 2000-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: +// + +#ifndef LINKUTIL_H +#define LINKUTIL_H + +_LIT(KLinkPanicName, "LinkMgr Panic"); + +enum TLinkPanic + { + ELinkEntryNotFound =0, + ELinkMgrPacketMTUUseBeforeSet =1, + EHCIBufferMgrBadState =2, + EHostResolverTwoRequests =3, + ELinkMgrFIFOLevelZeroOrBelowZero =4, + EHCICommandCreditsAreZero =5, + EHCICommandCouldNotBeCommited =6, + EHCIACLDataControllerDataCreditsZeroBeforeIssue =7, + EHCIACLDataControllerConnectionCouldNotBeFound =8, + EHCIACLDataControllerDataCreditsNotConsistentAfterReset =9, + EHCIACLDataControllerDroppedConnectionCouldNotBeFound =10, + EHCIACLDataControllerMaxAllowedDataCreditsExceeded =11, + EHCIACLDataControllerConnectionListConnectionNotFound =12, + EHCIACLDataControllerFlushCompleteError =13, + ELinkMgrFIFOLevelAboveCeiling =14, + EHCIFIFOLevelBelowZero =15, + ELinkMgrNoSuchFlowControlMode =16, + ELinkMgrNoFlowControlSetInReleaseBuild =17, + ELinkMgrDataQBufferIsNotSufficient =18, + ELinkMgrClientHasOutstandingQueueObject =19, + ELinkMgrBadFlowControlSetInReleaseBuild =20, + ELinkMgrOverflowedHostController =21, + ELinkMgrBadSCOState =22, + EBTConnectionUnknownLowPowerMode =23, + EBTLinkMgrConnectionEventInWrongSAP =24, + ELinkMgrBadBasebandArray =25, + ELinkMgrBadDeviceChangeArray =26, + EBTLinkMgrBasebandModelInvalid =27, + EBTConnectionPINRequestedTwice =28, + EBTConnectionBadDeviceAddress =29, + EBTConnectionListenerUsingRegistry =30, + EBTBaseSAPUnimplementedEvent =31, + EBTProxySAPUnexpectedEvent =32, + EBTProxySAPBadCanClose =33, + EBTBasebandSAPTwoPhysicalLinks =34, + EBTACLSAPUnexpectedEvent =35, + EBTACLAlreadyBoundToPhysicalLink =36, + EBTACLLogicalLinkBadDebind =37, + EBTPHYWithoutACLLogicalLinkBound =38, + EBTSCOAlreadyBoundToPhysicalChannel =39, + EBTSCOLogicalLinkBadDebind =40, + EBTUnknownLogicalLink =41, + EBTConnectionMgrCountBelowZero =42, + EBTACLSAPUnsupportedQueSize =43, + EBTConnectionRequestWithNoListeners =44, + EBTConnectionMgrBadListener =45, + EBTACLSAPChildlessParent =46, + EBTACLSAPParentlessChild =47, + EBTACLSAPDataForWrongSAP =48, + EBTACLSAPNullSocket =49, + EBTACLSAPWrongPhysicalLink =50, + EBTSCOSAPWrongPhysicalLink =51, + EBTSCOSAPExistsWhenParking =52, + EBTSCOSAPChildlessParent =53, + EBTSCOSAPParentlessChild =54, + EBTSCOSAPDataForWrongSAP =55, + EBTSCOSAPNullSocket =56, + EBTSCOSAPMaxDataLengthExceeded =57, + EBTProxySAPCannotFindPhysicalLink =58, + EBTProxyUserAttemptingToTransmitL2CAPDirectData =59, + EBTProxySAPNotReadyToSendRawData =60, + EBTProxySAPNoRawConduit =61, + EBTProxySAPRawConduitAlreadyExists =62, + EBTProxySAPInvalidCreate =63, + EBTProxySAPInvalidIoctl =64, + EBTProxySAPInvalidEventMask =65, + EBTACLRawConduitError =66, + EBTACLSAPDidntAcceptInTime =67, + EBTACLSAPListenerSettingName =68, + EBTACLSAPCorruptInboundStore =69, + EBTSCOSAPUnexpectedEvent =70, + EBTSCOSAPWrongSCOSAP =71, + EBTProxySAPInvalidTerminate =72, + EBTProxySAPNullCallback =73, + EBTPhysicalLinkBadPort =74, + EBTBasebandSAPBadChild =75, + EBTACLSAPBadFlagsOnWrite =76, + EBTACLSAPNotSupportedFeature =77, + EBTBasebandModelBadRecord =78, + EBTACLSAPToldRoleSwitchWhenParked =79, + EBTACLSAPDoesNotSupportBroadcastL2CAP =80, + EBTACLSAPDoesNotSupportPiconetBroadcast =81, + EVendorSAPBadCall =82, + EVendorTwoIoctls =83, + EBTPhysicalLinksManagerConnectingToNullAddress =84, + ELinkMgrHostControllerHasOverflowedHost =85, + ELinkMgrCouldNotSendHostNumberOfCompletedPackets =86, + EBTPhysicalLinkNotAuthenticated =87, + EBTPhysicalLinksInvalidAddress =88, + EBTNonSyncConnectInSyncConnectFunc =89, + EHCIDirectAccessSAPBadCall =90, + EHCIDirectAccessTwoIoctls =91, + EHCIDirectAccessBadIoctlCompletion =92, + EHCIDirectAccessBadIoctlCancel =93, + EBTPhysicalLinkModeChangeErrorLeavingSniffMode =94, + EHCICommandNullItem =95, + EBTBasebandInvalidLinkState =96, + ERoleSwitcherInvalidState =97, + ERoleSwitcherStateMachineInvalidEvent =98, + ERoleSwitchersNotDeleted =99, + EBTACLSAPWriteDataItemWithNullFrame =100, + EAclSapChildStillPresentAtDestruction =101, + EPendingConnectionNotCleared =102, + EPairedBDAddrGetterUnexpectedState =103, + EBTPairingsCacheRemovalOfUnpairedDevice =104, + EBTPairingsCacheDuplicatePairingInCache =105, + EBTPairingsCacheBadState =106, + EPhysicalLinkNoConnectionPending =107, + EBTPairingsCacheNotEmpty =108, + EHostResolverBadHWState =109, + //Panic code values between 110 and 159 are reserved + //to distinguish older code. + //Please do not use these values in future upgrades. + EACLLinkStateOutOfBounds =160, + ESCOInboundPacketTooLarge =161, + EVendorSpecificCommandIncorrectSize =162, + EEncryptionEnforcerBadState =163, + EBTInvalidEncryptionDisableRequest =164, + EBTProxySAPAlreadySubscribed =165, + EBTProxySAPSubscribedToBroadcastHandle =166, + EVendorSAPBadIoctlCancel =167, + EDisconnectRequestedNotOnACLLink =168, + EInvalidLinkStateDuringDisconnect =169, + EHCIControllerInitialisation =170, + EHCIIncompleteInterfaces =171, + EHCIMultipleCoreHciImplementations =172, + EHCIUnknownDataEvent =173, + EHCIUnknownCommandEvent =174, + EHCIUnknownUnsolicitedEvent =175, + EHCIUnknownCommandCompleteOpcode =176, + EHCICmdQNotInitialising =177, + EHCICommandBadArgument =178, + EHCICtrlrInitFailedToRemoveCmd =179, + EHCICtrlrInitNoOutstandingCmds =180, + EHCICtrlrInitCmdNotFound =181, + EHCIUnknownHardResetState =182, + EHCIUnknownPowerState =183, + EBTPhysicalLinksInvalidArgument =184, + EHCIPowerStateError =185, + EIncorrectStateOnPreResetCallback =186, + EIncorrectStateOnPostResetCallback =187, + EBTNameLookupResultNotFound =188, + EBTInvalidInquiryMode =189, + EBTInvalidInquiryLogEntry =190, + EBTUnexpectedLinkKeyType =191, + EBTInvalidDataInPhysicalLinkMetric =192, + EBTHostControllerQueueNotEmpty =193, + EBTCommandQueueAlreadyExist =194, + EBTCommandQueueNotFound =195, + EBTUnexpectedIAC =196, + ETRegistryDevBeingModUnexpectedCompleted=197, + EDiscCtrlUnexpectedConnectionHandle =198, + EDiscCtrlUnmatchedCommandEvent =199, + EDiscCtrlUnexpectedCommandEvent =200, + EHCIUnmatchedInquiryEvent =201, + EBTInquiryMgrMismatchedStatusEvent =202, + EBTInquiryMgrUnmatchedEvent =203, + EBTPhysicalLinkPinHandlerStillPresent =204, + EBTPrefetchManagerReplyForNoRequest =205, + EHCIUnexpectedEvent =206, + EUnexpectedIOCapability =207, + EEIRPublisherUpdateNameTooLong =208, + EBTSSPModeChangedDuringConnection =209, + EHCICtrlrInitAddingInitialisationCommandInBadState =210, + EHCICtrlrInitOnlyOneResetCmdAllowed =211, + + //Please add new panic codes common to all versions of linkmgr here. + EVendorSAPBadVendorEvent =250, + EBTACLSAPIndeterminateInitiator =251, + EBTACLSAPUnexpectedSecurityResult =252, + }; + +/** +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 ACL state machine may raise panic +'Link Panic 351008' if it occurs in the 'Open' 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; + +void Panic(TLinkPanic aPanic); + +void Panic(TLinkPanic aPanic, TInt aState); + + + +#endif