summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2013-02-17 16:08:52 +0100
committerFelix Fietkau <nbd@openwrt.org>2013-02-17 16:08:52 +0100
commit40fa0f983ba95da1750c8bef6cdfa0271f4c4b44 (patch)
tree224ce2e883b172936975c058d132abe0815d44ff
parentba83df61a02c582edd655f046d7f714fb7a7b556 (diff)
add command for getting signal strength info
-rw-r--r--commands-nas.c43
-rw-r--r--commands-nas.h6
2 files changed, 47 insertions, 2 deletions
diff --git a/commands-nas.c b/commands-nas.c
index aef2745..81975b2 100644
--- a/commands-nas.c
+++ b/commands-nas.c
@@ -1,3 +1,5 @@
+#include "qmi-message.h"
+
static struct qmi_nas_set_system_selection_preference_request sel_req;
#define cmd_nas_set_network_modes_cb no_cb
@@ -43,3 +45,44 @@ cmd_nas_set_network_modes_prepare(struct qmi_dev *qmi, struct qmi_request *req,
return QMI_CMD_REQUEST;
}
+static void
+cmd_nas_get_signal_info_cb(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg)
+{
+ struct qmi_nas_get_signal_info_response res;
+
+ qmi_parse_nas_get_signal_info_response(msg, &res);
+
+ if (res.set.cdma_signal_strength)
+ printf("cdma_rssi=%d\ncdma_ecio=%d\n",
+ res.data.cdma_signal_strength.rssi,
+ res.data.cdma_signal_strength.ecio);
+
+ if (res.set.hdr_signal_strength)
+ printf("hdr_rssi=%d\nhdr_ecio=%d\nhdr_io=%d\n",
+ res.data.hdr_signal_strength.rssi,
+ res.data.hdr_signal_strength.ecio,
+ res.data.hdr_signal_strength.io);
+
+ if (res.set.gsm_signal_strength)
+ printf("gsm_rssi=%d\n", res.data.gsm_signal_strength);
+
+ if (res.set.wcdma_signal_strength)
+ printf("wcdma_rssi=%d\nwcdma_ecio=%d\n",
+ res.data.wcdma_signal_strength.rssi,
+ res.data.wcdma_signal_strength.ecio);
+
+ if (res.set.lte_signal_strength)
+ printf("lte_rssi=%d\nlte_rsrq=%d\nlte_rsrp=%d\nlte_snr=%d\n",
+ res.data.lte_signal_strength.rssi,
+ res.data.lte_signal_strength.rsrq,
+ res.data.lte_signal_strength.rsrp,
+ res.data.lte_signal_strength.snr);
+
+}
+
+static enum qmi_cmd_result
+cmd_nas_get_signal_info_prepare(struct qmi_dev *qmi, struct qmi_request *req, struct qmi_msg *msg, char *arg)
+{
+ qmi_set_nas_get_signal_info_request(msg);
+ return QMI_CMD_REQUEST;
+}
diff --git a/commands-nas.h b/commands-nas.h
index b3e0154..0cc11a1 100644
--- a/commands-nas.h
+++ b/commands-nas.h
@@ -1,7 +1,9 @@
#define __uqmi_nas_commands \
- __uqmi_command(nas_set_network_modes, set-network-modes, required, QMI_SERVICE_NAS) \
+ __uqmi_command(nas_set_network_modes, set-network-modes, required, QMI_SERVICE_NAS), \
+ __uqmi_command(nas_get_signal_info, get-signal-info, no, QMI_SERVICE_NAS) \
#define nas_helptext \
" --set-network-modes <modes>: Set preferred network mode (Syntax: <mode1>[,<mode2>,...])\n" \
- " Available modes: all, lte, umts, gsm, cdma, td-scdma\n"
+ " Available modes: all, lte, umts, gsm, cdma, td-scdma\n" \
+ " --get-signal-info: Get signal strength info\n"