mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-03 07:28:54 +08:00
use generic name for can devices
But still ensure backcompability of DeviceInformation (for now)
This commit is contained in:
@@ -24,6 +24,7 @@ uint8 DEVICE_TYPE_DIFFERENTIAL_PRESSURE = 13 # Differential pressure
|
||||
uint8 DEVICE_TYPE_BATTERY = 14 # Battery
|
||||
uint8 DEVICE_TYPE_HYGROMETER = 15 # Hygrometer
|
||||
|
||||
char[80] name # Name of node
|
||||
char[32] vendor_name # Name of the device vendor
|
||||
char[32] model_name # Name of the device model
|
||||
|
||||
|
||||
@@ -206,6 +206,8 @@ void NodeInfoPublisher::publishSingleDeviceInformation(const DeviceInformation &
|
||||
static_assert(sizeof(msg.firmware_version) == sizeof(device_info.firmware_version), "Array size mismatch");
|
||||
static_assert(sizeof(msg.hardware_version) == sizeof(device_info.hardware_version), "Array size mismatch");
|
||||
static_assert(sizeof(msg.serial_number) == sizeof(device_info.serial_number), "Array size mismatch");
|
||||
// Copy strings using memcpy and ensure null termination
|
||||
static_assert(sizeof(msg.name) == sizeof(device_info.name), "Array size mismatch");
|
||||
|
||||
memcpy(msg.model_name, device_info.model_name, sizeof(msg.model_name));
|
||||
msg.model_name[sizeof(msg.model_name) - 1] = '\0';
|
||||
@@ -213,6 +215,9 @@ void NodeInfoPublisher::publishSingleDeviceInformation(const DeviceInformation &
|
||||
memcpy(msg.vendor_name, device_info.vendor_name, sizeof(msg.vendor_name));
|
||||
msg.vendor_name[sizeof(msg.vendor_name) - 1] = '\0';
|
||||
|
||||
memcpy(msg.name, device_info.name, sizeof(msg.name));
|
||||
msg.name[sizeof(msg.name) - 1] = '\0';
|
||||
|
||||
memcpy(msg.firmware_version, device_info.firmware_version, sizeof(msg.firmware_version));
|
||||
msg.firmware_version[sizeof(msg.firmware_version) - 1] = '\0';
|
||||
|
||||
@@ -233,9 +238,10 @@ void NodeInfoPublisher::populateDeviceInfoFields(DeviceInformation &device_info,
|
||||
{
|
||||
device_info.has_node_info = true;
|
||||
|
||||
// Parse the node name to extract vendor and model information
|
||||
// Remain backward compatible - for now.
|
||||
parseNodeName(info.name, device_info);
|
||||
|
||||
snprintf(device_info.name, sizeof(device_info.name), "%s", info.name);
|
||||
snprintf(device_info.firmware_version, sizeof(device_info.firmware_version),
|
||||
"%d.%d.%lu", info.sw_major, info.sw_minor, static_cast<unsigned long>(info.vcs_commit));
|
||||
snprintf(device_info.hardware_version, sizeof(device_info.hardware_version),
|
||||
|
||||
@@ -102,6 +102,7 @@ private:
|
||||
DeviceCapability capability{DeviceCapability::NONE};
|
||||
bool has_node_info{false};
|
||||
|
||||
char name[80];
|
||||
char vendor_name[32];
|
||||
char model_name[32];
|
||||
char firmware_version[24];
|
||||
@@ -112,6 +113,7 @@ private:
|
||||
has_node_info(false)
|
||||
{
|
||||
// Initialize string fields
|
||||
name[0] = '\0';
|
||||
vendor_name[0] = '\0';
|
||||
model_name[0] = '\0';
|
||||
firmware_version[0] = '\0';
|
||||
@@ -123,6 +125,7 @@ private:
|
||||
: node_id(nid), device_id(did), capability(cap), has_node_info(false)
|
||||
{
|
||||
// Initialize string fields
|
||||
name[0] = '\0';
|
||||
vendor_name[0] = '\0';
|
||||
model_name[0] = '\0';
|
||||
firmware_version[0] = '\0';
|
||||
@@ -145,10 +148,10 @@ private:
|
||||
// Publishing methods
|
||||
void publishDeviceInformationPeriodic();
|
||||
void publishSingleDeviceInformation(const DeviceInformation &device_info);
|
||||
void parseNodeName(const char *name, DeviceInformation &device_info);
|
||||
|
||||
// Helper functions
|
||||
void populateDeviceInfoFields(DeviceInformation &device_info, const NodeInfo &info);
|
||||
void parseNodeName(const char *name, DeviceInformation &device_info);
|
||||
bool extendDeviceInformationsArray();
|
||||
|
||||
uavcan::NodeInfoRetriever &_node_info_retriever;
|
||||
|
||||
Reference in New Issue
Block a user