vcdMaker demo signal library. See http://vcdmaker.org for details. vcdMaker demos: For Freescale FRDM-KL46Z: https://developer.mbed.org/users/ketjow/code/vcdMaker_Demo/ For ST Disco L476: https://developer.mbed.org/users/ketjow/code/vcdMaker_Demo_DISCO_L476/

Dependents:   vcdMaker_Demo_DISCO_L476 vcdMaker_Demo

Committer:
ketjow
Date:
Fri Nov 18 12:44:08 2016 +0000
Revision:
1:5be5e7e966cd
Parent:
0:abd95c8ed6c1
Added events.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ketjow 0:abd95c8ed6c1 1 /*!
ketjow 0:abd95c8ed6c1 2 @file signal.cpp
ketjow 0:abd95c8ed6c1 3
ketjow 0:abd95c8ed6c1 4 The implementation of the signal base class.
ketjow 0:abd95c8ed6c1 5
ketjow 0:abd95c8ed6c1 6 @par Full Description
ketjow 0:abd95c8ed6c1 7 The implementation of the signal base class.
ketjow 0:abd95c8ed6c1 8
ketjow 0:abd95c8ed6c1 9 @if REVISION_HISTORY_INCLUDED
ketjow 0:abd95c8ed6c1 10 @par Edit History
ketjow 0:abd95c8ed6c1 11 @li [0] wojciech.rynczuk@wp.pl 20-JAN-2015 Initial file revision.
ketjow 0:abd95c8ed6c1 12 @li [1] wojciech.rynczuk@wp.pl 04-MAR-2016 Removed sstream library.
ketjow 0:abd95c8ed6c1 13 @endif
ketjow 0:abd95c8ed6c1 14
ketjow 0:abd95c8ed6c1 15 @ingroup Signal
ketjow 0:abd95c8ed6c1 16
ketjow 0:abd95c8ed6c1 17 The MIT License (MIT)
ketjow 0:abd95c8ed6c1 18 Copyright (c) 2016 Wojciech Rynczuk
ketjow 0:abd95c8ed6c1 19
ketjow 0:abd95c8ed6c1 20 */
ketjow 0:abd95c8ed6c1 21
ketjow 0:abd95c8ed6c1 22 #include "signal.hpp"
ketjow 0:abd95c8ed6c1 23 #include <cstring>
ketjow 0:abd95c8ed6c1 24
ketjow 0:abd95c8ed6c1 25 Signal::Signal(const string& name, uint32_t size, Logger& logger) : m_Name(name), m_Size(size), m_pLogger(&logger), m_Filter(0)
ketjow 0:abd95c8ed6c1 26 {
ketjow 0:abd95c8ed6c1 27 }
ketjow 0:abd95c8ed6c1 28
ketjow 0:abd95c8ed6c1 29 void Signal::PrintVector(uint32_t value, string& suffix, string& comment, int32_t& time_ref)
ketjow 0:abd95c8ed6c1 30 {
ketjow 0:abd95c8ed6c1 31 char buffer[100];
ketjow 0:abd95c8ed6c1 32 int32_t log_time = time_ref;
ketjow 0:abd95c8ed6c1 33
ketjow 0:abd95c8ed6c1 34 if (0 == log_time)
ketjow 0:abd95c8ed6c1 35 {
ketjow 0:abd95c8ed6c1 36 log_time = m_pLogger->GetTime();
ketjow 0:abd95c8ed6c1 37 time_ref = log_time;
ketjow 0:abd95c8ed6c1 38 }
ketjow 0:abd95c8ed6c1 39
ketjow 0:abd95c8ed6c1 40 snprintf(&buffer[0], 100, "#%u %s%s %d %d %s",(uint32_t)log_time, m_Name.c_str(), suffix.c_str(), value, m_Size, comment.c_str());
ketjow 0:abd95c8ed6c1 41 m_pLogger->Log(&buffer[0]);
ketjow 0:abd95c8ed6c1 42 }
ketjow 0:abd95c8ed6c1 43
ketjow 0:abd95c8ed6c1 44 void Signal::PrintReal(float value, string& suffix, string& comment, int32_t& time_ref)
ketjow 0:abd95c8ed6c1 45 {
ketjow 0:abd95c8ed6c1 46 char buffer[100];
ketjow 0:abd95c8ed6c1 47 int32_t log_time = time_ref;
ketjow 0:abd95c8ed6c1 48
ketjow 0:abd95c8ed6c1 49 if (0 == log_time)
ketjow 0:abd95c8ed6c1 50 {
ketjow 0:abd95c8ed6c1 51 log_time = m_pLogger->GetTime();
ketjow 0:abd95c8ed6c1 52 time_ref = log_time;
ketjow 0:abd95c8ed6c1 53 }
ketjow 0:abd95c8ed6c1 54
ketjow 0:abd95c8ed6c1 55 snprintf(&buffer[0], 100, "#%u %s%s %f f %s",(uint32_t)log_time, m_Name.c_str(), suffix.c_str(), value, comment.c_str());
ketjow 0:abd95c8ed6c1 56 m_pLogger->Log(&buffer[0]);
ketjow 0:abd95c8ed6c1 57 }
ketjow 0:abd95c8ed6c1 58
ketjow 1:5be5e7e966cd 59 void Signal::PrintEvent(string& comment, int32_t time_ref)
ketjow 1:5be5e7e966cd 60 {
ketjow 1:5be5e7e966cd 61 char buffer[100];
ketjow 1:5be5e7e966cd 62 int32_t log_time = time_ref;
ketjow 1:5be5e7e966cd 63
ketjow 1:5be5e7e966cd 64 if (0 == log_time)
ketjow 1:5be5e7e966cd 65 {
ketjow 1:5be5e7e966cd 66 log_time = m_pLogger->GetTime();
ketjow 1:5be5e7e966cd 67 time_ref = log_time;
ketjow 1:5be5e7e966cd 68 }
ketjow 1:5be5e7e966cd 69
ketjow 1:5be5e7e966cd 70 snprintf(&buffer[0], 100, "#%u %s e %s",(uint32_t)log_time, m_Name.c_str(), comment.c_str());
ketjow 1:5be5e7e966cd 71 m_pLogger->Log(&buffer[0]);
ketjow 1:5be5e7e966cd 72 }
ketjow 1:5be5e7e966cd 73
ketjow 0:abd95c8ed6c1 74 void Signal::TickFilter()
ketjow 0:abd95c8ed6c1 75 {
ketjow 0:abd95c8ed6c1 76 if (FILTER_VALUE == m_Filter)
ketjow 0:abd95c8ed6c1 77 {
ketjow 0:abd95c8ed6c1 78 m_Filter = 1;
ketjow 0:abd95c8ed6c1 79 }
ketjow 0:abd95c8ed6c1 80 else
ketjow 0:abd95c8ed6c1 81 {
ketjow 0:abd95c8ed6c1 82 m_Filter++;
ketjow 0:abd95c8ed6c1 83 }
ketjow 0:abd95c8ed6c1 84 }
ketjow 0:abd95c8ed6c1 85
ketjow 0:abd95c8ed6c1 86 void Signal::ResetFilter()
ketjow 0:abd95c8ed6c1 87 {
ketjow 0:abd95c8ed6c1 88 m_Filter = 2;
ketjow 0:abd95c8ed6c1 89 }
ketjow 0:abd95c8ed6c1 90
ketjow 0:abd95c8ed6c1 91 uint32_t Signal::CheckFilter()
ketjow 0:abd95c8ed6c1 92 {
ketjow 0:abd95c8ed6c1 93 bool ret = ((1 == m_Filter)?1:0);
ketjow 0:abd95c8ed6c1 94 if (1 == ret)
ketjow 0:abd95c8ed6c1 95 {
ketjow 0:abd95c8ed6c1 96 ResetFilter();
ketjow 0:abd95c8ed6c1 97 }
ketjow 0:abd95c8ed6c1 98 TickFilter();
ketjow 0:abd95c8ed6c1 99 return ret;
ketjow 0:abd95c8ed6c1 100 }