* [PATCH 1/6] controbase: Remove entries in CBM UI
2012-06-27 15:10 [PATCH 0/6] phonesim: CBS/USSD improvments Philippe Nunes
@ 2012-06-27 15:10 ` Philippe Nunes
2012-06-27 15:10 ` [PATCH 2/6] qcbsmessage: Add bestScheme method in QCBSMessage class Philippe Nunes
` (4 subsequent siblings)
5 siblings, 0 replies; 11+ messages in thread
From: Philippe Nunes @ 2012-06-27 15:10 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 9322 bytes --]
---
src/controlbase.ui | 184 +++++++++++++++++++---------------------------------
1 file changed, 67 insertions(+), 117 deletions(-)
diff --git a/src/controlbase.ui b/src/controlbase.ui
index ce675d2..4eb1355 100644
--- a/src/controlbase.ui
+++ b/src/controlbase.ui
@@ -393,7 +393,17 @@
<property name="spacing">
<number>6</number>
</property>
- <item row="1" column="0">
+ <item row="2" column="0">
+ <widget class="QLabel" name="lblMessageCode">
+ <property name="text">
+ <string>Message C&ode:</string>
+ </property>
+ <property name="buddy">
+ <cstring>leMessageCode</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
<widget class="QLabel" name="lblUpdateNumber">
<property name="text">
<string>&Update Number:</string>
@@ -404,6 +414,33 @@
</widget>
</item>
<item row="1" column="1">
+ <widget class="QComboBox" name="cbGeographicalScope">
+ <property name="currentIndex">
+ <number>3</number>
+ </property>
+ <item>
+ <property name="text">
+ <string>Cell wide(immediate)</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>PLMN wide</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Location Area wide</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Cell wide(norm)</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="3" column="1">
<widget class="QLineEdit" name="leUpdateNumber">
<property name="text">
<string>A</string>
@@ -413,27 +450,27 @@
</property>
</widget>
</item>
- <item row="1" column="2">
- <widget class="QLabel" name="lblNumPages">
+ <item row="4" column="1">
+ <widget class="QLineEdit" name="leChannel">
<property name="text">
- <string>&Number of Pages</string>
+ <string>0032</string>
</property>
- <property name="buddy">
- <cstring>leNumPages</cstring>
+ <property name="maxLength">
+ <number>4</number>
</property>
</widget>
</item>
- <item row="3" column="0">
- <widget class="QLabel" name="lblLanguage">
+ <item row="4" column="0">
+ <widget class="QLabel" name="lblChannel">
<property name="text">
- <string>&Language</string>
+ <string>&Channel</string>
</property>
<property name="buddy">
- <cstring>cbLanguage</cstring>
+ <cstring>leChannel</cstring>
</property>
</widget>
</item>
- <item row="3" column="2">
+ <item row="1" column="0">
<widget class="QLabel" name="lblGeographicalScope">
<property name="text">
<string>&Geographical Scope</string>
@@ -443,17 +480,7 @@
</property>
</widget>
</item>
- <item row="2" column="3">
- <widget class="QLineEdit" name="lePage">
- <property name="text">
- <string>1</string>
- </property>
- <property name="maxLength">
- <number>1</number>
- </property>
- </widget>
- </item>
- <item row="3" column="1">
+ <item row="5" column="1">
<widget class="QComboBox" name="cbLanguage">
<property name="currentIndex">
<number>1</number>
@@ -525,50 +552,17 @@
</item>
</widget>
</item>
- <item row="0" column="2">
- <widget class="QLabel" name="lblScheme">
- <property name="text">
- <string>&Scheme</string>
- </property>
- <property name="buddy">
- <cstring>leScheme</cstring>
- </property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="lblChannel">
- <property name="text">
- <string>&Channel</string>
- </property>
- <property name="buddy">
- <cstring>leChannel</cstring>
- </property>
- </widget>
- </item>
- <item row="2" column="2">
- <widget class="QLabel" name="lblPage">
+ <item row="5" column="0">
+ <widget class="QLabel" name="lblLanguage">
<property name="text">
- <string>&Page</string>
+ <string>&Language</string>
</property>
<property name="buddy">
- <cstring>lePage</cstring>
- </property>
- </widget>
- </item>
- <item row="0" column="3">
- <widget class="QLineEdit" name="leScheme">
- <property name="text">
- <string>4</string>
- </property>
- <property name="maxLength">
- <number>1</number>
- </property>
- <property name="readOnly">
- <bool>true</bool>
+ <cstring>cbLanguage</cstring>
</property>
</widget>
</item>
- <item row="0" column="1">
+ <item row="2" column="1">
<widget class="QLineEdit" name="leMessageCode">
<property name="text">
<string>012</string>
@@ -578,62 +572,21 @@
</property>
</widget>
</item>
- <item row="2" column="1">
- <widget class="QLineEdit" name="leChannel">
- <property name="text">
- <string>0032</string>
+ <item row="1" column="2" rowspan="5">
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
</property>
- <property name="maxLength">
- <number>4</number>
+ <property name="sizeType">
+ <enum>QSizePolicy::Ignored</enum>
</property>
- </widget>
- </item>
- <item row="1" column="3">
- <widget class="QLineEdit" name="leNumPages">
- <property name="text">
- <string>1</string>
- </property>
- <property name="maxLength">
- <number>1</number>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>290</width>
+ <height>150</height>
+ </size>
</property>
- </widget>
- </item>
- <item row="3" column="3">
- <widget class="QComboBox" name="cbGeographicalScope">
- <property name="currentIndex">
- <number>3</number>
- </property>
- <item>
- <property name="text">
- <string>Cell wide(immediate)</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>PLMN wide</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Location Area wide</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Cell wide(norm)</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="0" column="0">
- <widget class="QLabel" name="lblMessageCode">
- <property name="text">
- <string>Message C&ode:</string>
- </property>
- <property name="buddy">
- <cstring>leMessageCode</cstring>
- </property>
- </widget>
+ </spacer>
</item>
</layout>
</widget>
@@ -1575,9 +1528,7 @@
<tabstop>pbSendSMSDatagram</tabstop>
<tabstop>atViewer</tabstop>
<tabstop>openSpecButton</tabstop>
- <tabstop>leScheme</tabstop>
- <tabstop>leNumPages</tabstop>
- <tabstop>lePage</tabstop>
+ <tabstop>teContent</tabstop>
<tabstop>cbGeographicalScope</tabstop>
<tabstop>pbSelectOperator</tabstop>
<tabstop>hsBatteryCharge</tabstop>
@@ -1591,7 +1542,6 @@
<tabstop>leLAC</tabstop>
<tabstop>pbSendCellBroadcast</tabstop>
<tabstop>leCellID</tabstop>
- <tabstop>teContent</tabstop>
<tabstop>tabWidget</tabstop>
<tabstop>leChannel</tabstop>
<tabstop>cbLanguage</tabstop>
--
1.7.9.5
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH 3/6] hardwaremanipulator: Use the best scheme for CBS message
2012-06-27 15:10 [PATCH 0/6] phonesim: CBS/USSD improvments Philippe Nunes
2012-06-27 15:10 ` [PATCH 1/6] controbase: Remove entries in CBM UI Philippe Nunes
2012-06-27 15:10 ` [PATCH 2/6] qcbsmessage: Add bestScheme method in QCBSMessage class Philippe Nunes
@ 2012-06-27 15:10 ` Philippe Nunes
2012-06-24 22:12 ` Denis Kenzior
2012-06-27 15:10 ` [PATCH 4/6] hardwaremanipulator: Add multi-page support " Philippe Nunes
` (2 subsequent siblings)
5 siblings, 1 reply; 11+ messages in thread
From: Philippe Nunes @ 2012-06-27 15:10 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 6982 bytes --]
---
src/control.cpp | 9 +++----
src/hardwaremanipulator.cpp | 61 ++++++++++++++++++++++---------------------
src/hardwaremanipulator.h | 6 +++--
3 files changed, 38 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..3d0f54a 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,45 @@ 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.setPage(1);
m.setText(content);
+ m.setDataCodingScheme(m.bestScheme());
+
+ if ( m.dataCodingScheme() == QSMS_DefaultAlphabet &&
+ content.length() > (15*93)) {
+ warning(tr("Text too long"),
+ tr("The maximum number of pages (15) "
+ "is reached - text is truncated"));
+ m.setText(content.mid( 0, 15*93 ));
+ } else if (content.length() > (15*40)) {
+ warning(tr("Text too long"),
+ tr("The maximum number of pages (15) "
+ "is reached - text is truncated"));
+ m.setText(content.mid( 0, 15*40 ));
+ }
+
+ uint nbPages, spaceLeftInLast;
+ m.computeSize( nbPages, spaceLeftInLast );
+ m.setNumPages(nbPages);
- 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);
--
1.7.9.5
^ permalink raw reply related [flat|nested] 11+ messages in thread