Open Source Telephony
 help / color / mirror / Atom feed
* [PATCH 0/7] add support for icons
@ 2010-08-05 21:32 Kristen Carlson Accardi
  2010-08-05 21:32 ` [PATCH 1/7] simutil: add fileid for EFimg Kristen Carlson Accardi
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Kristen Carlson Accardi @ 2010-08-05 21:32 UTC (permalink / raw)
  To: ofono

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

This is still a wip, but I wanted to get your feedback on what I've
got so far.  The patch "allow partial reads of files" is still
pretty much what I had before, so I haven't addressed any of your
issues with it.  It still doesn't do files > 256, and I'm just
using the existing read functions with a couple modifications.
I've got some outstanding questions that I noted in comments in
the patches.  

These patches do work with phonesim - so you can play with the
test script if you feel like it.

Kristen Carlson Accardi (7):
  simutil: add fileid for EFimg
  stkutil: change uint32_t to guint32
  sim: read EFimg
  sim: allow partial reads of files
  sim: read an image from an EFiidf
  sim: implement GetIcon dbus interface
  test: add get-icon script

 include/sim.h |   11 +++
 src/sim.c     |  274 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 src/simutil.h |    1 +
 src/stkutil.h |    2 +-
 test/get-icon |   25 +++++
 5 files changed, 302 insertions(+), 11 deletions(-)
 create mode 100755 test/get-icon


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH 1/7] simutil: add fileid for EFimg
  2010-08-05 21:32 [PATCH 0/7] add support for icons Kristen Carlson Accardi
@ 2010-08-05 21:32 ` Kristen Carlson Accardi
  2010-08-05 21:32 ` [PATCH 2/7] stkutil: change uint32_t to guint32 Kristen Carlson Accardi
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Kristen Carlson Accardi @ 2010-08-05 21:32 UTC (permalink / raw)
  To: ofono

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

---
 src/simutil.h |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/src/simutil.h b/src/simutil.h
index 29194ca..1cfc4af 100644
--- a/src/simutil.h
+++ b/src/simutil.h
@@ -22,6 +22,7 @@
 enum sim_fileid {
 	SIM_EFPL_FILEID = 0x2f05,
 	SIM_EF_ICCID_FILEID = 0x2fe2,
+	SIM_EFIMG_FILEID = 0x4F20,
 	SIM_EFLI_FILEID = 0x6f05,
 	SIM_EF_CPHS_MWIS_FILEID = 0x6f11,
 	SIM_EF_CPHS_INFORMATION_FILEID = 0x6f16,
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/7] stkutil: change uint32_t to guint32
  2010-08-05 21:32 [PATCH 0/7] add support for icons Kristen Carlson Accardi
  2010-08-05 21:32 ` [PATCH 1/7] simutil: add fileid for EFimg Kristen Carlson Accardi
@ 2010-08-05 21:32 ` Kristen Carlson Accardi
  2010-08-05 21:32 ` [PATCH 3/7] sim: read EFimg Kristen Carlson Accardi
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Kristen Carlson Accardi @ 2010-08-05 21:32 UTC (permalink / raw)
  To: ofono

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

This helps avoid needing to include any extra header files if
stkutil.h is included in sim.c
---
 src/stkutil.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/stkutil.h b/src/stkutil.h
index ea9294c..44d167a 100644
--- a/src/stkutil.h
+++ b/src/stkutil.h
@@ -852,7 +852,7 @@ struct stk_card_reader_id {
 struct stk_other_address {
 	union {
 		/* Network Byte Order */
-		uint32_t ipv4;
+		guint32 ipv4;
 		unsigned char ipv6[16];
 	} addr;
 	enum stk_address_type type;
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/7] sim: read EFimg
  2010-08-05 21:32 [PATCH 0/7] add support for icons Kristen Carlson Accardi
  2010-08-05 21:32 ` [PATCH 1/7] simutil: add fileid for EFimg Kristen Carlson Accardi
  2010-08-05 21:32 ` [PATCH 2/7] stkutil: change uint32_t to guint32 Kristen Carlson Accardi
@ 2010-08-05 21:32 ` Kristen Carlson Accardi
  2010-08-05 21:32 ` [PATCH 4/7] sim: allow partial reads of files Kristen Carlson Accardi
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Kristen Carlson Accardi @ 2010-08-05 21:32 UTC (permalink / raw)
  To: ofono

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

Read EFimg when the sim is ready, and store it in memory.
---
 src/sim.c |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/src/sim.c b/src/sim.c
index d2ed780..6d723bb 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -88,6 +88,8 @@ struct ofono_sim {
 	unsigned char efmsisdn_records;
 	unsigned char *efli;
 	unsigned char efli_length;
+	unsigned char *efimg;
+	int efimg_length;
 	enum ofono_sim_cphs_phase cphs_phase;
 	unsigned char cphs_service_table[2];
 	struct ofono_watchlist *state_watches;
@@ -1001,6 +1003,44 @@ static void sim_own_numbers_update(struct ofono_sim *sim)
 			sim_msisdn_read_cb, sim);
 }
 
