use generic name for can devices

But still ensure backcompability of DeviceInformation (for now)
This commit is contained in:
ttechnick
2026-02-20 15:16:43 +01:00
committed by Nick
parent df00901bfa
commit e756574420
3 changed files with 12 additions and 2 deletions
+1
View File
@@ -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
+7 -1
View File
@@ -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),
+4 -1
View File
@@ -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;