Read/Write EFcfis/EFcphs-cff files
by Jeevaka Badrappan
Hi,
This patch reads and writes the call forwarding unconditional status
from and to the SIM depending on the SIM file availability.
New property needs to be added due to the fact that number won't be
available from the cphs-cff file.
Incase of SIM, EFcphs-cff file holds call forwarding status and it
is represented as a flag. In case of USIM(EFcfis), we have the status
flag and also number.So, adding new property for status and using the
existing VoiceUnconditional with number will work for both SIM and USIM cases.
Other option is to have 2 properties, "VoiceUnconditional" and "Number".
"VoiceUnconditional" will have the status of the call forwarding( "enabled",
"disabled") whereas the "Number" property will have the call forwared number.
offline-online state transitions results in caching the call forwaring status
every time. To avoid this, call forwarding atom is moved to the post sim and
its moved also due to the fact that call forwarding status doesn't change in
roaming.
Regards,
Jeevaka
Jeevaka Badrappan (7):
call-forwarding: Read/Write cfis/cphs-cff
ifx: Move call forwarding to post sim
isigen: Move call forwarding to post sim
plugins/n900: Move call forwarding to post sim
phonesim: Move call forwarding to post sim
doc: Add new property to call forwarding
TODO: Marking the Read/Write EFcfis task as done
TODO | 9 --
doc/call-forwarding-api.txt | 5 +
doc/features.txt | 5 +
plugins/ifx.c | 2 +-
plugins/isigen.c | 2 +-
plugins/n900.c | 2 +-
plugins/phonesim.c | 3 +-
src/call-forwarding.c | 242 ++++++++++++++++++++++++++++++++++++++++++-
8 files changed, 256 insertions(+), 14 deletions(-)
1 day, 11 hours
[RFC] HFP support into oFono and BlueZ
by Gustavo F. Padovan
Hi,
These patches implement the new API for the Audio Gateway in BlueZ. It
follows the last version of the HandsfreeGateway and HandsfreeAgent
Intefaces API.
The first two patches is for BlueZ and the other for oFono. You can
test it with using enable-modem and test-voicecall scripts into the
test dir of oFono.
Feel free to test it and send me your comments. We have some bugs yet.
The audio part is not working yet. We are going to work on pulseaudio
this week to get this done soon.
Regards,
--
Gustavo F. Padovan
ProFUSION embedded systems - http://profusion.mobi
9 years, 10 months
CDMA SMS Handling
by Rajesh.Nagaiah@elektrobit.com
Hi,
There was a discussion about the CDMA SMS handling and CDMA PDUs in the
IRC channel couple of days before. I would like to highlight the
differences between CDMA and GSM PDU and how we should proceed with this
from my understanding. Let me know your opinion.
Even though oFono supports +CMT and +CMTI, if we feed the incoming CDMA
PDUs to the SMS core it wont get decoded correctly, as there is
substantial differences between the GSM and CDMA SMS PDUs as described
in 3GPP2 specification C.S0015-B Short Message Service (SMS) for
Wideband Spread Spectrum Systems
For eg, the incoming PDU example that was mentioned in the IRC
discussion
+CMT: , 40,
00000210020207028CE95DCC65800601FC08150003168D30010610241830608003061010
04044847
40 - Length of the PDU in bytes
00 - Message Type ( 00 - SMS Point-to-Point)
00 - TeleService Identifier Tag (SMS Parameter Indentifier)
02 - TeleService Identifier Length (SMS Parameter Length)
10 - TeleService Identifier Value - First 8 bits
02 - TeleService Identifier Value - Second 8 bits
TeleService Identifier - 0x1002 - CDMA Messaging Teleservice
(CMT-95)
02 - Originating Address Tag
07 - Originating Address Length
02 - Originating Address 1st 8 Bits
8C - Originating Address 2nd 8 Bits
E9 - Originating Address 3rd 8 Bits
5D - Originating Address 4th 8 Bits
CC - Originating Address 5th 8 Bits
65 - Originating Address 6th 8 Bits
80 - Originating Address 7th 8 Bits
Digit Mode - 1 Bit
Number Mode - 1 Bit
Number Type - 0 or 3 bits
Number Plan - 0 or 4 bits
Number Fields - 8 Bits
Number Field occurrence of CHARi
CHARi - 4 or 8 bits ( 4 - in case of DTMF encoding, 8 - incase
of ASCII encoding)
Reserved - 0-7 bits
Lets take the 1st and 2nd 8 bits
02 - 0000 0010 ( Digit Mode bit - 0, Number Mode bit - 0)
8C - 1000 1100
As Digit mode bit is set to 0, Number Plan and Number Type is void
(0 bits) in this case.
So the remaining 6 bits of 1st 8bits and the first 2 bits of 2nd
8bit is Number fields
Number fields - 00 0010 10 - 0000 1010 - 0x0A (10 digits)
As Digit mode bit is set to 0, each address digit here is
represented as 4bit DTMF digit
0x8C 0xE9 0x5D 0xCC 0x65 0X80
1000 1100 1110 1001 0101 1101 1100 1100 0110 0101 1000 0000
10 0011 0011 1010 0101 0111 0111 0011 0001 1001 0110 0000 00
3 3 0 5 7 7 3 1 9 6 Last 6 bits
are reserved bits
Originating Address - 3305773196
06 - Bearer Reply Option Tag
01 - Bearer Reply Option Length
FC - First 6 bits Reply Sequence number and last 2 bits reserved set to
0
1111 1100 - 111111 REPLY_SEQ
00 Reserved
08 - Bearer Data Tag
15 - Bearer Data Length
00 - Message Indentifier Tag ( Bearer Data Sub parameter )
03 - Message Indentifier Length
16 - Message Type 4 bits Message Id 4 Bits
8D - Message Id 8 Bits
30 - Message Id 4 Bits, UDH Header indicator 1 Bit, Reserved 3 Bits
How Message Identifier value 16 8D 30 was formed ?
Message type ( 4 bits ) - 1( 0001 - Deliver)
Message Identifier ( 16 bits ) - 26835( 0x68D3)
Header Indicator (1 bit) - 0 (UDH not present in User Data
Subparameter)
Reserved ( 3bits) - 0 (000)
01 - User Data Tag ( Bearer Data Sub parameter )
06 - User Data Length
10 - Message Encoding 5 bits ( 0001 0000 ( 00010 = 2 -> 7-bit ASCII )) &
Number Fields 3 bits ( 000)
24 - Number Fields 5 Bits + User char field 1's 3 bits ( 0010 0100 )
18 - User char field 1's remaining 5 bits + User char field 2's 3 bits
(0001 1000)
30 - User char field 2's remaining 5 bits + User char field 3's 3 bits
(0011 0000)
60 - User char field 3's remaining 5 bits + User char field 4's 3 bits
(0110 0000)
80 - User char field 4's remaining 5 bits + Reserved 3 Bits (1000 0000)
Number Fields: 000 00100 - 04 (4 Character fields)
User Char [1] - 100 00011 - 0x83
User Char [2] - 000 00110 - 0x06
User Char [3] - 000 01100 - 0x0C
User Char [4] - 000 10000 - 0x10
Hex 0x83 0x06 0x0C 0x10
Octets 1000 0011 0000 0110 0000 1100 0001 0000
Septets 1000 001 10000 01 100000 1 1000001
Character A(0x41) A(0x41) A(0x41) A(0x41)
Message content: AAAA
Message Encoding - 2 (00010 - 5 bits)
Number Fields - 4 (0000 0100 - 8 bits)
User characters - 0x83 0x06 0x0C 0x10 ( 8 bits each)
00010 0000 0100 1000 0011 0000 0110 0000 1100 0001 0000
0001 0000 - 0x10
0010 0100 - 0x24
0001 1000 - 0x18
0011 0000 - 0x30
0110 0000 - 0x60
1000 0000 - 0x80 (Last 3 bits set to 0's(reserved bit) to complete
the octets)
03 - Message Center Time Stamp Tag ( Bearer Data Sub parameter )
06 - Message Center Time Stamp Length
all date and time fields contain two 4-bit BCD numbers giving the
decimal value of the field.
10 - Year (2010)
10 - Month (10 - October)
04 - Day
04 - Hour
48 - Minutes
47 - Seconds
Time Stamp 04:48:47 04/10/2010
Decoded Information:
Message Type: Deliver (Incoming Message)
Teleservice: CMT-95
Message Identifier: 26835
Originating Address: 3305773196
Message content: AAAA
Message Center Time Stamp: 04:48:47 04/10/2010
As from the above decoding example we can see there is substantial
differences between the GSM and CDMA SMS specifications and so the SMS
atom needs many additions and needs to be heavily modified to support
also CDMA SMS handling. Currently the oFono sms file unit handles the
common and the GSM technology aspects of the SMS stack along with the
smsutils. The SMS atom has the GSM specific members, segmentation and
queuing logic. The smsutils mainly takes care of encoding/decoding of
the PDUs, which is GSM specific. As the segmentation and queuing logic
and the interface is common for both GSM and CDMA, we could reuse this
common code and add the CDMA handling into it and create a new
cdmasmsutils unit to support the CDMA SMS specifics, much like the
smsutils does already for GSM.
BR,
Rajesh
10 years
Enabling/disabling the GPS part of a Huawei EM770W
by Florian Mayer (Mayer Electronics)
Hello folks,
is it possible to enable / disable the GPS part of a Huawei EM770W 3G
modem through a DBUS command? It is done with the command AT^WPDGP and
AT^WPEND on the modem (tested it on PCUI port). Or is it possible to
send generic AT commands through DBUS?
Regards
Florian Mayer
11 years, 2 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, 3 months
[PATCH] Enable hs 2330 MBM modem
by Zhigang Li
---
plugins/udev.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/plugins/udev.c b/plugins/udev.c
index 202b225..810049a 100644
--- a/plugins/udev.c
+++ b/plugins/udev.c
@@ -123,6 +123,7 @@ static void add_mbm(struct ofono_modem *modem,
g_str_has_suffix(desc, "Minicard Modem 2") ||
g_str_has_suffix(desc, "Mini-Card Modem") ||
g_str_has_suffix(desc, "Broadband Modem") ||
+ g_str_has_suffix(desc, "Module Modem") ||
g_str_has_suffix(desc, "Broadband USB Modem")) {
devnode = udev_device_get_devnode(udev_device);
if (ofono_modem_get_string(modem, MODEM_DEVICE) == NULL)
@@ -131,16 +132,19 @@ static void add_mbm(struct ofono_modem *modem,
ofono_modem_set_string(modem, DATA_DEVICE, devnode);
} else if (g_str_has_suffix(desc, "Minicard Data Modem") ||
g_str_has_suffix(desc, "Mini-Card Data Modem") ||
+ g_str_has_suffix(desc, "Data Modem") ||
g_str_has_suffix(desc, "Broadband Data Modem")) {
devnode = udev_device_get_devnode(udev_device);
ofono_modem_set_string(modem, DATA_DEVICE, devnode);
} else if (g_str_has_suffix(desc, "Minicard GPS Port") ||
g_str_has_suffix(desc, "Mini-Card GPRS Port") ||
+ g_str_has_suffix(desc, "Module NMEA") ||
g_str_has_suffix(desc, "Broadband GPS Port")) {
devnode = udev_device_get_devnode(udev_device);
ofono_modem_set_string(modem, GPS_DEVICE, devnode);
} else if (g_str_has_suffix(desc, "Minicard Network Adapter") ||
g_str_has_suffix(desc, "Mini-Card Network Adapter") ||
+ g_str_has_suffix(desc, "Module Network Adapter") ||
g_str_has_suffix(desc, "Broadband Network Adapter") ||
g_str_has_suffix(desc, "Minicard NetworkAdapter")) {
devnode = get_property(udev_device, "INTERFACE");
--
1.7.2.3
11 years, 4 months
[PATCH] modem:Add powered watches on modem.
by Guillaume Zajac
---
src/modem.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
src/ofono.h | 7 +++++++
2 files changed, 54 insertions(+), 0 deletions(-)
diff --git a/src/modem.c b/src/modem.c
index 8e243d8..4e026cf 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -77,6 +77,7 @@ struct ofono_modem {
guint timeout;
ofono_bool_t online;
struct ofono_watchlist *online_watches;
+ struct ofono_watchlist *powered_watches;
GHashTable *properties;
struct ofono_sim *sim;
unsigned int sim_watch;
@@ -383,6 +384,22 @@ static void notify_online_watches(struct ofono_modem *modem)
}
}
+static void notify_powered_watches(struct ofono_modem *modem)
+{
+ struct ofono_watchlist_item *item;
+ GSList *l;
+ ofono_modem_powered_notify_func notify;
+
+ if (modem->powered_watches == NULL)
+ return;
+
+ for (l = modem->powered_watches->items; l; l = l->next) {
+ item = l->data;
+ notify = item->notify;
+ notify(modem->powered, item->notify_data);
+ }
+}
+
static void modem_change_state(struct ofono_modem *modem,
enum modem_state new_state)
{
@@ -462,6 +479,30 @@ void __ofono_modem_remove_online_watch(struct ofono_modem *modem,
__ofono_watchlist_remove_item(modem->online_watches, id);
}
+unsigned int __ofono_modem_add_powered_watch(struct ofono_modem *modem,
+ ofono_modem_powered_notify_func notify,
+ void *data, ofono_destroy_func destroy)
+{
+ struct ofono_watchlist_item *item;
+
+ if (modem == NULL || notify == NULL)
+ return 0;
+
+ item = g_new0(struct ofono_watchlist_item, 1);
+
+ item->notify = notify;
+ item->destroy = destroy;
+ item->notify_data = data;
+
+ return __ofono_watchlist_add_item(modem->powered_watches, item);
+}
+
+void __ofono_modem_remove_powered_watch(struct ofono_modem *modem,
+ unsigned int id)
+{
+ __ofono_watchlist_remove_item(modem->powered_watches, id);
+}
+
static void common_online_cb(const struct ofono_error *error, void *data)
{
struct ofono_modem *modem = data;
@@ -723,6 +764,8 @@ static int set_powered(struct ofono_modem *modem, ofono_bool_t powered)
else if (err != -EINPROGRESS)
modem->powered_pending = modem->powered;
+ notify_powered_watches(modem);
+
return err;
}
@@ -1699,6 +1742,7 @@ int ofono_modem_register(struct ofono_modem *modem)
modem->atom_watches = __ofono_watchlist_new(g_free);
modem->online_watches = __ofono_watchlist_new(g_free);
+ modem->powered_watches = __ofono_watchlist_new(g_free);
emit_modem_added(modem);
call_modemwatches(modem, TRUE);
@@ -1732,6 +1776,9 @@ static void modem_unregister(struct ofono_modem *modem)
__ofono_watchlist_free(modem->online_watches);
modem->online_watches = NULL;
+
+ __ofono_watchlist_free(modem->powered_watches);
+ modem->powered_watches = NULL;
modem->sim_watch = 0;
modem->sim_ready_watch = 0;
diff --git a/src/ofono.h b/src/ofono.h
index 6ba0187..82d857f 100644
--- a/src/ofono.h
+++ b/src/ofono.h
@@ -188,6 +188,13 @@ unsigned int __ofono_modem_add_online_watch(struct ofono_modem *modem,
void __ofono_modem_remove_online_watch(struct ofono_modem *modem,
unsigned int id);
+typedef void (*ofono_modem_powered_notify_func)(ofono_bool_t powered, void *data);
+unsigned int __ofono_modem_add_powered_watch(struct ofono_modem *modem,
+ ofono_modem_online_notify_func notify,
+ void *data, ofono_destroy_func destroy);
+void __ofono_modem_remove_powered_watch(struct ofono_modem *modem,
+ unsigned int id);
+
#include <ofono/call-barring.h>
gboolean __ofono_call_barring_is_busy(struct ofono_call_barring *cb);
--
1.7.1
11 years, 4 months
[PATCH] doc: Assisted Satellite Navigation API and Agent API
by Sjur Brændeland
From: Simon Lethbridge <simon.lethbridge(a)stericsson.com>
This patch introduces support for Global Satellite Navigation System (GNSS),
using the AT commands AT+CPOS and +CPOSR as specified 3GPP 27.007.
---
Hi Denis,
2010/11/30 Denis Kenzior <denkenz(a)gmail.com>:
>> +AssistedSatelliteNavigation hierarchy
>What do you think of naming this AssistedNavigation? I think the
>current name might be a bit too long.
See mail previous mail on this topic, I think we'd like to keep
it as is for now.
>> +Methods void SendPositioningControl(string xml_element)
>What do you think of SendPositioningElement?
Fixed,
>> +Methods void PositioningRequest(string xml_element)
>I think that 'Request' will be sufficient. Positioning is already part
>of the agent name.
Fixed,
>> + void AssistanceDataReset()
>I suggest ResetAssistanceData here.
Fixed,
>The only other change I'd make is to mark the entire interface
>'experimental', but I can take care of that as well.
Fixed,
>Otherwise the proposal looks good to me.
Sorry for taking so long before responding on this.
Let us know if you have any issues with this patch.
Regards,
Sjur and Simon.
doc/assisted-sattelite-navigation.txt | 56 +++++++++++++++++++++++++++++++++
1 files changed, 56 insertions(+), 0 deletions(-)
create mode 100644 doc/assisted-sattelite-navigation.txt
diff --git a/doc/assisted-sattelite-navigation.txt b/doc/assisted-sattelite-navigation.txt
new file mode 100644
index 0000000..abacf54
--- /dev/null
+++ b/doc/assisted-sattelite-navigation.txt
@@ -0,0 +1,56 @@
+Assisted Satellite Navigation hierarchy [experimental]
+==========================================================
+
+Service org.ofono
+Interface org.ofono.AssistedSatelliteNavigation
+Object path [variable prefix]/{modem0,modem1,...}
+
+Methods void SendPositioningElement(string xml_element)
+
+ Send an XML element conforming to the XML DTD for <pos>
+ as defined in 3GPP 27.007 Table 8.55-2. This xml is
+ used for transferring data associated with positioning
+ requests received via control plane from the network.
+ This includes assistance data requests and the results
+ of positioning procedures. This method maps directly to
+ the 3GPP 27.007 AT+CPOS command.
+
+ void RegisterPositioningRequestAgent(object path)
+
+ Registers an agent which will be called whenever a
+ CPOSR AT response is received. The Agent must respond
+ to requests using SendPositioningControl.
+
+ void UnregisterPositioningRequestAgent(object path)
+
+ Un-registers the agent.
+
+PositioningRequestAgent hierarchy
+==================================
+
+Service unique name
+Interface org.ofono.PositioningRequestAgent
+Object path freely definable
+
+Methods void Request(string xml_element)
+
+ Receive an XML element conforming to the XML DTD for
+ <pos> in 3GPP 27.007. This xml is used for transferring
+ data associated with positioning requests received, via
+ control plane, from the network. This includes
+ measurement requests and assistance data. This method
+ maps directly to the 3GPP defined +CPOSR unsolicited
+ result code.
+
+ void ResetAssistanceData()
+
+ A request has been received from the network that all
+ assistance data should be reset. This is used for 3gpp
+ performance tests.
+
+ void Release()
+
+ Agent is being released, possibly because of oFono
+ terminating, AssistedSatelliteNavigation interface
+ is being torn down or modem off.
+ No UnregisterAgent call is needed.
--
1.7.0.4
11 years, 4 months
[PATCH] TODO: Add vCard export to SM/ME stores
by Jaakko Kiviluoto
---
TODO | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/TODO b/TODO
index bf2305b..9dcb43f 100644
--- a/TODO
+++ b/TODO
@@ -496,3 +496,14 @@ Miscellaneous
Priority: Low
Complexity: C4
+
+- Enable exporting contact information from vCard data to SM and ME stores.
+ Need to implement a robust vCard parser that can extract at least the
+ fields supported by the existing phonebook module. Functionality should
+ be analoguous to existing import functionality.
+
+ Implements feature request http://bugs.meego.com/show_bug.cgi?id=4476
+
+ Priority: Low
+ Complexity: C1
+ Owner: Jaakko Kiviluoto <jaakko.j.kiviluoto(a)intel.com>
--
1.7.0.4
---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki
Business Identity Code: 0357606 - 4
Domiciled in Helsinki
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, 4 months
[PATCH 0/5 v3] Neighbor Cell Info Atom
by Antti Paila
This series of patches implements an interface for client
applications to fetch the ECID information of neighboring
cells using DBUS. Since the 1st version the DBUS api has
been refactored to use new naming for method and to use
flat data format for the cell information. Also, the
internal datatypes have been optimized. Since the 2nd
version MNC and MCC are converted to strings and CPICH-RSCP
re-typed.
Antti Paila (5):
Cell-info: CellInfo DBUS interface definition
Cell-info: Header file for Neighbor cell info
Cell-info: Atom for obtaining ECID info of cells
Cell-info: New files included in compilation
Cell-info: Documentation
Makefile.am | 8 +-
doc/cell-info.txt | 121 +++++++++++++
include/cell-info.h | 128 ++++++++++++++
include/dbus.h | 1 +
src/cell-info.c | 485 +++++++++++++++++++++++++++++++++++++++++++++++++++
src/ofono.h | 1 +
6 files changed, 741 insertions(+), 3 deletions(-)
create mode 100644 doc/cell-info.txt
create mode 100644 include/cell-info.h
create mode 100644 src/cell-info.c
11 years, 4 months