Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: ICE-Application/src/Utilities/utilities.cpp
- Revision:
- 0:61364762ee0e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ICE-Application/src/Utilities/utilities.cpp Tue Jan 24 19:05:33 2017 +0000
@@ -0,0 +1,123 @@
+/******************************************************************************
+ * File: utilities.cpp
+ * Description:
+ ******************************************************************************/
+#include <string.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include "mbed.h"
+#include "global.h"
+#include "cJSON.h"
+#include "ICELog.h"
+#include "utilities.h"
+
+//
+// function: capture
+// description: captures the output from the __heapstats function
+//
+static int capture(void* pBuffer, char const* pFormatString, ...)
+{
+ char* pStringEnd = (char*)pBuffer + strlen((char*)pBuffer);
+ va_list valist;
+
+ va_start(valist, pFormatString);
+ return vsprintf(pStringEnd, pFormatString, valist);
+}
+
+//
+// function: Util_isSequenceSubControl
+// description:
+//
+bool Util_isSequenceSubControl(std::string controlFile)
+{
+ return (controlFile.substr(0, 4) == "seq_") ? true : false;
+}
+
+//
+// function: Util_isVirtualOutput
+// description:
+//
+bool Util_isVirtualOutput(std::string output)
+{
+ return (output.substr(0, 2) == "v_" ) ? true : false;
+}
+
+//
+// function: getHeapData
+// description: cleaned version of __heapstats()
+//
+// @param[in] none
+// @param[out] none
+// @return none
+//
+std::string Util_getHeapData(void)
+{
+#ifndef __ICCARM__
+ char data[256];
+ memset(data, 0, sizeof(data));
+ __heapstats(capture, data);
+ std::string msg = data;
+ std::string::size_type pos = 0;
+ while ((pos = msg.find("\n", pos)) != std::string::npos) {
+ msg.erase(pos, std::string::npos);
+ }
+ return msg;
+#endif
+}
+
+//
+// function: getLastBootTime
+// description: read the boot.time file and return the timestamp
+//
+// @param[in] none
+// @param[out] none
+// @return none
+//
+std::string Util_getLastBootTime(void)
+{
+#ifdef MDOT_ICE
+ mDot::mdot_file file = GLOBAL_mdot->openUserFile("boot.time", mDot::FM_RDONLY);
+ if ( file.fd < 0 ) {
+ logError("%s: failed to open boot.time", __func__);
+ return "error";
+ }
+ char *data_buf = (char*) malloc(file.size);
+ bool rc = GLOBAL_mdot->readUserFile(file, data_buf, file.size);
+ if ( rc != true ) {
+ logError("%s: failed to read boot.time", __func__);
+ free(data_buf);
+ GLOBAL_mdot->closeUserFile(file);
+ return "error";
+ }
+ std::string bootTime = data_buf;
+
+ free(data_buf);
+ GLOBAL_mdot->closeUserFile(file);
+ return bootTime;
+#endif
+ return 0;
+}
+
+std::string Util_GetFileById(const std::string id)
+{
+ // loop through all the files looking for a matching ID
+
+}
+
+std::string Util_GetIdbyFile(const std::string filename)
+{
+ char buf[MAX_FILE_SIZE];
+ std::string id = "";
+ int n = GLOBAL_mdot->readUserFile(filename.c_str(), (void*) buf, sizeof(buf));
+ if ( n != sizeof(buf) ) {
+ logError("%s: error reading %s", __func__, filename.c_str());
+ return id;
+ }
+ cJSON *root = cJSON_Parse(buf);
+ if ( !cJSON_HasObjectItem(root, "id") ) {
+ logError("%s: failed to find id in file %s\n", __func__, filename.c_str());
+ }
+ id = cJSON_GetObjectItem(root, "id")->valuestring;
+ cJSON_Delete(root);
+ return id;
+}