restructuring: Introduce _transceive_ functions for Tx-then-Rx
diff --git a/src/diag_dpl.c b/src/diag_dpl.c
index 72008dd..31bcff6 100644
--- a/src/diag_dpl.c
+++ b/src/diag_dpl.c
@@ -21,6 +21,7 @@
 #include <osmocom/core/msgb.h>
 
 #include "diag_log.h"
+#include "diag_io.h"
 #include "protocol/diagcmd.h"
 #include "protocol/diag_log_1x.h"
 #include "protocol/dpl.h"
@@ -33,52 +34,61 @@
 
 int diag_dpl_reset_logging(struct diag_instance *di)
 {
-	struct msb *msg = msgb_alloc_diag();
+	struct msgb *msg = msgb_alloc_diag();
+	struct msgb *rx;
 	diag_push_subsys_hdr(msg, DIAG_SUBSYS_PS_DATA_LOGGING,
 			     DIAG_DPL_RESET_LOGGING);
-	diag_transmit_msgb(di, msg);
-	diag_read(di);
+	rx = diag_transceive_msg(di, msg);
+	/* FIXME */
+	msgb_free(rx);
 	return 0;
 }
 
 int diag_dpl_get_sup_if(struct diag_instance *di)
 {
 	struct msgb *msg = msgb_alloc_diag();
+	struct msgb *rx;
 	diag_push_subsys_hdr(msg, DIAG_SUBSYS_PS_DATA_LOGGING,
 			     DIAG_DPL_GET_SUPPORTED_IFACES);
-	diag_transmit_msgb(di, msg);
-	diag_read(di);
+	rx = diag_transceive_msg(di, msg);
+	/* FIXME */
+	msgb_free(rx);
 	return 0;
 }
 
 int diag_dpl_get_if_desc(struct diag_instance *di, uint8_t iface_id)
 {
 	struct msgb *msg = msgb_alloc_diag();
+	struct msgb *rx;
 	struct dpl_get_if_desc_req *gidr;
 
 	gidr = (struct dpl_get_if_desc_req *) msgb_put(msg, sizeof(*gidr));
 	gidr->iface_id = iface_id;
 	diag_push_subsys_hdr(msg, DIAG_SUBSYS_PS_DATA_LOGGING,
 			     DIAG_DPL_GET_SUPPORTED_IFACES);
-	diag_transmit_msgb(di, msg);
-	diag_read(di);
+	rx = diag_transceive_msg(di, msg);
+	/* FIXME */
+	msgb_free(rx);
 	return 0;
 }
 
-int diag_dpl_set_if_log(struct diag_instance *di, uint8_t iface_id)
+int diag_dpl_set_if_log(struct diag_instance *di, uint8_t iface_id,
+			uint32_t iid, uint32_t link_type)
 {
 	struct msgb *msg = msgb_alloc_diag();
 	struct dpl_set_if_log_req *silr;
+	struct msgb *rx;
 
-	silr = (struct dpl_get_if_desc_req *) msgb_put(msg, sizeof(*silr));
+	silr = (struct dpl_set_if_log_req *) msgb_put(msg, sizeof(*silr));
 	silr->iface_id = iface_id;
 	silr->num_log_flags = 1;
-	msgb_put(msg, sizeof(silr->log_flags[0]);
-	silr->log_flags[0].iid = FIXME;
-	silr->log_flags[0].link_type = FIXME;
+	msgb_put(msg, sizeof(silr->log_flags[0]));
+	silr->log_flags[0].iid = iid;
+	silr->log_flags[0].link_type = link_type;
 
-	diag_transmit_msgb(di, msg);
-	diag_read(di);
+	rx = diag_transceive_msg(di, msg);
+	/* FIXME */
+	msgb_free(rx);
 
 	return 0;
 }
@@ -91,8 +101,8 @@
 	struct dpl_hdr *dh = (struct dpl_hdr *) msgb_data(msg);
 	printf("(fl=0x%02x, ifn=0x%02x, prot=0x%02x, inst=%u, seq=%u, seg=%u): %s",
 		dh->iid.flags, dh->iid.if_name, dh->iid.protocol,
-		dh->iid.link_instance, dh->seeq_nr, sh->seg_num,
-		osmo_hexdump(dh->data, msgb_len(msg)-sizeof(*dh)));
+		dh->iid.link_instance, dh->seq_nr, dh->seg_num,
+		osmo_hexdump(dh->data, msgb_length(msg)-sizeof(*dh)));
 }
 
 static const struct diag_log_dispatch_tbl log_tbl[] = {