58 std::string
ToUpper(
string const& _str);
66 std::string
ToLower(
string const& _str);
75 void split(std::vector<std::string>& lst,
const std::string& input,
const std::string& separators,
bool remove_empty =
true);
93 std::string&
ltrim(std::string& s);
104 std::string&
rtrim(std::string& s);
115 std::string&
trim(std::string& s);
117 void PrintHex(std::string prefix, uint8_t
const *data,
uint32 const length);
134 std::cout <<
"Already Unlocked" << std::endl;
136 std::cout <<
"Unlocking" << std::endl;
162 class StackTraceGenerator
169 StackTraceGenerator() =
delete;
170 StackTraceGenerator(
const StackTraceGenerator&) =
delete;
171 StackTraceGenerator& operator=(
const StackTraceGenerator&) =
delete;
172 ~StackTraceGenerator() =
delete;
176 static std::vector<std::string> GetTrace()
179 int callstack[128] = {};
182 int frames = backtrace((
void**) callstack, 5);
185 char** strs = backtrace_symbols((
void**) callstack, frames);
187 std::vector<std::string> stackFrames;
188 stackFrames.reserve(frames);
190 for (
int i = 2; i < frames; ++i)
192 char functionSymbol[1024] = {};
193 char moduleName[1024] = {};
217 sscanf(strs[i],
"%*s %s %s %s %*s %d",
218 moduleName, addr, functionSymbol, &offset);
220 int validCppName = 0;
224 char* functionName = abi::__cxa_demangle(functionSymbol,
225 NULL, 0, &validCppName);
227 char stackFrame[4096] = {};
228 if (validCppName == 0)
230 sprintf(stackFrame,
"(%s)\t0x%s — %s + %d",
231 moduleName, addr, functionName, offset);
238 sprintf(stackFrame,
"(%s)\t0x%s — %s + %d",
239 moduleName, addr, functionName, offset);
247 std::string frameStr(stackFrame);
248 stackFrames.push_back(frameStr);
262 #if (defined _WINDOWS || defined WIN32 || defined _MSC_VER) && (!defined MINGW && !defined __MINGW32__ && !defined __MINGW64__) 264 struct tm *localtime_r(
const time_t *_clock,
struct tm *_result);
string ozwdirname(string m_path)
Definition: Utils.cpp:156
Definition: Bitfield.cpp:30
void Unlock()
Definition: Utils.h:141
~LockGuard()
Definition: Utils.h:130
void split(std::vector< std::string > &lst, const std::string &input, const std::string &separators, bool remove_empty)
Definition: Utils.cpp:106
std::string ToLower(std::string const &_str)
Definition: Utils.cpp:52
#define NULL
Definition: Defs.h:81
string intToString(int x)
Definition: Utils.cpp:165
LockGuard(Internal::Platform::Mutex *mutex)
Definition: Utils.h:122
unsigned int uint32
Definition: Defs.h:91
string PktToString(uint8 const *data, uint32 const length)
Definition: Utils.cpp:129
void PrintHex(std::string prefix, uint8_t const *data, uint32 const length)
Definition: Utils.cpp:124
std::string & trim(std::string &s)
Trim.
Definition: Utils.cpp:98
std::string & rtrim(std::string &s)
Right Trim.
Definition: Utils.cpp:91
const char * rssi_to_string(uint8 _data)
Definition: Utils.cpp:174
static void Write(LogLevel _level, char const *_format,...)
Write an entry to the log.
Definition: Log.cpp:202
std::string & ltrim(std::string &s)
Left Trim.
Definition: Utils.cpp:84
std::string ToUpper(std::string const &_str)
Definition: Utils.cpp:41
std::string & removewhitespace(std::string &s)
Definition: Utils.cpp:64
unsigned char uint8
Definition: Defs.h:85