bluetoothengine/headsetsimulator/core/inc/Server/hsserver.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 HSSERVER_H
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    17
#define HSSERVER_H
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    18
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    19
#include <bt_sock.h>
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    20
#include <bttypes.h>
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    21
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    22
class CBluetoothSocket;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    23
class RSocketServ;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    24
class MHsAcceptNewClientObserver;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    25
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    26
/** The number of connections allowed in the queue */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    27
const TUint KListenQueueSize = 10;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    28
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    29
/** Buffer size */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    30
const TInt KMaxTHSConnectionBufferSize = 1024;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    31
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    32
/**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    33
 * @brief Server that listens and handles physical link connection with AG device.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    34
 */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    35
class CHsServer : public CBase, public MBluetoothSocketNotifier
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    36
{
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    37
public:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    38
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    39
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    40
     * Two-phased constructor.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    41
     * @param aSocketServ session of socket server
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    42
     * @return instance of class
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    43
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    44
    static CHsServer* NewL( RSocketServ &aSocketServ );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    45
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    46
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    47
     * Two-phased constructor.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    48
     * @param aSocketServ session of socket server
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    49
     * @return instance of class
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    50
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    51
    static CHsServer* NewLC( RSocketServ &aSocketServ );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    52
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    53
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    54
     * Destructor
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    55
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    56
    ~CHsServer();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    57
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    58
public:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    59
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    60
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    61
     * Turns on server. Method listens (RFCOMM protocol) and accepts ongoing 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    62
     * connections. Server gets the first free port number in system.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    63
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    64
     * @return KErrNone if successful, 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    65
     * KErrAlreadyExists if server is already running,
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    66
     * otherwise one of the system-wide error codes                                      
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    67
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    68
    TInt Listen();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    69
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    70
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    71
     * Returns server listening status.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    72
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    73
     * @return ETrue if server listens, otherwise EFalse
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    74
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    75
    TBool IsReady();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    76
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    77
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    78
     * Shutdowns server. Cancels receiving and sending data, disconnects 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    79
     * clients and destroys all bluetooth sockets.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    80
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    81
    void Shutdown();
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
     * Sets new client observer.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    85
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    86
     * @param aNewClientObserv reference to observer
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    87
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    88
    void SetNewClientObserver( MHsAcceptNewClientObserver &aNewClientObserv );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    89
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    90
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    91
     * Returns listening server port.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    92
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    93
     * @return port number
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    94
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    95
    TInt GetPort();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    96
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    97
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    98
     * Connects to AG client's socket.
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
    99
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   100
     * @param aAddr socket address
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   101
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   102
     * @leave KErrInUse if the device is already being used
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   103
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   104
    void GetSocketAndTryToConnectL( const TBTSockAddr &aAddr );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   105
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   106
protected:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   107
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   108
private:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   109
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   110
     * Constructor for performing 1st stage construction
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   111
     * 
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   112
     * @param aSocketServ session of socket server
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   113
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   114
    CHsServer( RSocketServ &aSocketServ );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   115
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   116
    /**
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   117
     * Constructor for performing 2nd stage construction
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   118
     */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   119
    void ConstructL();
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   120
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   121
private:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   122
    //Methods inhertited from MBluetoothSocketNotifier
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   123
    void HandleConnectCompleteL( TInt aErr );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   124
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   125
    void HandleAcceptCompleteL( TInt aErr );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   126
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   127
    void HandleShutdownCompleteL( TInt aErr );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   128
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   129
    void HandleSendCompleteL( TInt aErr );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   130
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   131
    void HandleReceiveCompleteL( TInt aErr );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   132
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   133
    void HandleIoctlCompleteL( TInt aErr );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   134
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   135
    void HandleActivateBasebandEventNotifierCompleteL( TInt aErr,
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   136
            TBTBasebandEventNotification& aEventNotification );
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   137
private:
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   138
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   139
    /** Listening status */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   140
    TBool iListen;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   141
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   142
    /** Server port */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   143
    TInt iPort;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   144
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   145
    /** Service security */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   146
    TBTServiceSecurity iServerSecurity;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   147
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   148
    /** Session of socket server */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   149
    RSocketServ &iSServ;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   150
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   151
    /** Socket for listening for new connections */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   152
    CBluetoothSocket *iSocketServer;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   153
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   154
    /** Client socket */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   155
    CBluetoothSocket *iBlankSocket;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   156
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   157
    /** Second client socket */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   158
    CBluetoothSocket *iBlankSocket2;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   159
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   160
    /** Pointer to observer */
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   161
    MHsAcceptNewClientObserver *iNewClientObserver;
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   162
};
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   163
90dbfc0435e3 source code commit
michal.sulewski
parents:
diff changeset
   164
#endif // HSSERVER_H