+static void sim_efimg_read_cb(int ok, int length, int record,
+				const unsigned char *data,
+				int record_length, void *userdata)
+{
+	struct ofono_sim *sim = userdata;
+	unsigned char *efimg;
+	int num_records = length / record_length;
+
+	if (!ok)
+		return;
+
+	/*
+	 * EFimg descriptors are 9 bytes long.
+	 * Byte 1 of the record is the number of descriptors per record.
+	 */
+	if (record_length < 10)
+		return;
+
+	if (sim->efimg == NULL) {
+		sim->efimg = g_try_malloc0(num_records * 9);
+
+		if (sim->efimg == NULL)
+			return;
+
+		sim->efimg_length = num_records * 9;
+	}
+
+	/*
+	 * TBD - if we have more than one descriptor per record,
+	 * pick the nicest one.  For now we use the first one.
+	 */
+
+	/* copy descriptor into slot for this record */
+	efimg = &sim->efimg[(record - 1) * 9];
+
+	memcpy(efimg, &data[1], 9);
+}
+
 static void sim_ready(void *user, enum ofono_sim_state new_state)
 {
 	struct ofono_sim *sim = user;
@@ -1015,6 +1055,8 @@ static void sim_ready(void *user, enum ofono_sim_state new_state)
 			sim_ad_read_cb, sim);
 	ofono_sim_read(sim, SIM_EFSDN_FILEID, OFONO_SIM_FILE_STRUCTURE_FIXED,
 			sim_sdn_read_cb, sim);
+	ofono_sim_read(sim, SIM_EFIMG_FILEID, OFONO_SIM_FILE_STRUCTURE_FIXED,
+			sim_efimg_read_cb, sim);
 }
 
 static void sim_cphs_information_read_cb(int ok, int length, int record,
@@ -1934,6 +1976,11 @@ static void sim_free_state(struct ofono_sim *sim)
 		g_strfreev(sim->language_prefs);
 		sim->language_prefs = NULL;
 	}
+
+	if (sim->efimg) {
+		g_free(sim->efimg);
+		sim->efimg = NULL;
+	}
 }
 
 void ofono_sim_inserted_notify(struct ofono_sim *sim, ofono_bool_t inserted)
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 4/7] sim: allow partial reads of files
  2010-08-05 21:32 [PATCH 0/7] add support for icons Kristen Carlson Accardi
                   ` (2 preceding siblings ...)
  2010-08-05 21:32 ` [PATCH 3/7] sim: read EFimg Kristen Carlson Accardi
@ 2010-08-05 21:32 ` Kristen Carlson Accardi
  2010-08-05 21:32 ` [PATCH 5/7] sim: read an image from an EFiidf Kristen Carlson Accardi
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Kristen Carlson Accardi @ 2010-08-05 21:32 UTC (permalink / raw)
  To: ofono

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

---
 include/sim.h |    5 +++++
 src/sim.c     |   54 ++++++++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 49 insertions(+), 10 deletions(-)

diff --git a/include/sim.h b/include/sim.h
index 36a99b9..6c5a657 100644
--- a/include/sim.h
+++ b/include/sim.h
@@ -198,6 +198,11 @@ int ofono_sim_read(struct ofono_sim *sim, int id,
 			enum ofono_sim_file_structure expected,
 			ofono_sim_file_read_cb_t cb, void *data);
 
