diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-01-01 11:47:31 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-01-01 19:51:50 +0100 |
commit | f1801995212ef82d3d49c6edc240181d36f2803b (patch) | |
tree | ae4108801c9ebf2acc46d402703eab7094c8b514 | |
parent | efb3ecadd761c68d0b5b89d9f70dd825723385eb (diff) |
diag_msgc: Parse responses
-rw-r--r-- | src/diag_msg.c | 14 | ||||
-rw-r--r-- | src/osmo-qcdiag-log.c | 8 |
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"); |