---
 src/control.cpp             |    6 ++----
 src/hardwaremanipulator.cpp |   28 +++++++++++++++-------------
 src/hardwaremanipulator.h   |    6 ++++--
 3 files changed, 21 insertions(+), 19 deletions(-)

diff --git a/src/control.cpp b/src/control.cpp
index 27910c2..89dd294 100644
--- a/src/control.cpp
+++ b/src/control.cpp
@@ -329,12 +329,10 @@ 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(),
+    
p->constructCBMessage(ui->leMessageCode->text(),ui->cbGeographicalScope->currentIndex(),
+                       
ui->leUpdateNumber->text(),ui->leChannel->text(),ui->cbScheme->currentIndex(),
                        
ui->cbLanguage->currentIndex(),ui->leNumPages->text(),ui->lePage->text(),
                        ui->teContent->toPlainText());
-
-    emit unsolicitedCommand(QString("+CBM: 
")+QString::number(pdu.length()/2)+'\r'+'\n'+ pdu);
 }
 
 void ControlWidget::sendSMSMessage()
diff --git a/src/hardwaremanipulator.cpp b/src/hardwaremanipulator.cpp
index 909ce2a..c19b507 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 scheme, int language, const QString &numPages, 
const QString &page, const QString &content)
 {
 
     bool ok;
@@ -71,7 +71,7 @@ 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;
     }
 
 
@@ -82,7 +82,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,14 +91,9 @@ 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);
@@ -106,7 +101,7 @@ QString HardwareManipulator::constructCBMessage(const 
QString &messageCode, int
         warning(tr("Invalid number of pages,"),
                 tr("Number of pages  must be 1 hex digit long "
                    "and no larger than F"));
-        return "";
+        return;
     }
 
     uint pag = convertString(page, NIBBLE_MAX,ONE_CHAR,HEX_BASE,&ok);
@@ -114,7 +109,7 @@ QString HardwareManipulator::constructCBMessage(const 
QString &messageCode, int
         warning(tr("Invalid page number,"),
                 tr("Page number  must be 1 hex digit long "
                    "and no larger than F"));
-        return "";
+        return;
     }
 
     QCBSMessage m;
@@ -123,11 +118,18 @@ QString HardwareManipulator::constructCBMessage(const 
QString &messageCode, int
     m.setUpdateNumber(un);
     m.setChannel(ch);
     m.setLanguage(lang);
+    m.setDataCodingScheme(scheme == 0 ? QSMS_DefaultAlphabet : 
QSMS_UCS2Alphabet);
     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..75e0a94 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 scheme, int language, const QString &numPages, const QString &page, 
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);
-- 
1.7.9.5

_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to