sbgECom Library  5.2.590-stable
Interface SBG Systems IMU/AHRS/INS
Loading...
Searching...
No Matches
sbgVersion.h
Go to the documentation of this file.
1
47
48#ifndef SBG_VERSION_H
49#define SBG_VERSION_H
50
51#ifdef __cplusplus
52extern "C" {
53#endif
54
55// Project headers
56#include <sbgCommon.h>
57
58
59//----------------------------------------------------------------------//
60//- Version related definitions -//
61//----------------------------------------------------------------------//
62#define SBG_VERSION_SOFT_SCHEME (0x00000001u << 31)
63
64#define SBG_VERSION_SOFT_SCHEME_QUALIFIER_MASK (0x07)
65#define SBG_VERSION_SOFT_SCHEME_QUALIFIER_SHIFT (28)
66
67#define SBG_VERSION_SOFT_SCHEME_MAJOR_MASK (0x3F)
68#define SBG_VERSION_SOFT_SCHEME_MAJOR_SHIFT (22)
69
70#define SBG_VERSION_SOFT_SCHEME_MINOR_MASK (0x3F)
71#define SBG_VERSION_SOFT_SCHEME_MINOR_SHIFT (16)
72
73#define SBG_VERSION_SOFT_SCHEME_BUILD_MASK (0xFFFF)
74#define SBG_VERSION_SOFT_SCHEME_BUILD_SHIFT (0)
75
90
104
105/*
106 * DEPRECATED compatibility definitions
107 */
108#define SBG_VERSION_CMP_THRESOLD_MAJOR SBG_VERSION_CMP_THRESHOLD_MAJOR
109#define SBG_VERSION_CMP_THRESOLD_MINOR SBG_VERSION_CMP_THRESHOLD_MINOR
110#define SBG_VERSION_CMP_THRESOLD_REVISION SBG_VERSION_CMP_THRESHOLD_REVISION
111#define SBG_VERSION_CMP_THRESOLD_BUILD SBG_VERSION_CMP_THRESHOLD_BUILD
112#define SBG_VERSION_CMP_THRESOLD_QUALIFIER SBG_VERSION_CMP_THRESHOLD_QUALIFIER
113
127
128//----------------------------------------------------------------------//
129//- Macro definitions for encode versions -//
130//----------------------------------------------------------------------//
131
141#define SBG_VERSION_BASIC(major, minor, rev, build) ( (((uint32_t)(major)) << 24) | \
142 (((uint32_t)(minor)) << 16) | \
143 (((uint32_t)(rev)) << 8) | \
144 (((uint32_t)(build))) )
145
155#define SBG_VERSION_SOFTWARE(major, minor, build, qualifier) ( SBG_VERSION_SOFT_SCHEME | \
156 ((((uint32_t)(qualifier)) & SBG_VERSION_SOFT_SCHEME_QUALIFIER_MASK) << SBG_VERSION_SOFT_SCHEME_QUALIFIER_SHIFT) | \
157 ((((uint32_t)(major)) & SBG_VERSION_SOFT_SCHEME_MAJOR_MASK) << SBG_VERSION_SOFT_SCHEME_MAJOR_SHIFT) | \
158 ((((uint32_t)(minor)) & SBG_VERSION_SOFT_SCHEME_MINOR_MASK) << SBG_VERSION_SOFT_SCHEME_MINOR_SHIFT) | \
159 ((((uint32_t)(build)) & SBG_VERSION_SOFT_SCHEME_BUILD_MASK) << SBG_VERSION_SOFT_SCHEME_BUILD_SHIFT) )
160//----------------------------------------------------------------------//
161//- Constructor -//
162//----------------------------------------------------------------------//
163
173SBG_COMMON_LIB_API void sbgVersionCreateBasic(SbgVersion *pVersion, uint8_t major, uint8_t minor, uint8_t revision, uint8_t build);
174
184SBG_COMMON_LIB_API void sbgVersionCreateSoftware(SbgVersion *pVersion, uint8_t major, uint8_t minor, uint16_t build, SbgVersionQualifier qualifier);
185
193
194//----------------------------------------------------------------------//
195//- Version encoding / decoding methods -//
196//----------------------------------------------------------------------//
197
204SBG_COMMON_LIB_API void sbgVersionDecode(uint32_t encodedVersion, SbgVersion *pVersionInfo);
205
212SBG_COMMON_LIB_API uint32_t sbgVersionEncode(const SbgVersion *pVersionInfo);
213
214//----------------------------------------------------------------------//
215//- Version parameters methods -//
216//----------------------------------------------------------------------//
217
224SBG_INLINE bool sbgVersionIsUsingSoftwareScheme(uint32_t encodedVersion)
225{
226 SbgVersion decodedVersion;
227
228 //
229 // Decode the version first
230 //
231 sbgVersionDecode(encodedVersion, &decodedVersion);
232
233 //
234 // Returns if the version is using a software scheme
235 //
236 return decodedVersion.softwareScheme;
237}
238
239//----------------------------------------------------------------------//
240//- Version comparaison methods -//
241//----------------------------------------------------------------------//
242
255SBG_COMMON_LIB_API int32_t sbgVersionCompare(const SbgVersion *pVersionA, const SbgVersion *pVersionB, SbgVersionCmpThreshold threshold);
256
269SBG_COMMON_LIB_API int32_t sbgVersionCompareEncoded(uint32_t versionA, uint32_t versionB, SbgVersionCmpThreshold threshold);
270
282SBG_COMMON_LIB_API int32_t sbgVersionIsWithinRange(const SbgVersion *pLowerVersion, const SbgVersion *pHigherVersion, const SbgVersion *pVersion);
283
295SBG_COMMON_LIB_API int32_t sbgVersionIsWithinRangeEncoded(uint32_t lowerVersion, uint32_t higherVersion, uint32_t version);
296
297
298//----------------------------------------------------------------------//
299//- Version to string methods -//
300//----------------------------------------------------------------------//
301
311SBG_COMMON_LIB_API SbgErrorCode sbgVersionToString(const SbgVersion *pVersionInfo, char *pBuffer, size_t sizeOfBuffer);
312
322SBG_COMMON_LIB_API SbgErrorCode sbgVersionToStringEncoded(uint32_t version, char *pBuffer, size_t sizeOfBuffer);
323
324//----------------------------------------------------------------------//
325//- String to version methods -//
326//----------------------------------------------------------------------//
327
340
352SBG_COMMON_LIB_API SbgErrorCode sbgVersionFromStringEncoded(const char *pString, uint32_t *pVersion);
353
354//----------------------------------------------------------------------//
355//- Legacy version system methods -//
356//----------------------------------------------------------------------//
357
361SBG_DEPRECATED(SBG_INLINE uint32_t SBG_VERSION(uint8_t major, uint8_t minor, uint8_t rev, uint8_t build));
362SBG_DEPRECATED(SBG_INLINE uint8_t SBG_VERSION_GET_MAJOR(uint32_t encodedVersion));
363SBG_DEPRECATED(SBG_INLINE uint8_t SBG_VERSION_GET_MINOR(uint32_t encodedVersion));
364SBG_DEPRECATED(SBG_INLINE uint8_t SBG_VERSION_GET_REV(uint32_t encodedVersion));
365SBG_DEPRECATED(SBG_INLINE uint8_t SBG_VERSION_GET_BUILD(uint32_t encodedVersion));
366
378SBG_INLINE uint32_t SBG_VERSION(uint8_t major, uint8_t minor, uint8_t rev, uint8_t build)
379{
380 //
381 // The SBG_VERSION macro is the basic version scheme.
382 //
383 return SBG_VERSION_BASIC(major, minor, rev, build);
384}
385
394SBG_INLINE uint8_t SBG_VERSION_GET_MAJOR(uint32_t encodedVersion)
395{
396 SbgVersion versionInfo;
397
398 //
399 // Decode the version information
400 //
401 sbgVersionDecode(encodedVersion, &versionInfo);
402
403 //
404 // Return the major version
405 //
406 return versionInfo.major;
407}
408
417SBG_INLINE uint8_t SBG_VERSION_GET_MINOR(uint32_t encodedVersion)
418{
419 SbgVersion versionInfo;
420
421 //
422 // Decode the version information
423 //
424 sbgVersionDecode(encodedVersion, &versionInfo);
425
426 //
427 // Return the major version
428 //
429 return versionInfo.minor;
430}
431
440SBG_INLINE uint8_t SBG_VERSION_GET_REV(uint32_t encodedVersion)
441{
442 SbgVersion versionInfo;
443
444 //
445 // Decode the version information
446 //
447 sbgVersionDecode(encodedVersion, &versionInfo);
448
449 //
450 // Return the major version
451 //
452 return versionInfo.rev;
453}
454
463SBG_INLINE uint8_t SBG_VERSION_GET_BUILD(uint32_t encodedVersion)
464{
465 SbgVersion versionInfo;
466
467 //
468 // Decode the version information
469 //
470 sbgVersionDecode(encodedVersion, &versionInfo);
471
472 //
473 // Return the major version
474 //
475 return (uint8_t)versionInfo.build;
476}
477
478
479#ifdef __cplusplus
480}
481#endif
482
483#endif // SBG_VERSION_H
Main header for the SBG Systems common C library.
#define SBG_DEPRECATED(func)
Definition sbgDefines.h:316
#define SBG_INLINE
Definition sbgDefines.h:227
#define SBG_COMMON_LIB_API
Definition sbgDefines.h:79
enum _SbgErrorCode SbgErrorCode
SBG_COMMON_LIB_API SbgErrorCode sbgVersionToStringEncoded(uint32_t version, char *pBuffer, size_t sizeOfBuffer)
SBG_COMMON_LIB_API int32_t sbgVersionIsWithinRangeEncoded(uint32_t lowerVersion, uint32_t higherVersion, uint32_t version)
_SbgVersionCmpThreshold
Definition sbgVersion.h:97
@ SBG_VERSION_CMP_THRESHOLD_QUALIFIER
Definition sbgVersion.h:102
@ SBG_VERSION_CMP_THRESHOLD_MAJOR
Definition sbgVersion.h:98
@ SBG_VERSION_CMP_THRESHOLD_BUILD
Definition sbgVersion.h:101
@ SBG_VERSION_CMP_THRESHOLD_REVISION
Definition sbgVersion.h:100
@ SBG_VERSION_CMP_THRESHOLD_MINOR
Definition sbgVersion.h:99
SBG_INLINE bool sbgVersionIsUsingSoftwareScheme(uint32_t encodedVersion)
Definition sbgVersion.h:224
#define SBG_VERSION_BASIC(major, minor, rev, build)
Definition sbgVersion.h:141
SBG_COMMON_LIB_API void sbgVersionDecode(uint32_t encodedVersion, SbgVersion *pVersionInfo)
SBG_COMMON_LIB_API void sbgVersionCreateBasic(SbgVersion *pVersion, uint8_t major, uint8_t minor, uint8_t revision, uint8_t build)
_SbgVersionQualifier
Definition sbgVersion.h:82
@ SBG_VERSION_QUALIFIER_BETA
Definition sbgVersion.h:85
@ SBG_VERSION_QUALIFIER_RC
Definition sbgVersion.h:86
@ SBG_VERSION_QUALIFIER_HOT_FIX
Definition sbgVersion.h:88
@ SBG_VERSION_QUALIFIER_DEV
Definition sbgVersion.h:83
@ SBG_VERSION_QUALIFIER_ALPHA
Definition sbgVersion.h:84
@ SBG_VERSION_QUALIFIER_STABLE
Definition sbgVersion.h:87
SBG_COMMON_LIB_API int32_t sbgVersionCompare(const SbgVersion *pVersionA, const SbgVersion *pVersionB, SbgVersionCmpThreshold threshold)
enum _SbgVersionCmpThreshold SbgVersionCmpThreshold
SBG_COMMON_LIB_API SbgErrorCode sbgVersionFromString(const char *pString, SbgVersion *pVersion)
SBG_COMMON_LIB_API int32_t sbgVersionIsWithinRange(const SbgVersion *pLowerVersion, const SbgVersion *pHigherVersion, const SbgVersion *pVersion)
SBG_INLINE uint8_t SBG_VERSION_GET_BUILD(uint32_t encodedVersion)
Definition sbgVersion.h:463
struct _SbgVersion SbgVersion
SBG_INLINE uint8_t SBG_VERSION_GET_REV(uint32_t encodedVersion)
Definition sbgVersion.h:440
SBG_COMMON_LIB_API int32_t sbgVersionCompareEncoded(uint32_t versionA, uint32_t versionB, SbgVersionCmpThreshold threshold)
SBG_COMMON_LIB_API void sbgVersionConstructCopy(SbgVersion *pVersion, const SbgVersion *pOtherVersion)
SBG_INLINE uint32_t SBG_VERSION(uint8_t major, uint8_t minor, uint8_t rev, uint8_t build)
Definition sbgVersion.h:378
SBG_COMMON_LIB_API void sbgVersionCreateSoftware(SbgVersion *pVersion, uint8_t major, uint8_t minor, uint16_t build, SbgVersionQualifier qualifier)
SBG_INLINE uint8_t SBG_VERSION_GET_MINOR(uint32_t encodedVersion)
Definition sbgVersion.h:417
SBG_COMMON_LIB_API uint32_t sbgVersionEncode(const SbgVersion *pVersionInfo)
SBG_COMMON_LIB_API SbgErrorCode sbgVersionFromStringEncoded(const char *pString, uint32_t *pVersion)
enum _SbgVersionQualifier SbgVersionQualifier
SBG_INLINE uint8_t SBG_VERSION_GET_MAJOR(uint32_t encodedVersion)
Definition sbgVersion.h:394
SBG_COMMON_LIB_API SbgErrorCode sbgVersionToString(const SbgVersion *pVersionInfo, char *pBuffer, size_t sizeOfBuffer)
Definition sbgVersion.h:119
uint8_t rev
Definition sbgVersion.h:124
uint8_t minor
Definition sbgVersion.h:123
uint8_t major
Definition sbgVersion.h:122
SbgVersionQualifier qualifier
Definition sbgVersion.h:121
uint16_t build
Definition sbgVersion.h:125
bool softwareScheme
Definition sbgVersion.h:120