Wojciech Rynczuk / Mbed 2 deprecated vcdMaker_Demo

Dependencies:   mbed vcdLogger vcdSignal

Committer:
ketjow
Date:
Fri Feb 12 21:38:04 2016 +0000
Revision:
0:9a59cffaafad
Child:
1:446154224f92
vcdMaker demo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ketjow 0:9a59cffaafad 1 /*!
ketjow 0:9a59cffaafad 2 @file main.cpp
ketjow 0:9a59cffaafad 3
ketjow 0:9a59cffaafad 4 The main vcdMaker demo file.
ketjow 0:9a59cffaafad 5
ketjow 0:9a59cffaafad 6 @par Full Description
ketjow 0:9a59cffaafad 7 The vcdMaker demo. See http://vcdmaker.org for details.
ketjow 0:9a59cffaafad 8
ketjow 0:9a59cffaafad 9 @if REVISION_HISTORY_INCLUDED
ketjow 0:9a59cffaafad 10 @par Edit History
ketjow 0:9a59cffaafad 11 @li [0] wojciech.rynczuk@wp.pl 20-JAN-2015 Initial file revision.
ketjow 0:9a59cffaafad 12 @endif
ketjow 0:9a59cffaafad 13
ketjow 0:9a59cffaafad 14 @ingroup vcdMakerDemo
ketjow 0:9a59cffaafad 15
ketjow 0:9a59cffaafad 16 @par Copyright (c) MMXV Wojciech Rynczuk
ketjow 0:9a59cffaafad 17
ketjow 0:9a59cffaafad 18 Permission is hereby granted, free of charge, to any person obtaining a
ketjow 0:9a59cffaafad 19 copy of this software and associated documentation files (the "Software"),
ketjow 0:9a59cffaafad 20 to deal in the Software without restriction, including without limitation
ketjow 0:9a59cffaafad 21 the rights to use, copy, modify, merge, publish, distribute, sublicense,
ketjow 0:9a59cffaafad 22 and/or sell copies of the Software, and to permit persons to whom the
ketjow 0:9a59cffaafad 23 Software is furnished to do so, subject to the following conditions:
ketjow 0:9a59cffaafad 24
ketjow 0:9a59cffaafad 25 The above copyright notice and this permission notice shall be included
ketjow 0:9a59cffaafad 26 in all copies or substantial portions of the Software.
ketjow 0:9a59cffaafad 27
ketjow 0:9a59cffaafad 28 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
ketjow 0:9a59cffaafad 29 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
ketjow 0:9a59cffaafad 30 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
ketjow 0:9a59cffaafad 31 THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
ketjow 0:9a59cffaafad 32 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
ketjow 0:9a59cffaafad 33 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
ketjow 0:9a59cffaafad 34 IN THE SOFTWARE.
ketjow 0:9a59cffaafad 35
ketjow 0:9a59cffaafad 36 */
ketjow 0:9a59cffaafad 37
ketjow 0:9a59cffaafad 38
ketjow 0:9a59cffaafad 39 #include <stdint.h>
ketjow 0:9a59cffaafad 40
ketjow 0:9a59cffaafad 41 #include "mbed.h"
ketjow 0:9a59cffaafad 42 #include "serialLogger.hpp"
ketjow 0:9a59cffaafad 43 #include "button.hpp"
ketjow 0:9a59cffaafad 44 #include "light.hpp"
ketjow 0:9a59cffaafad 45 #include "slider.hpp"
ketjow 0:9a59cffaafad 46 #include "magnetometer.hpp"
ketjow 0:9a59cffaafad 47 #include "accelerometer.hpp"
ketjow 0:9a59cffaafad 48
ketjow 0:9a59cffaafad 49 #define NO_OF_LINES ((uint32_t)75)
ketjow 0:9a59cffaafad 50 #define NO_OF_CHARACTERS ((uint32_t)100)
ketjow 0:9a59cffaafad 51
ketjow 0:9a59cffaafad 52 // Periodic timers
ketjow 0:9a59cffaafad 53 Ticker timer1;
ketjow 0:9a59cffaafad 54 Ticker timer2;
ketjow 0:9a59cffaafad 55
ketjow 0:9a59cffaafad 56 // Button interrupts
ketjow 0:9a59cffaafad 57 InterruptIn sw1_event(PTC3);
ketjow 0:9a59cffaafad 58 InterruptIn sw3_event(PTC12);
ketjow 0:9a59cffaafad 59
ketjow 0:9a59cffaafad 60 // Logger
ketjow 0:9a59cffaafad 61 SerialLogger slogger(NO_OF_LINES,NO_OF_CHARACTERS);
ketjow 0:9a59cffaafad 62 Logger* uniLogger;
ketjow 0:9a59cffaafad 63
ketjow 0:9a59cffaafad 64 // Signals
ketjow 0:9a59cffaafad 65 Button sw1("FRDM.Buttons.SW1",PTC3,slogger);
ketjow 0:9a59cffaafad 66 Button sw3("FRDM.Buttons.SW3",PTC12,slogger);
ketjow 0:9a59cffaafad 67 Light light("FRDM.Sensors.Light",PTE22,slogger);
ketjow 0:9a59cffaafad 68 Slider slider("FRDM.Sensors.Slider", slogger);
ketjow 0:9a59cffaafad 69 Magnetometer magnetometer("FRDM.Sensors.Magnetometer.", slogger);
ketjow 0:9a59cffaafad 70 Accelerometer accelerometer("FRDM.Sensors.Accelerometer.", slogger);
ketjow 0:9a59cffaafad 71
ketjow 0:9a59cffaafad 72 // Time reference
ketjow 0:9a59cffaafad 73 uint32_t time_ref = 0;
ketjow 0:9a59cffaafad 74
ketjow 0:9a59cffaafad 75 void log_slider_accelerometer()
ketjow 0:9a59cffaafad 76 {
ketjow 0:9a59cffaafad 77 slider.PrintState();
ketjow 0:9a59cffaafad 78 accelerometer.PrintState();
ketjow 0:9a59cffaafad 79 }
ketjow 0:9a59cffaafad 80
ketjow 0:9a59cffaafad 81 void log_light_magnetometer()
ketjow 0:9a59cffaafad 82 {
ketjow 0:9a59cffaafad 83 light.PrintState();
ketjow 0:9a59cffaafad 84 magnetometer.PrintState();
ketjow 0:9a59cffaafad 85 }
ketjow 0:9a59cffaafad 86
ketjow 0:9a59cffaafad 87 void sw1_irq()
ketjow 0:9a59cffaafad 88 {
ketjow 0:9a59cffaafad 89 sw1.PrintState();
ketjow 0:9a59cffaafad 90 if (0 == sw1)
ketjow 0:9a59cffaafad 91 {
ketjow 0:9a59cffaafad 92 time_ref = uniLogger->GetTime();
ketjow 0:9a59cffaafad 93 }
ketjow 0:9a59cffaafad 94 else
ketjow 0:9a59cffaafad 95 {
ketjow 0:9a59cffaafad 96 if ((uniLogger->GetTime() - time_ref) > 3000000)
ketjow 0:9a59cffaafad 97 {
ketjow 0:9a59cffaafad 98 if (uniLogger->IsRecording())
ketjow 0:9a59cffaafad 99 {
ketjow 0:9a59cffaafad 100 uniLogger->StopRecording();
ketjow 0:9a59cffaafad 101 }
ketjow 0:9a59cffaafad 102 else
ketjow 0:9a59cffaafad 103 {
ketjow 0:9a59cffaafad 104 uniLogger->StartRecording();
ketjow 0:9a59cffaafad 105 }
ketjow 0:9a59cffaafad 106 }
ketjow 0:9a59cffaafad 107 }
ketjow 0:9a59cffaafad 108 }
ketjow 0:9a59cffaafad 109
ketjow 0:9a59cffaafad 110 void sw3_irq()
ketjow 0:9a59cffaafad 111 {
ketjow 0:9a59cffaafad 112 sw3.PrintState();
ketjow 0:9a59cffaafad 113 }
ketjow 0:9a59cffaafad 114
ketjow 0:9a59cffaafad 115
ketjow 0:9a59cffaafad 116 int main()
ketjow 0:9a59cffaafad 117 {
ketjow 0:9a59cffaafad 118 uniLogger = &slogger;
ketjow 0:9a59cffaafad 119
ketjow 0:9a59cffaafad 120 sw1_event.rise(&sw1_irq);
ketjow 0:9a59cffaafad 121 sw3_event.rise(&sw3_irq);
ketjow 0:9a59cffaafad 122 sw1_event.fall(&sw1_irq);
ketjow 0:9a59cffaafad 123 sw3_event.fall(&sw3_irq);
ketjow 0:9a59cffaafad 124 timer1.attach_us(&log_light_magnetometer, 50000);
ketjow 0:9a59cffaafad 125 timer2.attach_us(&log_slider_accelerometer, 40000);
ketjow 0:9a59cffaafad 126
ketjow 0:9a59cffaafad 127 while (true)
ketjow 0:9a59cffaafad 128 {
ketjow 0:9a59cffaafad 129 uniLogger->Print();
ketjow 0:9a59cffaafad 130 };
ketjow 0:9a59cffaafad 131 }