mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-03 16:38:53 +08:00
version: include FIRMWARE_TYPE in vendor version
This commit is contained in:
committed by
Beat Küng
parent
257e54b304
commit
3dd4454a87
@@ -140,9 +140,9 @@ uint32_t version_tag_to_vendor_version_number(const char *tag)
|
||||
int16_t buffer = -1;
|
||||
size_t buffer_counter = 0;
|
||||
char version[6] = {0, 0, 0, 0, 0, 0};
|
||||
|
||||
size_t dash_count = 0;
|
||||
size_t point_count = 0;
|
||||
int firmware_type = FIRMWARE_TYPE_RELEASE;
|
||||
|
||||
for (size_t i = 0; i < strlen(tag); i++) {
|
||||
if (tag[i] == '-') {
|
||||
@@ -151,8 +151,27 @@ uint32_t version_tag_to_vendor_version_number(const char *tag)
|
||||
} else if (tag[i] == '.') {
|
||||
point_count++;
|
||||
}
|
||||
|
||||
if (tag[i] == 'r' && i < strlen(tag) - 1 && tag[i + 1] == 'c') {
|
||||
firmware_type = FIRMWARE_TYPE_RC;
|
||||
|
||||
} else if (tag[i] == 'p') {
|
||||
firmware_type = FIRMWARE_TYPE_ALPHA;
|
||||
|
||||
} else if (tag[i] == 't') {
|
||||
firmware_type = FIRMWARE_TYPE_BETA;
|
||||
|
||||
} else if (tag[i] == 'v' && i > 0) {
|
||||
firmware_type = FIRMWARE_TYPE_DEV;
|
||||
}
|
||||
}
|
||||
|
||||
if ((dash_count == 1 && point_count == 2 && firmware_type == FIRMWARE_TYPE_RELEASE) ||
|
||||
(dash_count == 2 && point_count == 2) ||
|
||||
(dash_count == 3 && point_count == 4)) {
|
||||
firmware_type = FIRMWARE_TYPE_DEV;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < strlen(tag); i++) {
|
||||
if (buffer_counter > 5) {
|
||||
continue;
|
||||
@@ -182,10 +201,12 @@ uint32_t version_tag_to_vendor_version_number(const char *tag)
|
||||
}
|
||||
|
||||
if (buffer_counter == 6) {
|
||||
version_number = ((uint8_t)version[3] << 8 * 2) |
|
||||
((uint8_t)version[4] << 8 * 1) |
|
||||
((uint8_t)version[5] << 8 * 0);
|
||||
version_number = ((uint8_t)version[3] << 8 * 3) |
|
||||
((uint8_t)version[4] << 8 * 2) |
|
||||
((uint8_t)version[5] << 8 * 1) | firmware_type;
|
||||
|
||||
} else if (buffer_counter == 3) {
|
||||
version_number = firmware_type;
|
||||
} else {
|
||||
version_number = 0;
|
||||
}
|
||||
|
||||
@@ -101,6 +101,7 @@ static inline const char *px4_build_uri(void)
|
||||
/**
|
||||
* Convert a version tag string to a number
|
||||
* @param tag version tag in one of the following forms:
|
||||
* - vendor: v1.4.0-0.2.0
|
||||
* - dev: v1.4.0rc3-7-g7e282f57
|
||||
* - rc: v1.4.0rc4
|
||||
* - release: v1.4.0
|
||||
@@ -123,13 +124,13 @@ __EXPORT uint32_t px4_firmware_version(void);
|
||||
* - rc: v1.4.0rc4
|
||||
* - release: v1.4.0
|
||||
* - linux: 7.9.3
|
||||
* @return version in the form 0xAABBCC (AA: Major, BB: Minor, CC: Patch)
|
||||
* @return version in the form 0xAABBCCTT (AA: Major, BB: Minor, CC: Patch, TT Type @see FIRMWARE_TYPE)
|
||||
*/
|
||||
__EXPORT uint32_t version_tag_to_vendor_version_number(const char *tag);
|
||||
|
||||
/**
|
||||
* get the PX4 Firmware vendor version
|
||||
* @return version in the form 0xAABBCC (AA: Major, BB: Minor, CC: Patch)
|
||||
* @return version in the form 0xAABBCCTT (AA: Major, BB: Minor, CC: Patch, TT Type @see FIRMWARE_TYPE)
|
||||
*/
|
||||
__EXPORT uint32_t px4_firmware_vendor_version(void);
|
||||
|
||||
|
||||
@@ -1652,12 +1652,10 @@ void Logger::write_version()
|
||||
{
|
||||
write_info("ver_sw", px4_firmware_version_string());
|
||||
write_info("ver_sw_release", px4_firmware_version());
|
||||
// FIXME: px4_firmware_vendor_version() needs be converted to return the same format as px4_firmware_version().
|
||||
// This now just assumes we're on a release
|
||||
uint32_t vendor_version = px4_firmware_vendor_version();
|
||||
|
||||
if (vendor_version > 0) {
|
||||
write_info("ver_vendor_sw_release", (vendor_version << 8) | 0xff);
|
||||
write_info("ver_vendor_sw_release", vendor_version);
|
||||
}
|
||||
|
||||
write_info("ver_hw", px4_board_name());
|
||||
|
||||
@@ -82,34 +82,34 @@ bool VersioningTest::_test_flight_version()
|
||||
|
||||
bool VersioningTest::_test_vendor_version()
|
||||
{
|
||||
ut_assert_true(_is_correct_version_tag_vendor("alpha", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("alpha23", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v11.45.99-34.56.88", 0x223858));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v11.45.99-1.2.3", 0x010203));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("1.2.3-11.45.99", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-1.0.0", 0x010000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-255.255.255", 0xFFFFFF));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-255.255.255-11", 0xFFFFFF));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-rc2", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11-abababab", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99rc3-7-g7e282f57", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99rc4", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99alpha3-7-g7e282f57", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99alpha4", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99beta3-7-g7e282f57", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99beta4", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99dev4", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99dev3-7-g7e282f57", 0x0B2D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-1.0.0-rc2-abababab", 0x010000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-1.0.0-rc2-23-abababab", 0x010000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-0.8.7-67-g1d5e979", 0x000807));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.0-100-g890c415", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("1.2.3-0.45.99beta4", 0x002D63));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("1.2.3-0.0.0beta4", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("1.2.3-0.0.0dev4", 0x000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("alpha", 0x00000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("alpha23", 0x00000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v11.45.99-34.56.88", 0x223858FF));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v11.45.99-1.2.3", 0x010203FF));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("1.2.3-11.45.99", 0x0B2D63FF));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-1.0.0", 0x010000FF));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-255.255.255", 0xFFFFFFFF));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-255.255.255-11", 0xFFFFFFFF));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3", 0x000000FF));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-rc2", 0x000000C0));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11", 0x00000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45", 0x00000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11-abababab", 0x00000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99rc3-7-g7e282f57", 0x0B2D6300));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99rc4", 0x0B2D63C0));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99alpha3-7-g7e282f57", 0x0B2D6300));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99alpha4", 0x0B2D6340));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99beta3-7-g7e282f57", 0x0B2D6300));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99beta4", 0x0B2D6380));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99dev4", 0x0B2D6300));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.2.3-11.45.99dev3-7-g7e282f57", 0x0B2D6300));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-1.0.0-rc2-abababab", 0x01000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-1.0.0-rc2-23-abababab", 0x010000C0));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.2-0.8.7-67-g1d5e979", 0x00080700));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("v1.6.0-100-g890c415", 0x00000000));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("1.2.3-0.45.99beta4", 0x002D6380));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("1.2.3-0.0.0beta4", 0x00000080));
|
||||
ut_assert_true(_is_correct_version_tag_vendor("1.2.3-0.0.0dev4", 0x00000000));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user