Erick / Mbed 2 deprecated ICE-F412

Dependencies:   mbed-rtos mbed

Committer:
jmarkel44
Date:
Tue Jan 24 19:05:33 2017 +0000
Revision:
0:61364762ee0e
Port from IAR to Nucleo-F412 board

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmarkel44 0:61364762ee0e 1 #include "LoggerApi.h"
jmarkel44 0:61364762ee0e 2 #include "LogHandler.h"
jmarkel44 0:61364762ee0e 3 #include "DataHandler.h"
jmarkel44 0:61364762ee0e 4 #include "ICELog.h"
jmarkel44 0:61364762ee0e 5 #include "global.h"
jmarkel44 0:61364762ee0e 6 #include <sstream>
jmarkel44 0:61364762ee0e 7 #include <iostream>
jmarkel44 0:61364762ee0e 8 #include <time.h>
jmarkel44 0:61364762ee0e 9 #include <stdio.h>
jmarkel44 0:61364762ee0e 10
jmarkel44 0:61364762ee0e 11
jmarkel44 0:61364762ee0e 12 void EventLoggerApi( EventReasonStruct_t &eventReason )
jmarkel44 0:61364762ee0e 13 {
jmarkel44 0:61364762ee0e 14 time_t curr_sec = time(0);
jmarkel44 0:61364762ee0e 15
jmarkel44 0:61364762ee0e 16 LoggerQueue_t *LoggerEvent = LoggerQueue.alloc();
jmarkel44 0:61364762ee0e 17 memset( LoggerEvent->log_entry, 0, sizeof(LoggerEvent->log_entry) );
jmarkel44 0:61364762ee0e 18
jmarkel44 0:61364762ee0e 19 // std::ostringstream log_event;
jmarkel44 0:61364762ee0e 20 // log_event << "tag:"<< iter->first.c_str() << " value:" << float_value;
jmarkel44 0:61364762ee0e 21
jmarkel44 0:61364762ee0e 22 snprintf( LoggerEvent->log_entry, sizeof(LoggerEvent->log_entry),
jmarkel44 0:61364762ee0e 23 "{""\"mtype\":\"%d\",""\"t\":\"%ld\",""\"e\":\"%d\",""\"i\":\"%s\",""\"iv\":\"%2.2f\",""\"o\":\"%s\",""\"ov\":\"%2.2f\"}",
jmarkel44 0:61364762ee0e 24 EVENT_LOG_MTYPE, curr_sec, eventReason.eventReason, eventReason.inputTag, eventReason.inputValue,
jmarkel44 0:61364762ee0e 25 eventReason.outputTag, eventReason.outputValue );
jmarkel44 0:61364762ee0e 26 LoggerEvent->position = 0;
jmarkel44 0:61364762ee0e 27 LoggerQueue.put(LoggerEvent);
jmarkel44 0:61364762ee0e 28
jmarkel44 0:61364762ee0e 29 logInfo("len=%d: %s", strlen(LoggerEvent->log_entry), LoggerEvent->log_entry );
jmarkel44 0:61364762ee0e 30
jmarkel44 0:61364762ee0e 31 PeriodicLogger( true );
jmarkel44 0:61364762ee0e 32 }
jmarkel44 0:61364762ee0e 33
jmarkel44 0:61364762ee0e 34 void DeviceConnectedLoggerApi( unsigned int connected )
jmarkel44 0:61364762ee0e 35 {
jmarkel44 0:61364762ee0e 36 time_t curr_sec = time(NULL);
jmarkel44 0:61364762ee0e 37 LoggerQueue_t *LoggerEvent = LoggerQueue.alloc();
jmarkel44 0:61364762ee0e 38
jmarkel44 0:61364762ee0e 39 memset( LoggerEvent->log_entry, 0, sizeof(LoggerEvent->log_entry) );
jmarkel44 0:61364762ee0e 40
jmarkel44 0:61364762ee0e 41 snprintf( LoggerEvent->log_entry, sizeof(LoggerEvent->log_entry),
jmarkel44 0:61364762ee0e 42 "{""\"mtype\":\"%d\",""\"t\":\"%ld\",""\"e\":\"%u\" }",
jmarkel44 0:61364762ee0e 43 DEVICE_CONN_MTYPE, curr_sec, connected);
jmarkel44 0:61364762ee0e 44 LoggerEvent->position = 0;
jmarkel44 0:61364762ee0e 45 LoggerQueue.put(LoggerEvent);
jmarkel44 0:61364762ee0e 46
jmarkel44 0:61364762ee0e 47 logInfo("len=%d: %s", strlen(LoggerEvent->log_entry), LoggerEvent->log_entry);
jmarkel44 0:61364762ee0e 48 printf("\rlen = %d: %s\n", strlen(LoggerEvent->log_entry), LoggerEvent->log_entry);
jmarkel44 0:61364762ee0e 49
jmarkel44 0:61364762ee0e 50 PeriodicLogger( true );
jmarkel44 0:61364762ee0e 51 }
jmarkel44 0:61364762ee0e 52
jmarkel44 0:61364762ee0e 53
jmarkel44 0:61364762ee0e 54 void LiveData2Message( const char *liveData, char *messageString, int len )
jmarkel44 0:61364762ee0e 55 {
jmarkel44 0:61364762ee0e 56 time_t curr_sec = time(0);
jmarkel44 0:61364762ee0e 57 memset( messageString, 0, len );
jmarkel44 0:61364762ee0e 58 snprintf( messageString, len, "{""\"mtype\":\"%d\",""\"t\":\"%ld\",%s}", LIVE_DATA_MTYPE, curr_sec, liveData );
jmarkel44 0:61364762ee0e 59 logInfo("%s:%d: packetLen=%d: %s", __func__,__LINE__,strlen(messageString), messageString );
jmarkel44 0:61364762ee0e 60 }
jmarkel44 0:61364762ee0e 61
jmarkel44 0:61364762ee0e 62 void LiveDataLoggerApi( const char *liveData )
jmarkel44 0:61364762ee0e 63 {
jmarkel44 0:61364762ee0e 64 time_t curr_sec = time(0);
jmarkel44 0:61364762ee0e 65
jmarkel44 0:61364762ee0e 66 LoggerQueue_t *LoggerEvent = LoggerQueue.alloc();
jmarkel44 0:61364762ee0e 67
jmarkel44 0:61364762ee0e 68 LiveData2Message( liveData, LoggerEvent->log_entry, sizeof(LoggerEvent->log_entry) );
jmarkel44 0:61364762ee0e 69
jmarkel44 0:61364762ee0e 70 LoggerEvent->position = 0;
jmarkel44 0:61364762ee0e 71 LoggerQueue.put(LoggerEvent);
jmarkel44 0:61364762ee0e 72
jmarkel44 0:61364762ee0e 73 logInfo("dataLen=%d, packetLen=%d: %s", strlen(liveData), strlen(LoggerEvent->log_entry), LoggerEvent->log_entry );
jmarkel44 0:61364762ee0e 74 }
jmarkel44 0:61364762ee0e 75
jmarkel44 0:61364762ee0e 76 void PeriodicLogger( bool force )
jmarkel44 0:61364762ee0e 77 {
jmarkel44 0:61364762ee0e 78 bool log_sent=false;
jmarkel44 0:61364762ee0e 79 std::ostringstream log_event;
jmarkel44 0:61364762ee0e 80
jmarkel44 0:61364762ee0e 81 int map_count = ModbusRegisterMap.size();
jmarkel44 0:61364762ee0e 82 int collected_count = 0;
jmarkel44 0:61364762ee0e 83
jmarkel44 0:61364762ee0e 84 log_event << "\"lr\":[";
jmarkel44 0:61364762ee0e 85 std::map<std::string, ModbusRegister>::iterator iter;
jmarkel44 0:61364762ee0e 86 for (iter = ModbusRegisterMap.begin(); iter != ModbusRegisterMap.end(); ++iter) {
jmarkel44 0:61364762ee0e 87
jmarkel44 0:61364762ee0e 88 collected_count = collected_count + 1;
jmarkel44 0:61364762ee0e 89
jmarkel44 0:61364762ee0e 90 log_event << "{\"t\":"<< "\"" << iter->first.c_str() << "\"," << "\"v\":"<< "\"" << RegisterValueMap[iter->first].float_value<< "\"},";
jmarkel44 0:61364762ee0e 91 log_sent = false;
jmarkel44 0:61364762ee0e 92 if( log_event.str().size() >= 150 ) {
jmarkel44 0:61364762ee0e 93 std::string str = log_event.str();
jmarkel44 0:61364762ee0e 94 str.erase( str.size() - 1 );
jmarkel44 0:61364762ee0e 95 if( collected_count == map_count ) {
jmarkel44 0:61364762ee0e 96 str.append("],\"seq\":\"0\"");
jmarkel44 0:61364762ee0e 97 } else {
jmarkel44 0:61364762ee0e 98 str.append("],\"seq\":\"1\"");
jmarkel44 0:61364762ee0e 99 }
jmarkel44 0:61364762ee0e 100 // printf("%s:%d: Logging %s : len=%d\r\n", __func__, __LINE__, str.c_str(), str.length() );
jmarkel44 0:61364762ee0e 101 LiveDataLoggerApi( str.c_str() );
jmarkel44 0:61364762ee0e 102 log_event.str("");
jmarkel44 0:61364762ee0e 103 log_event.clear();
jmarkel44 0:61364762ee0e 104 log_event << "\"lr\":[";
jmarkel44 0:61364762ee0e 105 log_sent = true;
jmarkel44 0:61364762ee0e 106 }
jmarkel44 0:61364762ee0e 107 }
jmarkel44 0:61364762ee0e 108 if( log_sent == false ) {
jmarkel44 0:61364762ee0e 109 std::string str = log_event.str();
jmarkel44 0:61364762ee0e 110 str.erase( str.size() - 1 );
jmarkel44 0:61364762ee0e 111 str.append("],\"seq\":\"0\"");
jmarkel44 0:61364762ee0e 112 if( str.length() > 20 ) {
jmarkel44 0:61364762ee0e 113 // printf("%s:%d: Logging %s : len=%d\r\n", __func__, __LINE__, str.c_str(), str.length() );
jmarkel44 0:61364762ee0e 114 LiveDataLoggerApi( str.c_str() );
jmarkel44 0:61364762ee0e 115 }
jmarkel44 0:61364762ee0e 116 }
jmarkel44 0:61364762ee0e 117 }
jmarkel44 0:61364762ee0e 118
jmarkel44 0:61364762ee0e 119 void GetCurrentReadings( char *currentReadings, int len )
jmarkel44 0:61364762ee0e 120 {
jmarkel44 0:61364762ee0e 121 //bool log_sent=false;
jmarkel44 0:61364762ee0e 122 std::ostringstream log_event;
jmarkel44 0:61364762ee0e 123
jmarkel44 0:61364762ee0e 124 log_event << "\"lr\":[";
jmarkel44 0:61364762ee0e 125 std::map<std::string, ModbusRegister>::iterator iter;
jmarkel44 0:61364762ee0e 126 for (iter = ModbusRegisterMap.begin(); iter != ModbusRegisterMap.end(); ++iter) {
jmarkel44 0:61364762ee0e 127 log_event << "{\"t\":"<< "\"" << iter->first.c_str() << "\"," << "\"v\":"<< "\"" << RegisterValueMap[iter->first].float_value<< "\"},";
jmarkel44 0:61364762ee0e 128 }
jmarkel44 0:61364762ee0e 129
jmarkel44 0:61364762ee0e 130 std::string str = log_event.str();
jmarkel44 0:61364762ee0e 131 str.erase( str.size() - 1 );
jmarkel44 0:61364762ee0e 132 str.append("],\"seq\":\"0\"");
jmarkel44 0:61364762ee0e 133 LiveData2Message( str.c_str(), currentReadings, len );
jmarkel44 0:61364762ee0e 134 // printf("GetCurrentReadings: packetLen=%d: %s, str.size(%d), (%s)\r\n", strlen(currentReadings), currentReadings, str.size(), str.c_str() );
jmarkel44 0:61364762ee0e 135 }
jmarkel44 0:61364762ee0e 136
jmarkel44 0:61364762ee0e 137 void GetTagReadings( std::vector<std::string> RequestedTags, char *currentReadings, int len )
jmarkel44 0:61364762ee0e 138 {
jmarkel44 0:61364762ee0e 139 std::ostringstream log_event;
jmarkel44 0:61364762ee0e 140
jmarkel44 0:61364762ee0e 141 log_event << "\"lr\":[";
jmarkel44 0:61364762ee0e 142 std::vector<std::string>::iterator iter;
jmarkel44 0:61364762ee0e 143 for (iter = RequestedTags.begin(); iter != RequestedTags.end(); ++iter) {
jmarkel44 0:61364762ee0e 144 log_event << "{\"t\":"<< "\"" << iter->c_str() << "\"," << "\"v\":"<< "\"" << RegisterValueMap[*iter].float_value<< "\"},";
jmarkel44 0:61364762ee0e 145 }
jmarkel44 0:61364762ee0e 146
jmarkel44 0:61364762ee0e 147 std::string str = log_event.str();
jmarkel44 0:61364762ee0e 148 str.erase( str.size() - 1 );
jmarkel44 0:61364762ee0e 149 str.append("]");
jmarkel44 0:61364762ee0e 150 LiveData2Message( str.c_str(), currentReadings, len );
jmarkel44 0:61364762ee0e 151 // printf("GetCurrentReadings: packetLen=%d: %s, str.size(%d), (%s)\r\n", strlen(currentReadings), currentReadings, str.size(), str.c_str() );
jmarkel44 0:61364762ee0e 152 }