Version info

pull/4/head
Paul Hollinsky 2018-10-29 16:35:14 -04:00
parent 37ef932e03
commit 4f91d0775f
8 changed files with 80 additions and 2 deletions

View File

@ -57,10 +57,27 @@ set(COMMON_SRC
set(SRC_FILES ${COMMON_SRC} ${PLATFORM_SRC}) set(SRC_FILES ${COMMON_SRC} ${PLATFORM_SRC})
# Generate build info header
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND git describe --abbrev=6 --dirty --always --tags
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_DESCRIBE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
configure_file(api/icsneocpp/buildinfo.h.template ${CMAKE_BINARY_DIR}/generated/buildinfo.h)
include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
add_library(icsneocpp add_library(icsneocpp
api/icsneocpp/icsneocpp.cpp api/icsneocpp/icsneocpp.cpp
api/icsneocpp/error.cpp api/icsneocpp/error.cpp
api/icsneocpp/errormanager.cpp api/icsneocpp/errormanager.cpp
api/icsneocpp/version.cpp
${SRC_FILES} ${SRC_FILES}
) )
target_include_directories(icsneocpp target_include_directories(icsneocpp

View File

@ -363,4 +363,8 @@ bool icsneo_describeDevice(const neodevice_t* device, char* str, size_t* maxLeng
ErrorManager::GetInstance().add(APIError::OutputTruncated); ErrorManager::GetInstance().add(APIError::OutputTruncated);
return true; return true;
}
neoversion_t icsneo_getVersion(void) {
return icsneo::GetVersion();
} }

View File

@ -0,0 +1,11 @@
#ifndef __ICSNEO_API_BUILDINFO_H_
#define __ICSNEO_API_BUILDINFO_H_
const char* GIT_BRANCH = "@GIT_BRANCH@";
const char* GIT_DESCRIBE = "@GIT_DESCRIBE@";
const uint16_t BUILD_MAJOR = (@PROJECT_VERSION_MAJOR@);
const uint16_t BUILD_MINOR = (@PROJECT_VERSION_MINOR@);
const uint16_t BUILD_PATCH = (@PROJECT_VERSION_PATCH@);
const char* BUILD_METADATA = "@BUILD_METADATA@";
#endif

View File

@ -0,0 +1,15 @@
#include "icsneo/api/version.h"
#include "generated/buildinfo.h"
using namespace icsneo;
neoversion_t icsneo::GetVersion(void) {
neoversion_t version = {};
version.major = BUILD_MAJOR;
version.minor = BUILD_MINOR;
version.patch = BUILD_PATCH;
version.metadata = BUILD_METADATA;
version.buildBranch = GIT_BRANCH;
version.buildTag = GIT_DESCRIBE;
return version;
}

View File

@ -322,8 +322,7 @@ int icsneoValidateHObject(void* hObject) {
} }
int icsneoGetDLLVersion(void) { int icsneoGetDLLVersion(void) {
// TODO Implement return 804;
return false;
} }
int icsneoGetSerialNumber(void* hObject, unsigned int*iSerialNumber) { int icsneoGetSerialNumber(void* hObject, unsigned int*iSerialNumber) {

View File

@ -0,0 +1,24 @@
#ifndef __ICSNEO_API_VERSION_H_
#define __ICSNEO_API_VERSION_H_
#include <stdint.h>
typedef struct {
uint16_t major;
uint16_t minor;
uint16_t patch;
const char* metadata;
const char* buildBranch;
const char* buildTag;
char reserved[32];
} neoversion_t;
#ifdef __cplusplus
namespace icsneo {
neoversion_t GetVersion(void);
}
#endif
#endif

View File

@ -6,6 +6,7 @@
#include "icsneo/communication/message/neomessage.h" // For neomessage_t and friends #include "icsneo/communication/message/neomessage.h" // For neomessage_t and friends
#include "icsneo/platform/dynamiclib.h" // Dynamic library loading and exporting #include "icsneo/platform/dynamiclib.h" // Dynamic library loading and exporting
#include "icsneo/communication/network.h" // Network type and netID defines #include "icsneo/communication/network.h" // Network type and netID defines
#include "icsneo/api/version.h" // For version info
#ifndef ICSNEOC_DYNAMICLOAD #ifndef ICSNEOC_DYNAMICLOAD
@ -63,6 +64,8 @@ extern bool DLLExport icsneo_transmitMessages(const neodevice_t* device, const n
extern bool DLLExport icsneo_describeDevice(const neodevice_t* device, char* str, size_t* maxLength); extern bool DLLExport icsneo_describeDevice(const neodevice_t* device, char* str, size_t* maxLength);
extern neoversion_t DLLExport icsneo_getVersion(void);
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"
#endif #endif
@ -144,6 +147,9 @@ fn_icsneo_transmitMessages icsneo_transmitMessages;
typedef bool(*fn_icsneo_describeDevice)(const neodevice_t* device, char* str, size_t* maxLength); typedef bool(*fn_icsneo_describeDevice)(const neodevice_t* device, char* str, size_t* maxLength);
fn_icsneo_describeDevice icsneo_describeDevice; fn_icsneo_describeDevice icsneo_describeDevice;
typedef neoversion_t(*fn_icsneo_getVersion)(void);
fn_icsneo_getVersion icsneo_getVersion;
#define ICSNEO_IMPORT(func) func = (fn_##func)icsneo_dynamicLibraryGetFunction(icsneo_libraryHandle, #func) #define ICSNEO_IMPORT(func) func = (fn_##func)icsneo_dynamicLibraryGetFunction(icsneo_libraryHandle, #func)
#define ICSNEO_IMPORTASSERT(func) if((ICSNEO_IMPORT(func)) == NULL) return 3 #define ICSNEO_IMPORTASSERT(func) if((ICSNEO_IMPORT(func)) == NULL) return 3
void* icsneo_libraryHandle = NULL; void* icsneo_libraryHandle = NULL;
@ -183,6 +189,7 @@ int icsneo_init() {
ICSNEO_IMPORTASSERT(icsneo_transmit); ICSNEO_IMPORTASSERT(icsneo_transmit);
ICSNEO_IMPORTASSERT(icsneo_transmitMessages); ICSNEO_IMPORTASSERT(icsneo_transmitMessages);
ICSNEO_IMPORTASSERT(icsneo_describeDevice); ICSNEO_IMPORTASSERT(icsneo_describeDevice);
ICSNEO_IMPORTASSERT(icsneo_getVersion);
icsneo_initialized = true; icsneo_initialized = true;
return 0; return 0;

View File

@ -5,6 +5,7 @@
#include <memory> #include <memory>
#include "icsneo/device/device.h" #include "icsneo/device/device.h"
#include "icsneo/api/version.h"
namespace icsneo { namespace icsneo {