aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustavo F. Padovan <padovan@profusion.mobi>2010-12-07 16:33:11 -0200
committerDenis Kenzior <denkenz@gmail.com>2010-12-16 15:54:58 -0600
commit4bb943ca5d14ce4c78d5c130be847e74c9a2acf3 (patch)
tree54ca382f1cc90eb9b663a7c9c8df7f6189db78af
parent3f8d0ab8e64efe397a2ac9fe3eb0d613a630037a (diff)
downloadphonesim-4bb943ca5d14ce4c78d5c130be847e74c9a2acf3.tar.gz
Add CNAP support
With CNAP phonesim can tell the Caller Name within the RING comand
-rw-r--r--src/callmanager.cpp16
-rw-r--r--src/callmanager.h5
-rw-r--r--src/control.cpp4
-rw-r--r--src/control.h2
-rw-r--r--src/controlbase.ui16
-rw-r--r--src/default.xml19
-rw-r--r--src/hardwaremanipulator.h2
-rw-r--r--src/phonesim.cpp4
8 files changed, 53 insertions, 15 deletions
diff --git a/src/callmanager.cpp b/src/callmanager.cpp
index dddc5ae..03fd341 100644
--- a/src/callmanager.cpp
+++ b/src/callmanager.cpp
@@ -302,7 +302,8 @@ bool CallManager::command( const QString& cmd )
return true;
}
-void CallManager::startIncomingCall( const QString& number, bool dialBack )
+void CallManager::startIncomingCall( const QString& number,
+ const QString& name, bool dialBack )
{
// Bail out if there is already an incoming call.
if ( idForIncoming() >= 0 ) {
@@ -328,7 +329,8 @@ void CallManager::startIncomingCall( const QString& number, bool dialBack )
if ( info.state == CallState_Waiting ) {
emit unsolicited( "+CCWA: " + QAtUtils::encodeNumber( number ) + ",1" );
} else {
- emit unsolicited( "RING\\n\\n+CLIP: " + QAtUtils::encodeNumber( number ) );
+ emit unsolicited( "RING\\n\\n+CLIP: " + QAtUtils::encodeNumber( number )
+ + "\\n\\n+CNAP: \"" + name + "\"" );
}
// Announce the incoming call using Ericsson-style state notifications.
@@ -339,9 +341,9 @@ void CallManager::startIncomingCall( const QString& number, bool dialBack )
ringTimer->start(2000);
}
-void CallManager::startIncomingCall( const QString& number )
+void CallManager::startIncomingCall( const QString& number , const QString& name )
{
- startIncomingCall( number, false );
+ startIncomingCall( number, name, false );
}
void CallManager::hangupAll()
@@ -670,18 +672,18 @@ void CallManager::dialingToAlerting()
void CallManager::dialBack()
{
- startIncomingCall( "1234567", true );
+ startIncomingCall( "1234567", "Alice", true );
}
void CallManager::dialBackWithHangup5()
{
- startIncomingCall( "1234567", true );
+ startIncomingCall( "1234567", "Bob", true );
hangupTimer->start( 5000 );
}
void CallManager::dialBackWithHangup4()
{
- startIncomingCall( "1234567", true );
+ startIncomingCall( "1234567", "Mallory", true );
hangupTimer->start( 4000 );
}
diff --git a/src/callmanager.h b/src/callmanager.h
index 3dd01cd..a2de574 100644
--- a/src/callmanager.h
+++ b/src/callmanager.h
@@ -93,8 +93,9 @@ public:
public slots:
// Start an incoming call simulation.
- void startIncomingCall( const QString& number, bool dialBack );
- void startIncomingCall( const QString& number );
+ void startIncomingCall( const QString& number, const QString& name,
+ bool dialBack );
+ void startIncomingCall( const QString& number, const QString& name );
signals:
// Send a response to a command.
diff --git a/src/control.cpp b/src/control.cpp
index 75dae98..49f9f04 100644
--- a/src/control.cpp
+++ b/src/control.cpp
@@ -119,7 +119,7 @@ Control::Control(const QString& ruleFile, SimRules *sr, QObject *parent)
<< SIGNAL(command(QString))
<< SIGNAL(variableChanged(QString,QString))
<< SIGNAL(switchTo(QString))
- << SIGNAL(startIncomingCall(QString));
+ << SIGNAL(startIncomingCall(QString, QString));
foreach (QByteArray sig, proxySignals)
connect(widget, sig, this, sig);
@@ -281,7 +281,7 @@ void ControlWidget::sendSMSDatagram()
void ControlWidget::sendCall()
{
- emit startIncomingCall( ui->leCaller->text() );
+ emit startIncomingCall( ui->leCaller->text() , ui->leCallerName->text() );
}
void ControlWidget::handleFromData( const QString& cmd )
diff --git a/src/control.h b/src/control.h
index 64a7af7..767baa3 100644
--- a/src/control.h
+++ b/src/control.h
@@ -101,7 +101,7 @@ signals:
void command(const QString &);
void variableChanged(const QString &, const QString &);
void switchTo(const QString &);
- void startIncomingCall(const QString &);
+ void startIncomingCall(const QString &, const QString &);
protected:
void closeEvent(QCloseEvent *event);
diff --git a/src/controlbase.ui b/src/controlbase.ui
index 2c91f95..76abd4b 100644
--- a/src/controlbase.ui
+++ b/src/controlbase.ui
@@ -141,6 +141,22 @@
<widget class="QLineEdit" name="leCaller"/>
</item>
<item>
+ <widget class="QLabel" name="lblCallerName">
+ <property name="text">
+ <string>Caller Na&amp;me</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft</set>
+ </property>
+ <property name="buddy">
+ <cstring>leCallerName</cstring>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="leCallerName"/>
+ </item>
+ <item>
<layout class="QHBoxLayout">
<property name="spacing">
<number>6</number>
diff --git a/src/default.xml b/src/default.xml
index 4cc2a05..54c7191 100644
--- a/src/default.xml
+++ b/src/default.xml
@@ -1373,6 +1373,25 @@
</chat>
<chat>
+ <!-- Query calling line identifier presentation mode -->
+ <command>AT+CNAP?</command>
+ <response>+CNAP: ${NAP},1\n\nOK</response>
+</chat>
+
+<chat>
+ <!-- Query supported calling line identifier presentation modes -->
+ <command>AT+CNAP=?</command>
+ <response>+CNAP: (0,1)\n\nOK</response>
+</chat>
+
+<chat>
+ <!-- Set calling line identifier presentation mode -->
+ <command>AT+CNAP=*</command>
+ <response>OK</response>
+ <set name="NAP" value="*"/>
+</chat>
+
+<chat>
<!-- Query calling line identication restriction mode -->
<command>AT+CLIR?</command>
<response>+CLIR: ${LIR},${LIR_STATUS}\n\nOK</response>
diff --git a/src/hardwaremanipulator.h b/src/hardwaremanipulator.h
index fe5968f..d8ab11e 100644
--- a/src/hardwaremanipulator.h
+++ b/src/hardwaremanipulator.h
@@ -55,7 +55,7 @@ signals:
void command(const QString &cmd);
void variableChanged(const QString &n, const QString &v);
void switchTo(const QString &cmd);
- void startIncomingCall(const QString &number);
+ void startIncomingCall(const QString &number, const QString &name);
protected:
virtual QString constructCBMessage(const QString &messageCode, int geographicalScope, const QString &updateNumber, const QString &channel,
diff --git a/src/phonesim.cpp b/src/phonesim.cpp
index 89089b2..8ca5b23 100644
--- a/src/phonesim.cpp
+++ b/src/phonesim.cpp
@@ -526,8 +526,8 @@ SimRules::SimRules( int fd, QObject *p, const QString& filename, HardwareManipu
this, SLOT(dialCheck(QString,bool&)) );
if ( machine ) {
- connect( machine, SIGNAL(startIncomingCall(QString)),
- _callManager, SLOT(startIncomingCall(QString)) );
+ connect( machine, SIGNAL(startIncomingCall(QString,QString)),
+ _callManager, SLOT(startIncomingCall(QString,QString)) );
}
connect(this,SIGNAL(readyRead()),