static inline void mcc_fcoff(int level, uint8_t *ptr, int len, long_frame_head *head, mcc_long_frame_head *mcc_head) { printf("FCOFF %s: ", CR_STR(mcc_head)); print_rfcomm_hdr(head, ptr, len); print_mcc(mcc_head); }
static inline void mcc_rpn(int level, uint8_t *ptr, unsigned int len, long_frame_head *head, mcc_long_frame_head *mcc_head) { rpn_msg *rpn = (void *) (ptr - STRUCT_END(rpn_msg, mcc_s_head)); printf("RPN %s: ", CR_STR(mcc_head)); print_rfcomm_hdr(head, ptr, len); print_mcc(mcc_head); p_indent(level, 0); printf("dlci %d ", GET_DLCI(rpn->dlci)); /* Assuming that rpn_val is _declared_ as a member of rpn_msg... */ if (len <= STRUCT_OFFSET(rpn_msg, rpn_val) - STRUCT_END(rpn_msg, mcc_s_head)) { printf("\n"); return; } printf("br %d db %d sb %d p %d pt %d xi %d xo %d\n", rpn->rpn_val.bit_rate, rpn->rpn_val.data_bits, rpn->rpn_val.stop_bit, rpn->rpn_val.parity, rpn->rpn_val.parity_type, rpn->rpn_val.xon_input, rpn->rpn_val.xon_output); p_indent(level, 0); printf("rtri %d rtro %d rtci %d rtco %d xon %d xoff %d pm 0x%04x\n", rpn->rpn_val.rtr_input, rpn->rpn_val.rtr_output, rpn->rpn_val.rtc_input, rpn->rpn_val.rtc_output, rpn->rpn_val.xon, rpn->rpn_val.xoff, btohs(rpn->rpn_val.pm)); }
static inline void mcc_rls(int level, uint8_t *ptr, int len, long_frame_head *head, mcc_long_frame_head *mcc_head) { rls_msg* rls = (void*) (ptr - STRUCT_END(rls_msg, mcc_s_head)); printf("RLS %s: ", CR_STR(mcc_head)); print_rfcomm_hdr(head, ptr, len); print_mcc(mcc_head); printf("dlci %d error: %d", GET_DLCI(rls->dlci), rls->error); }
static inline void mcc_nsc(int level, uint8_t *ptr, int len, long_frame_head *head, mcc_long_frame_head *mcc_head) { nsc_msg *nsc = (void*) (ptr - STRUCT_END(nsc_msg, mcc_s_head)); printf("NSC %s: ", CR_STR(mcc_head)); print_rfcomm_hdr(head, ptr, len); print_mcc(mcc_head); p_indent(level, 0); printf("cr %d, mcc_cmd_type %x\n", nsc->command_type.cr, nsc->command_type.type ); }
static inline void mcc_pn(int level, uint8_t *ptr, int len, long_frame_head *head, mcc_long_frame_head *mcc_head) { pn_msg *pn = (void*) (ptr - STRUCT_END(pn_msg, mcc_s_head)); printf("PN %s: ", CR_STR(mcc_head)); print_rfcomm_hdr(head, ptr, len); print_mcc(mcc_head); p_indent(level, 0); printf("dlci %d frame_type %d credit_flow %d pri %d ack_timer %d\n", pn->dlci, pn->frame_type, pn->credit_flow, pn->prior, pn->ack_timer); p_indent(level, 0); printf("frame_size %d max_retrans %d credits %d\n", btohs(pn->frame_size), pn->max_nbrof_retrans, pn->credits); }
static inline bool mcc_frame(struct rfcomm_frame *rfcomm_frame, uint8_t indent) { uint8_t length, ex_length, type; const char *type_str; int i; struct l2cap_frame *frame = &rfcomm_frame->l2cap_frame; struct rfcomm_lmcc mcc; const struct mcc_data *mcc_data = NULL; if (!l2cap_frame_get_u8(frame, &mcc.type) || !l2cap_frame_get_u8(frame, &length)) return false; if (RFCOMM_TEST_EA(length)) mcc.length = (uint16_t) GET_LEN8(length); else { if (!l2cap_frame_get_u8(frame, &ex_length)) return false; mcc.length = ((uint16_t) length << 8) | ex_length; mcc.length = GET_LEN16(mcc.length); } type = RFCOMM_GET_MCC_TYPE(mcc.type); for (i = 0; mcc_table[i].str; i++) { if (mcc_table[i].type == type) { mcc_data = &mcc_table[i]; break; } } if (mcc_data) type_str = mcc_data->str; else type_str = "Unknown"; print_field("%*cMCC Message type: %s %s(0x%2.2x)", indent, ' ', type_str, CR_STR(mcc.type), type); print_field("%*cLength: %d", indent+2, ' ', mcc.length); rfcomm_frame->mcc = mcc; packet_hexdump(frame->data, frame->size); return true; }
static inline void mcc_msc(int level, uint8_t *ptr, unsigned int len, long_frame_head *head, mcc_long_frame_head *mcc_head) { msc_msg *msc = (void*) (ptr - STRUCT_END(msc_msg, mcc_s_head)); printf("MSC %s: ", CR_STR(mcc_head)); print_rfcomm_hdr(head, ptr, len); print_mcc(mcc_head); p_indent(level, 0); printf("dlci %d fc %d rtc %d rtr %d ic %d dv %d", GET_DLCI(msc->dlci), msc->v24_sigs.fc, msc->v24_sigs.rtc, msc->v24_sigs.rtr, msc->v24_sigs.ic, msc->v24_sigs.dv ); /* Assuming that break_signals field is _not declared_ in struct msc_msg... */ if (len > STRUCT_OFFSET(msc_msg, fcs) - STRUCT_END(msc_msg, v24_sigs)) { break_signals *brk = (break_signals *) (ptr + STRUCT_END(msc_msg, v24_sigs)); printf(" b1 %d b2 %d b3 %d len %d\n", brk->b1, brk->b2, brk->b3, brk->len); } else printf("\n"); }