[PATCH v2 0/1] Fix issue in ifx nitz time reporting
by Jeevaka Badrappan
Hi,
CTZDST will be reported only if the network daylight saving time is
received from network as part of the MM information message. Due to this,
time was not reported to the core.
Fix is to schedule the timer once the CTZV is received. This way, time
information will be reported always and also only once as expected.
Regards,
Jeevaka
Jeevaka Badrappan (1):
atmodem: fix issue in time reporting with ifx
drivers/atmodem/network-registration.c | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
11 years, 6 months
[PATCH] call-forwarding: fix for showing call forwarding states
by Jussi Kangas
---
Hi,
Here is a fix for call forwarding issue Jarko found a while back. ( TODO
issue "Call forwarding state handling change" and mailing list
conversation "Ofono CF states not always correct" ).
Br,
Jussi
src/call-forwarding.c | 78 ++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 70 insertions(+), 8 deletions(-)
diff --git a/src/call-forwarding.c b/src/call-forwarding.c
index d13f990..6f81296 100644
--- a/src/call-forwarding.c
+++ b/src/call-forwarding.c
@@ -514,10 +514,24 @@ static DBusMessage *cf_get_properties_reply(DBusMessage *msg,
OFONO_PROPERTIES_ARRAY_SIGNATURE,
&dict);
- for (i = 0; i < 4; i++)
- property_append_cf_conditions(&dict, cf->cf_conditions[i],
+ if (cf->cf_conditions[CALL_FORWARDING_TYPE_UNCONDITIONAL] == 0) {
+ DBG("Append all");
+ for (i = 0; i < 4; i++)
+ property_append_cf_conditions(&dict,
+ cf->cf_conditions[i],
+ BEARER_CLASS_VOICE,
+ cf_type_lut[i]);
+ } else {
+ DBG("append only unconditional");
+ property_append_cf_conditions(&dict,
+ cf->cf_conditions[CALL_FORWARDING_TYPE_UNCONDITIONAL],
+ BEARER_CLASS_VOICE,
+ cf_type_lut[0]);
+ for (i = 1; i < 4; i++)
+ property_append_cf_conditions(&dict, NULL,
BEARER_CLASS_VOICE,
cf_type_lut[i]);
+ }
if ((cf->flags & CALL_FORWARDING_FLAG_CPHS_CFF) ||
cf->cfis_record_id > 0)
@@ -682,8 +696,23 @@ static void set_query_cf_callback(const struct ofono_error *error, int total,
static void set_query_next_cf_cond(struct ofono_call_forwarding *cf)
{
- cf->driver->query(cf, cf->query_next, BEARER_CLASS_DEFAULT,
- set_query_cf_callback, cf);
+ DBusMessage *reply;
+
+ while (cf->query_next != CALL_FORWARDING_TYPE_NOT_REACHABLE) {
+ if (!cf->cf_conditions[cf->query_next]) {
+ cf->driver->query(cf, cf->query_next,
+ BEARER_CLASS_DEFAULT,
+ set_query_cf_callback, cf);
+ return;
+ } else {
+ cf->query_next++;
+ if (cf->query_next == cf->query_end)
+ break;
+ }
+ }
+
+ reply = dbus_message_new_method_return(cf->pending);
+ __ofono_dbus_pending_reply(&cf->pending, reply);
}
static void set_property_callback(const struct ofono_error *error, void *data)
@@ -836,6 +865,7 @@ static void disable_conditional_callback(const struct ofono_error *error,
static void disable_all_callback(const struct ofono_error *error, void *data)
{
struct ofono_call_forwarding *cf = data;
+ int i;
if (error->type != OFONO_ERROR_TYPE_NO_ERROR) {
DBG("Error occurred during erasure of all");
@@ -848,6 +878,10 @@ static void disable_all_callback(const struct ofono_error *error, void *data)
/* Query all cf types */
cf->query_next = CALL_FORWARDING_TYPE_UNCONDITIONAL;
cf->query_end = CALL_FORWARDING_TYPE_NOT_REACHABLE;
+
+ for (i = 0; i < CALL_FORWARDING_TYPE_ALL; i++)
+ cf->cf_conditions[i] = 0;
+
set_query_next_cf_cond(cf);
}
@@ -1014,8 +1048,25 @@ static void ss_set_query_cf_callback(const struct ofono_error *error, int total,
static void ss_set_query_next_cf_cond(struct ofono_call_forwarding *cf)
{
- cf->driver->query(cf, cf->query_next, BEARER_CLASS_DEFAULT,
- ss_set_query_cf_callback, cf);
+ DBusMessage *reply;
+
+ while (cf->query_next != CALL_FORWARDING_TYPE_NOT_REACHABLE) {
+ if (!cf->cf_conditions[cf->query_next]) {
+ cf->driver->query(cf, cf->query_next,
+ BEARER_CLASS_DEFAULT,
+ ss_set_query_cf_callback, cf);
+ return;
+ } else {
+ cf->query_next++;
+ if (cf->query_next == cf->query_end)
+ break;
+ }
+ }
+
+ reply = cf_ss_control_reply(cf, cf->ss_req);
+ __ofono_dbus_pending_reply(&cf->pending, reply);
+ g_free(cf->ss_req);
+ cf->ss_req = NULL;
}
static void cf_ss_control_callback(const struct ofono_error *error, void *data)
@@ -1032,6 +1083,11 @@ static void cf_ss_control_callback(const struct ofono_error *error, void *data)
return;
}
+ if (cf->ss_req) {
+ if (cf->ss_req->ss_type == SS_CONTROL_TYPE_ERASURE)
+ cf->cf_conditions[cf->ss_req->cf_type] = 0;
+ }
+
ss_set_query_next_cf_cond(cf);
}
@@ -1180,8 +1236,14 @@ static gboolean cf_ss_control(int type, const char *sc,
cf->query_end = CALL_FORWARDING_TYPE_NOT_REACHABLE;
break;
case CALL_FORWARDING_TYPE_ALL_CONDITIONAL:
- cf->query_next = CALL_FORWARDING_TYPE_BUSY;
- cf->query_end = CALL_FORWARDING_TYPE_NOT_REACHABLE;
+ case CALL_FORWARDING_TYPE_UNCONDITIONAL:
+ if (type == SS_CONTROL_TYPE_REGISTRATION) {
+ cf->query_next = cf->ss_req->cf_type;
+ cf->query_end = cf->ss_req->cf_type;
+ } else {
+ cf->query_next = cf->ss_req->cf_type;
+ cf->query_end = CALL_FORWARDING_TYPE_NOT_REACHABLE;
+ }
break;
default:
cf->query_next = cf->ss_req->cf_type;
--
1.7.1
11 years, 6 months
[PATCH] Fix a memory leak reported by cppcheck.
by Bertrand Aygon
---
src/smsutil.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/src/smsutil.c b/src/smsutil.c
index 5524932..e781399 100644
--- a/src/smsutil.c
+++ b/src/smsutil.c
@@ -3344,7 +3344,7 @@ void sms_tx_backup_free(const char *imsi, unsigned long id,
len = scandir(path, &entries, NULL, versionsort);
if (len < 0)
- return;
+ goto nodir_exit;
/* skip '..' and '.' entries */
while (len-- > 2) {
@@ -3362,6 +3362,8 @@ void sms_tx_backup_free(const char *imsi, unsigned long id,
g_free(entries);
rmdir(path);
+
+nodir_exit:
g_free(path);
}
--
1.7.1
---------------------------------------------------------------------
Intel Corporation SAS (French simplified joint stock company)
Registered headquarters: "Les Montalets"- 2, rue de Paris,
92196 Meudon Cedex, France
Registration Number: 302 456 199 R.C.S. NANTERRE
Capital: 4,572,000 Euros
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
11 years, 6 months
[PATCH 0/1] Fix issue in ifx nitz time reporting
by Jeevaka Badrappan
Hi,
CTZDST will be reported only if the network daylight saving time is
received from network as part of the MM information message. Due to this,
time was not reported to the core.
Fix is to schedule the timer once the CTZV is received. This way, time
information will be reported always and also only once as expected.
Regards,
Jeevaka
Jeevaka Badrappan (1):
atmodem: fix issue in time reporting with ifx
drivers/atmodem/network-registration.c | 25 +++++++++++++++++++++++--
1 files changed, 23 insertions(+), 2 deletions(-)
11 years, 6 months
[PATCH 00/12] doc: Add AT commands list to be supported in emulator
by Olivier Guiter
Hi,
These patches only add a list of AT commands that should be added in
the emulator. This list is not only related to bluetooth stuff.
Olivier Guiter (12):
doc: fix typo and incorrect line length
doc: Add BT HFP AT commands list
doc: Add AT command reference mark
doc: Add AT commands for Call Management
doc:Add AT commands for GPRS
doc:Add AT commands for Network support
doc: AT commands for supplementary services
doc: AT commands for SMS
doc: AT commands for device management
doc: AT commands for SIM
doc: Add AT command for debugging purpose
doc: AT commands for Location based services
doc/dialup-command-set.txt | 228 +++++++++++++++++++++++++++++++++++++-------
1 files changed, 194 insertions(+), 34 deletions(-)
11 years, 6 months
[PATCH 00/12] basic E911 support
by Jarko Poutiainen
Hi,
This is second attempt to provide implementation for basic E911 support.
Br,
Jarko
Jarko Poutiainen (12):
dbus: add gnss interface definition
include: add gnss.h file
src: add atom type for gnss
src: add gnss atom and agent implementation
gatchat:introduce send for +CPOS
gatchat:new hint to handle +CPOS
gatchat: implementation for +CPOS send
gatchat: fix gatsyntax to support +CPOS
atmodem: add gnss driver
ste: add support for gnss
ofono.conf: add positioning agent interface
test: add test-gnss
Makefile.am | 11 +-
drivers/atmodem/atmodem.c | 2 +
drivers/atmodem/atmodem.h | 3 +
drivers/atmodem/gnss.c | 279 +++++++++++++++++++++++++++++++++++
gatchat/gatchat.c | 13 ++
gatchat/gatchat.h | 8 +
gatchat/gatsyntax.c | 19 +++
gatchat/gatsyntax.h | 3 +-
include/dbus.h | 2 +
include/gnss.h | 76 ++++++++++
plugins/ste.c | 8 +-
src/gnss.c | 357 +++++++++++++++++++++++++++++++++++++++++++++
src/gnssagent.c | 152 +++++++++++++++++++
src/gnssagent.h | 40 +++++
src/ofono.conf | 1 +
src/ofono.h | 2 +
test/test-gnss | 91 ++++++++++++
17 files changed, 1060 insertions(+), 7 deletions(-)
create mode 100644 drivers/atmodem/gnss.c
create mode 100644 include/gnss.h
create mode 100644 src/gnss.c
create mode 100644 src/gnssagent.c
create mode 100644 src/gnssagent.h
create mode 100755 test/test-gnss
11 years, 6 months
[PATCH 0/4] HFP: add call, callsetup indicators and +COPS support
by Frédéric Danis
AT+COPS support needs to be in emulator as HFP plugin should answer requests
even when oFono is not registered on network.
Frédéric Danis (4):
emulator: add defines for call and callsetup indicators
emulator: add call and callsetup indicators
emulator: add API to set network mode and name
emulator: add +COPS support
include/emulator.h | 13 +++++++
src/emulator.c | 75 +++++++++++++++++++++++++++++++++++++++++++
src/network.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++----
src/voicecall.c | 86 +++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 257 insertions(+), 7 deletions(-)
11 years, 6 months
[PATCH] phonesim: add support for +CPOSR unsolicited code
by Paavo Leinonen
Enables positioning XML sending from PhoneSIM
---
This patch is related to Jarko's GNSS patch. Patch will enable GNSS
testing with PhoneSIM.
src/control.cpp | 32 ++++++++++++++++++++++++
src/control.h | 2 +
src/controlbase.ui | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++-
src/default.xml | 49 ++++++++++++++++++++++++++++++++++++-
4 files changed, 149 insertions(+), 2 deletions(-)
diff --git a/src/control.cpp b/src/control.cpp
index 34c109a..279bade 100644
--- a/src/control.cpp
+++ b/src/control.cpp
@@ -85,6 +85,8 @@ ControlWidget::ControlWidget(const QString &ruleFile, Control *parent)
connect(ui->pbStart, SIGNAL(clicked()), this, SLOT(simAppStart()));
connect(ui->pbAbort, SIGNAL(clicked()), this, SLOT(simAppAbort()));
connect(ui->pbReset, SIGNAL(clicked()), this, SLOT(modemSilentReset()));
+ connect(ui->pbSendGNSSData, SIGNAL(clicked()), this, SLOT(sendGNSSData()));
+ connect(ui->pbGNSSDefault, SIGNAL(clicked()), this, SLOT(setDefaultGNSSData()));
QStringList headers;
headers << "Sender" << "Priority" << "Notification Status";
@@ -222,6 +224,33 @@ void ControlWidget::sendSMSMessage()
p->constructSMSMessage(ui->leSMSClass->text().toInt(), ui->leMessageSender->text(), ui->leSMSServiceCenter->text(), ui->teSMSText->toPlainText());
}
+void ControlWidget::setDefaultGNSSData()
+{
+ ui->teGNSStext->clear();
+
+ ui->teGNSStext->append("<?xml version=\"1.0\" ?>");
+ ui->teGNSStext->append("<pos>");
+ ui->teGNSStext->append(" <pos_err>");
+ ui->teGNSStext->append(" <err_reason literal=\"not_enough_gps_satellites\" />");
+ ui->teGNSStext->append(" </pos_err>");
+ ui->teGNSStext->append("</pos>");
+}
+
+void ControlWidget::sendGNSSData()
+{
+ QStringList xml = ui->teGNSStext->toPlainText().split("\n");
+
+ foreach ( QString line, xml )
+ {
+ if (!line.isEmpty()) {
+ QString cposr = "+CPOSR: " + line;
+
+ emit unsolicitedCommand(cposr);
+ handleFromData( cposr );
+ }
+ }
+}
+
void ControlWidget::sendMGD()
{
emit command("AT+CMGD=1");
@@ -505,6 +534,9 @@ Script::Script(QObject *obj, Ui_ControlBase *ui) : QDBusAbstractAdaptor(obj)
QScriptValue qsTab6 = engine.newQObject(ui->tab_6);
engine.globalObject().setProperty("tabSIM", qsTab6);
+
+ QScriptValue qsTab8 = engine.newQObject(ui->tab_8);
+ engine.globalObject().setProperty("tabPosition", qsTab8);
}
void Script::SetPath(const QString &path, const QDBusMessage &msg)
diff --git a/src/control.h b/src/control.h
index 2c14863..eac4288 100644
--- a/src/control.h
+++ b/src/control.h
@@ -95,6 +95,8 @@ private slots:
void simAppStart();
void simAppAbort();
void modemSilentReset();
+ void sendGNSSData();
+ void setDefaultGNSSData();
signals:
void unsolicitedCommand(const QString &);
diff --git a/src/controlbase.ui b/src/controlbase.ui
index 36fe3cd..11943ed 100644
--- a/src/controlbase.ui
+++ b/src/controlbase.ui
@@ -818,7 +818,13 @@
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html></string>
+<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;">
+<tr>
+<td style="border: none;">
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
+<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html></string>
</property>
</widget>
</item>
@@ -1349,6 +1355,66 @@ p, li { white-space: pre-wrap; }
</layout>
</widget>
</widget>
+ <widget class="QWidget" name="tab_8">
+ <attribute name="title">
+ <string>Positioning</string>
+ </attribute>
+ <widget class="QLabel" name="lbGNSSdata">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>10</y>
+ <width>271</width>
+ <height>31</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Positioning Reporting XML Data (+CPOSR)</string>
+ </property>
+ </widget>
+ <widget class="QTextEdit" name="teGNSStext">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>40</y>
+ <width>601</width>
+ <height>311</height>
+ </rect>
+ </property>
+ <property name="lineWrapMode">
+ <enum>QTextEdit::NoWrap</enum>
+ </property>
+ <property name="acceptRichText">
+ <bool>false</bool>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="pbSendGNSSData">
+ <property name="geometry">
+ <rect>
+ <x>10</x>
+ <y>360</y>
+ <width>80</width>
+ <height>26</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>SendData</string>
+ </property>
+ </widget>
+ <widget class="QPushButton" name="pbGNSSDefault">
+ <property name="geometry">
+ <rect>
+ <x>100</x>
+ <y>360</y>
+ <width>80</width>
+ <height>26</height>
+ </rect>
+ </property>
+ <property name="text">
+ <string>Default</string>
+ </property>
+ </widget>
+ </widget>
</widget>
</item>
<item>
diff --git a/src/default.xml b/src/default.xml
index 00b4381..4d4b1a1 100644
--- a/src/default.xml
+++ b/src/default.xml
@@ -303,6 +303,9 @@
<!-- TTY (hearing impared) state -->
<set name="PTTY" value="1" />
+
+ <!-- Positioning reporting state -->
+ <set name="CPOSR" value="0" />
<!-- Time -->
<!-- Enable for testing
@@ -310,7 +313,6 @@
<unsolicited delay="3000" once="true">*TTZ: 2, "Cingluar", 0</unsolicited>
-->
-
<!-- GSM 07.07: General commands -->
<chat>
@@ -2993,6 +2995,49 @@
<response>ERROR</response>
</chat>
+<!-- Positioning related commands -->
+
+<chat>
+ <!-- Query if CPOSR is supported -->
+ <command>AT+CPOSR=?</command>
+ <response>OK</response>
+</chat>
+
+<chat>
+ <!-- Set unsolicited position reporting -->
+ <command>AT+CPOSR=*</command>
+ <response>OK</response>
+ <set name="CPOSR" value="*"/>
+</chat>
+
+<chat>
+ <!-- Read unsolicited position reporting state -->
+ <command>AT+CPOSR?</command>
+ <response>+CPOSR: ${CPOSR}\n\nOK</response>
+</chat>
+
+<chat>
+ <!-- Query if CPOS supported -->
+ <command>AT+CPOS=?</command>
+ <response>OK</response>
+</chat>
+
+<chat>
+ <!-- Send positioning element -->
+ <command>AT+CPOS</command>
+<!-- <response eol="false">> </response> -->
+ <response eol="false"></response>
+ <switch name="cposread"/>
+</chat>
+
+<state name="cposread">
+ <chat>
+ <command wildcard="true"></command>
+ <response>OK</response>
+ <switch name="default"/>
+ </chat>
+</state>
+
<!-- Modem compatibility commands for phones that support data services -->
<chat>
@@ -3200,6 +3245,8 @@
+CPBR
+CPBF
+CPBW
++CPOS
++CPOSR
+CMEE
+CMGF
+CMGS
--
1.7.1
11 years, 6 months
Adding Features
by Rishi Kumar
Hi,
I have a simple question. How easy it is to add a new feature into
oFono say something like video telephony ???
Regards,
Rishi
11 years, 6 months
[PATCH 0/7] Add CDMA Connection Manager support
by christian.lam@nokia.com
From: Christian Lam <christian.lam(a)nokia.com>
This series of patches provides the support for the CDMA Connection
Manager, cdma-connman, atom. This includes Mobile Originated connection
and disconnection features of Packet Data Service over CDMA
(1xRTT and 1xEV-DO) systems. This implementation do not yet handle the
CDMA Network Registration which is future work.
These patches have been tested against the Nokia 7705 CDMA device in a
tethered mode.
Limitations
-----------
The Nokia 7705 device does not support an AT interface for reporting request
responses, such as the remote/network disconnect reasons, so these are
currently untested.
Christian Lam (7):
dbus: add CDMA Connection Manager interface
cdma-connman: add CDMA Connection Manager support
src: add CDMA Connection Manager support
nokiacdma: add CDMA Connection Manager support
cdmamodem: add CDMA Connection Manager support
test: add CDMA Connection Manager support scripts
test: add Settings dict parsing for CDMA ConnMan
Makefile.am | 9 +-
drivers/cdmamodem/cdmamodem.c | 4 +-
drivers/cdmamodem/cdmamodem.h | 4 +-
drivers/cdmamodem/connman.c | 283 ++++++++++++++++++++
include/cdma-connman.h | 79 ++++++
include/dbus.h | 1 +
plugins/nokiacdma.c | 4 +
src/cdma-connman.c | 571 +++++++++++++++++++++++++++++++++++++++++
src/ofono.h | 2 +
test/disable-cdma-connman | 20 ++
test/enable-cdma-connman | 20 ++
test/list-modems | 10 +
12 files changed, 1002 insertions(+), 5 deletions(-)
create mode 100644 drivers/cdmamodem/connman.c
create mode 100644 include/cdma-connman.h
create mode 100644 src/cdma-connman.c
create mode 100755 test/disable-cdma-connman
create mode 100755 test/enable-cdma-connman
11 years, 6 months