Hi Andrew,

On Wed, Aug 19, 2009 at 3:09 PM, Andrzej Zaborowski <
[email protected]> wrote:

> ---
> The ServiceDiallingNumbers property now returns a list of strings (alpha
> identifiers interleaved with dialling numbers) and this is a little hacky
> but returning a dictionary would make the interface more hassle to use so
> I'm not sure what's better.


Please re-base and resubmit this patch, it does not apply cleanly after the
latest round of changes.

Also, lets return a dictionary.  Applications already need to parse
GetProperties, which is a dictionary of strings to variants, so
string->string shouldn't be a big deal.


> +
> +       if (sim_adn_parse(data, record_length, &ph, &alpha) == TRUE &&
> alpha) {
> +               struct service_number *sdn;
> +
> +               sdn = g_new(struct service_number, 1);
> +               sdn->id = alpha;


Lets make sure that the id is non-empty.  If it is empty, we should we use
the phone number as the id unless you can think of something better.


>
> +               memcpy(&sdn->ph, &ph, sizeof(struct ofono_phone_number));
> +
> +               sim->service_numbers =
> +                       g_slist_prepend(sim->service_numbers, sdn);


Do we want to check for id uniqueness here?


>
> +       }
> +
> +       if (record != total)
> +               return;
> +
> +check:
> +       /* All records retrieved */
> +       if (sim->service_numbers) {
> +               sim->service_numbers =
> g_slist_reverse(sim->service_numbers);
> +
> +               service_numbers =
> get_service_numbers(sim->service_numbers);
> +
> +               ofono_dbus_signal_array_property_changed(conn, modem->path,
> +                                               SIM_MANAGER_INTERFACE,
> +                                               "ServiceDiallingNumbers",
> +                                               DBUS_TYPE_STRING,
> +                                               &service_numbers);
> +               g_strfreev(service_numbers);
> +       }
>  }
>
> -static void sim_mnc_length_update(struct ofono_modem *modem)
> +static void sim_own_numbers_update(struct ofono_modem *modem)
>  {
> -       ofono_sim_read(modem, SIM_EFAD_FILEID,
> -                       sim_ad_read_cb, modem->sim_manager);
> +       ofono_sim_read(modem, SIM_EFMSISDN_FILEID,
> +                       sim_msisdn_read_cb, modem->sim_manager);
>  }
>
>  static void sim_ready(struct ofono_modem *modem)
>  {
>        sim_own_numbers_update(modem);
> -       sim_mnc_length_update(modem);
> +
> +       ofono_sim_read(modem, SIM_EFAD_FILEID,
> +                       sim_ad_read_cb, modem->sim_manager);
> +       ofono_sim_read(modem, SIM_EFSDN_FILEID,
> +                       sim_sdn_read_cb, modem->sim_manager);
>  }
>
>  static void sim_imsi_cb(const struct ofono_error *error, const char *imsi,
> diff --git a/src/simutil.h b/src/simutil.h
> index dccbe7b..de3e55e 100644
> --- a/src/simutil.h
> +++ b/src/simutil.h
> @@ -22,6 +22,7 @@
>  enum sim_fileid {
>        SIM_EFMSISDN_FILEID = 0x6f40,
>        SIM_EFSPN_FILEID = 0x6f46,
> +       SIM_EFSDN_FILEID = 0x6f49,
>        SIM_EFAD_FILEID = 0x6fad,
>        SIM_EFPNN_FILEID = 0x6fc5,
>        SIM_EFOPL_FILEID = 0x6fc6,
> --
> 1.6.1
>
> _______________________________________________
> ofono mailing list
> [email protected]
> http://lists.ofono.org/listinfo/ofono
>
_______________________________________________
ofono mailing list
[email protected]
http://lists.ofono.org/listinfo/ofono

Reply via email to