* [RfC][PATCH 1/3] stk: API for SMS Point-to-Point download to UICC
@ 2010-11-07 17:42 Andrzej Zaborowski
2010-11-07 17:42 ` [PATCH 2/3] sms: Handle "USIM Download" SMS type Andrzej Zaborowski
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Andrzej Zaborowski @ 2010-11-07 17:42 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 2664 bytes --]
The callback returns the TP-User-Data element content of the RP-ACK or
RP-ERROR message, returned by the UICC.
---
src/ofono.h | 8 ++++++++
src/stk.c | 39 +++++++++++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+), 0 deletions(-)
diff --git a/src/ofono.h b/src/ofono.h
index ab6ecd2..e5b4acb 100644
--- a/src/ofono.h
+++ b/src/ofono.h
@@ -283,9 +283,17 @@ unsigned short __ofono_sms_get_next_ref(struct ofono_sms *sms);
#include <ofono/sim.h>
#include <ofono/stk.h>
+typedef void (*__ofono_sms_sim_download_cb_t)(ofono_bool_t ok,
+ const unsigned char *tp_ud,
+ int len, void *data);
+
struct cbs;
void __ofono_cbs_sim_download(struct ofono_stk *stk, const struct cbs *msg);
+struct sms;
+int __ofono_sms_sim_download(struct ofono_stk *stk, const struct sms *msg,
+ __ofono_sms_sim_download_cb_t cb, void *data);
+
#include <ofono/ssn.h>
typedef void (*ofono_ssn_mo_notify_cb)(int index, void *user);
diff --git a/src/stk.c b/src/stk.c
index 230c923..18beee6 100644
--- a/src/stk.c
+++ b/src/stk.c
@@ -75,6 +75,9 @@ struct ofono_stk {
struct stk_icon_id idle_mode_icon;
struct timeval get_inkey_start_ts;
int dtmf_id;
+
+ __ofono_sms_sim_download_cb_t sms_pp_cb;
+ void *sms_pp_userdata;
};
struct envelope_op {
@@ -257,6 +260,42 @@ void __ofono_cbs_sim_download(struct ofono_stk *stk, const struct cbs *msg)
stk_cbs_download_cb(stk, FALSE, NULL, -1);
}
+static void stk_sms_download_cb(struct ofono_stk *stk, gboolean ok,
+ const unsigned char *data, int len)
+{
+ DBG("SMS-PP download to UICC reported %s", ok ? "success" : "error");
+
+ if (stk->sms_pp_cb)
+ stk->sms_pp_cb(ok, data, len, stk->sms_pp_userdata);
+}
+
+int __ofono_sms_sim_download(struct ofono_stk *stk, const struct sms *msg,
+ __ofono_sms_sim_download_cb_t cb, void *data)
+{
+ struct stk_envelope e;
+
+ if (msg->type != SMS_TYPE_DELIVER)
+ return -EINVAL;
+
+ DBG("");
+
+ memset(&e, 0, sizeof(e));
+
+ e.type = STK_ENVELOPE_TYPE_SMS_PP_DOWNLOAD;
+ e.src = STK_DEVICE_IDENTITY_TYPE_NETWORK;
+
+ e.sms_pp_download.address.number = (char *) msg->sc_addr.address;
+ e.sms_pp_download.address.ton_npi = msg->sc_addr.numbering_plan |
+ (msg->sc_addr.number_type << 4);
+ memcpy(&e.sms_pp_download.message, &msg->deliver, sizeof(msg->deliver));
+
+ stk->sms_pp_cb = cb;
+ stk->sms_pp_userdata = data;
+
+ return stk_send_envelope(stk, &e, stk_sms_download_cb,
+ ENVELOPE_RETRIES_DEFAULT);
+}
+
static char *dbus_apply_text_attributes(const char *text,
const struct stk_text_attribute *attr)
{
--
1.7.1.86.g0e460.dirty
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/3] sms: Handle "USIM Download" SMS type.
2010-11-07 17:42 [RfC][PATCH 1/3] stk: API for SMS Point-to-Point download to UICC Andrzej Zaborowski
@ 2010-11-07 17:42 ` Andrzej Zaborowski
2010-11-08 19:47 ` Denis Kenzior
2010-11-07 17:42 ` [PATCH 3/3] Update TODO Andrzej Zaborowski
2010-11-08 19:47 ` [RfC][PATCH 1/3] stk: API for SMS Point-to-Point download to UICC Denis Kenzior
2 siblings, 1 reply; 6+ messages in thread
From: Andrzej Zaborowski @ 2010-11-07 17:42 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1361 bytes --]
---
src/sms.c | 21 ++++++++++++++++-----
1 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/src/sms.c b/src/sms.c
index 456dda9..eba4564 100644
--- a/src/sms.c
+++ b/src/sms.c
@@ -1415,6 +1415,8 @@ static inline gboolean handle_mwi(struct ofono_sms *sms, struct sms *s)
void ofono_sms_deliver_notify(struct ofono_sms *sms, unsigned char *pdu,
int len, int tpdu_len)
{
+ struct ofono_modem *modem = __ofono_atom_get_modem(sms->atom);
+ struct ofono_atom *stk_atom;
struct sms s;
enum sms_class cls;
@@ -1479,13 +1481,22 @@ void ofono_sms_deliver_notify(struct ofono_sms *sms, unsigned char *pdu,
break;
case SMS_PID_TYPE_USIM_DOWNLOAD:
case SMS_PID_TYPE_ANSI136:
- if (cls == SMS_CLASS_2) {
- ofono_error("(U)SIM Download messages not supported");
+ /* If not Class 2, handle in a "normal" way */
+ if (cls != SMS_CLASS_2)
+ break;
+
+ stk_atom = __ofono_modem_find_atom(modem, OFONO_ATOM_TYPE_STK);
+
+ if (!stk_atom)
return;
- }
- /* Otherwise handle in a "normal" way */
- break;
+ __ofono_sms_sim_download(__ofono_atom_get_data(stk_atom),
+ &s, NULL, sms);
+
+ /* Passing the USIM response back to network is not
+ * currently support */
+ /* TODO: store in EFsms if not handled */
+ return;
default:
break;
}
--
1.7.1.86.g0e460.dirty
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/3] Update TODO.
2010-11-07 17:42 [RfC][PATCH 1/3] stk: API for SMS Point-to-Point download to UICC Andrzej Zaborowski
2010-11-07 17:42 ` [PATCH 2/3] sms: Handle "USIM Download" SMS type Andrzej Zaborowski
@ 2010-11-07 17:42 ` Andrzej Zaborowski
2010-11-08 19:49 ` Denis Kenzior
2010-11-08 19:47 ` [RfC][PATCH 1/3] stk: API for SMS Point-to-Point download to UICC Denis Kenzior
2 siblings, 1 reply; 6+ messages in thread
From: Andrzej Zaborowski @ 2010-11-07 17:42 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1648 bytes --]
---
TODO | 22 +++++++++++++---------
1 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/TODO b/TODO
index 0d04208..c0dee09 100644
--- a/TODO
+++ b/TODO
@@ -76,6 +76,19 @@ SMS
Complexity: C4
Owner: Rajesh Kadhiravan Nagaiah <Rajesh.Nagaiah@elektrobit.com>
+- Asynchronously acknowledge SMS DELIVER messages sent by the SMS driver
+ to core using ofono_sms_deliver_notify(). This may require the struct
+ ofono_sms_driver to be extended with one more function pointer like:
+ void (*deliver_ack)(unsigned char *pdu, int len, cb_t cb, void *data)
+ because currently messages are automatically acknowledged by either the
+ modem (this is the case of some AT modems) or the driver right after
+ ofono_sms_deliver_notify() and a failure to deliver at an upper level is
+ ignored. The PDU can be an RP-ACK or RP-ERROR message with optional
+ TP-User-Content element, for example if returned from USIM Data Download.
+
+ Priority: Low
+ Complexity: C2
+
SIM / SIM File system
=====================
@@ -339,15 +352,6 @@ Sim Toolkit
Priority: High
Complexity: C8
-- Support 'SMS-PP' Download Envelope. Whenever a special type of SMS is
- received indicating that this is an SMS-PP Download message, this message
- will be sent to the SIM via an SMS-PP Download Envelope. No user interaction
- will be required. If the modem hardware supports this transparently, then
- no indication to oFono will be necessary.
-
- Priority: High
- Complexity: C2
-
- Support Language Notification proactive command.
Priority: Medium
--
1.7.1.86.g0e460.dirty
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [RfC][PATCH 1/3] stk: API for SMS Point-to-Point download to UICC
2010-11-07 17:42 [RfC][PATCH 1/3] stk: API for SMS Point-to-Point download to UICC Andrzej Zaborowski
2010-11-07 17:42 ` [PATCH 2/3] sms: Handle "USIM Download" SMS type Andrzej Zaborowski
2010-11-07 17:42 ` [PATCH 3/3] Update TODO Andrzej Zaborowski
@ 2010-11-08 19:47 ` Denis Kenzior
2 siblings, 0 replies; 6+ messages in thread
From: Denis Kenzior @ 2010-11-08 19:47 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 1395 bytes --]
Hi Andrew,
On 11/07/2010 11:42 AM, Andrzej Zaborowski wrote:
> The callback returns the TP-User-Data element content of the RP-ACK or
> RP-ERROR message, returned by the UICC.
> ---
> src/ofono.h | 8 ++++++++
> src/stk.c | 39 +++++++++++++++++++++++++++++++++++++++
> 2 files changed, 47 insertions(+), 0 deletions(-)
>
> +int __ofono_sms_sim_download(struct ofono_stk *stk, const struct sms *msg,
> + __ofono_sms_sim_download_cb_t cb, void *data)
> +{
> + struct stk_envelope e;
> +
> + if (msg->type != SMS_TYPE_DELIVER)
> + return -EINVAL;
> +
> + DBG("");
> +
> + memset(&e, 0, sizeof(e));
> +
> + e.type = STK_ENVELOPE_TYPE_SMS_PP_DOWNLOAD;
> + e.src = STK_DEVICE_IDENTITY_TYPE_NETWORK;
> +
> + e.sms_pp_download.address.number = (char *) msg->sc_addr.address;
> + e.sms_pp_download.address.ton_npi = msg->sc_addr.numbering_plan |
> + (msg->sc_addr.number_type << 4);
> + memcpy(&e.sms_pp_download.message, &msg->deliver, sizeof(msg->deliver));
> +
> + stk->sms_pp_cb = cb;
> + stk->sms_pp_userdata = data;
Please note that this has a possibility of overwriting the sms_pp_cb and
sms_pp_userdata if multiple SMS-PP sms messages are received (and
acknowledged) in short succession.
However, I assume you already thought of this and will take care of it
with the async ack task.
Patch has been applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/3] sms: Handle "USIM Download" SMS type.
2010-11-07 17:42 ` [PATCH 2/3] sms: Handle "USIM Download" SMS type Andrzej Zaborowski
@ 2010-11-08 19:47 ` Denis Kenzior
0 siblings, 0 replies; 6+ messages in thread
From: Denis Kenzior @ 2010-11-08 19:47 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 224 bytes --]
Hi Andrew,
On 11/07/2010 11:42 AM, Andrzej Zaborowski wrote:
> ---
> src/sms.c | 21 ++++++++++++++++-----
> 1 files changed, 16 insertions(+), 5 deletions(-)
Patch has been applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/3] Update TODO.
2010-11-07 17:42 ` [PATCH 3/3] Update TODO Andrzej Zaborowski
@ 2010-11-08 19:49 ` Denis Kenzior
0 siblings, 0 replies; 6+ messages in thread
From: Denis Kenzior @ 2010-11-08 19:49 UTC (permalink / raw)
To: ofono
[-- Attachment #1: Type: text/plain, Size: 300 bytes --]
On 11/07/2010 11:42 AM, Andrzej Zaborowski wrote:
> ---
> TODO | 22 +++++++++++++---------
> 1 files changed, 13 insertions(+), 9 deletions(-)
Patch has been applied. I did break this patch up into two, one marking
the task as done and the other adding the new task.
Regards,
-Denis
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-11-08 19:49 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-07 17:42 [RfC][PATCH 1/3] stk: API for SMS Point-to-Point download to UICC Andrzej Zaborowski
2010-11-07 17:42 ` [PATCH 2/3] sms: Handle "USIM Download" SMS type Andrzej Zaborowski
2010-11-08 19:47 ` Denis Kenzior
2010-11-07 17:42 ` [PATCH 3/3] Update TODO Andrzej Zaborowski
2010-11-08 19:49 ` Denis Kenzior
2010-11-08 19:47 ` [RfC][PATCH 1/3] stk: API for SMS Point-to-Point download to UICC Denis Kenzior
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox