systemswstubs/ssyreference/inc/ssyreferencecmdhandler.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 00:01:22 +0200
changeset 3 f935d51494d1
parent 2 ffb8e2ddd8dc
permissions -rw-r--r--
Revision: 201005 Kit: 201005

/*
* Copyright (c) 2006 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:  Command handler for SSY <--> Sensor messages
*
*/


#ifndef SSYREFERENCECMDHANDLER_H
#define SSYREFERENCECMDHANDLER_H

#include <e32base.h>
#include "ssyreferenceconfig.h"

// FORWARD DECLARATIONS
class CSsyReferenceChannel;

/**
 *  Command handler class for handling commands of one channel. Each opened 
 *  channel has its own instance of this class
 *
 *  @lib ssyreferenceplugin.lib
 *  @since S60 5.0
 */
class CSsyReferenceCmdHandler : public CActive
    {

public:

    /**
     * Two-phase constructor
     *
     * @since S60 5.0
     * @param[in] aSsyChannel Reference to SSY Channel instance.
     * @return CSsyReferenceCmdHandler* Pointer to created CSsyReferenceCmdHandler object
     */
    static CSsyReferenceCmdHandler* NewL( CSsyReferenceChannel& aSsyChannel );

    /**
     * Virtual destructor
     *
     * @since S60 5.0
     */
    virtual ~CSsyReferenceCmdHandler();

// from base class CSsyControl

    /**
     * Processes command specified in param aMessage. 
     *
     * @since S60 5.0
     * @param[in] aMessage Contains command information to process
     * @return void Symbian OS error code
     */
    TInt ProcessCommand( TSsyReferenceMsg aMessage );

    /**
     * From CActive
     */
    void RunL();

    /**
     * From CActive
     */
    void DoCancel();

    /**
     * From CActive
     */
    TInt RunError( TInt aError );

    /**
     * Callback function for DataItem generation
     */
    static TInt DataItemCallback( TAny* aThis );
    
    /**
     * Handles data item generation. Called from DataItemCallback
     */
    TInt GenerateChannelDataItem();

private:

    /**
     * C++ constructor.
     *
     * @since S60 5.0
     * @param[in] aSsyChannel Reference to SSY Channel instance.
     */
    CSsyReferenceCmdHandler( CSsyReferenceChannel& aSsyChannel );

    /**
     * Symbian 2nd phase constructor.
     */
    void ConstructL();

    /**
     * Makes synchronous calls asynchronous
     */
    void IssueRequest( TInt aError = KErrNone );

    /**
     * Sends response to channel
     */
    void SendResponse( TInt aError = KErrNone );

private: // data

    /**
     * Reference to SSY Conrtol to send responses for commands
     */
    CSsyReferenceChannel& iSsyChannel;

    /**
     * Pointer to currently processing message
     */
    TSsyReferenceMsg* iMessage;

    /**
     * Data item array
     */
    TSsyRefDataItemArray iDataItemArray;

    /**
     * Pointer to next item to generate in iDataItemArray
     */
    TInt iDataItemPtr;

    /**
     * Periodic timer for generating channel data
     */
    CPeriodic* iTimer;

    };

#endif // SSYREFERENCECMDHANDLER_H

// End of file