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);