All of lore.kernel.org
 help / color / mirror / Atom feed
From: Denis Kenzior <denkenz@gmail.com>
To: ofono@ofono.org
Subject: Re: [PATCH 4/4] Add a MessageWaiting interface to track message waiting indications.
Date: Fri, 31 Jul 2009 11:19:23 -0500	[thread overview]
Message-ID: <200907311119.23891.denkenz@gmail.com> (raw)
In-Reply-To: <1248941142-13236-1-git-send-email-andrew.zaborowski@intel.com>

[-- Attachment #1: Type: text/plain, Size: 4741 bytes --]

Hi,

> Comments are welcome about how the interface should look.  The state of the
> indications is kept in memory and written back to the SIM after any
> changes.
>
> Patch is untested because write ofono_sim_write is unimplemented, I'll add
> it as a separate patch.  Should it take a callback parameter?

Probably would be useful in case you want to notify an external app that 
storing a file failed (e.g. update of MBDN / MSISDN).  For other cases, maybe 
less useful.

> diff --git a/src/driver.h b/src/driver.h
> index 928c20a..51e5587 100644
> --- a/src/driver.h
> +++ b/src/driver.h
> @@ -439,3 +439,6 @@ void ofono_phonebook_entry(struct ofono_modem *modem,
> int index, const char *adnumber, int adtype,
>  				const char *secondtext, const char *email,
>  				const char *sip_uri, const char *tel_uri);
> +
> +int ofono_message_waiting_register(struct ofono_modem *modem);
> +void ofono_message_waiting_unregister(struct ofono_modem *modem);

Lets keep this out of driver.h, there's nothing here that a driver can 
provide.  Put it in ofono.h or messagewaiting.h

> +	if (mw->messages[i] != value) {
> +		mw->messages[i] = value;
> +
> +		if (!mw->pending)
> +			mw->pending = g_timeout_add(0, mw_mwis_update, modem);
> +
> +		dbus_gsm_signal_property_changed(conn, modem->path,
> +				MESSAGE_WAITING_INTERFACE,
> +				mw_messages_property_name[i],
> +				DBUS_TYPE_BYTE, &value);
> +	}
> +
> +	return dbus_message_new_method_return(msg);
> +}

Ok, I'm a bit confused here.  Are you sure that MWIs should have the ability 
to be cleared out by the user?  The way I understood it, the user dials the 
voice mail system and the provider sends another MWI message which clears out 
the status.

> +void ofono_message_waiting_message(struct ofono_modem *modem, const char
> *msg) +{
> +	struct message_waiting_data *mw = modem->message_waiting;
> +	DBusConnection *conn = dbus_gsm_connection();
> +
> +	if (!mw)
> +		return;
> +
> +	if (mw->last_message && !strcmp(mw->last_message, msg))
> +		return;
> +
> +	if (mw->last_message)
> +		g_free(mw->last_message);
> +
> +	mw->last_message = g_strdup(msg);
> +
> +	dbus_gsm_signal_property_changed(conn, modem->path,
> +			MESSAGE_WAITING_INTERFACE, "LastNotificationText",
> +			DBUS_TYPE_STRING, &mw->last_message);
> +}


> +
> +enum mwi_information_type {
> +	MWI_UNSPECIFIED = -1,
> +	MWI_MESSAGES_WAITING = -2,
> +	MWI_NO_MESSAGES_WAITING = -3,
> +};

Is there a reason these are negative?

> --- a/src/modem.h
> +++ b/src/modem.h
> @@ -43,6 +43,7 @@ struct ofono_modem {
>  	struct sim_manager_data *sim_manager;
>  	struct sms_manager_data *sms_manager;
>  	struct phonebook_data *phonebook;
> +	struct message_waiting_data *message_waiting;
>
>  	GSList *history_contexts;
>  };

Please rebase, this file is now defunct

> +static void handle_mwi(struct ofono_modem *modem,
> +			struct sms *sms, gboolean *out_discard)
> +{
> +	gboolean active, discard;
> +	enum sms_mwi_type type;
> +	char *message;
> +	int profile = 1;
> +	GSList *sms_list;
> +
> +	/* "Store" bits are ORed if multiple MWI types are present
> +	 * but if neither Special SMS Message Indication nor DCS based
> +	 * indication is present, the bit must remain set.  */
> +	int set = 1, store = 0;

What is this comment about, since I don't see any ORing going on below.  Are 
you trying to accommodate this piece of stupidity from 23.040 9.2.3.24.2?
"In the event of a conflict between this setting and the setting of the Data 
Coding Scheme (see 3GPP TS 23.038 [9]) then the message shall be stored if 
either the DCS indicates this, or Octet 1 above indicates this."

> +
> +	/* Check MWI types in the order from lowest to highest priority
> +	 * because they will override one another.  */

Can we instead process the different sources from highest to lowest instead and 
bail out early?  No sense in calling message_waiting_notify several times (and 
possibly emitting spurious signals) when only once is required.

> +	if (sms_dcs_decode(sms->deliver.dcs, NULL, NULL, NULL, NULL) &&
> +			sms->deliver.udhi) {

This seems to be incorrect.  An MWI DCS message can still contain enhanced 
IEIs.  Should this check just for UDHI instead?

> +final:
> +	/* Only bother the Message Waiting interface with textual
> +	 * notifications that are not to be stored together with other
> +	 * Short Messages in ME.  The other messages will be delivered
> +	 * to the user through normal SMS store.  */

It sounds to me like we can completely ignore the text of such messages.  The 
network is basically saying: "the text isn't important, the contents are." 

Regards,
-Denis

  reply	other threads:[~2009-07-31 16:19 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-30  8:05 [PATCH 4/4] Add a MessageWaiting interface to track message waiting indications Andrzej Zaborowski
2009-07-31 16:19 ` Denis Kenzior [this message]
2009-08-01 23:09   ` Andrzej Zaborowski
2009-08-03 16:32     ` Denis Kenzior
2009-08-03 19:09       ` Andrzej Zaborowski
2009-08-03 19:29         ` Denis Kenzior
2009-08-03 21:56           ` andrzej zaborowski
2009-08-04 20:23             ` Denis Kenzior
2009-08-05 14:18               ` andrzej zaborowski
2009-08-05 17:47                 ` Denis Kenzior
2009-08-05 19:18                   ` andrzej zaborowski
2009-08-05 19:35                     ` Denis Kenzior
2009-08-07  3:25                       ` andrzej zaborowski
2009-08-10 16:35                         ` Denis Kenzior
2009-08-12 13:48                           ` Aki Niemi
2009-08-12 16:13                             ` Denis Kenzior
2009-08-14 12:07                               ` Aki Niemi
2009-08-19 13:44                           ` Andrzej Zaborowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200907311119.23891.denkenz@gmail.com \
    --to=denkenz@gmail.com \
    --cc=ofono@ofono.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.