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