From e3e2005d248b42fabf09f77dec713a052bd0aa3b Mon Sep 17 00:00:00 2001 From: "mykola.salomatin" Date: Fri, 18 Dec 2020 19:26:10 +0200 Subject: [MTX-3769] Conduit 300: New Capability - TPM --- include/Utility/Utility.h | 23 +++++++++++++++++++++++ src/Device/Device.cpp | 5 ++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/include/Utility/Utility.h b/include/Utility/Utility.h index bd6019e..4fb54df 100644 --- a/include/Utility/Utility.h +++ b/include/Utility/Utility.h @@ -3,6 +3,7 @@ #include "General.h" #include "Version.h" +#include /********************************************************************** * COPYRIGHT 2020 MULTI-TECH SYSTEMS, INC. @@ -56,4 +57,26 @@ inline mode_t fileType(std::string file) { } } +/* + findFileGlob() function has been added for generic file name search. + For example: one device has file /dev/tpm0, another one has /dev/tpm3. + And as a search parameter, you can specify the filepath with wildcard, + findFileGlob("/dev/tpm*"). The function will find the required file. +*/ + +inline mode_t findFileGlob(std::string file) { + struct stat buf = {}; + glob_t gl; + mode_t result = -1; + + if (0 == glob(file.c_str(), 0, NULL, &gl)) { + if (0 < gl.gl_pathc && 0 == stat(gl.gl_pathv[0], &buf)) { + result = buf.st_mode & S_IFMT; + } + globfree(&gl); + } + + return result; +} + #endif /* UTILITIES_H_ */ diff --git a/src/Device/Device.cpp b/src/Device/Device.cpp index b4ec3c5..23cdf8d 100644 --- a/src/Device/Device.cpp +++ b/src/Device/Device.cpp @@ -32,7 +32,7 @@ std::map Device::capabilityList = {{"adc", false},{"battery", {"cell", false},{"cellWwan", false},{"din", false},{"dout", false},{"externalSerialPort", false}, {"gpio", false},{"gps", false},{"lora", false},{"loraNetworkServer", false}, {"nodeRed", false},{"rs232", false},{"rs422", false},{"rs485", false},{"serial", false}, - {"supercap", false},{"wifi", false},{"docker", false}}; + {"supercap", false},{"wifi", false},{"docker", false},{"tpm", false}}; std::map Device::ethSwitchList; @@ -245,6 +245,9 @@ void Device::mapFileToCapability() { if (fileType("/usr/bin/docker") == S_IFREG) { /* Docker is a regular file */ capabilityList["docker"] = true; } + if (findFileGlob("/dev/tpm*") == S_IFCHR) { /* tpm* is a character device */ + capabilityList["tpm"] = true; + } } void Device::mapMacAddress2() { -- cgit v1.2.3 From f3626b3090ceb81bb16f4a8a5f21486347b690de Mon Sep 17 00:00:00 2001 From: "mykola.salomatin" Date: Fri, 18 Dec 2020 19:29:03 +0200 Subject: [MTX-3769] Conduit 300: New Capability - TPM --- include/Utility/Utility.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/Utility/Utility.h b/include/Utility/Utility.h index 4fb54df..8d68baa 100644 --- a/include/Utility/Utility.h +++ b/include/Utility/Utility.h @@ -70,13 +70,13 @@ inline mode_t findFileGlob(std::string file) { mode_t result = -1; if (0 == glob(file.c_str(), 0, NULL, &gl)) { - if (0 < gl.gl_pathc && 0 == stat(gl.gl_pathv[0], &buf)) { - result = buf.st_mode & S_IFMT; - } - globfree(&gl); + if (0 < gl.gl_pathc && 0 == stat(gl.gl_pathv[0], &buf)) { + result = buf.st_mode & S_IFMT; + } + globfree(&gl); } - return result; + return result; } #endif /* UTILITIES_H_ */ -- cgit v1.2.3