examples/sfexamples/RockPaperScissorsGameSourceCode_S60/RPS/inc/BluetoothServiceAdvertiser.h

00001 /*
00002 Copyright (c) 2002-2011 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
00003 
00004 Redistribution and use in source and binary forms, with or without
00005 modification, are permitted provided that the following conditions are met:
00006 
00007 * Redistributions of source code must retain the above copyright notice, this
00008   list of conditions and the following disclaimer.
00009 * Redistributions in binary form must reproduce the above copyright notice,
00010   this list of conditions and the following disclaimer in the documentation
00011   and/or other materials provided with the distribution.
00012 * Neither the name of Nokia Corporation nor the names of its contributors
00013   may be used to endorse or promote products derived from this software
00014   without specific prior written permission.
00015 
00016 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00017 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00018 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00019 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00020 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00021 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00022 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00023 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00024 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00025 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00026 
00027 Description:  CBluetoothServiceAdvertiser has been implemented as a state machine that incapsulates
00028                    the BT stack part responsible for advertising the BT service using the SDP server
00029  
00030                 The CBluetoothServiceAdvertiser's state machine includes the following operations:
00031                 1) Connecting to the SDP server and opening a SDP's RSdpDatabase subsession
00032                2) Building the RPS's service record.
00033                 3) Notifying the observer when the service advertising is completed.
00034  
00035                 Note that if at any stage we receive an error then the state machine is reset to the EIdle
00036                stat
00037 */ 
00038 
00039 
00040 #ifndef __BLUETOOTHSERVICEADVERTISER_H__
00041 #define __BLUETOOTHSERVICEADVERTISER_H__
00042 
00043 // INCLUDES
00044 #include <bt_sock.h>
00045 #include <btmanclient.h>
00046 #include <btsdp.h>
00047 #include "bluetoothresponder.h"
00048 #include "commoninterfaces.h"
00049 
00050 // CLASS DECLARATION
00055 class CBluetoothServiceAdvertiser : public CActive
00056     {
00057 public:
00062         enum TAdvertiserState
00063                 {
00064             EIdle,                                      //State machine entry point
00065             EConnecting,                        //Connecting to the SDP server
00066             EBuildingServiceRecord,     //Creating an SDP record
00067             };
00068 public:
00073     CBluetoothServiceAdvertiser(MBluetoothServiceAdvertiserObserver& aSerAdvObs);
00074     
00078     ~CBluetoothServiceAdvertiser();
00079     
00084         void StartL(const TInt aPort);
00085         
00086 private:
00087         // from CSocketConnector
00091         virtual void RunL();
00092         
00096         virtual void DoCancel();
00097         
00105         TInt RunError(TInt aError);
00106         
00110         void SelfComplete();
00111         
00115         void ConnectToSdpL();
00116         
00120         void BuildServiceRecordL();
00121         
00125         void UnregisterService();
00126 
00127 private:
00131         MBluetoothServiceAdvertiserObserver& iSerAdvObs;
00132         
00136         TInt iPort;
00137         
00141         TAdvertiserState iState;
00142         
00146         RSdp iSdpServ;
00147         
00151         RSdpDatabase iSdpDatabase;
00152         
00156         TSdpServRecordHandle iRecordHandle;
00157     };
00158 
00159 #endif //__BLUETOOTHSOCKCONNECTOR_H__

Generated by  doxygen 1.6.2