558 DECLARE_SMELEMENT_FOOTER( TStartMobilityHandshakeBackwardsOrError ) |
558 DECLARE_SMELEMENT_FOOTER( TStartMobilityHandshakeBackwardsOrError ) |
559 |
559 |
560 /** |
560 /** |
561 * FORK/DECISION: Decides if needs cancel or not. |
561 * FORK/DECISION: Decides if needs cancel or not. |
562 */ |
562 */ |
563 DECLARE_SMELEMENT_HEADER( TInformMigrationAvailableOrCancelTag, |
563 DECLARE_SMELEMENT_HEADER( TInformMigrationAvailableOrErrorOrCancelTag, |
564 MeshMachine::TStateFork<TContext>, |
564 MeshMachine::TStateFork<TContext>, |
565 NetStateMachine::MStateFork, |
565 NetStateMachine::MStateFork, |
566 TContext ) |
566 TContext ) |
567 virtual TInt TransitionTag(); |
567 virtual TInt TransitionTag(); |
568 DECLARE_SMELEMENT_FOOTER( TInformMigrationAvailableOrCancelTag ) |
568 DECLARE_SMELEMENT_FOOTER( TInformMigrationAvailableOrErrorOrCancelTag ) |
569 |
569 |
570 /** |
570 /** |
571 * FORK/DECISION: Decides what happens after IPCPR application completes the |
571 * FORK/DECISION: Decides what happens after IPCPR application completes the |
572 * three way handshake. |
572 * three way handshake. |
573 * 1. Application accepted, continue to send accept to policy server. |
573 * 1. Application accepted, continue to send accept to policy server. |
599 /** |
599 /** |
600 * FORK/DECISION: |
600 * FORK/DECISION: |
601 * 1. Continue with handshake to select new AP for MCPR. |
601 * 1. Continue with handshake to select new AP for MCPR. |
602 * 2. Return back to migration-phase with new preferred IAP. |
602 * 2. Return back to migration-phase with new preferred IAP. |
603 * 3. Close down the system in case of mobilityerror. |
603 * 3. Close down the system in case of mobilityerror. |
604 * @return //TODO Cancel from IPCPR. |
604 * @return |
605 */ |
605 */ |
606 DECLARE_SMELEMENT_HEADER( TNoTagOrInformMigrationAvailableBackwardsOrErrorOrCancel, |
606 DECLARE_SMELEMENT_HEADER( TNoTagOrInformMigrationAvailableBackwardsOrErrorOrCancel, |
607 MeshMachine::TStateFork<TContext>, |
607 MeshMachine::TStateFork<TContext>, |
608 NetStateMachine::MStateFork, |
608 NetStateMachine::MStateFork, |
609 TContext ) |
609 TContext ) |
610 virtual TInt TransitionTag(); |
610 virtual TInt TransitionTag(); |
611 DECLARE_SMELEMENT_FOOTER( TNoTagOrInformMigrationAvailableBackwardsOrErrorOrCancel ) |
611 DECLARE_SMELEMENT_FOOTER( TNoTagOrInformMigrationAvailableBackwardsOrErrorOrCancel ) |
612 |
612 |
|
613 /** |
|
614 * FORK/DECISION: |
|
615 * 1. Inform that the migration complete or go to error |
|
616 * 2. Error |
|
617 * @return |
|
618 */ |
|
619 DECLARE_SMELEMENT_HEADER( TInformMigrationCompletedOrError, |
|
620 MeshMachine::TStateFork<TContext>, |
|
621 NetStateMachine::MStateFork, |
|
622 TContext ) |
|
623 virtual TInt TransitionTag(); |
|
624 DECLARE_SMELEMENT_FOOTER( TInformMigrationCompletedOrError ) |
|
625 |
|
626 |
|
627 |
613 /** |
628 /** |
614 * Class that is responsible for managing mobility on MCPR side. |
629 * Class that is responsible for managing mobility on MCPR side. |
615 * CS60MobilityActivity is the S60 version of the CMobilityActivity -class |
630 * CS60MobilityActivity is the S60 version of the CMobilityActivity -class |
616 */ |
631 */ |
617 class CS60MobilityActivity : public S60MCprStates::CS60ErrorRecoveryActivity |
632 class CS60MobilityActivity : public S60MCprStates::CS60ErrorRecoveryActivity |
765 |
780 |
766 /** |
781 /** |
767 * STATE: Waits for preferred carrier message. |
782 * STATE: Waits for preferred carrier message. |
768 * @return ETrue if preferred carrier notification is received. |
783 * @return ETrue if preferred carrier notification is received. |
769 */ |
784 */ |
770 DECLARE_SMELEMENT_HEADER( TAwaitingPreferredCarrierOrCancelOrRejected, |
785 DECLARE_SMELEMENT_HEADER( TAwaitingPreferredCarrierOrCancelOrRejectedOrErrorNotification, |
771 MeshMachine::TState<TContext>, |
786 MeshMachine::TState<TContext>, |
772 NetStateMachine::MState, |
787 NetStateMachine::MState, |
773 CS60MobilityActivity::TContext) |
788 CS60MobilityActivity::TContext) |
774 virtual TBool Accept(); |
789 virtual TBool Accept(); |
775 DECLARE_SMELEMENT_FOOTER( TAwaitingPreferredCarrierOrCancelOrRejected ) |
790 DECLARE_SMELEMENT_FOOTER( TAwaitingPreferredCarrierOrCancelOrRejectedOrErrorNotification ) |
776 |
791 |
777 /** |
792 /** |
778 * FORK/DECISION: Decides what happens after IPCPR responds to migration offer. |
793 * FORK/DECISION: Decides what happens after IPCPR responds to migration offer. |
779 * 1. Proceed to migration if asked. |
794 * 1. Proceed to migration if asked. |
780 * 2. Proceed to cancel. |
795 * 2. Proceed to cancel. |
787 CS60MobilityActivity::TContext ) |
802 CS60MobilityActivity::TContext ) |
788 virtual TInt TransitionTag(); |
803 virtual TInt TransitionTag(); |
789 DECLARE_SMELEMENT_FOOTER( TNoTagOrApplicationRejectedMigrationOrCancel ) |
804 DECLARE_SMELEMENT_FOOTER( TNoTagOrApplicationRejectedMigrationOrCancel ) |
790 |
805 |
791 /** |
806 /** |
|
807 * FORK/DECISION: |
|
808 * 1. Proceed to reconnection |
|
809 * 2. Re-establish connection to the same IAP, inform data client that migration is complete |
|
810 * 3. Error |
|
811 * @return |
|
812 */ |
|
813 DECLARE_SMELEMENT_HEADER( TNoTagOrRequestReConnectToCurrentSPOrErrorTag, |
|
814 MeshMachine::TStateFork<TContext>, |
|
815 NetStateMachine::MStateFork, |
|
816 TContext ) |
|
817 virtual TInt TransitionTag(); |
|
818 DECLARE_SMELEMENT_FOOTER( TNoTagOrRequestReConnectToCurrentSPOrErrorTag ) |
|
819 |
|
820 |
|
821 /** |
792 * Mutex protected TRANSITION. |
822 * Mutex protected TRANSITION. |
793 * Mopility scenario should wait until the connection recovery finishes. |
823 * Mopility scenario should wait until the connection recovery finishes. |
794 */ |
824 */ |
795 DECLARE_SERIALIZABLE_TRANSITION( TInformMigrationAvailableAndSetHandshakingFlagBlockedByConnectionRecoveryOrNoMobilityPreferenceOrError, |
825 DECLARE_SERIALIZABLE_TRANSITION( TInformMigrationAvailableAndSetHandshakingFlagBlockedByConnectionRecoveryOrNoMobilityPreferenceOrError, |
796 CS60MobilityActivity::TConnectionRecoveryOrMobilityPreferenceOrErrorMutex, |
826 CS60MobilityActivity::TConnectionRecoveryOrMobilityPreferenceOrErrorMutex, |
818 */ |
848 */ |
819 void ClearHandshakingFlag(); |
849 void ClearHandshakingFlag(); |
820 |
850 |
821 private: // Member variables. |
851 private: // Member variables. |
822 |
852 |
823 /** |
|
824 * Pointer to IPProtocoMCPR which is currently active |
|
825 */ |
|
826 ESock::RMetaServiceProviderInterface* iCurrent; |
|
827 |
|
828 /** |
|
829 * Pointer to IPProtocoMCPR which is about to become the active. |
|
830 */ |
|
831 ESock::RMetaServiceProviderInterface* iPreferred; |
|
832 |
|
833 TUint iCurrentAssumedAPId; // Current IAP Id |
853 TUint iCurrentAssumedAPId; // Current IAP Id |
834 TUint iPreferredAPId; // New IAP Id system should roam to. |
854 TUint iPreferredAPId; // New IAP Id system should roam to. |
835 TBool iIsUpgrade; // If the active iPreferredAPId is upgrade to old one. |
855 TBool iIsUpgrade; // If the active iPreferredAPId is upgrade to old one. |
836 TBool iIsSeamless; // *not used* if the roaming is seamless from the IP point of view |
856 TBool iIsSeamless; // *not used* if the roaming is seamless from the IP point of view |
837 |
857 |