Loading system/main/shim/acl.cc +2 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ #include "stack/include/bt_hdr.h" #include "stack/include/btm_api.h" #include "stack/include/btm_status.h" #include "stack/include/pan_api.h" #include "stack/include/sec_hci_link_interface.h" #include "stack/l2cap/l2c_int.h" #include "types/ble_address_with_type.h" Loading Loading @@ -1128,6 +1129,7 @@ void DumpsysRecord(int fd) { #undef DUMPSYS_TAG void shim::legacy::Acl::Dump(int fd) const { PAN_Dumpsys(fd); DumpsysHid(fd); DumpsysRecord(fd); DumpsysAcl(fd); Loading system/stack/include/pan_api.h +2 −0 Original line number Diff line number Diff line Loading @@ -461,4 +461,6 @@ extern uint8_t PAN_SetTraceLevel(uint8_t new_level); ******************************************************************************/ extern void PAN_Init(void); extern void PAN_Dumpsys(int fd); #endif /* PAN_API_H */ system/stack/pan/pan_api.cc +58 −5 Original line number Diff line number Diff line Loading @@ -26,13 +26,16 @@ #include "stack/include/pan_api.h" #include <base/logging.h> #include <base/strings/stringprintf.h> #include <cstdint> #include "bta/sys/bta_sys.h" #include "main/shim/dumpsys.h" #include "osi/include/allocator.h" #include "stack/include/bnep_api.h" #include "stack/include/bt_hdr.h" #include "stack/include/btm_log_history.h" #include "stack/include/sdp_api.h" #include "stack/include/sdpdefs.h" #include "stack/pan/pan_int.h" Loading @@ -41,6 +44,10 @@ using bluetooth::Uuid; namespace { constexpr char kBtmLogTag[] = "PAN"; } /******************************************************************************* * * Function PAN_Register Loading @@ -56,10 +63,10 @@ using bluetooth::Uuid; * ******************************************************************************/ void PAN_Register(tPAN_REGISTER* p_register) { pan_register_with_bnep(); if (!p_register) return; pan_register_with_bnep(); pan_cb.pan_conn_state_cb = p_register->pan_conn_state_cb; pan_cb.pan_bridge_req_cb = p_register->pan_bridge_req_cb; pan_cb.pan_data_buf_ind_cb = p_register->pan_data_buf_ind_cb; Loading @@ -68,7 +75,7 @@ void PAN_Register(tPAN_REGISTER* p_register) { pan_cb.pan_mfilt_ind_cb = p_register->pan_mfilt_ind_cb; pan_cb.pan_tx_data_flow_cb = p_register->pan_tx_data_flow_cb; return; BTM_LogHistory(kBtmLogTag, RawAddress::kEmpty, "Registered"); } /******************************************************************************* Loading Loading @@ -97,7 +104,7 @@ void PAN_Deregister(void) { PAN_SetRole(PAN_ROLE_INACTIVE, NULL, NULL); BNEP_Deregister(); return; BTM_LogHistory(kBtmLogTag, RawAddress::kEmpty, "Unregistered"); } /******************************************************************************* Loading Loading @@ -196,6 +203,9 @@ tPAN_RESULT PAN_SetRole(uint8_t role, const char* p_user_name, pan_cb.role = role; PAN_TRACE_EVENT("PAN role set to: %d", role); BTM_LogHistory(kBtmLogTag, RawAddress::kEmpty, "Role change", base::StringPrintf("role:0x%x", role)); return PAN_SUCCESS; } Loading Loading @@ -360,6 +370,8 @@ tPAN_RESULT PAN_Disconnect(uint16_t handle) { if (pan_cb.pan_bridge_req_cb && pcb->src_uuid == UUID_SERVCLASS_NAP) (*pan_cb.pan_bridge_req_cb)(pcb->rem_bda, false); BTM_LogHistory(kBtmLogTag, pcb->rem_bda, "Disconnect"); pan_release_pcb(pcb); if (result != BNEP_SUCCESS) { Loading Loading @@ -497,6 +509,9 @@ tPAN_RESULT PAN_WriteBuf(uint16_t handle, const RawAddress& dst, return (tPAN_RESULT)result; } pan_cb.pcb[i].write.octets += p_buf->len; pan_cb.pcb[i].write.packets++; PAN_TRACE_DEBUG("PAN successfully wrote data for the PANU connection"); return PAN_SUCCESS; } Loading @@ -511,6 +526,7 @@ tPAN_RESULT PAN_WriteBuf(uint16_t handle, const RawAddress& dst, if (pcb->con_state != PAN_STATE_CONNECTED) { PAN_TRACE_ERROR("PAN Buf write when conn is not active"); pcb->write.drops++; osi_free(p_buf); return PAN_FAILURE; } Loading @@ -518,13 +534,19 @@ tPAN_RESULT PAN_WriteBuf(uint16_t handle, const RawAddress& dst, result = BNEP_WriteBuf(pcb->handle, dst, p_buf, protocol, &src, ext); if (result == BNEP_IGNORE_CMD) { PAN_TRACE_DEBUG("PAN ignored data buf write to PANU"); return (tPAN_RESULT)result; pcb->write.errors++; return PAN_IGNORE_CMD; } else if (result != BNEP_SUCCESS) { PAN_TRACE_ERROR("PAN failed to send data buf to the PANU"); pcb->write.errors++; return (tPAN_RESULT)result; } pcb->write.octets += p_buf->len; pcb->write.packets++; PAN_TRACE_DEBUG("PAN successfully sent data buf to the PANU"); return PAN_SUCCESS; } Loading Loading @@ -647,3 +669,34 @@ void PAN_Init(void) { pan_cb.trace_level = BT_TRACE_LEVEL_NONE; /* No traces */ #endif } #define DUMPSYS_TAG "shim::legacy::pan" void PAN_Dumpsys(int fd) { LOG_DUMPSYS_TITLE(fd, DUMPSYS_TAG); LOG_DUMPSYS(fd, "Connections:%hhu roles configured:%s current:%s previous:%s", pan_cb.num_conns, pan_role_to_text(pan_cb.role).c_str(), pan_role_to_text(pan_cb.active_role).c_str(), pan_role_to_text(pan_cb.prv_active_role).c_str()); const tPAN_CONN* pcb = &pan_cb.pcb[0]; for (int i = 0; i < MAX_PAN_CONNS; i++, pcb++) { if (pcb->con_state == PAN_STATE_IDLE) continue; LOG_DUMPSYS(fd, " Id:%d peer:%s", i, PRIVATE_ADDRESS(pcb->rem_bda)); LOG_DUMPSYS( fd, " rx_packets:%-5lu rx_octets:%-8lu rx_errors:%-5lu rx_drops:%-5lu", (unsigned long)pcb->read.packets, (unsigned long)pcb->read.octets, (unsigned long)pcb->read.errors, (unsigned long)pcb->read.drops); LOG_DUMPSYS( fd, " tx_packets:%-5lu tx_octets:%-8lu tx_errors:%-5lu tx_drops:%-5lu", (unsigned long)pcb->write.packets, (unsigned long)pcb->write.octets, (unsigned long)pcb->write.errors, (unsigned long)pcb->write.drops); LOG_DUMPSYS(fd, " src_uuid:0x%04x[prev:0x%04x] dst_uuid:0x%04x[prev:0x%04x] " "bad_pkts:%hu", pcb->src_uuid, pcb->dst_uuid, pcb->prv_src_uuid, pcb->prv_dst_uuid, pcb->bad_pkts_rcvd); } } #undef DUMPSYS_TAG system/stack/pan/pan_int.h +7 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,13 @@ typedef struct { uint16_t ip_addr_known; uint32_t ip_addr; struct { size_t octets{0}; size_t packets{0}; size_t errors{0}; size_t drops{0}; } write, read; } tPAN_CONN; /* The main PAN control block Loading system/stack/pan/pan_main.cc +5 −0 Original line number Diff line number Diff line Loading @@ -393,6 +393,7 @@ void pan_data_buf_ind_cb(uint16_t handle, const RawAddress& src, if (pcb->con_state != PAN_STATE_CONNECTED) { PAN_TRACE_ERROR("PAN Data indication in wrong state %d for handle %d", pcb->con_state, handle); pcb->read.drops++; osi_free(p_buf); return; } Loading @@ -400,6 +401,9 @@ void pan_data_buf_ind_cb(uint16_t handle, const RawAddress& src, p_data = (uint8_t*)(p_buf + 1) + p_buf->offset; len = p_buf->len; pcb->read.octets += len; pcb->read.packets++; PAN_TRACE_EVENT( "pan_data_buf_ind_cb - for handle %d, protocol 0x%x, length %d, ext %d", handle, protocol, len, ext); Loading Loading @@ -447,6 +451,7 @@ void pan_data_buf_ind_cb(uint16_t handle, const RawAddress& src, if (result != BNEP_SUCCESS && result != BNEP_IGNORE_CMD) PAN_TRACE_ERROR("Failed to write data for PAN connection handle %d", dst_pcb->handle); pcb->read.errors++; osi_free(p_buf); return; } Loading Loading
system/main/shim/acl.cc +2 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,7 @@ #include "stack/include/bt_hdr.h" #include "stack/include/btm_api.h" #include "stack/include/btm_status.h" #include "stack/include/pan_api.h" #include "stack/include/sec_hci_link_interface.h" #include "stack/l2cap/l2c_int.h" #include "types/ble_address_with_type.h" Loading Loading @@ -1128,6 +1129,7 @@ void DumpsysRecord(int fd) { #undef DUMPSYS_TAG void shim::legacy::Acl::Dump(int fd) const { PAN_Dumpsys(fd); DumpsysHid(fd); DumpsysRecord(fd); DumpsysAcl(fd); Loading
system/stack/include/pan_api.h +2 −0 Original line number Diff line number Diff line Loading @@ -461,4 +461,6 @@ extern uint8_t PAN_SetTraceLevel(uint8_t new_level); ******************************************************************************/ extern void PAN_Init(void); extern void PAN_Dumpsys(int fd); #endif /* PAN_API_H */
system/stack/pan/pan_api.cc +58 −5 Original line number Diff line number Diff line Loading @@ -26,13 +26,16 @@ #include "stack/include/pan_api.h" #include <base/logging.h> #include <base/strings/stringprintf.h> #include <cstdint> #include "bta/sys/bta_sys.h" #include "main/shim/dumpsys.h" #include "osi/include/allocator.h" #include "stack/include/bnep_api.h" #include "stack/include/bt_hdr.h" #include "stack/include/btm_log_history.h" #include "stack/include/sdp_api.h" #include "stack/include/sdpdefs.h" #include "stack/pan/pan_int.h" Loading @@ -41,6 +44,10 @@ using bluetooth::Uuid; namespace { constexpr char kBtmLogTag[] = "PAN"; } /******************************************************************************* * * Function PAN_Register Loading @@ -56,10 +63,10 @@ using bluetooth::Uuid; * ******************************************************************************/ void PAN_Register(tPAN_REGISTER* p_register) { pan_register_with_bnep(); if (!p_register) return; pan_register_with_bnep(); pan_cb.pan_conn_state_cb = p_register->pan_conn_state_cb; pan_cb.pan_bridge_req_cb = p_register->pan_bridge_req_cb; pan_cb.pan_data_buf_ind_cb = p_register->pan_data_buf_ind_cb; Loading @@ -68,7 +75,7 @@ void PAN_Register(tPAN_REGISTER* p_register) { pan_cb.pan_mfilt_ind_cb = p_register->pan_mfilt_ind_cb; pan_cb.pan_tx_data_flow_cb = p_register->pan_tx_data_flow_cb; return; BTM_LogHistory(kBtmLogTag, RawAddress::kEmpty, "Registered"); } /******************************************************************************* Loading Loading @@ -97,7 +104,7 @@ void PAN_Deregister(void) { PAN_SetRole(PAN_ROLE_INACTIVE, NULL, NULL); BNEP_Deregister(); return; BTM_LogHistory(kBtmLogTag, RawAddress::kEmpty, "Unregistered"); } /******************************************************************************* Loading Loading @@ -196,6 +203,9 @@ tPAN_RESULT PAN_SetRole(uint8_t role, const char* p_user_name, pan_cb.role = role; PAN_TRACE_EVENT("PAN role set to: %d", role); BTM_LogHistory(kBtmLogTag, RawAddress::kEmpty, "Role change", base::StringPrintf("role:0x%x", role)); return PAN_SUCCESS; } Loading Loading @@ -360,6 +370,8 @@ tPAN_RESULT PAN_Disconnect(uint16_t handle) { if (pan_cb.pan_bridge_req_cb && pcb->src_uuid == UUID_SERVCLASS_NAP) (*pan_cb.pan_bridge_req_cb)(pcb->rem_bda, false); BTM_LogHistory(kBtmLogTag, pcb->rem_bda, "Disconnect"); pan_release_pcb(pcb); if (result != BNEP_SUCCESS) { Loading Loading @@ -497,6 +509,9 @@ tPAN_RESULT PAN_WriteBuf(uint16_t handle, const RawAddress& dst, return (tPAN_RESULT)result; } pan_cb.pcb[i].write.octets += p_buf->len; pan_cb.pcb[i].write.packets++; PAN_TRACE_DEBUG("PAN successfully wrote data for the PANU connection"); return PAN_SUCCESS; } Loading @@ -511,6 +526,7 @@ tPAN_RESULT PAN_WriteBuf(uint16_t handle, const RawAddress& dst, if (pcb->con_state != PAN_STATE_CONNECTED) { PAN_TRACE_ERROR("PAN Buf write when conn is not active"); pcb->write.drops++; osi_free(p_buf); return PAN_FAILURE; } Loading @@ -518,13 +534,19 @@ tPAN_RESULT PAN_WriteBuf(uint16_t handle, const RawAddress& dst, result = BNEP_WriteBuf(pcb->handle, dst, p_buf, protocol, &src, ext); if (result == BNEP_IGNORE_CMD) { PAN_TRACE_DEBUG("PAN ignored data buf write to PANU"); return (tPAN_RESULT)result; pcb->write.errors++; return PAN_IGNORE_CMD; } else if (result != BNEP_SUCCESS) { PAN_TRACE_ERROR("PAN failed to send data buf to the PANU"); pcb->write.errors++; return (tPAN_RESULT)result; } pcb->write.octets += p_buf->len; pcb->write.packets++; PAN_TRACE_DEBUG("PAN successfully sent data buf to the PANU"); return PAN_SUCCESS; } Loading Loading @@ -647,3 +669,34 @@ void PAN_Init(void) { pan_cb.trace_level = BT_TRACE_LEVEL_NONE; /* No traces */ #endif } #define DUMPSYS_TAG "shim::legacy::pan" void PAN_Dumpsys(int fd) { LOG_DUMPSYS_TITLE(fd, DUMPSYS_TAG); LOG_DUMPSYS(fd, "Connections:%hhu roles configured:%s current:%s previous:%s", pan_cb.num_conns, pan_role_to_text(pan_cb.role).c_str(), pan_role_to_text(pan_cb.active_role).c_str(), pan_role_to_text(pan_cb.prv_active_role).c_str()); const tPAN_CONN* pcb = &pan_cb.pcb[0]; for (int i = 0; i < MAX_PAN_CONNS; i++, pcb++) { if (pcb->con_state == PAN_STATE_IDLE) continue; LOG_DUMPSYS(fd, " Id:%d peer:%s", i, PRIVATE_ADDRESS(pcb->rem_bda)); LOG_DUMPSYS( fd, " rx_packets:%-5lu rx_octets:%-8lu rx_errors:%-5lu rx_drops:%-5lu", (unsigned long)pcb->read.packets, (unsigned long)pcb->read.octets, (unsigned long)pcb->read.errors, (unsigned long)pcb->read.drops); LOG_DUMPSYS( fd, " tx_packets:%-5lu tx_octets:%-8lu tx_errors:%-5lu tx_drops:%-5lu", (unsigned long)pcb->write.packets, (unsigned long)pcb->write.octets, (unsigned long)pcb->write.errors, (unsigned long)pcb->write.drops); LOG_DUMPSYS(fd, " src_uuid:0x%04x[prev:0x%04x] dst_uuid:0x%04x[prev:0x%04x] " "bad_pkts:%hu", pcb->src_uuid, pcb->dst_uuid, pcb->prv_src_uuid, pcb->prv_dst_uuid, pcb->bad_pkts_rcvd); } } #undef DUMPSYS_TAG
system/stack/pan/pan_int.h +7 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,13 @@ typedef struct { uint16_t ip_addr_known; uint32_t ip_addr; struct { size_t octets{0}; size_t packets{0}; size_t errors{0}; size_t drops{0}; } write, read; } tPAN_CONN; /* The main PAN control block Loading
system/stack/pan/pan_main.cc +5 −0 Original line number Diff line number Diff line Loading @@ -393,6 +393,7 @@ void pan_data_buf_ind_cb(uint16_t handle, const RawAddress& src, if (pcb->con_state != PAN_STATE_CONNECTED) { PAN_TRACE_ERROR("PAN Data indication in wrong state %d for handle %d", pcb->con_state, handle); pcb->read.drops++; osi_free(p_buf); return; } Loading @@ -400,6 +401,9 @@ void pan_data_buf_ind_cb(uint16_t handle, const RawAddress& src, p_data = (uint8_t*)(p_buf + 1) + p_buf->offset; len = p_buf->len; pcb->read.octets += len; pcb->read.packets++; PAN_TRACE_EVENT( "pan_data_buf_ind_cb - for handle %d, protocol 0x%x, length %d, ext %d", handle, protocol, len, ext); Loading Loading @@ -447,6 +451,7 @@ void pan_data_buf_ind_cb(uint16_t handle, const RawAddress& src, if (result != BNEP_SUCCESS && result != BNEP_IGNORE_CMD) PAN_TRACE_ERROR("Failed to write data for PAN connection handle %d", dst_pcb->handle); pcb->read.errors++; osi_free(p_buf); return; } Loading