This is the vcdMaker demo project. See http://vcdmaker.org for details. vcdMaker is supposed to help engineers to debug their applications and systems. It transforms text log files into the VCD format which can be easily displayed as a waveform. Use the mbed serial logger at 115200 baud rate.

Dependencies:   BSP_DISCO_L476VG COMPASS_DISCO_L476VG mbed vcdLogger vcdSignal

Signals/magnetometer.cpp

Committer:
ketjow
Date:
2016-12-07
Revision:
2:fcfb6ced9c00
Parent:
0:936379a8793e

File content as of revision 2:fcfb6ced9c00:

/*!
  @file magnetometer.cpp

  The implementation of the magnetometer signal class.

  @par Full Description
  The implementation of the magnetometer signal class.

  @if REVISION_HISTORY_INCLUDED
  @par Edit History
  @li [0]    wojciech.rynczuk@wp.pl    04-MAR-2016    Initial file revision.
  @endif

  @ingroup Signal

  The MIT License (MIT)
  Copyright (c) 2016 Wojciech Rynczuk

*/

#include "magnetometer.hpp"

Magnetometer::Magnetometer(const string& name, COMPASS_DISCO_L476VG& compass, Logger& logger) : Signal(name, 32, logger), m_pCompass(&compass)
{
    m_MagXYZ[0] = 0;
    m_MagXYZ[1] = 0;
    m_MagXYZ[2] = 0;
    m_PrevMagXYZ[0] = 0;
    m_PrevMagXYZ[1] = 0;
    m_PrevMagXYZ[2] = 0;
}

Magnetometer::~Magnetometer()
{
}
  
void Magnetometer::PrintState()
{
    string  suffix("MagX");
    string  msg("");
    int32_t time_ref = 0;
    
    m_pCompass->MagGetXYZ(m_MagXYZ);
    if ( (CheckFilter()) || \
         (fabs((float)(m_MagXYZ[0] - m_PrevMagXYZ[0])) > 50) || \
         (fabs((float)(m_MagXYZ[1] - m_PrevMagXYZ[1])) > 50) || \
         (fabs((float)(m_MagXYZ[2] - m_PrevMagXYZ[2])) > 50))
    {
        PrintReal(m_MagXYZ[0], suffix, msg, time_ref);
        suffix = "MagY";
        time_ref = 0;
        PrintReal(m_MagXYZ[1], suffix, msg, time_ref);
        suffix = "MagZ";
        time_ref = 0;
        PrintReal(m_MagXYZ[2], suffix, msg, time_ref);
        m_PrevMagXYZ[0] = m_MagXYZ[0];
        m_PrevMagXYZ[1] = m_MagXYZ[1];
        m_PrevMagXYZ[2] = m_MagXYZ[2];
    }
}