bluetoothengine/headsetsimulator/core/inc/RemoteControl/hsremotecontroltools.h
author michal.sulewski
Wed, 15 Sep 2010 15:59:44 +0200
branchheadsetsimulator
changeset 60 90dbfc0435e3
permissions -rw-r--r--
source code commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
60
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     1
/*
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     2
 * Component Name: Headset Simulator
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     3
 * Author: Comarch S.A.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     4
 * Version: 1.0
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     5
 * Copyright (c) 2010 Comarch S.A.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     6
 *  
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     7
 * This Software is submitted by Comarch S.A. to Symbian Foundation Limited on 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     8
 * the basis of the Member Contribution Agreement entered between Comarch S.A. 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
     9
 * and Symbian Foundation Limited on 5th June 2009 (“Agreement”) and may be 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    10
 * used only in accordance with the terms and conditions of the Agreement. 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    11
 * Any other usage, duplication or redistribution of this Software is not 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    12
 * allowed without written permission of Comarch S.A.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    13
 * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    14
 */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    15
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    16
#ifndef HSREMOTECONTROLTOOLS_H
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    17
#define HSREMOTECONTROLTOOLS_H
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    18
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    19
#include <e32base.h>
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    20
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    21
#include "hsremoterequest.h"
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    22
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    23
/** Request package length */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    24
const TInt KHsRemoteControlPackageLength = 128;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    25
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    26
/** Request package header length */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    27
const TInt KHsRemoteControlPackageTypeMaxLength = 2;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    28
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    29
_LIT8(KHsRemoteControllerPackageDelim, ":");
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    30
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    31
/** Request package data */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    32
typedef TBuf8 <KHsRemoteControlPackageLength> THsControlCommandData;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    33
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    34
/**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    35
 * @brief Represents remote control request
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    36
 */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    37
class THsRemoteControlCommand
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    38
{
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    39
public:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    40
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    41
     * Constructor
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    42
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    43
     * @param aData data
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    44
     * @param aCommandType type of command
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    45
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    46
    THsRemoteControlCommand( THsControlCommandData& aData,
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    47
            THsRemoteControlCommandType aCommandType );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    48
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    49
public:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    50
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    51
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    52
     * Getter for type of command
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    53
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    54
     * @param aCmdType type  
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    55
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    56
    void GetType( THsRemoteControlCommandType &aCmdType );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    57
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    58
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    59
     * Getter for command's data
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    60
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    61
     * @param aCmdData data
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    62
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    63
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    64
    void GetData( TDes8 &aCmdData );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    65
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    66
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    67
     * Clones THsRemoteControlCommand object
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    68
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    69
     * @param aCmdFrom source
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    70
     * @param aCmdTo destination 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    71
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    72
    static void Copy( const THsRemoteControlCommand& aCmdFrom,
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    73
            THsRemoteControlCommand& aCmdTo );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    74
private:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    75
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    76
    /** Data */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    77
    THsControlCommandData &iData;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    78
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    79
    /** Type */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    80
    THsRemoteControlCommandType iType;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    81
};
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    82
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    83
/**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    84
 * @brief Parser for remote control packages
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    85
 */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    86
class CHsRemoteControlParser : public CBase
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    87
{
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    88
public:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    89
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    90
     * Two-phased constructor.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    91
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    92
     * @return class instance
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    93
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    94
    static CHsRemoteControlParser* NewL();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    95
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    96
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    97
     * Two-phased constructor.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    98
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    99
     * @return class instance
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   100
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   101
    static CHsRemoteControlParser* NewLC();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   102
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   103
    /** 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   104
     * Destructor
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   105
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   106
    ~CHsRemoteControlParser();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   107
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   108
public:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   109
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   110
     * Parses and transforms data into THsRemoteControlCommand object
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   111
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   112
     * @param aText remote request package
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   113
     * @param aCommand created command
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   114
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   115
    void ParseL( const TDesC8 &aText, THsRemoteControlCommand &aCommand );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   116
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   117
private:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   118
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   119
     * Constructor for performing 1st stage construction
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   120
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   121
    CHsRemoteControlParser();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   122
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   123
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   124
     * Constructor for performing 2nd stage construction
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   125
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   126
    void ConstructL();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   127
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   128
private:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   129
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   130
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   131
     * Checks if package is proper
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   132
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   133
     * @aData remote request package
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   134
     * @return ETrue if OK, otherwise EFalse
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   135
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   136
    TBool IsPackageValid( const TDesC8 &aData );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   137
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   138
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   139
     * Retrieves header part and data part of remote request package
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   140
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   141
     * @param aData remote request package
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   142
     * @param aTypePart header of the package
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   143
     * @param aDataPart package's data
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   144
     * @return error code value
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   145
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   146
    TInt SplitPackage( const TDesC8 &aData, TDes8 &aTypePart, TDes8 &aDataPart );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   147
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   148
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   149
     * Transforms header of the package into THsRemoteControlCommandType
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   150
     *
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   151
     * @param aTypePart header of the package
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   152
     * @param aCommandType header tranformed into THsRemoteControlCommandType object
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   153
     * @return error code value
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   154
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   155
    TInt RecognizeType( const TDesC8 &aTypePart,
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   156
            THsRemoteControlCommandType &aCommandType );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   157
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   158
};
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   159
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   160
#endif // HSREMOTECONTROLTOOLS_H