With CDIP phonesim can tell the Called Line Identification within the
RING comand according to 27.007 section 7.9.
---
src/callmanager.cpp | 21 +++++++++++++++------
src/callmanager.h | 8 +++++---
src/control.cpp | 8 ++++++--
src/control.h | 2 +-
src/default.xml | 19 +++++++++++++++++++
src/hardwaremanipulator.h | 2 +-
src/phonesim.cpp | 4 ++--
7 files changed, 49 insertions(+), 15 deletions(-)
diff --git a/src/callmanager.cpp b/src/callmanager.cpp
index d746333..be17b83 100644
--- a/src/callmanager.cpp
+++ b/src/callmanager.cpp
@@ -326,6 +326,11 @@ void CallManager::emitRing(const CallInfo &info)
else
str += "\\n\\n+CLIP: " + QAtUtils::encodeNumber( info.number ) +
",,,,0";
+ if (info.calledNumber.isNull())
+ ;
+ else
+ str += "\\n\\n+CDIP: " + QAtUtils::encodeNumber( info.calledNumber
) + ",,,";
+
if (info.name.isNull())
;
else if (info.name.isEmpty())
@@ -338,7 +343,8 @@ void CallManager::emitRing(const CallInfo &info)
}
void CallManager::startIncomingCall( const QString& number,
- const QString& name, bool dialBack )
+ const QString& calledNumber,
+ const QString& name, bool dialBack )
{
// Bail out if there is already an incoming call.
if ( idForIncoming() >= 0 ) {
@@ -356,6 +362,7 @@ void CallManager::startIncomingCall( const QString& number,
info.state = CallState_Incoming;
}
info.number = number;
+ info.calledNumber = calledNumber;
info.incoming = true;
info.dialBack = dialBack;
info.name = name;
@@ -371,9 +378,11 @@ void CallManager::startIncomingCall( const QString& number,
ringTimer->start(2000);
}
-void CallManager::startIncomingCall( const QString& number , const QString&
name )
+void CallManager::startIncomingCall( const QString& number,
+ const QString& calledNumber,
+ const QString& name )
{
- startIncomingCall( number, name, false );
+ startIncomingCall( number, calledNumber, name, false );
}
void CallManager::hangupAll()
@@ -702,18 +711,18 @@ void CallManager::dialingToAlerting()
void CallManager::dialBack()
{
- startIncomingCall( "1234567", "Alice", true );
+ startIncomingCall( "1234567", "7654321", "Alice", true );
}
void CallManager::dialBackWithHangup5()
{
- startIncomingCall( "1234567", "Bob", true );
+ startIncomingCall( "1234567", "7654321", "Bob", true );
hangupTimer->start( 5000 );
}
void CallManager::dialBackWithHangup4()
{
- startIncomingCall( "1234567", "Mallory", true );
+ startIncomingCall( "1234567", "7654321", "Mallory", true );
hangupTimer->start( 4000 );
}
diff --git a/src/callmanager.h b/src/callmanager.h
index f29bdce..90cb9bd 100644
--- a/src/callmanager.h
+++ b/src/callmanager.h
@@ -39,6 +39,7 @@ struct CallInfo
int id;
CallState state;
QString number;
+ QString calledNumber;
bool incoming;
bool dialBack;
QString name;
@@ -94,9 +95,10 @@ public:
public slots:
// Start an incoming call simulation.
- void startIncomingCall( const QString& number, const QString& name,
- bool dialBack );
- void startIncomingCall( const QString& number, const QString& name );
+ void startIncomingCall( const QString& number, const QString& calledNumber,
+ const QString& name, bool dialBack );
+ void startIncomingCall( const QString& number, const QString& calledNumber,
+ const QString& name );
signals:
// Send a response to a command.
diff --git a/src/control.cpp b/src/control.cpp
index 68c5584..b70de30 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, QString));
+ << SIGNAL(startIncomingCall(QString, QString, QString));
foreach (QByteArray sig, proxySignals)
connect(widget, sig, this, sig);
@@ -282,15 +282,19 @@ void ControlWidget::sendSMSDatagram()
void ControlWidget::sendCall()
{
QString number;
+ QString calledNumber;
QString name;
if (ui->cbCaller->isChecked())
number = ui->leCaller->text();
+ if (ui->cbCalledLine->isChecked())
+ calledNumber = ui->leCalledLine->text();
+
if (ui->cbCallerName->isChecked())
name = ui->leCallerName->text();
- emit startIncomingCall( number, name );
+ emit startIncomingCall( number, calledNumber, name );
}
void ControlWidget::handleFromData( const QString& cmd )
diff --git a/src/control.h b/src/control.h
index 767baa3..2c14863 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 &, const QString &);
+ void startIncomingCall(const QString &, const QString &, const QString &);
protected:
void closeEvent(QCloseEvent *event);
diff --git a/src/default.xml b/src/default.xml
index 4491705..14796d2 100644
--- a/src/default.xml
+++ b/src/default.xml
@@ -1373,6 +1373,25 @@
</chat>
<chat>
+ <!-- Query called line identifier presentation mode -->
+ <command>AT+CDIP?</command>
+ <response>+CDIP: ${DIP},1\n\nOK</response>
+</chat>
+
+<chat>
+ <!-- Query supported called line identifier presentation modes -->
+ <command>AT+CDIP=?</command>
+ <response>+CDIP: (0,1)\n\nOK</response>
+</chat>
+
+<chat>
+ <!-- Set called line identifier presentation mode -->
+ <command>AT+CDIP=*</command>
+ <response>OK</response>
+ <set name="DIP" value="*"/>
+</chat>
+
+<chat>
<!-- Query calling line identifier presentation mode -->
<command>AT+CNAP?</command>
<response>+CNAP: ${NAP},1\n\nOK</response>
diff --git a/src/hardwaremanipulator.h b/src/hardwaremanipulator.h
index d8ab11e..2176900 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, const QString &name);
+ void startIncomingCall(const QString &number, const QString
&called_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 8ca5b23..a51e591 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,QString)),
- _callManager, SLOT(startIncomingCall(QString,QString)) );
+ connect( machine, SIGNAL(startIncomingCall(QString,QString,QString)),
+ _callManager,
SLOT(startIncomingCall(QString,QString,QString)) );
}
connect(this,SIGNAL(readyRead()),
--
1.7.3.5
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono