diff options
author | Lucas De Marchi <lucas.demarchi@profusion.mobi> | 2011-01-12 09:07:12 -0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-01-13 16:09:37 -0600 |
commit | 7b554ee647da41515c7e3c8373f1ce2701e4ab4b (patch) | |
tree | 19ae038f9303736fee58ee2e740028675b0d86d2 | |
parent | a26c2e8989b879d44361f487bb04ed586463e721 (diff) | |
download | phonesim-7b554ee647da41515c7e3c8373f1ce2701e4ab4b.tar.gz |
Add CDIP support
With CDIP phonesim can tell the Called Line Identification within the
RING comand according to 27.007 section 7.9.
-rw-r--r-- | src/callmanager.cpp | 21 | ||||
-rw-r--r-- | src/callmanager.h | 8 | ||||
-rw-r--r-- | src/control.cpp | 8 | ||||
-rw-r--r-- | src/control.h | 2 | ||||
-rw-r--r-- | src/default.xml | 19 | ||||
-rw-r--r-- | src/hardwaremanipulator.h | 2 | ||||
-rw-r--r-- | 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 f2249cb..34c109a 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 393d950..00b4381 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 86afbb5..df8f65e 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 8a9c50e..a822cd9 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()), |