From patchwork Mon Dec 8 12:27:34 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?S=C5=82awomir_Demeszko?= X-Patchwork-Id: 418689 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (arrakis.dune.hu [78.24.191.176]) (using TLSv1.1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 88F221400D5 for ; Mon, 8 Dec 2014 23:29:32 +1100 (AEDT) Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 0808B28C03F; Mon, 8 Dec 2014 13:26:54 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on arrakis.dune.hu X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00,T_DKIM_INVALID autolearn=unavailable version=3.3.2 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 4BF9528C00C for ; Mon, 8 Dec 2014 13:26:41 +0100 (CET) X-policyd-weight: using cached result; rate:hard: -7.6 Received: from hosting.nazwa24.pl (ns1.hosting.nazwa24.pl [46.242.129.143]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Mon, 8 Dec 2014 13:26:19 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=wireless-instruments.com; s=default; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From; bh=h/6B8c4y90dYgVXWDmVFWP75/ufSZvExHe2DOGydbr8=; b=ib1BLh2aKVWUEeCeGEjgTsa4VtAzdFXcNyiZVOdqftIAmTeDG/nNex9dRJJAaEWpyhMHIlyn85VpohjHyBMGUVyERW9062SWpQLUTcSv3KcrsFBbTqcYc0LQVyV2UU3N1Qxiy/fSaMa9K2mZtqCtcDTNBryDOvMX6Kzuc9plxEE=; Received: from afo149.internetdsl.tpnet.pl ([83.16.144.149]:51141 helo=localhost.localdomain) by hosting.nazwa24.pl with esmtpsa (UNKNOWN:AES128-SHA256:128) (Exim 4.82) (envelope-from ) id 1XxxQ2-0007bJ-Ad; Mon, 08 Dec 2014 13:28:02 +0100 From: =?UTF-8?q?S=C5=82awomir=20Demeszko?= To: openwrt-devel@lists.openwrt.org Date: Mon, 8 Dec 2014 13:27:34 +0100 Message-Id: <1418041654-18409-2-git-send-email-s.demeszko@wireless-instruments.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1418041654-18409-1-git-send-email-s.demeszko@wireless-instruments.com> References: <1418041654-18409-1-git-send-email-s.demeszko@wireless-instruments.com> MIME-Version: 1.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - hosting.nazwa24.pl X-AntiAbuse: Original Domain - lists.openwrt.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - wireless-instruments.com X-Get-Message-Sender-Via: hosting.nazwa24.pl: authenticated_id: s.demeszko@wireless-instruments.com Cc: =?UTF-8?q?S=C5=82awomir=20Demeszko?= Subject: [OpenWrt-Devel] [PATCH uqmi 2/2] Added support for 8 bit and 16 bit encoded SMS messages X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" Message is presented as string of hexadecimal pairs in JSON output. Signed-off-by: Sławomir Demeszko --- commands-wms.c | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/commands-wms.c b/commands-wms.c index 9760d85..74f50aa 100644 --- a/commands-wms.c +++ b/commands-wms.c @@ -239,6 +239,15 @@ static void wms_decode_address(char *name, unsigned char *data, int len) blobmsg_add_string_buffer(&status); } +static void blobmsg_add_hex(struct blob_buf *buf, const char *name, unsigned const char *data, int len) +{ + char* str = blobmsg_alloc_string_buffer(buf, name, len * 2 + 1); + for (int i = 0; i < len; i++) { + str += sprintf(str, "%02x", data[i]); + } + blobmsg_add_string_buffer(buf); +} + #define cmd_wms_delete_message_cb no_cb static enum qmi_cmd_result cmd_wms_delete_message_prepare(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg, char *arg) @@ -318,10 +327,6 @@ static void cmd_wms_get_message_cb(struct qmi_dev *qmi, struct qmi_request *req, /* Data Encoding */ dcs = *(data++); - /* only 7-bit encoding supported for now */ - if (dcs & 0x0c) - goto error; - if (dcs & 0x10) blobmsg_add_u32(&status, "class", (dcs & 3)); @@ -374,9 +379,24 @@ static void cmd_wms_get_message_cb(struct qmi_dev *qmi, struct qmi_request *req, if (data >= end) goto error; - decode_7bit_field("text", data, end - data, bit_offset); - blobmsg_close_table(&status, c); + switch(dcs & 0x0c) { + case 0x00: + /* 7 bit GSM alphabet */ + decode_7bit_field("text", data, end - data, bit_offset); + break; + case 0x04: + /* 8 bit data */ + blobmsg_add_hex(&status, "data", data, end - data); + break; + case 0x08: + /* 16 bit UCS-2 string */ + blobmsg_add_hex(&status, "ucs-2", data, end - data); + break; + default: + goto error; + } + blobmsg_close_table(&status, c); return; error: