version: include FIRMWARE_TYPE in vendor version

This commit is contained in:
Dario Röthlisberger
2017-10-09 14:41:58 +02:00
committed by Beat Küng
parent 257e54b304
commit 3dd4454a87
4 changed files with 57 additions and 37 deletions
+25 -4
View File
@@ -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;
}
+3 -2
View File
@@ -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);
+1 -3
View File
@@ -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());
+28 -28
View File
@@ -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;
}