aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-01-01 11:47:31 +0100
committerHarald Welte <laforge@gnumonks.org>2017-01-01 19:51:50 +0100
commitf1801995212ef82d3d49c6edc240181d36f2803b (patch)
treeae4108801c9ebf2acc46d402703eab7094c8b514
parentefb3ecadd761c68d0b5b89d9f70dd825723385eb (diff)
diag_msgc: Parse responses
-rw-r--r--src/diag_msg.c14
-rw-r--r--src/osmo-qcdiag-log.c8
2 files changed, 19 insertions, 3 deletions
diff --git a/src/diag_msg.c b/src/diag_msg.c
index f65a8f4..53bc027 100644
--- a/src/diag_msg.c
+++ b/src/diag_msg.c
@@ -59,12 +59,22 @@ int diag_msg_config_set_rt_mask(struct diag_instance *di, uint16_t ssid, uint32_
{
struct msgb *msg = gen_msg_config_set_rt_mask(ssid, runtime_mask);
struct msgb *rx;
+ struct diag_set_rt_mask_req *res;
+ int rc = 0;
rx = diag_transceive_msg(di, msg);
- /* FIXME */
+ res = (struct diag_set_rt_mask_req *) (msgb_l2(msg)+1);
+ if ((rx->l2h[0] != 0x5d) || res->cmd_code != 0x5d ||
+ res->sub_cmd != MSG_EXT_SUBCMD_SET_RT_MASK ||
+ osmo_load16le(&res->ssid_start) != ssid ||
+ osmo_load16le(&res->ssid_end) != ssid ||
+ osmo_load32le(&res->runtime_mask) != runtime_mask) {
+ fprintf(stderr, "Error setting RT mask\n");
+ rc = -1;
+ }
msgb_free(rx);
- return 0;
+ return rc;
}
/* handler for EXT MSG */
diff --git a/src/osmo-qcdiag-log.c b/src/osmo-qcdiag-log.c
index a867955..c5a5a31 100644
--- a/src/osmo-qcdiag-log.c
+++ b/src/osmo-qcdiag-log.c
@@ -54,20 +54,26 @@ static void do_configure(struct diag_instance *di)
DIAG_EVENT_REPORT_F, 0x00
};
- /* TODO: introduce a wait for response kind of method */
diag_transceive_buf_ign(di, timestamp, sizeof(timestamp));
+ /* response: 3d 67 a8 81 d4 46 6d d9 00 */
/* enable|disable the event report */
#if 0
diag_transceive_buf_ign(di, enable_evt_report, sizeof(enable_evt_report));
#else
diag_transceive_buf_ign(di, disable_evt_report, sizeof(disable_evt_report));
+ /* response: 40 00 00 */
#endif
diag_msg_config_set_rt_mask(di, MSG_SSID_LINUX_DATA, 0xffffffff);
+ /* response: 5d 5d 04 41 00 41 00 01 00 ff ff ff ff */
diag_msg_config_set_rt_mask(di, 5012, 0xffffffff);
+ /* response: 5d 5d 04 94 13 94 13 01 00 ff ff ff ff */
diag_msg_config_set_rt_mask(di, 5000, 0xffffffff);
+ /* response: 5d 5d 04 88 13 88 13 01 00 ff ff ff ff */
diag_msg_config_set_rt_mask(di, 5030, 0xffffffff);
+ /* response: 5d 5d 04 a6 13 a6 13 01 00 ff ff ff ff */
diag_msg_config_set_rt_mask(di, 5009, 0xffffffff);
+ /* response: 5d 5d 04 91 13 91 13 01 00 ff ff ff ff */
#if 0
printf("GSM\n");