[PATCH v1 5/6] monitor/rfcomm: Add handlers for mcc frame type

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Bharat Panda <bharat.panda@xxxxxxxxxxx>

Changes made to decode different mcc frame type in RFCOMM
for btmon.
---
 monitor/rfcomm.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 76 insertions(+), 2 deletions(-)

diff --git a/monitor/rfcomm.c b/monitor/rfcomm.c
index a43b2a2..b85e8fd 100644
--- a/monitor/rfcomm.c
+++ b/monitor/rfcomm.c
@@ -90,6 +90,51 @@ static void print_rfcomm_hdr(const struct l2cap_frame *frame,
 	print_field("FCS : (0x%2.2x)", fcs);
 }
 
+static inline void mcc_test(const struct l2cap_frame *frame,
+				struct rfcomm_lhdr hdr, struct rfcomm_lmcc mcc)
+{
+}
+
+static inline void mcc_fcon(const struct l2cap_frame *frame,
+				struct rfcomm_lhdr hdr, struct rfcomm_lmcc mcc)
+{
+}
+
+static inline void mcc_fcoff(const struct l2cap_frame *frame,
+				struct rfcomm_lhdr hdr, struct rfcomm_lmcc mcc)
+{
+}
+
+static inline void mcc_msc(const struct l2cap_frame *frame,
+				struct rfcomm_lhdr hdr, struct rfcomm_lmcc mcc)
+{
+	packet_hexdump(frame->data, frame->size);
+}
+
+static inline void mcc_rpn(const struct l2cap_frame *frame,
+				struct rfcomm_lhdr hdr, struct rfcomm_lmcc mcc)
+{
+	packet_hexdump(frame->data, frame->size);
+}
+
+static inline void mcc_rls(const struct l2cap_frame *frame,
+				struct rfcomm_lhdr hdr, struct rfcomm_lmcc mcc)
+{
+	packet_hexdump(frame->data, frame->size);
+}
+
+static inline void mcc_pn(const struct l2cap_frame *frame,
+				struct rfcomm_lhdr hdr, struct rfcomm_lmcc mcc)
+{
+	packet_hexdump(frame->data, frame->size);
+}
+
+static inline void mcc_nsc(const struct l2cap_frame *frame,
+				struct rfcomm_lhdr hdr, struct rfcomm_lmcc mcc)
+{
+	packet_hexdump(frame->data, frame->size);
+}
+
 static const char *type2str(uint8_t type)
 {
 	switch (type) {
@@ -141,8 +186,37 @@ static inline bool mcc_frame(const struct l2cap_frame *frame,
 	print_indent(7, opcode_color, "RFCOMM(s): ", "", COLOR_OFF, "%s %s",
 					type2str(type), CR_STR(mcc.type));
 
-	print_rfcomm_hdr(&rfcomm_frame, hdr);
-	packet_hexdump(rfcomm_frame.data, rfcomm_frame.size);
+	switch (type) {
+	case RFCOMM_TEST:
+		mcc_test(&rfcomm_frame, hdr, mcc);
+		packet_hexdump(rfcomm_frame.data, rfcomm_frame.size);
+		break;
+	case RFCOMM_FCON:
+		mcc_fcon(&rfcomm_frame, hdr, mcc);
+		break;
+	case RFCOMM_FCOFF:
+		mcc_fcoff(&rfcomm_frame, hdr, mcc);
+		break;
+	case RFCOMM_MSC:
+		mcc_msc(&rfcomm_frame, hdr, mcc);
+		break;
+	case RFCOMM_RPN:
+		mcc_rpn(&rfcomm_frame, hdr, mcc);
+		break;
+	case RFCOMM_RLS:
+		mcc_rls(&rfcomm_frame, hdr, mcc);
+		break;
+	case RFCOMM_PN:
+		mcc_pn(&rfcomm_frame, hdr, mcc);
+		break;
+	case RFCOMM_NSC:
+		mcc_nsc(&rfcomm_frame, hdr, mcc);
+		break;
+	default:
+		print_field("MCC message type 0x%02x: ", type);
+		print_rfcomm_hdr(&rfcomm_frame, hdr);
+		packet_hexdump(rfcomm_frame.data, rfcomm_frame.size);
+	}
 
 	return true;
 }
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux