[PATCH 1/2] stk: Add duration_to_msecs to reduce duplication.

2010-10-25 Thread Andrzej Zaborowski
---
 src/stk.c |   61 ++---
 1 files changed, 26 insertions(+), 35 deletions(-)

diff --git a/src/stk.c b/src/stk.c
index 82bc91e..ebd3801 100644
--- a/src/stk.c
+++ b/src/stk.c
@@ -437,6 +437,24 @@ static void stk_alpha_id_unset(struct ofono_stk *stk)
/* TODO */
 }
 
+static int duration_to_msecs(const struct stk_duration *duration)
+{
+   int msecs = duration-interval;
+
+   switch (duration-unit) {
+   case STK_DURATION_TYPE_MINUTES:
+   msecs *= 60;
+   /* Fall through.  */
+   case STK_DURATION_TYPE_SECONDS:
+   msecs *= 10;
+   /* Fall through.  */
+   case STK_DURATION_TYPE_SECOND_TENTHS:
+   msecs *= 100;
+   }
+
+   return msecs;
+}
+
 static DBusMessage *stk_get_properties(DBusConnection *conn,
DBusMessage *msg, void *data)
 {
@@ -1000,23 +1018,14 @@ static gboolean handle_command_poll_interval(const 
struct stk_command *cmd,
struct ofono_modem *modem = __ofono_atom_get_modem(stk-atom);
int seconds;
 
-   switch (cmd-poll_interval.duration.unit) {
-   case STK_DURATION_TYPE_MINUTES:
-   seconds = cmd-poll_interval.duration.interval * 60;
-   break;
-   case STK_DURATION_TYPE_SECONDS:
-   seconds = cmd-poll_interval.duration.interval;
-   break;
-   case STK_DURATION_TYPE_SECOND_TENTHS:
-   seconds = (4 + cmd-poll_interval.duration.interval) / 10;
-   if (seconds  1)
-   seconds = 1;
-   break;
-   default:
+   if (!cmd-poll_interval.duration.interval) {
rsp-result.type = STK_RESULT_TYPE_DATA_NOT_UNDERSTOOD;
return TRUE;
}
 
+   seconds = MAX(duration_to_msecs(cmd-poll_interval.duration) / 1000,
+   1);
+
ofono_modem_set_integer(modem, status-poll-interval, seconds);
 
if (seconds  255) {
@@ -1219,17 +1228,8 @@ static gboolean handle_command_display_text(const struct 
stk_command *cmd,
return TRUE;
}
 
-   if (dt-duration.interval) {
-   timeout = dt-duration.interval;
-   switch (dt-duration.unit) {
-   case STK_DURATION_TYPE_MINUTES:
-   timeout *= 60;
-   case STK_DURATION_TYPE_SECONDS:
-   timeout *= 10;
-   case STK_DURATION_TYPE_SECOND_TENTHS:
-   timeout *= 100;
-   }
-   }
+   if (dt-duration.interval)
+   timeout = duration_to_msecs(dt-duration);
 
err = stk_agent_display_text(stk-current_agent, text, dt-icon_id,
priority, display_text_cb, stk,
@@ -1387,17 +1387,8 @@ static gboolean handle_command_get_inkey(const struct 
stk_command *cmd,
return TRUE;
}
 
-   if (gi-duration.interval) {
-   timeout = gi-duration.interval;
-   switch (gi-duration.unit) {
-   case STK_DURATION_TYPE_MINUTES:
-   timeout *= 60;
-   case STK_DURATION_TYPE_SECONDS:
-   timeout *= 10;
-   case STK_DURATION_TYPE_SECOND_TENTHS:
-   timeout *= 100;
-   }
-   }
+   if (gi-duration.interval)
+   timeout = duration_to_msecs(gi-duration);
 
gettimeofday(stk-get_inkey_start_ts, NULL);
 
-- 
1.7.1.86.g0e460.dirty

___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono


Re: [PATCH 1/2] stk: Add duration_to_msecs to reduce duplication.

2010-10-25 Thread Denis Kenzior
Hi Andrew,

On 10/25/2010 12:51 AM, Andrzej Zaborowski wrote:
 ---
  src/stk.c |   61 
 ++---
  1 files changed, 26 insertions(+), 35 deletions(-)
 

Patch has been applied, thanks.

Regards,
-Denis
___
ofono mailing list
ofono@ofono.org
http://lists.ofono.org/listinfo/ofono