panda: refactor get_serial, return std::optional<std::string> (#19895)

albatross
Dean Lee 2021-01-28 23:21:18 +08:00 committed by GitHub
parent 6bd9e5ca6a
commit 96cc633d91
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 20 deletions

View File

@ -151,14 +151,9 @@ bool usb_connect() {
} else { return false; }
// get panda serial
const char *serial_buf = panda->get_serial();
if (serial_buf) {
size_t serial_sz = strnlen(serial_buf, 16);
params.write_db_value("PandaDongleId", serial_buf, serial_sz);
LOGW("panda serial: %.*s", serial_sz, serial_buf);
delete[] serial_buf;
if (auto serial = panda->get_serial(); serial) {
params.write_db_value("PandaDongleId", serial->c_str(), serial->length());
LOGW("panda serial: %s", serial->c_str());
} else { return false; }
// power on charging, only the first time. Panda can also change mode and it causes a brief disconneciton

View File

@ -266,17 +266,10 @@ const char* Panda::get_firmware_version(){
return NULL;
}
const char* Panda::get_serial(){
const char* serial_buf = new char[16]();
int err = usb_read(0xd0, 0, 0, (unsigned char*)serial_buf, 16);
if (err >= 0) {
return serial_buf;
}
delete[] serial_buf;
return NULL;
std::optional<std::string> Panda::get_serial() {
char serial_buf[17] = {'\0'};
int err = usb_read(0xd0, 0, 0, (uint8_t*)serial_buf, 16);
return err >= 0 ? std::make_optional(serial_buf) : std::nullopt;
}
void Panda::set_power_saving(bool power_saving){

View File

@ -4,6 +4,7 @@
#include <cstdint>
#include <pthread.h>
#include <mutex>
#include <optional>
#include <libusb-1.0/libusb.h>
@ -73,7 +74,7 @@ class Panda {
health_t get_health();
void set_loopback(bool loopback);
const char* get_firmware_version();
const char* get_serial();
std::optional<std::string> get_serial();
void set_power_saving(bool power_saving);
void set_usb_power_mode(cereal::HealthData::UsbPowerMode power_mode);
void send_heartbeat();