--- a/localconnectivityservice/headset/inc/headset.h Thu Aug 19 10:46:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,523 +0,0 @@
-/*
-* Copyright (c) 2004-2010 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: Hid headset driver
- *
-*/
-
-
-#ifndef C_HIDHEADSETDRIVER_H
-#define C_HIDHEADSETDRIVER_H
-
-#include <e32std.h>
-#include <asclisession.h>
-#include <mpxplaybackutility.h>
-#include <mpxplaybackobserver.h>
-#include <mpxmessage.h>
-#include <hidinterfaces.h>
-#include <hidtranslate.h>
-#include "keypresstimer.h"
-
-class CField;
-class CHidHeadsetDriver;
-class CTelephony;
-
-/**
- * Scan status
- */
-enum TScanStatus
- {
- EScanNotPressed, EScanPressed, EScanLongPress
- };
-
-/**
- * HID headset driver class
- *
- * HidDriver interface for handlign headset related
- * functionality.
- *
- */
-
-class CHidHeadsetDriver : public CHidDriver,
- public MTimerNotifier,
- public MMPXPlaybackObserver
- {
-
-private:
- /**
- * Initialisation states
- */
- enum THeadsetDriverState
- {
- EUninitialised, // Driver has not been initialised
- EInitialised, // Driver is initialised
- EDisabled
- // The driver will not respond to interrupt data
- };
-
- /**
- * Hook handling
- */
- enum THookHandling
- {
- EOnHook, EOffHook, ENoHook
- };
-public:
-
- /**
- * Two-phased constructor.
- * @param aHid The generic HID layer that requested the driver
- */
- static CHidHeadsetDriver* NewL( MDriverAccess* aHid );
-
- /**
- * Two-phased constructor.
- * @param aHid The generic HID layer that requested the driver
- */
- static CHidHeadsetDriver* NewLC( MDriverAccess* aHid );
-
- /**
- * Destructor
- */
- virtual ~CHidHeadsetDriver();
-
-private:
-
- // from base class CHidDriver
- /**
- * From class CHidDriver
- * Called by the Generic HID layer to see if the driver can is able to
- * use reports from a newly-connected device. Supported hid fields van
- * be later request with SupportedFieldCount function
- *
- * @param aReportRoot HID report descriptor
- * @return KErrNone The driver will handle reports from the report
- * descriptor and KErrHidUnrecognised The driver cannot
- * handle reports from the device
- */
- TInt CanHandleReportL( CReportRoot* aReportRoot );
-
- /**
- * From class CHidDriver
- * Called by the Generic HID layer when a device has been removed, prior
- * to the driver being removed. This allows the driver to notify any
- * applications of disconnection, if required
- *
- * @param aReason The reason for device disconnection
- */
- void Disconnected( TInt aReason );
-
- /**
- * From class CHidDriver
- * Called by the Generic HID layer when data has been received from the
- * device handled by this driver.
- *
- * @param aChannel The channel on which the data was received
- * (as defined by the transport layer)
- * @param aPayload A pointer to the data buffer
- */
- TInt DataIn( CHidTransport::THidChannelType aChannel,
- const TDesC8& aPayload );
-
- /**
- * From class CHidDriver
- * Called by the transport layers to inform the generic HID of the
- * success of the last Set... command.
- *
- * @param aCmdAck Status of the last Set... command
- */
- void CommandResult( TInt aCmdAck );
-
- /**
- * From class CHidDriver
- * Called after a driver is sucessfully created by the Generic HID, when
- * a device is connected
- *
- * @param aConnectionId An number used to identify the device in
- * subsequent calls from the driver to the
- * generic HI
- */
- void InitialiseL( TInt aConnectionId );
-
- /**
- * From class CHidDriver
- * Resets the internal state of the driver (any pressed keys are released)
- * and enables the driver
- *
- * @param aConnectionId An number used to identify the device in
- * subsequent calls from the driver to the
- * generic HI
- */
- void StartL( TInt aConnectionId );
-
- /**
- * From class CHidDriver
- * Cancels all pressed keys and disables the driver (so it will not
- * process interrupt data)
- *
- */
- void Stop();
-
- /**
- * From class CHidDriver
- * Return count of supported fields
- *
- * @return Number of supported fields
- */
- TInt SupportedFieldCount();
-
- /**
- * From class CHidDriver
- * Set input handling registy
- *
- * @param aHandlingReg a Input handling registry
- */
- void SetInputHandlingReg( CHidInputDataHandlingReg* aHandlingReg );
-
- // from base class MTimerNotifier
- /**
- * From class MTimerNotifier
- * The function to be called when a timeout occurs.
- *
- * @param aTimerType a Type of timer
- */
- void TimerExpired( TTimerType aTimerType );
-
- /**
- * From class MMPXPlaybackObserver
- * Handle playback message.
- *
- * @param aMsg playback message, ownership not transferred.
- * Please check aMsg is not NULL before using it. If aErr is not
- * KErrNone, plugin might still call back with more info in the
- * aMsg.
- * @param aErr system error code.
- */
- void HandlePlaybackMessage( CMPXMessage* aMsg, TInt /*aErr*/);
-
-private:
- /**
- * Constructor
- * @param aHid The generic HID layer that requested the driver
- */
- CHidHeadsetDriver( MDriverAccess* aHid );
- /**
- * ConstructL
- */
- void ConstructL();
-
-private:
-
- /**
- * Called from within DataIn to handle interrupt and control channel data
- *
- * @param aPayload a Payload data
- * @return error if data can't be handled
- */
- TInt InterruptData( const TDesC8& aPayload );
-
- /**
- * Handles the report
- *
- * @param aReport HID report descriptor
- * @param aField HID field
- * @return KErrNotSupported if report can't be handled
- */
- TInt HandleReport( const TDesC8& aReport, const CField* aField );
-
- /**
- * Handles the report
- *
- * @param aReportTranslator Report Translator
- */
- void ReleasePressedKeys( TReportTranslator& aReportTranslator );
-
- /**
- * Handle hook key pres
- *
- * @param aStatus Hook key status
- */
- void HookKeyPres( TBool aStatus );
-
- /**
- * Release hook key
- *
- */
- void ReleaseHookKey();
-
- /**
- * Get Hook Status
- *
- * @return hook handling status.
- */
- THookHandling HookStatus();
-
- /**
- * Get alarm status
- *
- * @return ETrue if ui is showing alarm, EFalse if not.
- */
- TBool AlarmStatus();
-
- /**
- * MusicPlayingStatus
- *
- * @return ETrue if plyaer is playing, EFalse if not.
- */
- TBool MusicPlayingStatus();
-
- /**
- * HandleNoneHookPress
- * Handle hook press when there are phone call is in idle state
- *
- */
- void HandleNoneHookPressL();
-
- /**
- * ReleasePressedVolumeKeys
- * Release volume keys if they are pressed
- *
- * @param aReportTranslator HID report translator
- */
- void ReleasePressedVolumeKeys( TReportTranslator& aReportTranslator );
-
- /**
- * ReleasePressedScanKeys
- * Release scan keys if they are pressed
- *
- * @param aReportTranslator HID report report translator
- */
- void ReleasePressedScanKeys( TReportTranslator& aReportTranslator );
- /**
- * HandleAlarmHookReleaseL
- * Handle hook release when phone is alarming
- *
- */
- void HandleAlarmHookReleaseL();
-
- /**
- * HandleIdleHookReleaseL
- * Handle hook release when phone is not alarming
- * and call is in idle state
- *
- */
- void HandleIdleHookReleaseL();
-
- /**
- * Handle doubleclick timer expiration
- *
- */
- void ExpiredDoubleClickTimer();
-
- /**
- * Handle long press timer expiration
- *
- */
- void ExpiredLongClickTimer();
-
- /**
- * Handle scan next pressed
- *
- */
- void HandleScanNextPressL();
-
- /**
- * Handle scan prev pressed
- *
- */
- void HandleScanPrevPressL();
-
- /**
- * Handle scan next release
- *
- * @param aKeyCode a Key id
- * @param aValue a Key value
- */
- void HandleScanNextRelease( TUint& aKeyCode, TInt& aValue );
-
- /**
- * Handle scan previous release
- *
- * @param aKeyCode a Key id
- * @param aValue a Key value
- */
- void HandleScanPreviousRelease( TUint& aKeyCode, TInt& aValue );
-
- /**
- * Handle telephony usage page
- *
- * @param aReport a Report translator
- * @return KErrNone if report can be handled.
- */
- TInt HandleTelephonyUsage( TReportTranslator& aReport );
-
- /**
- * Handle controller usage page
- *
- * @param aReport a Report translator
- * @return KErrNone if report can be handled.
- */
- TInt HandleControlUsage( TReportTranslator& aReport );
-
- /**
- * Handle volume usage
- *
- * @param aReport a Report translator
- * @return KErrNone if report can be handled.
- */
- TInt HandleVolumeUsage( TReportTranslator& aReport );
-
-private:
-
- /**
- * The Generic HID layer
- * Not own.
- */
- MDriverAccess *iGenericHid;
-
- /**
- * Field list array
- * Own.
- */
- RPointerArray<CField> iFieldList;
-
- /**
- * Driver state
- */
- THeadsetDriverState iDriverState;
-
- /**
- * Connection id
- */
- TInt iConnectionId;
-
- /**
- * Application menu id
- */
- TInt iAppMenuId;
-
- /**
- * On hook status
- */
- TBool iOnHookPressed;
-
- /**
- * Off hook
- */
- TBool iOffHookPressed;
-
- /**
- * No active calls
- */
- TBool iNoneHookPressed;
-
- /**
- * Telephony service
- * Own.
- */
- CTelephony* iTelephony;
-
- /**
- * Double click timer
- * Own.
- */
- CKeyPressTimer* iDoubleClicktimer;
-
- /**
- * Long click timer
- * Own.
- */
- CKeyPressTimer* iLongClicktimer;
-
- /**
- * Long click timer
- */
- TBool iLongPress;
-
- /**
- * Alarm server session
- */
- RASCliSession iAlarmServerSession;
-
- /**
- * Incoming call status
- */
- TBool iIncomingCallStatus;
-
- /**
- * Alarm statusd
- */
- TBool iAlarmStatus;
-
- /**
- * Music player utility
- * Own.
- */
- MMPXPlaybackUtility* iMusicPlayer;
-
- /**
- * Playing status
- */
- TBool iPlayingStatus;
-
- /**
- * Double next Click status
- */
- TBool iDoubleNextClick;
-
- /**
- * Count of supported fields
- */
- TInt iSupportedFieldCount;
-
- /**
- * Volume up key pressed down
- */
- TBool iVolumeUpPressed;
-
- /**
- * Volume down key pressed down
- */
- TBool iVolumeDownPressed;
-
- /**
- * Forward press status
- */
- TScanStatus iForwardStatus;
-
- /**
- * Backward press status
- */
- TScanStatus iBackwardStatus;
-
- /**
- * Scan next timer
- * Own.
- */
- CKeyPressTimer* iScanNextTimer;
-
- /**
- * Scan previous timer
- * Own.
- */
- CKeyPressTimer* iScanPreviousTimer;
-
- /**
- * Input handling reg
- * Not own.
- */
- CHidInputDataHandlingReg* iInputHandlingReg;
-
- };
-
-#endif