sbgVersion.h
Go to the documentation of this file.
1 
34 #ifndef __SBG_VERSION_H__
35 #define __SBG_VERSION_H__
36 
37 //----------------------------------------------------------------------//
38 //- Header (open extern C block) -//
39 //----------------------------------------------------------------------//
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43 
44 #include "../sbgDefines.h"
45 #include "../sbgErrorCodes.h"
46 #include "../sbgTypes.h"
47 #include <stdbool.h>
48 
49 //----------------------------------------------------------------------//
50 //- Version related definitions -//
51 //----------------------------------------------------------------------//
52 #define SBG_VERSION_SOFT_SCHEME (0x00000001u << 31)
54 #define SBG_VERSION_SOFT_SCHEME_QUALIFIER_MASK (0x07)
55 #define SBG_VERSION_SOFT_SCHEME_QUALIFIER_SHIFT (28)
57 #define SBG_VERSION_SOFT_SCHEME_MAJOR_MASK (0x3F)
58 #define SBG_VERSION_SOFT_SCHEME_MAJOR_SHIFT (22)
60 #define SBG_VERSION_SOFT_SCHEME_MINOR_MASK (0x3F)
61 #define SBG_VERSION_SOFT_SCHEME_MINOR_SHIFT (16)
63 #define SBG_VERSION_SOFT_SCHEME_BUILD_MASK (0xFFFF)
64 #define SBG_VERSION_SOFT_SCHEME_BUILD_SHIFT (0)
71 typedef enum _SbgVersionQualifier
72 {
80 
87 {
94 
99 typedef struct _SbgVersion
100 {
107 } SbgVersion;
108 
109 //----------------------------------------------------------------------//
110 //- Macro definitions for encode versions -//
111 //----------------------------------------------------------------------//
112 
121 #define SBG_VERSION_BASIC(major, minor, rev, build) ( (((uint32)(major)) << 24) | \
122  (((uint32)(minor)) << 16) | \
123  (((uint32)(rev)) << 8) | \
124  (((uint32)(build))) )
125 
134 #define SBG_VERSION_SOFTWARE(major, minor, build, qualifier) ( SBG_VERSION_SOFT_SCHEME | \
135  ((((uint32)(qualifier)) & SBG_VERSION_SOFT_SCHEME_QUALIFIER_MASK) << SBG_VERSION_SOFT_SCHEME_QUALIFIER_SHIFT) | \
136  ((((uint32)(major)) & SBG_VERSION_SOFT_SCHEME_MAJOR_MASK) << SBG_VERSION_SOFT_SCHEME_MAJOR_SHIFT) | \
137  ((((uint32)(minor)) & SBG_VERSION_SOFT_SCHEME_MINOR_MASK) << SBG_VERSION_SOFT_SCHEME_MINOR_SHIFT) | \
138  ((((uint32)(build)) & SBG_VERSION_SOFT_SCHEME_BUILD_MASK) << SBG_VERSION_SOFT_SCHEME_BUILD_SHIFT) )
139 
140 //----------------------------------------------------------------------//
141 //- Version encoding / decoding methods -//
142 //----------------------------------------------------------------------//
143 
149 void sbgVersionDecode(uint32 encodedVersion, SbgVersion *pVersionInfo);
150 
156 uint32 sbgVersionEncode(const SbgVersion *pVersionInfo);
157 
158 //----------------------------------------------------------------------//
159 //- Version parameters methods -//
160 //----------------------------------------------------------------------//
161 
168 {
169  SbgVersion decodedVersion;
170 
171  //
172  // Decode the version first
173  //
174  sbgVersionDecode(encodedVersion, &decodedVersion);
175 
176  //
177  // Returns if the version is using a software scheme
178  //
179  return decodedVersion.softwareScheme;
180 }
181 
182 //----------------------------------------------------------------------//
183 //- Version comparaison methods -//
184 //----------------------------------------------------------------------//
185 
196 int32 sbgVersionCompare(const SbgVersion *pVersionA, const SbgVersion *pVersionB, SbgVersionCmpThresold thresold);
197 
209 {
210  SbgVersion versionAInfo;
211  SbgVersion versionBInfo;
212 
213  //
214  // Decode the versions
215  //
216  sbgVersionDecode(versionA, &versionAInfo);
217  sbgVersionDecode(versionB, &versionBInfo);
218 
219  //
220  // Do the comparaison
221  //
222  return sbgVersionCompare(&versionAInfo, &versionBInfo, thresold);
223 }
224 
225 //----------------------------------------------------------------------//
226 //- Version to string methods -//
227 //----------------------------------------------------------------------//
228 
237 SbgErrorCode sbgVersionToString(const SbgVersion *pVersionInfo, char *pBuffer, uint32 sizeOfBuffer);
238 
247 SbgErrorCode sbgVersionToStringEncoded(uint32 version, char *pBuffer, uint32 sizeOfBuffer);
248 
249 //----------------------------------------------------------------------//
250 //- String to version methods -//
251 //----------------------------------------------------------------------//
252 
259 SbgErrorCode sbgVersionFromString(const char *pVersionStr, SbgVersion *pVersionInfo);
260 
267 SbgErrorCode sbgVersionFromStringEncoded(const char *pVersionStr, uint32 *pVersion);
268 
269 //----------------------------------------------------------------------//
270 //- Legacy version system methods -//
271 //----------------------------------------------------------------------//
272 
281 
291 SBG_INLINE uint32 SBG_VERSION(uint8 major, uint8 minor, uint8 rev, uint8 build)
292 {
293  //
294  // The SBG_VERSION macro is the basic version scheme.
295  //
296  return SBG_VERSION_BASIC(major, minor, rev, build);
297 }
298 
306 {
307  SbgVersion versionInfo;
308 
309  //
310  // Decode the version information
311  //
312  sbgVersionDecode(encodedVersion, &versionInfo);
313 
314  //
315  // Return the major version
316  //
317  return versionInfo.major;
318 }
319 
327 {
328  SbgVersion versionInfo;
329 
330  //
331  // Decode the version information
332  //
333  sbgVersionDecode(encodedVersion, &versionInfo);
334 
335  //
336  // Return the major version
337  //
338  return versionInfo.minor;
339 }
340 
348 {
349  SbgVersion versionInfo;
350 
351  //
352  // Decode the version information
353  //
354  sbgVersionDecode(encodedVersion, &versionInfo);
355 
356  //
357  // Return the major version
358  //
359  return versionInfo.rev;
360 }
361 
369 {
370  SbgVersion versionInfo;
371 
372  //
373  // Decode the version information
374  //
375  sbgVersionDecode(encodedVersion, &versionInfo);
376 
377  //
378  // Return the major version
379  //
380  return (uint8)versionInfo.build;
381 }
382 
383 //----------------------------------------------------------------------//
384 //- Footer (close extern C block) -//
385 //----------------------------------------------------------------------//
386 #ifdef __cplusplus
387 }
388 #endif
389 
390 #endif /* __SBG_VERSION_H__ */
void sbgVersionDecode(uint32 encodedVersion, SbgVersion *pVersionInfo)
Definition: sbgVersion.c:13
struct _SbgVersion SbgVersion
uint16 build
Definition: sbgVersion.h:106
unsigned int uint32
Definition: sbgTypes.h:58
int32 sbgVersionCompare(const SbgVersion *pVersionA, const SbgVersion *pVersionB, SbgVersionCmpThresold thresold)
Definition: sbgVersion.c:124
_SbgVersionCmpThresold
Definition: sbgVersion.h:86
SBG_INLINE uint32 SBG_VERSION(uint8 major, uint8 minor, uint8 rev, uint8 build)
Definition: sbgVersion.h:291
SbgErrorCode sbgVersionToString(const SbgVersion *pVersionInfo, char *pBuffer, uint32 sizeOfBuffer)
Definition: sbgVersion.c:229
enum _SbgVersionCmpThresold SbgVersionCmpThresold
uint32 sbgVersionEncode(const SbgVersion *pVersionInfo)
Definition: sbgVersion.c:70
SBG_INLINE uint8 SBG_VERSION_GET_MINOR(uint32 encodedVersion)
Definition: sbgVersion.h:326
SBG_INLINE bool sbgVersionIsUsingSoftwareScheme(uint32 encodedVersion)
Definition: sbgVersion.h:167
SBG_INLINE uint8 SBG_VERSION_GET_BUILD(uint32 encodedVersion)
Definition: sbgVersion.h:368
SbgErrorCode sbgVersionToStringEncoded(uint32 version, char *pBuffer, uint32 sizeOfBuffer)
Definition: sbgVersion.c:326
bool softwareScheme
Definition: sbgVersion.h:101
SBG_INLINE int32 sbgVersionCompareEncoded(uint32 versionA, uint32 versionB, SbgVersionCmpThresold thresold)
Definition: sbgVersion.h:208
uint8 minor
Definition: sbgVersion.h:104
enum _SbgVersionQualifier SbgVersionQualifier
#define SBG_INLINE
Definition: sbgDefines.h:94
SbgErrorCode sbgVersionFromStringEncoded(const char *pVersionStr, uint32 *pVersion)
Definition: sbgVersion.c:472
uint8 major
Definition: sbgVersion.h:103
unsigned char uint8
Definition: sbgTypes.h:56
signed int int32
Definition: sbgTypes.h:64
unsigned short uint16
Definition: sbgTypes.h:57
SBG_DEPRECATED(SBG_INLINE uint32 SBG_VERSION(uint8 major, uint8 minor, uint8 rev, uint8 build))
enum _SbgErrorCode SbgErrorCode
SBG_INLINE uint8 SBG_VERSION_GET_REV(uint32 encodedVersion)
Definition: sbgVersion.h:347
#define SBG_VERSION_BASIC(major, minor, rev, build)
Definition: sbgVersion.h:121
SbgVersionQualifier qualifier
Definition: sbgVersion.h:102
SbgErrorCode sbgVersionFromString(const char *pVersionStr, SbgVersion *pVersionInfo)
Definition: sbgVersion.c:351
SBG_INLINE uint8 SBG_VERSION_GET_MAJOR(uint32 encodedVersion)
Definition: sbgVersion.h:305


sbg_driver
Author(s):
autogenerated on Sun Jan 27 2019 03:42:20