bluetoothengine/btsap/inc/BTSapServerState.h
changeset 65 001a94c71129
parent 0 f63038272f30
equal deleted inserted replaced
57:5ebadcda06cb 65:001a94c71129
    51 
    51 
    52 enum TSapConnectionCompleteReason
    52 enum TSapConnectionCompleteReason
    53     {
    53     {
    54     EConnectionError,
    54     EConnectionError,
    55     EUserAccepted,
    55     EUserAccepted,
    56     EUserRejected
    56     EUserRejected,
       
    57     EConnectionWithActiveCall,
       
    58     EConnectionWithoutActiveCall
    57     };
    59     };
    58 
    60 
    59 enum TSapConnectionState
    61 enum TSapConnectionState
    60     {
    62     {
    61     ESapNotConnected,
    63     ESapNotConnected,
    68 class CBTSapRequestHandler;
    70 class CBTSapRequestHandler;
    69 class CBTSapSimCardStatusNotifier;
    71 class CBTSapSimCardStatusNotifier;
    70 class RTelServer;
    72 class RTelServer;
    71 class RMobilePhone;
    73 class RMobilePhone;
    72 class MSapStatusObserver;
    74 class MSapStatusObserver;
       
    75 class MSapCallStatusObserver;
    73 
    76 
    74 /*
    77 /*
    75 * An abstarct interface that defines a callback method
    78 * An abstarct interface that defines a callback method
    76 * for the SAP connection state observer. SapStatusChangedL
    79 * for the SAP connection state observer. SapStatusChangedL
    77 * is called by CBTSapStatusObserver when the SAP connection
    80 * is called by CBTSapStatusObserver when the SAP connection
   126 private:
   129 private:
   127     MSapStatusObserver* iObserver;
   130     MSapStatusObserver* iObserver;
   128     RProperty iProperty;
   131     RProperty iProperty;
   129     };
   132     };
   130 
   133 
       
   134 /*
       
   135 * An abstarct interface that defines a callback method
       
   136 * for the Call state observer. CallStatusChangedL
       
   137 * is called by CBTCallStatusObserver when the call connection
       
   138 * state has changed. aStatus represents the new status value.
       
   139 */
       
   140 class MSapCallStatusObserver
       
   141     {
       
   142     public:
       
   143     virtual void CallStatusChangedL(TInt aStatus) = 0;
       
   144     };
       
   145 
       
   146 /*
       
   147 * An observer that monitors KPSUidCtsyCallInformation
       
   148 * P&S key . The clients can call SubscribeCallStatusL in order to 
       
   149 * get a changed call status returned via 
       
   150 * MSapCallStatusObserver::CallStatusChangedL.
       
   151 */ 
       
   152 class CBTSapCallStatusObserver : public CActive
       
   153     {
       
   154 public:
       
   155     /**
       
   156     * Two-phased constructor.
       
   157     */
       
   158     static CBTSapCallStatusObserver* NewL();
       
   159     /**
       
   160     * Destructor.
       
   161     */
       
   162     virtual ~CBTSapCallStatusObserver();
       
   163     
       
   164     /**
       
   165     * Starts listening KCTsyCallState P&S key.
       
   166     * When the key value is changed, the new state is indicated
       
   167     * through the observer interface (MSapCallStatusObserver).
       
   168     */
       
   169     void SubscribeCallStatusL(MSapCallStatusObserver* aObserver);
       
   170       
       
   171 private:
       
   172     /**
       
   173     * Two-Phase constructor
       
   174     */
       
   175     void ConstructL();
       
   176     
       
   177     /**
       
   178     * Default constructor
       
   179     */
       
   180     CBTSapCallStatusObserver();
       
   181     
       
   182     // From CActive
       
   183     virtual void DoCancel();
       
   184     virtual void RunL();
       
   185       
       
   186 private:
       
   187     MSapCallStatusObserver* iObserver;
       
   188     RProperty iProperty;
       
   189     };
   131 
   190 
   132 /**
   191 /**
   133 *  CBTSapServerState core class
   192 *  CBTSapServerState core class
   134 *
   193 *
   135 */
   194 */
   136 class CBTSapServerState : public CActive, MSapStatusObserver
   195 class CBTSapServerState : public CActive, MSapStatusObserver, MSapCallStatusObserver
   137     {
   196     {
   138 private:
   197 private:
   139     class TState
   198     class TState
   140         {
   199         {
   141     public:
   200     public:
   147         virtual TInt DisconnectSapConnection(TBTSapDisconnectType aType);
   206         virtual TInt DisconnectSapConnection(TBTSapDisconnectType aType);
   148         virtual TInt AcceptSapConnection();
   207         virtual TInt AcceptSapConnection();
   149         virtual TInt RejectSapConnection(TBTSapRejectReason aReason);
   208         virtual TInt RejectSapConnection(TBTSapRejectReason aReason);
   150         virtual void SimCardStatusChanged(TCardStatus aCardStatus);
   209         virtual void SimCardStatusChanged(TCardStatus aCardStatus);
   151         virtual TInt ChangeState(TBTSapServerState& aNextState);
   210         virtual TInt ChangeState(TBTSapServerState& aNextState);
       
   211         virtual TInt CallInactive();
   152 
   212 
   153         void NotifySapState(TSapConnectionState aState);
   213         void NotifySapState(TSapConnectionState aState);
   154         void StartBTNotifier(TInt type);
   214         void StartBTNotifier(TInt type);
   155         TBool IsSimPresent();
   215         TBool IsSimPresent();
   156 
   216 
   204 
   264 
   205         TInt AcceptSapConnection();
   265         TInt AcceptSapConnection();
   206         TInt RejectSapConnection(TBTSapRejectReason aReason);
   266         TInt RejectSapConnection(TBTSapRejectReason aReason);
   207         TInt ChangeState(TBTSapServerState& aNextState);
   267         TInt ChangeState(TBTSapServerState& aNextState);
   208         void SimCardStatusChanged(TCardStatus aCardStatus);
   268         void SimCardStatusChanged(TCardStatus aCardStatus);
       
   269         TInt CallInactive();
   209 
   270 
   210     private:
   271     private:
   211         void CheckMaxMsgSize(TConnectionStatus& aMsgSizeStatus);
   272         void CheckMaxMsgSize(TConnectionStatus& aMsgSizeStatus);
   212         TBool IsCallOngoing();
   273         TBool IsCallOngoing();
   213 
   274 
   214     private:
   275     private:
   215         TBool iConnectRequestOK;
   276         TBool iConnectRequestOK;
   216         TCardStatus iCardStatus;
   277         TCardStatus iCardStatus;
       
   278         TBool iSendRespMessageDone;
       
   279         TBool iMessageSizeNegotiationDone;
   217         RProperty iProperty;
   280         RProperty iProperty;
   218         };
   281         };
   219 
   282 
   220     class TStateDisconnect : public TStateIdle
   283     class TStateDisconnect : public TStateIdle
   221         {
   284         {
   365 
   428 
   366     TBTSapMessage& BTSapRequestMessage();
   429     TBTSapMessage& BTSapRequestMessage();
   367 
   430 
   368     TBTSapMessage& BTSapResponseMessage();
   431     TBTSapMessage& BTSapResponseMessage();
   369 
   432 
       
   433     void SubscribeCallStatusL();
       
   434     
       
   435     void CancelSubscribeCallStatusL();
       
   436     
   370     // From MSapStatusObserver
   437     // From MSapStatusObserver
   371     void SapStatusChangedL(TInt aStatus);
   438     void SapStatusChangedL(TInt aStatus);
   372 
   439    
       
   440     // From MSapCallStatusObserver
       
   441     void CallStatusChangedL(TInt aStatus);
   373 private:
   442 private:
   374 
   443 
   375     void OpenSubscriptionModuleL();
   444     void OpenSubscriptionModuleL();
   376 
   445 
   377 private:     // From CActive
   446 private:     // From CActive
   418     RMmCustomAPI iSubscriptionModule;
   487     RMmCustomAPI iSubscriptionModule;
   419 
   488 
   420     TBTSapMessage iResponseMessage;
   489     TBTSapMessage iResponseMessage;
   421     TBTSapMessage iRequestMessage;
   490     TBTSapMessage iRequestMessage;
   422     CBTSapStatusObserver* iStatusObserver;
   491     CBTSapStatusObserver* iStatusObserver;
       
   492     CBTSapCallStatusObserver* iBTCallStatusObserver;
   423     TBool iStatesCreated;
   493     TBool iStatesCreated;
   424     };
   494     };
   425 
   495 
   426 #endif      // BT_SAP_SERVER_STATE_H
   496 #endif      // BT_SAP_SERVER_STATE_H
   427 
   497