On 20/02/18 09:15, Daniele Palmas wrote:
Hi John,

2018-02-18 10:44 GMT+01:00 John Crispin <j...@phrozen.org>:

On 14/08/17 12:02, Daniele Palmas wrote:
This patch adds support for UIM Get Card Status request

Signed-off-by: Daniele Palmas <dnl...@gmail.com>
---

Hi Daniele,

sorry for the late reply, nitpicks inline, if you could fix those and resend
the patch please ..

Thanks for the review! I've just sent a v2 to fix those.

By the way, if you think it's worth I have patches for adding more
features that I can (slowly) send for review.

Regards,
Daniele

Hi Daniele,

sure, send them our way !

    John


     John

   commands-uim.c | 143
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   commands-uim.h |   4 +-
   2 files changed, 146 insertions(+), 1 deletion(-)

diff --git a/commands-uim.c b/commands-uim.c
index 859da68..4263cf3 100644
--- a/commands-uim.c
+++ b/commands-uim.c
@@ -54,3 +54,146 @@ cmd_uim_verify_pin2_prepare(struct qmi_dev *qmi,
struct qmi_request *req, struct
         qmi_set_uim_verify_pin_request(msg, &data);
         return QMI_CMD_REQUEST;
   }
+
+static void
+cmd_uim_get_card_status_cb(struct qmi_dev *qmi, struct qmi_request *req,
struct qmi_msg *msg)
+{
+
[...]

+       qmi_parse_uim_get_card_status_response(msg, &res);
+
+       c = blobmsg_open_table(&status, NULL);
+
+       if (res.set.card_status) {
there is a lot of indenting here, could you instead change the code to

if (!res.set.card_status)
         return
...

if (res.data.card_status.cards_n <= 0)
         return;
...
...

that will make the code easier to read

         John





+               blobmsg_add_u32(&status, "num_slots",
res.data.card_status.cards_n);
+
+               if (res.data.card_status.index_gw_primary != 0xFFFF)
+                       blobmsg_add_u32(&status, "index_gw_pri",
res.data.card_status.index_gw_primary);
+               if (res.data.card_status.index_1x_primary != 0xFFFF)
+                       blobmsg_add_u32(&status, "index_1x_pri",
res.data.card_status.index_1x_primary);
+               if (res.data.card_status.index_gw_secondary_ != 0xFFFF)
+                       blobmsg_add_u32(&status, "index_gw_sec",
res.data.card_status.index_gw_secondary_);
+               if (res.data.card_status.index_1x_secondary != 0xFFFF)
+                       blobmsg_add_u32(&status, "index_1x_sec",
res.data.card_status.index_1x_secondary);
+
+               if (res.data.card_status.cards_n > 0) {
+                       a = blobmsg_open_array(&status, "card_info");
+
+                       for (i = 0; i < res.data.card_status.cards_n; i++)
{
+                               card_info = blobmsg_open_table(&status,
NULL);
+
+                               blobmsg_add_u32(&status, "app_n",
res.data.card_status.cards[i].applications_n);
+
+                               if
(res.data.card_status.cards[i].card_state > QMI_UIM_CARD_STATE_ERROR)
+
res.data.card_status.cards[i].card_state = QMI_UIM_CARD_STATE_ERROR;
+                               else if
(res.data.card_status.cards[i].card_state == QMI_UIM_CARD_STATE_ERROR) {
+                                       if
(res.data.card_status.cards[i].error_code > QMI_UIM_CARD_ERROR_TECHNICAL)
+
res.data.card_status.cards[i].error_code = QMI_UIM_CARD_ERROR_UNKNOWN;
+                                       blobmsg_add_string(&status,
"card_error", card_error[res.data.card_status.cards[i].error_code]);
+                               }
+
+                               blobmsg_add_string(&status, "card_state",
card_state[res.data.card_status.cards[i].card_state]);
+
+                               if
(res.data.card_status.cards[i].upin_state >
QMI_UIM_PIN_STATE_PERMANENTLY_BLOCKED)
+
res.data.card_status.cards[i].upin_state =
QMI_UIM_PIN_STATE_PERMANENTLY_BLOCKED;
+                               blobmsg_add_string(&status, "upin_state",
pin_state[res.data.card_status.cards[i].upin_state]);
+
+                               if
(res.data.card_status.cards[i].upin_state !=
QMI_UIM_PIN_STATE_NOT_INITIALIZED) {
+                                       blobmsg_add_u32(&status,
"upin_retries", res.data.card_status.cards[i].upin_retries);
+                                       blobmsg_add_u32(&status,
"upuk_retries", res.data.card_status.cards[i].upuk_retries);
+                               }
+
+                               if
(res.data.card_status.cards[i].applications_n > 0) {
+                                       a_app =
blobmsg_open_array(&status, "app_info");
+
+                                       for (j = 0; j <
res.data.card_status.cards[i].applications_n; j++) {
+                                               app_info =
blobmsg_open_table(&status, NULL);
+
+                                               if
(res.data.card_status.cards[i].applications[j].type >
QMI_UIM_CARD_APPLICATION_TYPE_ISIM)
+
res.data.card_status.cards[i].applications[j].type =
QMI_UIM_CARD_APPLICATION_TYPE_UNKNOWN;
+
blobmsg_add_string(&status, "app_type",
app_type[res.data.card_status.cards[i].applications[j].type]);
+
+                                               if
(res.data.card_status.cards[i].applications[j].state >
QMI_UIM_CARD_APPLICATION_STATE_READY)
+
res.data.card_status.cards[i].applications[j].state =
QMI_UIM_CARD_APPLICATION_STATE_UNKNOWN;
+
blobmsg_add_string(&status, "app_state",
app_state[res.data.card_status.cards[i].applications[j].state]);
+                                               blobmsg_add_u8(&status,
"upin", res.data.card_status.cards[i].applications[j].upin_replaces_pin1);
+
+                                               if
(res.data.card_status.cards[i].applications[j].upin_replaces_pin1 == 0) {
+                                                       if
(res.data.card_status.cards[i].applications[j].pin1_state >
QMI_UIM_PIN_STATE_PERMANENTLY_BLOCKED)
+
res.data.card_status.cards[i].applications[j].pin1_state =
QMI_UIM_PIN_STATE_PERMANENTLY_BLOCKED;
+
blobmsg_add_string(&status, "pin1_state",
pin_state[res.data.card_status.cards[i].applications[j].pin1_state]);
+
blobmsg_add_u32(&status, "pin1_retries",
res.data.card_status.cards[i].applications[j].pin1_retries);
+
blobmsg_add_u32(&status, "puk1_retries",
res.data.card_status.cards[i].applications[j].puk1_retries);
+                                                       if
(res.data.card_status.cards[i].applications[j].pin2_state >
QMI_UIM_PIN_STATE_PERMANENTLY_BLOCKED)
+
res.data.card_status.cards[i].applications[j].pin2_state =
QMI_UIM_PIN_STATE_PERMANENTLY_BLOCKED;
+
blobmsg_add_string(&status, "pin2_state",
pin_state[res.data.card_status.cards[i].applications[j].pin2_state]);
+
blobmsg_add_u32(&status, "pin2_retries",
res.data.card_status.cards[i].applications[j].pin2_retries);
+
blobmsg_add_u32(&status, "puk2_retries",
res.data.card_status.cards[i].applications[j].puk2_retries);
+                                               }
+
+
blobmsg_close_table(&status, app_info);
+                                       }
+
+                                       blobmsg_close_array(&status,
a_app);
+                               }
+                               blobmsg_close_table(&status, card_info);
+                       }
+
+                       blobmsg_close_array(&status, a);
+               }
+
+       }
+
+       blobmsg_close_table(&status, c);
+}
+
+static enum qmi_cmd_result
+cmd_uim_get_card_status_prepare(struct qmi_dev *qmi, struct qmi_request
*req, struct qmi_msg *msg, char *arg)
+{
+       qmi_set_uim_get_card_status_request(msg);
+       return QMI_CMD_REQUEST;
+}
\ No newline at end of file
diff --git a/commands-uim.h b/commands-uim.h
index 86ebae4..b668263 100644
--- a/commands-uim.h
+++ b/commands-uim.h
@@ -21,10 +21,12 @@
     #define __uqmi_uim_commands
\
         __uqmi_command(uim_verify_pin1, uim-verify-pin1, required,
QMI_SERVICE_UIM), \
-       __uqmi_command(uim_verify_pin2, uim-verify-pin2, required,
QMI_SERVICE_UIM) \
+       __uqmi_command(uim_verify_pin2, uim-verify-pin2, required,
QMI_SERVICE_UIM), \
+       __uqmi_command(uim_get_card_status, uim-get-card-status, no,
QMI_SERVICE_UIM) \
       #define uim_helptext \
                 "  --uim-verify-pin1 <pin>:          Verify PIN1 (new
devices)\n" \
                 "  --uim-verify-pin2 <pin>:          Verify PIN2 (new
devices)\n" \
+               "  --uim-get-card-status:            Get Card Status\n" \


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to