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
signal.cpp@1:5be5e7e966cd, 2016-11-18 (annotated)
- 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?
User | Revision | Line number | New 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 | } |