Loading bluetooth/1.0/default/bluetooth_address.cc +12 −6 Original line number Diff line number Diff line Loading @@ -16,8 +16,8 @@ #include "bluetooth_address.h" #include <android-base/logging.h> #include <cutils/properties.h> #include <errno.h> #include <fcntl.h> #include <utils/Log.h> Loading Loading @@ -54,19 +54,25 @@ bool BluetoothAddress::get_local_address(uint8_t* local_addr) { addr_fd = open(property, O_RDONLY); if (addr_fd != -1) { int bytes_read = read(addr_fd, property, kStringLength); CHECK(bytes_read == kStringLength); char address[kStringLength + 1] = {0}; int bytes_read = read(addr_fd, address, kStringLength); if (bytes_read == -1) { ALOGE("%s: Error reading address from %s: %s", __func__, property, strerror(errno)); } close(addr_fd); // Null terminate the string. property[kStringLength] = '\0'; address[kStringLength] = '\0'; // If the address is not all zeros, then use it. const uint8_t zero_bdaddr[kBytes] = {0, 0, 0, 0, 0, 0}; if ((string_to_bytes(property, local_addr)) && if ((string_to_bytes(address, local_addr)) && (memcmp(local_addr, zero_bdaddr, kBytes) != 0)) { valid_bda = true; ALOGD("%s: Got Factory BDA %s", __func__, property); ALOGD("%s: Got Factory BDA %s", __func__, address); } else { ALOGE("%s: Got Invalid BDA '%s' from %s", __func__, address, property); } } } Loading bluetooth/1.0/default/h4_protocol.cc +20 −10 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ #include "h4_protocol.h" #define LOG_TAG "android.hardware.bluetooth-hci-h4" #include <android-base/logging.h> #include <errno.h> #include <fcntl.h> #include <log/log.h> Loading @@ -38,9 +38,9 @@ size_t H4Protocol::Send(uint8_t type, const uint8_t* data, size_t length) { if (ret == -1) { ALOGE("%s error writing to UART (%s)", __func__, strerror(errno)); } else if (ret == 0) { // Nothing written :( ALOGE("%s zero bytes written - something went wrong...", __func__); } else if (ret < static_cast<ssize_t>(length + 1)) { ALOGE("%s: %d / %d bytes written - something went wrong...", __func__, static_cast<int>(ret), static_cast<int>(length + 1)); } return ret; } Loading @@ -56,10 +56,9 @@ void H4Protocol::OnPacketReady() { case HCI_PACKET_TYPE_SCO_DATA: sco_cb_(hci_packetizer_.GetPacket()); break; default: { bool bad_packet_type = true; CHECK(!bad_packet_type); } default: LOG_ALWAYS_FATAL("%s: Unimplemented packet type %d", __func__, static_cast<int>(hci_packet_type_)); } // Get ready for the next type byte. hci_packet_type_ = HCI_PACKET_TYPE_UNKNOWN; Loading @@ -68,8 +67,19 @@ void H4Protocol::OnPacketReady() { void H4Protocol::OnDataReady(int fd) { if (hci_packet_type_ == HCI_PACKET_TYPE_UNKNOWN) { uint8_t buffer[1] = {0}; size_t bytes_read = TEMP_FAILURE_RETRY(read(fd, buffer, 1)); CHECK(bytes_read == 1); ssize_t bytes_read = TEMP_FAILURE_RETRY(read(fd, buffer, 1)); if (bytes_read != 1) { if (bytes_read == 0) { LOG_ALWAYS_FATAL("%s: Unexpected EOF reading the packet type!", __func__); } else if (bytes_read < 0) { LOG_ALWAYS_FATAL("%s: Read packet type error: %s", __func__, strerror(errno)); } else { LOG_ALWAYS_FATAL("%s: More bytes read than expected (%u)!", __func__, static_cast<unsigned int>(bytes_read)); } } hci_packet_type_ = static_cast<HciPacketType>(buffer[0]); } else { hci_packetizer_.OnDataReady(fd, hci_packet_type_); Loading bluetooth/1.0/default/hci_packetizer.cc +20 −7 Original line number Diff line number Diff line Loading @@ -17,11 +17,11 @@ #include "hci_packetizer.h" #define LOG_TAG "android.hardware.bluetooth.hci_packetizer" #include <android-base/logging.h> #include <utils/Log.h> #include <dlfcn.h> #include <errno.h> #include <fcntl.h> #include <utils/Log.h> namespace { Loading @@ -45,15 +45,22 @@ namespace hardware { namespace bluetooth { namespace hci { const hidl_vec<uint8_t>& HciPacketizer::GetPacket() const { return packet_; } const hidl_vec<uint8_t>& HciPacketizer::GetPacket() const { return packet_; } void HciPacketizer::OnDataReady(int fd, HciPacketType packet_type) { switch (state_) { case HCI_PREAMBLE: { size_t bytes_read = TEMP_FAILURE_RETRY( ssize_t bytes_read = TEMP_FAILURE_RETRY( read(fd, preamble_ + bytes_read_, preamble_size_for_type[packet_type] - bytes_read_)); CHECK(bytes_read > 0); if (bytes_read <= 0) { LOG_ALWAYS_FATAL_IF((bytes_read == 0), "%s: Unexpected EOF reading the header!", __func__); LOG_ALWAYS_FATAL("%s: Read header error: %s", __func__, strerror(errno)); } bytes_read_ += bytes_read; if (bytes_read_ == preamble_size_for_type[packet_type]) { size_t packet_length = Loading @@ -68,11 +75,17 @@ void HciPacketizer::OnDataReady(int fd, HciPacketType packet_type) { } case HCI_PAYLOAD: { size_t bytes_read = TEMP_FAILURE_RETRY(read( ssize_t bytes_read = TEMP_FAILURE_RETRY(read( fd, packet_.data() + preamble_size_for_type[packet_type] + bytes_read_, bytes_remaining_)); CHECK(bytes_read > 0); if (bytes_read <= 0) { LOG_ALWAYS_FATAL_IF((bytes_read == 0), "%s: Unexpected EOF reading the payload!", __func__); LOG_ALWAYS_FATAL("%s: Read payload error: %s", __func__, strerror(errno)); } bytes_remaining_ -= bytes_read; bytes_read_ += bytes_read; if (bytes_remaining_ == 0) { Loading bluetooth/1.0/default/mct_protocol.cc +1 −2 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ #include <assert.h> #define LOG_TAG "android.hardware.bluetooth-hci-mct" #include <android-base/logging.h> #include <utils/Log.h> #include <fcntl.h> Loading @@ -45,7 +44,7 @@ size_t MctProtocol::Send(uint8_t type, const uint8_t* data, size_t length) { return WriteSafely(uart_fds_[CH_CMD], data, length); if (type == HCI_PACKET_TYPE_ACL_DATA) return WriteSafely(uart_fds_[CH_ACL_OUT], data, length); CHECK(type == HCI_PACKET_TYPE_COMMAND || type == HCI_PACKET_TYPE_ACL_DATA); LOG_ALWAYS_FATAL("%s: Unimplemented packet type = %d", __func__, type); return 0; } Loading bluetooth/1.0/default/test/bluetooth_address_test.cc +1 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ // #include <cutils/properties.h> #include <errno.h> #include <fcntl.h> #include <gtest/gtest.h> Loading Loading
bluetooth/1.0/default/bluetooth_address.cc +12 −6 Original line number Diff line number Diff line Loading @@ -16,8 +16,8 @@ #include "bluetooth_address.h" #include <android-base/logging.h> #include <cutils/properties.h> #include <errno.h> #include <fcntl.h> #include <utils/Log.h> Loading Loading @@ -54,19 +54,25 @@ bool BluetoothAddress::get_local_address(uint8_t* local_addr) { addr_fd = open(property, O_RDONLY); if (addr_fd != -1) { int bytes_read = read(addr_fd, property, kStringLength); CHECK(bytes_read == kStringLength); char address[kStringLength + 1] = {0}; int bytes_read = read(addr_fd, address, kStringLength); if (bytes_read == -1) { ALOGE("%s: Error reading address from %s: %s", __func__, property, strerror(errno)); } close(addr_fd); // Null terminate the string. property[kStringLength] = '\0'; address[kStringLength] = '\0'; // If the address is not all zeros, then use it. const uint8_t zero_bdaddr[kBytes] = {0, 0, 0, 0, 0, 0}; if ((string_to_bytes(property, local_addr)) && if ((string_to_bytes(address, local_addr)) && (memcmp(local_addr, zero_bdaddr, kBytes) != 0)) { valid_bda = true; ALOGD("%s: Got Factory BDA %s", __func__, property); ALOGD("%s: Got Factory BDA %s", __func__, address); } else { ALOGE("%s: Got Invalid BDA '%s' from %s", __func__, address, property); } } } Loading
bluetooth/1.0/default/h4_protocol.cc +20 −10 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ #include "h4_protocol.h" #define LOG_TAG "android.hardware.bluetooth-hci-h4" #include <android-base/logging.h> #include <errno.h> #include <fcntl.h> #include <log/log.h> Loading @@ -38,9 +38,9 @@ size_t H4Protocol::Send(uint8_t type, const uint8_t* data, size_t length) { if (ret == -1) { ALOGE("%s error writing to UART (%s)", __func__, strerror(errno)); } else if (ret == 0) { // Nothing written :( ALOGE("%s zero bytes written - something went wrong...", __func__); } else if (ret < static_cast<ssize_t>(length + 1)) { ALOGE("%s: %d / %d bytes written - something went wrong...", __func__, static_cast<int>(ret), static_cast<int>(length + 1)); } return ret; } Loading @@ -56,10 +56,9 @@ void H4Protocol::OnPacketReady() { case HCI_PACKET_TYPE_SCO_DATA: sco_cb_(hci_packetizer_.GetPacket()); break; default: { bool bad_packet_type = true; CHECK(!bad_packet_type); } default: LOG_ALWAYS_FATAL("%s: Unimplemented packet type %d", __func__, static_cast<int>(hci_packet_type_)); } // Get ready for the next type byte. hci_packet_type_ = HCI_PACKET_TYPE_UNKNOWN; Loading @@ -68,8 +67,19 @@ void H4Protocol::OnPacketReady() { void H4Protocol::OnDataReady(int fd) { if (hci_packet_type_ == HCI_PACKET_TYPE_UNKNOWN) { uint8_t buffer[1] = {0}; size_t bytes_read = TEMP_FAILURE_RETRY(read(fd, buffer, 1)); CHECK(bytes_read == 1); ssize_t bytes_read = TEMP_FAILURE_RETRY(read(fd, buffer, 1)); if (bytes_read != 1) { if (bytes_read == 0) { LOG_ALWAYS_FATAL("%s: Unexpected EOF reading the packet type!", __func__); } else if (bytes_read < 0) { LOG_ALWAYS_FATAL("%s: Read packet type error: %s", __func__, strerror(errno)); } else { LOG_ALWAYS_FATAL("%s: More bytes read than expected (%u)!", __func__, static_cast<unsigned int>(bytes_read)); } } hci_packet_type_ = static_cast<HciPacketType>(buffer[0]); } else { hci_packetizer_.OnDataReady(fd, hci_packet_type_); Loading
bluetooth/1.0/default/hci_packetizer.cc +20 −7 Original line number Diff line number Diff line Loading @@ -17,11 +17,11 @@ #include "hci_packetizer.h" #define LOG_TAG "android.hardware.bluetooth.hci_packetizer" #include <android-base/logging.h> #include <utils/Log.h> #include <dlfcn.h> #include <errno.h> #include <fcntl.h> #include <utils/Log.h> namespace { Loading @@ -45,15 +45,22 @@ namespace hardware { namespace bluetooth { namespace hci { const hidl_vec<uint8_t>& HciPacketizer::GetPacket() const { return packet_; } const hidl_vec<uint8_t>& HciPacketizer::GetPacket() const { return packet_; } void HciPacketizer::OnDataReady(int fd, HciPacketType packet_type) { switch (state_) { case HCI_PREAMBLE: { size_t bytes_read = TEMP_FAILURE_RETRY( ssize_t bytes_read = TEMP_FAILURE_RETRY( read(fd, preamble_ + bytes_read_, preamble_size_for_type[packet_type] - bytes_read_)); CHECK(bytes_read > 0); if (bytes_read <= 0) { LOG_ALWAYS_FATAL_IF((bytes_read == 0), "%s: Unexpected EOF reading the header!", __func__); LOG_ALWAYS_FATAL("%s: Read header error: %s", __func__, strerror(errno)); } bytes_read_ += bytes_read; if (bytes_read_ == preamble_size_for_type[packet_type]) { size_t packet_length = Loading @@ -68,11 +75,17 @@ void HciPacketizer::OnDataReady(int fd, HciPacketType packet_type) { } case HCI_PAYLOAD: { size_t bytes_read = TEMP_FAILURE_RETRY(read( ssize_t bytes_read = TEMP_FAILURE_RETRY(read( fd, packet_.data() + preamble_size_for_type[packet_type] + bytes_read_, bytes_remaining_)); CHECK(bytes_read > 0); if (bytes_read <= 0) { LOG_ALWAYS_FATAL_IF((bytes_read == 0), "%s: Unexpected EOF reading the payload!", __func__); LOG_ALWAYS_FATAL("%s: Read payload error: %s", __func__, strerror(errno)); } bytes_remaining_ -= bytes_read; bytes_read_ += bytes_read; if (bytes_remaining_ == 0) { Loading
bluetooth/1.0/default/mct_protocol.cc +1 −2 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ #include <assert.h> #define LOG_TAG "android.hardware.bluetooth-hci-mct" #include <android-base/logging.h> #include <utils/Log.h> #include <fcntl.h> Loading @@ -45,7 +44,7 @@ size_t MctProtocol::Send(uint8_t type, const uint8_t* data, size_t length) { return WriteSafely(uart_fds_[CH_CMD], data, length); if (type == HCI_PACKET_TYPE_ACL_DATA) return WriteSafely(uart_fds_[CH_ACL_OUT], data, length); CHECK(type == HCI_PACKET_TYPE_COMMAND || type == HCI_PACKET_TYPE_ACL_DATA); LOG_ALWAYS_FATAL("%s: Unimplemented packet type = %d", __func__, type); return 0; } Loading
bluetooth/1.0/default/test/bluetooth_address_test.cc +1 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ // #include <cutils/properties.h> #include <errno.h> #include <fcntl.h> #include <gtest/gtest.h> Loading