aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2013-01-02 05:22:07 -0600
committerDenis Kenzior <denkenz@gmail.com>2013-01-02 05:23:36 -0600
commitda70bb7ebcc4723913972d1dbf6ade6b03904e21 (patch)
tree16946ef738ba8849c0a15cbaec3759c71ede4262
parent281b9806e94c7f7d17b32da8c8e97cd8aa7bddb8 (diff)
downloadphonesim-da70bb7ebcc4723913972d1dbf6ade6b03904e21.tar.gz
simapplication: Fake SIM re-init notifications
For SIM Refresh cases we need to simulate the SIM being removed and re-inserted. Do that using the USIMSTATE: 1 unsolicited notification.
-rw-r--r--src/simapplication.cpp11
-rw-r--r--src/simapplication.h1
2 files changed, 11 insertions, 1 deletions
diff --git a/src/simapplication.cpp b/src/simapplication.cpp
index 03b8192..c491674 100644
--- a/src/simapplication.cpp
+++ b/src/simapplication.cpp
@@ -281,6 +281,11 @@ void SimApplication::endSession()
d->rules->respond( "+CUSATEND", 1);
}
+void SimApplication::reinitSim()
+{
+ d->rules->unsolicited( "+USIMSTATE: 1" );
+}
+
DemoSimApplication::DemoSimApplication( SimRules *rules, QObject *parent )
: SimApplication( rules, parent ), smsDestNumber( "12345" ),
smsText( "Hello" )
@@ -2359,6 +2364,9 @@ void DemoSimApplication::refreshMenuResp( const QSimTerminalResponse& resp )
}
command( cmd, this, SLOT(endSession()) );
+
+ if (cmd.refreshType() != QSimCommand::FileChange)
+ QTimer::singleShot( 1000, this, SLOT(reinitSim()) );
}
void DemoSimApplication::sendLocalInfoMenu()
@@ -2701,7 +2709,8 @@ void DemoSimApplication::handledMenuResp( const QSimTerminalResponse& resp )
cmd.setDestinationDevice( QSimCommand::ME );
cmd.setText( "" );
- modemHandledCommand(cmd, 6000);
+ modemHandledCommand(cmd, 1000);
+ QTimer::singleShot( 1100, this, SLOT(reinitSim()) );
break;
}
diff --git a/src/simapplication.h b/src/simapplication.h
index f5b54b5..d80d0e6 100644
--- a/src/simapplication.h
+++ b/src/simapplication.h
@@ -57,6 +57,7 @@ protected slots:
virtual void mainMenuSelection( int id );
virtual void mainMenuHelpRequest( int id );
virtual void endSession();
+ virtual void reinitSim();
private:
SimApplicationPrivate *d;