+int ofono_sim_read_bytes(struct ofono_sim *sim, int id,
+			enum ofono_sim_file_structure expected_type,
+			unsigned short offset, int num_bytes,
+			ofono_sim_file_read_cb_t cb, void *data);
+
 int ofono_sim_write(struct ofono_sim *sim, int id,
 			ofono_sim_file_write_cb_t cb,
 			enum ofono_sim_file_structure structure, int record,
diff --git a/src/sim.c b/src/sim.c
index 6d723bb..fa3823b 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -60,6 +60,8 @@ struct sim_file_op {
 	int id;
 	gboolean cache;
 	enum ofono_sim_file_structure structure;
+	unsigned short offset;
+	int num_bytes;
 	int length;
 	int record_length;
 	int current;
@@ -1498,7 +1500,7 @@ static void sim_op_retrieve_cb(const struct ofono_error *error,
 		return;
 	}
 
-	cb(1, op->length, op->current, data, op->record_length, op->userdata);
+	cb(1, len, op->current, data, op->record_length, op->userdata);
 
 	if (op->cache && imsi) {
 		char *path = g_strdup_printf(SIM_CACHE_PATH,
@@ -1536,7 +1538,16 @@ static gboolean sim_op_retrieve_next(gpointer user)
 			return FALSE;
 		}
 
-		sim->driver->read_file_transparent(sim, op->id, 0, op->length,
+		if (op->num_bytes < 0)
+			op->num_bytes = op->length;
+
+		if (op->offset + op->num_bytes > op->length) {
+			sim_op_error(sim);
+			return FALSE;
+		}
+
+		sim->driver->read_file_transparent(sim, op->id, op->offset,
+						op->num_bytes,
 						sim_op_retrieve_cb, sim);
 		break;
 	case OFONO_SIM_FILE_STRUCTURE_FIXED:
@@ -1663,6 +1674,8 @@ static gboolean sim_op_check_cached(struct ofono_sim *sim)
 	unsigned int record;
 	guint8 *buffer = NULL;
 	gboolean ret = FALSE;
+	unsigned int read_bytes;
+	unsigned int num_records;
 
 	if (!imsi)
 		return FALSE;
@@ -1694,8 +1707,19 @@ static gboolean sim_op_check_cached(struct ofono_sim *sim)
 	structure = fileinfo[3];
 	record_length = (fileinfo[4] << 8) | fileinfo[5];
 
-	if (structure == OFONO_SIM_FILE_STRUCTURE_TRANSPARENT)
-		record_length = file_length;
+	if (op->num_bytes < 0)
+		op->num_bytes = file_length;
+
+	read_bytes = op->num_bytes;
+
+	num_records = file_length / record_length;
+
+	/* add a seek to the correct offset here */
+	if (structure == OFONO_SIM_FILE_STRUCTURE_TRANSPARENT) {
+		TFR(lseek(fd, op->offset, SEEK_CUR));
+		num_records = 1;
+		record_length = read_bytes;
+	}
 
 	if (record_length == 0 || file_length < record_length)
 		goto cleanup;
@@ -1707,18 +1731,18 @@ static gboolean sim_op_check_cached(struct ofono_sim *sim)
 		goto cleanup;
 	}
 
-	buffer = g_try_malloc(file_length);
+	buffer = g_try_malloc(read_bytes);
 
 	if (buffer == NULL)
 		goto cleanup;
 
-	len = TFR(read(fd, buffer, file_length));
+	len = TFR(read(fd, buffer, read_bytes));
 
-	if (len < (ssize_t)file_length)
+	if (len < (ssize_t) read_bytes)
 		goto cleanup;
 
-	for (record = 0; record < file_length / record_length; record++) {
-		cb(1, file_length, record + 1, &buffer[record * record_length],
+	for (record = 0; record < num_records; record++) {
+		cb(1, read_bytes, record + 1, &buffer[record * record_length],
 			record_length, op->userdata);
 	}
 
@@ -1787,8 +1811,9 @@ static gboolean sim_op_next(gpointer user_data)
 	return FALSE;
 }
 
-int ofono_sim_read(struct ofono_sim *sim, int id,
+int ofono_sim_read_bytes(struct ofono_sim *sim, int id,
 			enum ofono_sim_file_structure expected_type,
+			unsigned short offset, int num_bytes,
 			ofono_sim_file_read_cb_t cb, void *data)
 {
 	struct sim_file_op *op;
@@ -1819,6 +1844,8 @@ int ofono_sim_read(struct ofono_sim *sim, int id,
 	op->cb = cb;
 	op->userdata = data;
 	op->is_read = TRUE;
+	op->offset = offset;
+	op->num_bytes = num_bytes;
 
 	g_queue_push_tail(sim->simop_q, op);
 
@@ -1828,6 +1855,13 @@ int ofono_sim_read(struct ofono_sim *sim, int id,
 	return 0;
 }
 
+int ofono_sim_read(struct ofono_sim *sim, int id,
+			enum ofono_sim_file_structure expected_type,
+			ofono_sim_file_read_cb_t cb, void *data)
+{
+	return ofono_sim_read_bytes(sim, id, expected_type, 0, -1, cb, data);
+}
+
 int ofono_sim_write(struct ofono_sim *sim, int id,
 			ofono_sim_file_write_cb_t cb,
 			enum ofono_sim_file_structure structure, int record,
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 5/7] sim: read an image from an EFiidf
  2010-08-05 21:32 [PATCH 0/7] add support for icons Kristen Carlson Accardi
                   ` (3 preceding siblings ...)
  2010-08-05 21:32 ` [PATCH 4/7] sim: allow partial reads of files Kristen Carlson Accardi
@ 2010-08-05 21:32 ` Kristen Carlson Accardi
  2010-08-05 21:32 ` [PATCH 6/7] sim: implement GetIcon dbus interface Kristen Carlson Accardi
  2010-08-05 21:32 ` [PATCH 7/7] test: add get-icon script Kristen Carlson Accardi
  6 siblings, 0 replies; 8+ messages in thread
From: Kristen Carlson Accardi @ 2010-08-05 21:32 UTC (permalink / raw)
  To: ofono

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

---
 include/sim.h |    6 +++
 src/sim.c     |  127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 133 insertions(+), 0 deletions(-)

diff --git a/include/sim.h b/include/sim.h
index 6c5a657..1303203 100644
--- a/include/sim.h
+++ b/include/sim.h
@@ -113,6 +113,9 @@ typedef void (*ofono_sim_lock_unlock_cb_t)(const struct ofono_error *error,
 typedef void (*ofono_sim_locked_cb_t)(const struct ofono_error *error,
 					int locked, void *data);
 
+typedef void (*ofono_sim_get_image_cb_t)(int ok, const char *xpm, int xpm_len,
+					void *userdata);
+
 struct ofono_sim_driver {
 	const char *name;
 	int (*probe)(struct ofono_sim *sim, unsigned int vendor, void *data);
@@ -177,6 +180,9 @@ enum ofono_sim_phase ofono_sim_get_phase(struct ofono_sim *sim);
 enum ofono_sim_cphs_phase ofono_sim_get_cphs_phase(struct ofono_sim *sim);
 const unsigned char *ofono_sim_get_cphs_service_table(struct ofono_sim *sim);
 
+void ofono_sim_get_image(struct ofono_sim *sim, unsigned char id,
+			ofono_sim_get_image_cb_t cb, gpointer user_data);
+
 unsigned int ofono_sim_add_state_watch(struct ofono_sim *sim,
 				ofono_sim_state_event_notify_cb_t cb,
 				void *data, ofono_destroy_func destroy);
diff --git a/src/sim.c b/src/sim.c
index fa3823b..e19fb06 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -42,6 +42,7 @@
 #include "smsutil.h"
 #include "simutil.h"
 #include "storage.h"
+#include "stkutil.h"
 
 #define SIM_CACHE_MODE 0600
 #define SIM_CACHE_PATH STORAGEDIR "/%s-%i/%04x"
@@ -2231,3 +2232,129 @@ void *ofono_sim_get_data(struct ofono_sim *sim)
 {
 	return sim->driver_data;
 }
+
+struct image_data {
+	struct ofono_sim *sim;
+	unsigned char width;
+	unsigned char height;
+	enum stk_img_scheme scheme;
+	unsigned short iidf_id;
+	unsigned short iidf_offset;
+	unsigned short iid_len;
+	const unsigned char *image;
+	const unsigned char *clut;
+	unsigned short clut_len;
+	gboolean need_clut;
+	ofono_sim_get_image_cb_t user_cb;
+	gpointer user_data;
+};
+
+static void sim_iidf_read_cb(int ok, int length, int record,
+				const unsigned char *data,
+				int record_length, void *userdata)
+{
+	struct image_data *image = userdata;
+	unsigned short offset;
+	unsigned short num_entries;
+	char *xpm;
+
+	/*
+	 * make sure everthing was ok, and that what we read matched
+	 * what we asked for.  If not, return an error to the caller
+	 */
+	if (!ok) {
+		image->user_cb(ok, NULL, 0, image->user_data);
+		goto iidf_read_out;
+	}
+
+	if (image->need_clut == FALSE) {
+		if (image->scheme == STK_IMG_SCHEME_BASIC)
+			image->image = data;
+		else
+			image->clut = data;
+
+		/* convert to xpm, free stuff, and call user callback */
+		xpm = stk_image_to_xpm(image->image, image->iid_len,
+					image->scheme, image->clut,
+					image->clut_len);
+
+		image->user_cb(ok, xpm, strlen(xpm), image->user_data);
+
+		goto iidf_read_out;
+	}
+
+	offset = data[4] << 8 | data[5];
+	num_entries = data[3];
+
+	if (num_entries == 0)
+		num_entries = 256;
+
+	/* indicate that we're on our second read */
+	image->need_clut = FALSE;
+
+	image->clut_len = num_entries * 3;
+
+	image->image = g_memdup(data, length);
+
+	/* read the clut data */
+	ofono_sim_read_bytes(image->sim, image->iidf_id,
+				OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
+				offset, image->clut_len,
+				sim_iidf_read_cb, image);
+
+	return;
+
+iidf_read_out:
+	/* TBD - what if image->image was memduped? */
+	g_free(image);
+}
+
+static void print_image_descriptor(struct image_data *data)
+{
+	g_print("image id: 0x%x\n", data->iidf_id);
+	g_print("width: %d\n", data->width);
+	g_print("height: %d\n", data->height);
+	g_print("len: %d\n", data->iid_len);
+	g_print("iidf offset: %d\n", data->iidf_offset);
+}
+
+void ofono_sim_get_image(struct ofono_sim *sim, unsigned char id,
+			ofono_sim_get_image_cb_t cb, gpointer user_data)
+{
+	struct image_data *data;
+	unsigned char *efimg;
+
+	if (sim->efimg_length < (id * 9)) {
+		cb(-1, NULL, 0, user_data);
+		return;
+	}
+
+	efimg = &sim->efimg[id * 9];
+
+	data = g_try_new0(struct image_data, 1);
+	if (data == NULL)
+		return;
+
+	data->width = efimg[0];
+	data->height = efimg[1];
+	data->scheme = efimg[2];
+	data->iidf_id = efimg[3] << 8 | efimg[4];
+	data->iidf_offset = efimg[5] << 8 | efimg[6];
+	data->iid_len = efimg[7] << 8 | efimg[8];
+	data->user_cb = cb;
+	data->user_data = user_data;
+	data->sim = sim;
+
+	print_image_descriptor(data);
+
+	if (data->scheme == STK_IMG_SCHEME_BASIC)
+		data->need_clut = FALSE;
+	else
+		data->need_clut = TRUE;
+
+	/* read the image data */
+	ofono_sim_read_bytes(sim, data->iidf_id,
+				OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
+				data->iidf_offset, data->iid_len,
+				sim_iidf_read_cb, data);
+}
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 6/7] sim: implement GetIcon dbus interface
  2010-08-05 21:32 [PATCH 0/7] add support for icons Kristen Carlson Accardi
                   ` (4 preceding siblings ...)
  2010-08-05 21:32 ` [PATCH 5/7] sim: read an image from an EFiidf Kristen Carlson Accardi
@ 2010-08-05 21:32 ` Kristen Carlson Accardi
  2010-08-05 21:32 ` [PATCH 7/7] test: add get-icon script Kristen Carlson Accardi
  6 siblings, 0 replies; 8+ messages in thread
From: Kristen Carlson Accardi @ 2010-08-05 21:32 UTC (permalink / raw)
  To: ofono

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

---
 src/sim.c |   46 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 46 insertions(+), 0 deletions(-)

diff --git a/src/sim.c b/src/sim.c
index e19fb06..2b0b20e 100644
--- a/src/sim.c
+++ b/src/sim.c
@@ -731,6 +731,50 @@ static DBusMessage *sim_enter_pin(DBusConnection *conn, DBusMessage *msg,
 	return NULL;
 }
 
+static void ofono_sim_get_image_cb(int ok, const char *xpm, int xpm_len,
+					void *userdata)
+{
+	struct ofono_sim *sim = userdata;
+	DBusMessage *reply;
+
+	if (!ok)
+		reply = __ofono_error_failed(sim->pending);
+	else {
+		reply = dbus_message_new_method_return(sim->pending);
+		dbus_message_append_args(reply, DBUS_TYPE_STRING, &xpm,
+					DBUS_TYPE_INVALID);
+	}
+
+	__ofono_dbus_pending_reply(&sim->pending, reply);
+}
+
+static DBusMessage *sim_get_icon(DBusConnection *conn,
+					DBusMessage *msg, void *data)
+{
+	struct ofono_sim *sim = data;
+	int id;
+
+	/*
+	 * change the arg to be a byte
+	 * Question: does the icon id start at zero or 1?
+	 */
+	if (dbus_message_get_args(msg, NULL, DBUS_TYPE_INT32, &id,
+					DBUS_TYPE_INVALID) == FALSE)
+		return __ofono_error_invalid_args(msg);
+
+	if (sim->pending)
+		return __ofono_error_busy(msg);
+
+	if (sim->efimg == NULL)
+		return __ofono_error_not_implemented(msg);
+
+	sim->pending = dbus_message_ref(msg);
+
+	ofono_sim_get_image(sim, id, ofono_sim_get_image_cb, sim);
+
+	return NULL;
+}
+
 static DBusMessage *sim_reset_pin(DBusConnection *conn, DBusMessage *msg,
 					void *data)
 {
@@ -783,6 +827,8 @@ static GDBusMethodTable sim_methods[] = {
 							G_DBUS_METHOD_FLAG_ASYNC },
 	{ "UnlockPin",		"ss",	"",		sim_unlock_pin,
 							G_DBUS_METHOD_FLAG_ASYNC },
+	{ "GetIcon",		"i",	"",		sim_get_icon,
+							G_DBUS_METHOD_FLAG_ASYNC },
 	{ }
 };
 
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 7/7] test: add get-icon script
  2010-08-05 21:32 [PATCH 0/7] add support for icons Kristen Carlson Accardi
                   ` (5 preceding siblings ...)
  2010-08-05 21:32 ` [PATCH 6/7] sim: implement GetIcon dbus interface Kristen Carlson Accardi
@ 2010-08-05 21:32 ` Kristen Carlson Accardi
  6 siblings, 0 replies; 8+ messages in thread
From: Kristen Carlson Accardi @ 2010-08-05 21:32 UTC (permalink / raw)
  To: ofono

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

---
 test/get-icon |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)
 create mode 100755 test/get-icon

diff --git a/test/get-icon b/test/get-icon
new file mode 100755
index 0000000..680ae13
--- /dev/null
+++ b/test/get-icon
@@ -0,0 +1,25 @@
+#!/usr/bin/python
+
+import dbus
+import sys
+
+bus = dbus.SystemBus()
+
+if len(sys.argv) == 3:
+	path = sys.argv[1]
+	id = int(sys.argv[2], 16)
+elif len(sys.argv) == 2:
+	manager = dbus.Interface(bus.get_object('org.ofono', '/'),
+				 'org.ofono.Manager')
+	properties = manager.GetProperties()
+	path = properties["Modems"][0]
+	id = int(sys.argv[1], 16)
+else:
+	print "%s [PATH] icon_id" % (sys.argv[0])
+
+simmanager = dbus.Interface(bus.get_object('org.ofono', path),
+			    'org.ofono.SimManager')
+
+xpm = simmanager.GetIcon(id)
+
+print "Received xpm: %s" % (xpm)
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-08-05 21:32 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-05 21:32 [PATCH 0/7] add support for icons Kristen Carlson Accardi
2010-08-05 21:32 ` [PATCH 1/7] simutil: add fileid for EFimg Kristen Carlson Accardi
2010-08-05 21:32 ` [PATCH 2/7] stkutil: change uint32_t to guint32 Kristen Carlson Accardi
2010-08-05 21:32 ` [PATCH 3/7] sim: read EFimg Kristen Carlson Accardi
2010-08-05 21:32 ` [PATCH 4/7] sim: allow partial reads of files Kristen Carlson Accardi
2010-08-05 21:32 ` [PATCH 5/7] sim: read an image from an EFiidf Kristen Carlson Accardi
2010-08-05 21:32 ` [PATCH 6/7] sim: implement GetIcon dbus interface Kristen Carlson Accardi
2010-08-05 21:32 ` [PATCH 7/7] test: add get-icon script Kristen Carlson Accardi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox