diff options
author | Philippe Nunes <philippe.nunes@linux.intel.com> | 2012-06-29 17:53:02 +0200 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2012-07-09 11:02:36 -0500 |
commit | ac0a92f124f970aabb1758d6c0aa05b878efe03b (patch) | |
tree | 6e993a5f9ebaaeba924b246ad6d135465631b5ce | |
parent | 58aaef4d3d7dbb0e98dd7e221775f296fe45333f (diff) | |
download | phonesim-ac0a92f124f970aabb1758d6c0aa05b878efe03b.tar.gz |
hardwaremanipulator: Use the best scheme for CBS message
-rw-r--r-- | src/control.cpp | 9 | ||||
-rw-r--r-- | src/hardwaremanipulator.cpp | 42 | ||||
-rw-r--r-- | src/hardwaremanipulator.h | 6 |
3 files changed, 19 insertions, 38 deletions
diff --git a/src/control.cpp b/src/control.cpp index 27910c2..9085acd 100644 --- a/src/control.cpp +++ b/src/control.cpp @@ -329,12 +329,9 @@ void ControlWidget::sendREG() void ControlWidget::sendCBM() { - QString pdu = p->constructCBMessage(ui->leMessageCode->text(),ui->cbGeographicalScope->currentIndex(), - ui->leUpdateNumber->text(),ui->leChannel->text(),ui->leScheme->text(), - ui->cbLanguage->currentIndex(),ui->leNumPages->text(),ui->lePage->text(), - ui->teContent->toPlainText()); - - emit unsolicitedCommand(QString("+CBM: ")+QString::number(pdu.length()/2)+'\r'+'\n'+ pdu); + p->constructCBMessage(ui->leMessageCode->text(),ui->cbGeographicalScope->currentIndex(), + ui->leUpdateNumber->text(),ui->leChannel->text(), + ui->cbLanguage->currentIndex(),ui->teContent->toPlainText()); } void ControlWidget::sendSMSMessage() diff --git a/src/hardwaremanipulator.cpp b/src/hardwaremanipulator.cpp index 2d7b141..93a9e02 100644 --- a/src/hardwaremanipulator.cpp +++ b/src/hardwaremanipulator.cpp @@ -62,8 +62,8 @@ void HardwareManipulator::setPhoneNumber( const QString& ) QString PS_toHex( const QByteArray& binary ); -QString HardwareManipulator::constructCBMessage(const QString &messageCode, int geographicalScope, const QString &updateNumber, - const QString &channel, const QString &/*scheme*/, int language, const QString &numPages, const QString &page, const QString &content) +void HardwareManipulator::constructCBMessage(const QString &messageCode, int geographicalScope, const QString &updateNumber, + const QString &channel, int language, const QString &content) { bool ok; @@ -71,10 +71,9 @@ QString HardwareManipulator::constructCBMessage(const QString &messageCode, int if ( !ok ) { warning(tr("Invalid Message Code"), tr("Message code 3 hex digits long and no larger than 3FF")); - return ""; + return; } - QCBSMessage::GeographicalScope gs = (QCBSMessage::GeographicalScope)geographicalScope; uint un = convertString(updateNumber,NIBBLE_MAX,ONE_CHAR,HEX_BASE,&ok); @@ -82,7 +81,7 @@ QString HardwareManipulator::constructCBMessage(const QString &messageCode, int warning(tr("Invalid Update Number"), tr("Update number must be 1 hex digit long" "and no larger than F")); - return ""; + return; } @@ -91,43 +90,26 @@ QString HardwareManipulator::constructCBMessage(const QString &messageCode, int warning(tr("Invalid Channel,"), tr("Channel must be 4 hex digits long " "and no larger than FFFF")); - return ""; + return; } - //scheme is currently hardcoded to QSMS8_BitCodingScheme - //uint sch = convertString(scheme, NIBBLE_MAX, ONE_CHAR,HEX_BASE,&ok); - //if ( !ok ) - // return ""; - QCBSMessage::Language lang = (QCBSMessage::Language)language; - uint npag = convertString(numPages, NIBBLE_MAX,ONE_CHAR,HEX_BASE,&ok); - if ( !ok ) { - warning(tr("Invalid number of pages,"), - tr("Number of pages must be 1 hex digit long " - "and no larger than F")); - return ""; - } - - uint pag = convertString(page, NIBBLE_MAX,ONE_CHAR,HEX_BASE,&ok); - if ( !ok ) { - warning(tr("Invalid page number,"), - tr("Page number must be 1 hex digit long " - "and no larger than F")); - return ""; - } - QCBSMessage m; m.setMessageCode(mc); m.setScope(gs); m.setUpdateNumber(un); m.setChannel(ch); m.setLanguage(lang); - m.setNumPages(npag); - m.setPage(pag); m.setText(content); - return PS_toHex( m.toPdu() ); + sendCBS(m); +} + +void HardwareManipulator::sendCBS( const QCBSMessage &m ) +{ + QByteArray pdu = m.toPdu(); + emit unsolicitedCommand(QString("+CBM: ")+QString::number(pdu.length())+'\r'+'\n'+ PS_toHex(pdu)); } void HardwareManipulator::constructSMSMessage( const int type, const QString &sender, const QString &serviceCenter, const QString &text ) diff --git a/src/hardwaremanipulator.h b/src/hardwaremanipulator.h index 881125e..87a8c6e 100644 --- a/src/hardwaremanipulator.h +++ b/src/hardwaremanipulator.h @@ -25,6 +25,7 @@ #include "qsmsmessagelist.h" class QSMSMessage; +class QCBSMessage; class QVMMessage; class SimRules; struct CallInfo; @@ -43,6 +44,7 @@ public slots: virtual void handleToData( const QString& ); virtual void setPhoneNumber( const QString& ); virtual void constructSMSMessage(const int type, const QString &sender, const QString &serviceCenter, const QString &text); + virtual void sendCBS( const QCBSMessage& m ); virtual void sendSMS( const QSMSMessage& m ); virtual void sendVMNotify( int type, int count, const QList<QVMMessage> &received, const QList<QVMMessage> &deleted, const QString &mailbox ); virtual void sendUSSD( bool cancel, bool response, const QString &content ); @@ -63,8 +65,8 @@ signals: void stateChangedToHangup( int callId ); protected: - virtual QString constructCBMessage(const QString &messageCode, int geographicalScope, const QString &updateNumber, const QString &channel, - const QString &scheme, int language, const QString &numPages, const QString &page, const QString &content); + virtual void constructCBMessage(const QString &messageCode, int geographicalScope, const QString &updateNumber, const QString &channel, + int language, const QString &content); virtual void constructSMSDatagram(int src, int dst, const QString &sender, const QByteArray &data, const QByteArray &contentType); virtual void warning(const QString &title, const QString &message); |