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/DataHandler/LoggerApi.cpp
- Revision:
- 0:61364762ee0e
diff -r 000000000000 -r 61364762ee0e ICE-Application/src/DataHandler/LoggerApi.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ICE-Application/src/DataHandler/LoggerApi.cpp Tue Jan 24 19:05:33 2017 +0000
@@ -0,0 +1,152 @@
+#include "LoggerApi.h"
+#include "LogHandler.h"
+#include "DataHandler.h"
+#include "ICELog.h"
+#include "global.h"
+#include <sstream>
+#include <iostream>
+#include <time.h>
+#include <stdio.h>
+
+
+void EventLoggerApi( EventReasonStruct_t &eventReason )
+{
+ time_t curr_sec = time(0);
+
+ LoggerQueue_t *LoggerEvent = LoggerQueue.alloc();
+ memset( LoggerEvent->log_entry, 0, sizeof(LoggerEvent->log_entry) );
+
+// std::ostringstream log_event;
+// log_event << "tag:"<< iter->first.c_str() << " value:" << float_value;
+
+ snprintf( LoggerEvent->log_entry, sizeof(LoggerEvent->log_entry),
+ "{""\"mtype\":\"%d\",""\"t\":\"%ld\",""\"e\":\"%d\",""\"i\":\"%s\",""\"iv\":\"%2.2f\",""\"o\":\"%s\",""\"ov\":\"%2.2f\"}",
+ EVENT_LOG_MTYPE, curr_sec, eventReason.eventReason, eventReason.inputTag, eventReason.inputValue,
+ eventReason.outputTag, eventReason.outputValue );
+ LoggerEvent->position = 0;
+ LoggerQueue.put(LoggerEvent);
+
+ logInfo("len=%d: %s", strlen(LoggerEvent->log_entry), LoggerEvent->log_entry );
+
+ PeriodicLogger( true );
+}
+
+void DeviceConnectedLoggerApi( unsigned int connected )
+{
+ time_t curr_sec = time(NULL);
+ LoggerQueue_t *LoggerEvent = LoggerQueue.alloc();
+
+ memset( LoggerEvent->log_entry, 0, sizeof(LoggerEvent->log_entry) );
+
+ snprintf( LoggerEvent->log_entry, sizeof(LoggerEvent->log_entry),
+ "{""\"mtype\":\"%d\",""\"t\":\"%ld\",""\"e\":\"%u\" }",
+ DEVICE_CONN_MTYPE, curr_sec, connected);
+ LoggerEvent->position = 0;
+ LoggerQueue.put(LoggerEvent);
+
+ logInfo("len=%d: %s", strlen(LoggerEvent->log_entry), LoggerEvent->log_entry);
+ printf("\rlen = %d: %s\n", strlen(LoggerEvent->log_entry), LoggerEvent->log_entry);
+
+ PeriodicLogger( true );
+}
+
+
+void LiveData2Message( const char *liveData, char *messageString, int len )
+{
+ time_t curr_sec = time(0);
+ memset( messageString, 0, len );
+ snprintf( messageString, len, "{""\"mtype\":\"%d\",""\"t\":\"%ld\",%s}", LIVE_DATA_MTYPE, curr_sec, liveData );
+ logInfo("%s:%d: packetLen=%d: %s", __func__,__LINE__,strlen(messageString), messageString );
+}
+
+void LiveDataLoggerApi( const char *liveData )
+{
+ time_t curr_sec = time(0);
+
+ LoggerQueue_t *LoggerEvent = LoggerQueue.alloc();
+
+ LiveData2Message( liveData, LoggerEvent->log_entry, sizeof(LoggerEvent->log_entry) );
+
+ LoggerEvent->position = 0;
+ LoggerQueue.put(LoggerEvent);
+
+ logInfo("dataLen=%d, packetLen=%d: %s", strlen(liveData), strlen(LoggerEvent->log_entry), LoggerEvent->log_entry );
+}
+
+void PeriodicLogger( bool force )
+{
+ bool log_sent=false;
+ std::ostringstream log_event;
+
+ int map_count = ModbusRegisterMap.size();
+ int collected_count = 0;
+
+ log_event << "\"lr\":[";
+ std::map<std::string, ModbusRegister>::iterator iter;
+ for (iter = ModbusRegisterMap.begin(); iter != ModbusRegisterMap.end(); ++iter) {
+
+ collected_count = collected_count + 1;
+
+ log_event << "{\"t\":"<< "\"" << iter->first.c_str() << "\"," << "\"v\":"<< "\"" << RegisterValueMap[iter->first].float_value<< "\"},";
+ log_sent = false;
+ if( log_event.str().size() >= 150 ) {
+ std::string str = log_event.str();
+ str.erase( str.size() - 1 );
+ if( collected_count == map_count ) {
+ str.append("],\"seq\":\"0\"");
+ } else {
+ str.append("],\"seq\":\"1\"");
+ }
+// printf("%s:%d: Logging %s : len=%d\r\n", __func__, __LINE__, str.c_str(), str.length() );
+ LiveDataLoggerApi( str.c_str() );
+ log_event.str("");
+ log_event.clear();
+ log_event << "\"lr\":[";
+ log_sent = true;
+ }
+ }
+ if( log_sent == false ) {
+ std::string str = log_event.str();
+ str.erase( str.size() - 1 );
+ str.append("],\"seq\":\"0\"");
+ if( str.length() > 20 ) {
+// printf("%s:%d: Logging %s : len=%d\r\n", __func__, __LINE__, str.c_str(), str.length() );
+ LiveDataLoggerApi( str.c_str() );
+ }
+ }
+}
+
+void GetCurrentReadings( char *currentReadings, int len )
+{
+ //bool log_sent=false;
+ std::ostringstream log_event;
+
+ log_event << "\"lr\":[";
+ std::map<std::string, ModbusRegister>::iterator iter;
+ for (iter = ModbusRegisterMap.begin(); iter != ModbusRegisterMap.end(); ++iter) {
+ log_event << "{\"t\":"<< "\"" << iter->first.c_str() << "\"," << "\"v\":"<< "\"" << RegisterValueMap[iter->first].float_value<< "\"},";
+ }
+
+ std::string str = log_event.str();
+ str.erase( str.size() - 1 );
+ str.append("],\"seq\":\"0\"");
+ LiveData2Message( str.c_str(), currentReadings, len );
+// printf("GetCurrentReadings: packetLen=%d: %s, str.size(%d), (%s)\r\n", strlen(currentReadings), currentReadings, str.size(), str.c_str() );
+}
+
+void GetTagReadings( std::vector<std::string> RequestedTags, char *currentReadings, int len )
+{
+ std::ostringstream log_event;
+
+ log_event << "\"lr\":[";
+ std::vector<std::string>::iterator iter;
+ for (iter = RequestedTags.begin(); iter != RequestedTags.end(); ++iter) {
+ log_event << "{\"t\":"<< "\"" << iter->c_str() << "\"," << "\"v\":"<< "\"" << RegisterValueMap[*iter].float_value<< "\"},";
+ }
+
+ std::string str = log_event.str();
+ str.erase( str.size() - 1 );
+ str.append("]");
+ LiveData2Message( str.c_str(), currentReadings, len );
+// printf("GetCurrentReadings: packetLen=%d: %s, str.size(%d), (%s)\r\n", strlen(currentReadings), currentReadings, str.size(), str.c_str() );
+}
\ No newline at end of file