Merge branch 'dev'

This commit is contained in:
Tristan Krause 2019-06-07 14:20:49 +02:00
commit 3a4b59ddf1
161 changed files with 7436 additions and 2676 deletions

6
.gitignore vendored
View file

@ -1,3 +1,9 @@
# IDE stuff
control/src/.idea
control/src/cmake-build-debug
control/.Makefile.swp
control/src/CMakeLists.txt
# Prerequisites
*.d
gnuplotscript.gp

21
LICENSE Normal file
View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 Tristan Krause
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,13 +1,16 @@
# B15F - Board 15 Famulus Edition
**Hinweis:**
Die Projekt-Dokumentation befindet sich unter [github pages](https://devfix.github.io/b15f/).
## TODO / Ideen
- [X] CLI: Exception catchen, set global error message, raise SIGINT --> ncurses wird richtig beendet
- [ ] Monitor: Refresh visualisieren, z.B. - / - \ |
- [ ] Main Menu: Informationen ergänzen
- [X] Selbsttest bei discard richtig beenden (momentan wird wahrscheinlich WDT angeschmissen, besser global bool für selbsttest-loop)
- [ ] Lizenz
- [ ] gitignore checken
- [ ] readme schreiben
- [x] Lizenz
- [x] gitignore checken
- [x] readme schreiben
- [ ] CLI: Farbe?
- [ ] globale strings / msg klasse für treiber, ui (z.B. B15F info)
- [ ] drv: requests als array organisieren

Binary file not shown.

View file

@ -1,178 +0,0 @@
#include <iostream>
#include <cmath>
#include "drv/b15f.h"
#include "drv/plottyfile.h"
void kennlinieErsterQuadrant()
{
B15F& drv = B15F::getInstance();
PlottyFile pf;
uint16_t ba[1024];
uint16_t bb[1024];
const uint16_t sample_count = 1024;
const uint16_t delta = 1;
const uint16_t u_gs_start = 440;
const uint16_t u_gs_delta = 20;
const uint16_t u_gs_end = 600;
pf.setUnitX("V");
pf.setUnitY("mA");
pf.setUnitPara("V");
pf.setDescX("U_{DS}");
pf.setDescY("I_D");
pf.setDescPara("U_{GS}");
pf.setRefX(5);
pf.setRefY(50);
pf.setParaFirstCurve(u_gs_start);
pf.setParaStepWidth(u_gs_delta);
uint8_t curve = 0;
std::cout << "Erfasse Kennlinie erster Quadrant..." << std::endl << std::flush;
for(uint16_t u_gs = u_gs_start; u_gs <= u_gs_end; u_gs += u_gs_delta)
{
drv.analogWrite1(u_gs);
drv.analogSequence(0, &ba[0], 0, 1, &bb[0], 0, 0, delta, sample_count);
for(uint16_t k = 0; k < sample_count; k++)
{
uint16_t i_d = ba[k] - bb[k];
uint16_t u_ds = bb[k];
pf.addDot(Dot(u_ds, i_d, curve));
}
std::cout << "\033[1K\r" << 1e2 * (u_gs - u_gs_start) / (u_gs_end - u_gs_start) << "%" << std::flush;
curve++;
}
std::cout << "\033[1K\r" << std::flush;
// speichern und plotty starten
pf.writeToFile("test_plot");
pf.startPlotty("test_plot");
}
void kennlinieZweiterQuadrant()
{
B15F& drv = B15F::getInstance();
PlottyFile pf;
uint16_t ba[1024];
uint16_t bb[1024];
const uint16_t sample_count = 1024;
const uint16_t delta = 1;
const uint16_t u_gs_start = 300;
const uint16_t u_gs_delta = 25;
const uint16_t u_gs_end = 700;
pf.setQuadrant(2);
pf.setUnitX("V");
pf.setUnitY("mA");
pf.setUnitPara("V");
pf.setDescX("U_{GS}");
pf.setDescY("I_D");
pf.setDescPara("U_{DS}");
pf.setRefX(5);
pf.setRefY(50);
pf.setParaFirstCurve(u_gs_start);
pf.setParaStepWidth(u_gs_delta);
uint8_t curve = 0;
std::cout << "Erfasse Kennlinie zweiter Quadrant..." << std::endl << std::flush;
for(uint16_t u_gs = u_gs_start; u_gs <= u_gs_end; u_gs += u_gs_delta)
{
drv.analogWrite1(u_gs);
drv.analogSequence(0, &ba[0], 0, 1, &bb[0], 0, 0, delta, sample_count);
curve = 0;
for(uint16_t k = 0; k < sample_count; k++)
{
if(ba[k] > bb[k] && bb[k] % 50 == 0 && bb[k] != 0)
{
uint16_t i_d = ba[k] - bb[k];
pf.addDot(Dot(u_gs, i_d, bb[k] / 50));
}
curve++;
}
std::cout << "\033[1K\r" << 1e2 * (u_gs - u_gs_start) / (u_gs_end - u_gs_start) << "%" << std::flush;
}
std::cout << "\033[1K\r" << std::flush;
// speichern und plotty starten
pf.writeToFile("test_plot");
pf.startPlotty("test_plot");
}
void testFunktionen()
{
B15F& drv = B15F::getInstance();
std::cout << "DIP-Switch: " << (int) drv.readDipSwitch() << std::endl;
drv.digitalWrite0(0xFF);
drv.analogWrite0(128);
std::cout << (int) drv.digitalRead0() << std::endl;;
std::cout << "adc: " << (int) drv.analogRead(4) << std::endl;
drv.digitalWrite0(0x00);
drv.analogWrite0(0);
std::cout << (int) drv.digitalRead0() << std::endl;;
std::cout << "adc: " << (int) drv.analogRead(4) << std::endl;
drv.digitalWrite0(0xFF);
drv.analogWrite0(255);
std::cout << (int) drv.digitalRead0() << std::endl;
std::cout << "adc: " << (int) drv.analogRead(4) << std::endl;
std::cout << "Kennlinie..." << std::endl;
uint16_t a[1024];
uint16_t b[1024];
drv.analogSequence(0, &a[0], 0, 1, &b[0], 0, 0, 1, 1024);
/*for(uint16_t i= 0; i < sizeof(a) / sizeof(uint16_t); i++)
{
std::cout << (int) i << " : " << a[i] << " " << b[i] << std::endl;
}*/
}
int main()
{
//testFunktionen();
//kennlinieZweiterQuadrant();
B15F& drv = B15F::getInstance();
while(1)
{
//uint8_t be0 = drv.digitalRead0();
//uint8_t be1 = drv.digitalRead1();
//uint8_t dsw = drv.readDipSwitch();
drv.analogRead(0);
drv.analogRead(1);
drv.analogRead(2);
drv.analogRead(3);
drv.analogRead(4);
drv.analogRead(5);
drv.analogRead(6);
drv.analogRead(7);
}
std::cout << "Schluss." << std::endl;
}

View file

@ -3,6 +3,11 @@
#include <b15f/b15f.h>
#include <b15f/plottyfile.h>
/*
* Inkrementiert DAC 0 von 0 bis 1023 und speichert zu jeder Ausgabe den Wert von ADC 0 in einem Puffer.
* Die Funktion ADC 0 abhängig von DAC 0 wird als Graph geplottet.
*/
const char PLOT_FILE[] = "plot.bin";
int main()
@ -13,8 +18,9 @@ int main()
uint16_t buf[1024];
const uint16_t sample_count = 1024;
const uint16_t count = 1024;
const uint16_t delta = 1;
const uint16_t start = 0;
pf.setUnitX("V");
pf.setUnitY("V");
@ -27,18 +33,17 @@ int main()
pf.setParaFirstCurve(0);
pf.setParaStepWidth(0);
uint8_t curve = 0;
const uint8_t curve = 0;
drv.analogSequence(0, &buf[0], 0, 1, nullptr, 0, 0, delta, sample_count);
drv.analogSequence(0, &buf[0], 0, 1, nullptr, 0, start, delta, count);
for(uint16_t x = 0; x < sample_count * delta; x += delta)
for(uint16_t x = 0; x < count; x++)
{
std::cout << x << " - " << buf[x] << std::endl;
pf.addDot(Dot(x, buf[x], curve));
}
// speichern und plotty starten
pf.writeToFile(PLOT_FILE);
pf.writeToFile(PLOT_FILE);
pf.startPlotty(PLOT_FILE);
}

View file

@ -0,0 +1,30 @@
# Name: Makefile
# Project: B15F (board15 Famulus Edition)
# Author: Tristan Krause
# Creation Date: 2019-05-15
# Environment
COMPILER_PATH = g++
# Options
CFLAGS = -std=c++17 -O3 -Wall -Wextra
LDFLAGS = -lb15fdrv
OBJECTS = main.o
OUT = main.elf
COMPILE = $(COMPILER_PATH) $(CFLAGS)
main: $(OBJECTS)
$(COMPILE) $(OBJECTS) -o $(OUT) $(LDFLAGS)
help:
@echo "This Makefile has the following targets:"
@echo "make main .... to compile"
@echo "make clean ... to delete objects and executables"
clean:
@echo "Cleaning..."
rm -f $(OBJECTS) $(OUT) *.bin gnuplotscript.gp
.cpp.o:
$(COMPILE) -c $< -o $@

View file

@ -0,0 +1,16 @@
#include <iostream>
#include <cmath>
#include <b15f/b15f.h>
#include <b15f/plottyfile.h>
/*
* Erzeugt ein PWM Signal an PB4 mit 100KHz.
* Beste Frequenz: 31300
*/
int main()
{
B15F& drv = B15F::getInstance();
std::cout << "TOP: " << (int) drv.pwmSetFrequency(31300) << std::endl;
drv.pwmSetValue(127);
}

View file

@ -0,0 +1,30 @@
# Name: Makefile
# Project: B15F (board15 Famulus Edition)
# Author: Tristan Krause
# Creation Date: 2019-05-15
# Environment
COMPILER_PATH = g++
# Options
CFLAGS = -std=c++17 -O3 -Wall -Wextra
LDFLAGS = -lb15fdrv
OBJECTS = main.o
OUT = main.elf
COMPILE = $(COMPILER_PATH) $(CFLAGS)
main: $(OBJECTS)
$(COMPILE) $(OBJECTS) -o $(OUT) $(LDFLAGS)
help:
@echo "This Makefile has the following targets:"
@echo "make main .... to compile"
@echo "make clean ... to delete objects and executables"
clean:
@echo "Cleaning..."
rm -f $(OBJECTS) $(OUT) *.bin gnuplotscript.gp
.cpp.o:
$(COMPILE) -c $< -o $@

View file

@ -0,0 +1,30 @@
#include <b15f/b15f.h>
#include <b15f/plottyfile.h>
/*
* Dieses Beispiel erzeugt einen 300ms langen Impuls an PB0.
*
*/
int main()
{
uint8_t tmp;
B15F& drv = B15F::getInstance();
tmp = drv.getRegister(&DDRB);
tmp |= (1<<0);
drv.setRegister(&DDRB, tmp);
tmp = drv.getRegister(&PORTB);
tmp |= (1<<0);
drv.setRegister(&PORTB, tmp);
drv.delay_ms(300);
tmp = drv.getRegister(&PORTB);
tmp &= ~(1<<0);
drv.setRegister(&PORTB, tmp);
}

View file

@ -0,0 +1,30 @@
# Name: Makefile
# Project: B15F (board15 Famulus Edition)
# Author: Tristan Krause
# Creation Date: 2019-05-15
# Environment
COMPILER_PATH = g++
# Options
CFLAGS = -std=c++17 -O3 -Wall -Wextra
LDFLAGS = -lb15fdrv
OBJECTS = main.o
OUT = main.elf
COMPILE = $(COMPILER_PATH) $(CFLAGS)
main: $(OBJECTS)
$(COMPILE) $(OBJECTS) -o $(OUT) $(LDFLAGS)
help:
@echo "This Makefile has the following targets:"
@echo "make main .... to compile"
@echo "make clean ... to delete objects and executables"
clean:
@echo "Cleaning..."
rm -f $(OBJECTS) $(OUT) *.bin gnuplotscript.gp
.cpp.o:
$(COMPILE) -c $< -o $@

View file

@ -0,0 +1,152 @@
#include <iostream>
#include <cmath>
#include <iomanip>
#include <b15f/b15f.h>
#include <b15f/plottyfile.h>
const char PLOT_FILE[] = "plot.bin";
void printProgress(double p)
{
constexpr double precision = 1e1;
constexpr int width = 20;
const int n = round(width * p);
p = round(1e2 * precision * p) / precision;
std::cout << "\033[1K\r";
std::cout << "[" << std::string(n, '#') << std::string(width - n, '-') << "] ";
std::cout << std::setfill(' ') << std::setw(5) << std::fixed << std::showpoint << std::setprecision(1) << p << "%" << std::flush;
}
void kennlinieErsterQuadrant()
{
// Puffer für Messwerte
uint16_t u_out[1024];
uint16_t u_drain[1024];
// Ansteuerung der U_GS, Anzahl der Werte für U_GS muss kleiner 64 sein,
// da sonst zu großer Kurvenindex entsteht
const uint16_t u_gs_start = 200;
const uint16_t u_gs_delta = 50;
const uint16_t u_gs_end = 600;
// Ansteuerung durch u_out (ruft Drainstrom i_drain hervor)
const uint16_t seq_start = 0;
const uint16_t seq_delta = 1;
const uint16_t seq_sample_count = 1024;
B15F& drv = B15F::getInstance();
PlottyFile pf;
pf.setUnitX("V");
pf.setUnitY("mA");
pf.setUnitPara("V");
pf.setDescX("U_{DS}");
pf.setDescY("I_D");
pf.setDescPara("U_{GS}");
pf.setRefX(5);
pf.setRefY(50);
pf.setParaFirstCurve(u_gs_start);
pf.setParaStepWidth(u_gs_delta);
uint8_t curve = 0;
std::cout << "Erfasse Kennlinie erster Quadrant..." << std::endl;
for(uint16_t u_gs = u_gs_start; u_gs <= u_gs_end; u_gs += u_gs_delta)
{
drv.analogWrite1(u_gs);
// Erfasse u_out und u_drain und variiere dabei u_out, die aktuelle U_GS bleibt solange konstant
drv.analogSequence(0, &u_out[0], 0, 1, &u_drain[0], 0, seq_start, seq_delta, seq_sample_count);
for(uint16_t k = 0; k < seq_sample_count; k++)
{
uint16_t i_drain = u_out[k] - u_drain[k];
pf.addDot(Dot(u_drain[k], i_drain, curve));
}
curve++;
// Fortschrittsanzeige
printProgress(double(u_gs - u_gs_start) / double(u_gs_end - u_gs_start));
}
std::cout << std::endl << std::flush;
// speichern und plotty starten
pf.writeToFile(PLOT_FILE);
pf.startPlotty(PLOT_FILE);
}
void kennlinieZweiterQuadrant()
{
constexpr uint8_t resolution = 50;
// Puffer für Messwerte
uint16_t u_out[1024];
uint16_t u_drain[1024];
// Ansteuerung der U_GS
const uint16_t u_gs_start = 128;
const uint16_t u_gs_delta = 32;
const uint16_t u_gs_end = 512;
// Ansteuerung druch u_out (ruft Drainstrom i_drain hervor)
const uint16_t seq_start = 0;
const uint16_t seq_delta = 1;
const uint16_t seq_sample_count = 1024;
B15F& drv = B15F::getInstance();
PlottyFile pf;
pf.setQuadrant(2);
pf.setUnitX("V");
pf.setUnitY("mA");
pf.setUnitPara("V");
pf.setDescX("U_{GS}");
pf.setDescY("I_D");
pf.setDescPara("U_{DS}");
pf.setRefX(5);
pf.setRefY(50);
pf.setParaFirstCurve(u_gs_start);
pf.setParaStepWidth(u_gs_delta);
uint8_t curve;
std::cout << "Erfasse Kennlinie zweiter Quadrant..." << std::endl;
for(uint16_t u_gs = u_gs_start; u_gs <= u_gs_end; u_gs += u_gs_delta)
{
drv.analogWrite1(u_gs);
// Erfasse u_out und u_drain und variiere dabei u_out, die aktuelle U_GS bleibt solange konstant
drv.analogSequence(0, &u_out[0], 0, 1, &u_drain[0], 0, seq_start, seq_delta, seq_sample_count);
curve = 0;
for(uint16_t k = 0; k < seq_sample_count; k++)
{
// Speichere nur Werte für i_drain, wo u_drain ein Vielfaches der Auflösung ist
if(u_out[k] > u_drain[k] && u_drain[k] % resolution == 0 && u_drain[k] != 0)
{
uint16_t i_drain = u_out[k] - u_drain[k];
pf.addDot(Dot(u_gs, i_drain, u_drain[k] / resolution));
}
curve++;
}
// Fortschrittsanzeige
printProgress(double(u_gs - u_gs_start) / double(u_gs_end - u_gs_start));
}
std::cout << std::endl << std::flush;
// speichern und plotty starten
pf.writeToFile(PLOT_FILE);
pf.startPlotty(PLOT_FILE);
}
int main()
{
kennlinieErsterQuadrant();
kennlinieZweiterQuadrant();
}

View file

@ -18,7 +18,7 @@ PATH_TMP_LIB = ../lib/
# outputs
OUT_TMP_DRV = $(PATH_TMP_LIB)/libb15fdrv.so
OUT_TMP_CLI = $(PATH_TMP_BIN)/cli.elf
OUT_TMP_CLI = $(PATH_TMP_BIN)/b15fcli
OUT_TMP_PLOTTY = $(PATH_TMP_BIN)/plotty
OUT_DRV = $(PATH_LIB)/libb15fdrv.so
OUT_CLI = $(PATH_BIN)/b15fcli
@ -38,7 +38,9 @@ OBJECTS_CLI = cli.o ui/view.o ui/view_selection.o ui/view_promt.o ui/view_info
# *** TARGETS ***
all: drv cli doc
.PHONY: $(OUT_TMP_DRV) clean help
all: drv cli style
drv: $(OBJECTS_DRV) $(OUT_TMP_DRV)
@ -50,8 +52,13 @@ cli: drv $(OBJECTS_CLI)
@bash -c 'if [ ! -f "$(OUT_DRV)" ]; then echo -e "\n*** Warning ***: driver not installed\nType \"sudo make install\" to install or update b15fdrv."; fi'
doc:
@echo "Creating documentation with doxygen.."
@echo "Creating documentation with doxygen..."
$(PATH_DOXYGEN) doxygen-cfg
@echo problems found: `($(PATH_DOXYGEN) doxygen-cfg 3>&2 2>&1 1>&3) 2>/dev/null | wc -l`
style:
@echo "Formatting source code with astyle..."
astyle --recursive --style=allman *.cpp,*.h,*.c,*.hpp
install:
@echo "Installing driver..."
@ -61,9 +68,9 @@ install:
cp $(OUT_TMP_PLOTTY) $(OUT_PLOTTY)
cp drv/*.h $(PATH_INCLUDE)
uninstall: clean
uninstall:
@echo "Uninstalling driver..."
rm -rf $(PATH_INCLUDE) $(OUT_DRV) $(OUT_CLI) $(OUT_PLOTTY)
rm -rf $(OUT_DRV) $(OUT_CLI) $(OUT_PLOTTY) $(PATH_INCLUDE)
help:
@echo "This Makefile compiles the b15f driver lib and command line interface (CLI):"
@ -73,11 +80,12 @@ help:
@echo "make install . to install or update the lib and headers on this machine"
@echo "make uninstall to remove the lib and headers on this machine"
@echo "make clean ... to delete objects and executables"
clean:
@echo "Cleaning..."
rm -f $(OBJECTS_DRV) $(OBJECTS_CLI) $(OUT_TMP_CLI) $(OUT_TMP_DRV)
rm -rf $(OUT_DOC)
find . -type f -name '*.orig' -delete
.cpp.o:
$(PATH_COMPILER) $(CFLAGS) -c $< -o $@

View file

@ -1,3 +1,94 @@
# Einführung
Die wichtigste Klasse für die Steuerung des Board 15 ist [B15F](classB15F.html).
Dort befindet sich auch eine Übersicht der verfügbaren Befehle.
# B15F Benutzerhandbuch
*Hinweis*: Terminal-Befehle sind **fett** gedruckt
## Installation
### 1. Abhängigkeiten installieren
(a) **sudo apt-get update**
(b) **sudo apt-get install git avr-libc avrdude libncurses5-dev g++**
### 2. Das Repository klonen
(a) **cd /home/famulus/**
(b) **git clone "https://github.com/devfix/b15f.git"**
### 3. Die Firmware installieren
(a) **cd "/home/famulus/b15f/firmware"**
(b) Passen Sie in der Datei *Makefile* die Option "MCU = ..." an die MCU des vorliegenden Boards an
(*atmega1284* und *atmega1284p* sind nicht identisch!)
(c) **make**
Wenn udev richtig konfiguriert wurde:
(d I) **make upload**
Sonst:
(d II) **sudo make upload**
### 4. Die Steuersoftware (Bibliothek & CLI) installieren
(a) **cd "/home/famulus/b15f/control/src"**
(b) **make**
(Die Warnungen durch doxygen können ignoriert werden.)
(c) **sudo make install**
## Aktualisierung
(a) **cd /home/famulus/b15f/**
(b) **git pull --prune**
(c) **cd "/home/famulus/b15f/firmware"**
(d) **make clean**
(e) **cd "/home/famulus/b15f/control/src"**
(f) **make clean**
(g) Installation ab Schritt 3 wiederholen
## Das CommandLineInterface (CLI) benutzen
(a) Öffnen Sie ein Terminal und maximieren Sie das Fenster
(b) Start des CLI erfolgt durch **b15fcli**
(c) Die Navigation erfolgt durch &lt;Tab&gt;, die Pfeiltasten und &lt;Enter&gt; oder die Maus
(d) Mit &lt;Strg + c&gt; kann das Programm sofort verlassen werden
## Eigene Programme mit B15F schreiben
### Grundsätzliches
Die wichtigste Klasse für die Steuerung des Board 15 ist [B15F](https://devfix.github.io/b15f/html/classB15F.html).
Dort befindet sich auch eine Übersicht der verfügbaren Befehle.
### Beispiele
In dem Verzeichnis [b15f/control/examples](https://github.com/devfix/b15f/tree/master/control/examples) sind einige Beispiele für die Verwendung einzelner B15F Funktionen.
Zu jedem Beispiel gehört eine *main.cpp* mit dem Quellcode und eine *Makefile*-Datei.
Das Beispiel kann mit **make** kompiliert und mit **./main.elf** gestartet werden.
### Den B15F Treiber verwenden
Benötigt wird der B15F-Header:
`#include <b15f/b15f.h>`
und der Header für die plottyfile-Generierung, falls mit Kennlinien gearbeitet werden soll:
`#include <b15f/plottyfile.h>`
Für die Interaktion wird eine Referenz auf die aktuelle Treiberinstanz gespeichert:
`B15F& drv = B15F::getInstance();`
Falls noch keine existiert, wird automatisch eine erzeugt und Verbindung zum Board hergestellt.
Ab jetzt können auf dem Object `drv` verschiedene Methoden angewand werden, siehe [B15F](https://devfix.github.io/b15f/html/classB15F.html).
### Kennlinien mit plottyfile generieren
Die Beschreibung zu Plottyfile befindet sich [hier](https://devfix.github.io/b15f/html/classPlottyFile.html).
Nach dem Include von plottyfile kann ein neues Objekt erzeugt und konfiguriert werden:
```C++
PlottyFile pf;
pf.setUnitX("V");
pf.setUnitY("V");
pf.setUnitPara("V");
pf.setDescX("U_{OUT}");
pf.setDescY("U_{IN}");
pf.setDescPara("");
pf.setRefX(5);
pf.setRefY(5);
pf.setParaFirstCurve(0);
pf.setParaStepWidth(0);
```
Messpunkte können anschließend hinzugefügt werden.
Dabei gehören Punkte mit dem gleichen Index für `curve` (*uint8_t*) zur selben Kurve und erhalten durch Plotty automatisch die gleiche Farbe.
```C++
pf.addDot(Dot(x, y, curve));
```
`x` und `y` sind *uint16_t*, also keine Gleitkommazahlen.

View file

@ -1,4 +1,4 @@
#define B15F_CLI_DEBUG
//#define B15F_CLI_DEBUG
#include <stdio.h>
#include <ncurses.h> // sudo apt-get install libncurses5-dev
@ -24,91 +24,92 @@ volatile bool t_refresh_active = false;
void signal_handler(int signal)
{
if(signal == SIGWINCH)
{
win_changed_cooldown = 10; // 100ms
if (!t_refresh_active)
{
if(t_refresh.joinable())
t_refresh.join();
t_refresh_active = true;
t_refresh = std::thread([](){
while(win_changed_cooldown--)
std::this_thread::sleep_for(std::chrono::milliseconds(10));
t_refresh_active = false;
if(win_stack.size())
win_stack.back()->repaint();
});
}
}
else if(signal == SIGINT)
{
cleanup();
std::cout << "SIGINT - Abbruch." << std::endl;
exit(EXIT_FAILURE);
}
if(signal == SIGWINCH)
{
win_changed_cooldown = 10; // 100ms
if (!t_refresh_active)
{
if(t_refresh.joinable())
t_refresh.join();
t_refresh_active = true;
t_refresh = std::thread([]()
{
while(win_changed_cooldown--)
std::this_thread::sleep_for(std::chrono::milliseconds(10));
t_refresh_active = false;
if(win_stack.size())
win_stack.back()->repaint();
});
}
}
else if(signal == SIGINT)
{
cleanup();
std::cout << "SIGINT - Abbruch." << std::endl;
exit(EXIT_FAILURE);
}
}
void abort_handler(std::exception& ex)
{
ViewInfo* view = new ViewInfo();
view->setTitle("Fehler");
std::string msg(ex.what());
msg += "\n\nBeende in 5 Sekunden.";
view->setText(msg.c_str());
view->setLabelClose("");
view->repaint();
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
cleanup();
std::cerr << std::endl << "*** EXCEPTION ***" << std::endl << ex.what() << std::endl;
exit(EXIT_FAILURE);
ViewInfo* view = new ViewInfo();
view->setTitle("Fehler");
std::string msg(ex.what());
msg += "\n\nBeende in 5 Sekunden.";
view->setText(msg.c_str());
view->setLabelClose("");
view->repaint();
std::this_thread::sleep_for(std::chrono::milliseconds(5000));
cleanup();
std::cerr << std::endl << "*** EXCEPTION ***" << std::endl << ex.what() << std::endl;
exit(EXIT_FAILURE);
}
void init()
{
// init b15 driver
B15F::getInstance();
// init b15 driver
B15F::getInstance();
#ifndef B15F_CLI_DEBUG
std::cout << std::endl << "Starte in 3s ..." << std::endl;
sleep(3);
std::cout << std::endl << "Starte in 3s ..." << std::endl;
sleep(3);
#endif
B15F::setAbortHandler(&abort_handler);
// init all ncurses stuff
initscr();
start_color();
curs_set(0); // 0: invisible, 1: normal, 2: very visible
clear();
noecho();
cbreak(); // Line buffering disabled. pass on everything
mousemask(ALL_MOUSE_EVENTS, NULL);
// connect signals to handler
signal(SIGWINCH, signal_handler);
signal(SIGINT, signal_handler);
// set view context
View::setWinContext(newwin(25, 85, 0, 0));
B15F::setAbortHandler(&abort_handler);
// init all ncurses stuff
initscr();
start_color();
curs_set(0); // 0: invisible, 1: normal, 2: very visible
clear();
noecho();
cbreak(); // Line buffering disabled. pass on everything
mousemask(ALL_MOUSE_EVENTS, NULL);
// connect signals to handler
signal(SIGWINCH, signal_handler);
signal(SIGINT, signal_handler);
// set view context
View::setWinContext(newwin(25, 85, 0, 0));
}
int main()
{
init();
int exit_code = EXIT_SUCCESS;
show_main(0);
cleanup();
return exit_code;
init();
int exit_code = EXIT_SUCCESS;
show_main(0);
cleanup();
return exit_code;
}

View file

@ -1260,7 +1260,7 @@ HTML_COLORSTYLE_GAMMA = 80
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_TIMESTAMP = NO
HTML_TIMESTAMP = YES
# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
# documentation will contain a main index with vertical navigation menus that
@ -1279,7 +1279,7 @@ HTML_DYNAMIC_MENUS = YES
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_DYNAMIC_SECTIONS = NO
HTML_DYNAMIC_SECTIONS = YES
# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
# shown in the various tree structured indices initially; the user can expand

View file

@ -1,319 +1,464 @@
#include "b15f.h"
B15F* B15F::instance = nullptr;
B15F *B15F::instance = nullptr;
errorhandler_t B15F::errorhandler = nullptr;
B15F::B15F()
{
init();
init();
}
void B15F::init()
{
std::string device = exec("bash -c 'ls /dev/ttyUSB*'");
while(device.find(' ') != std::string::npos || device.find('\n') != std::string::npos || device.find('\t') != std::string::npos)
device.pop_back();
if(device.length() == 0)
abort("Adapter nicht gefunden");
std::cout << PRE << "Verwende Adapter: " << device << std::endl;
std::cout << PRE << "Stelle Verbindung mit Adapter her... " << std::flush;
usart.setBaudrate(BAUDRATE);
usart.openDevice(device);
std::cout << "OK" << std::endl;
std::cout << PRE << "Teste Verbindung... " << std::flush;
uint8_t tries = 3;
while(tries--)
{
// verwerfe Daten, die µC noch hat
//discard();
if(!testConnection())
continue;
if(!testIntConv())
continue;
break;
}
if(tries == 0)
abort("Verbindungstest fehlgeschlagen. Neueste Version im Einsatz?");
std::cout << "OK" << std::endl;
// Gib board info aus
std::vector<std::string> info = getBoardInfo();
std::cout << PRE << "AVR Firmware Version: " << info[0] << " um " << info[1] << " Uhr (" << info[2] << ")" << std::endl;
std::string device = exec("bash -c 'ls /dev/ttyUSB*'");
while (device.find(' ') != std::string::npos || device.find('\n') != std::string::npos ||
device.find('\t') != std::string::npos)
device.pop_back();
if (device.length() == 0)
abort("Adapter nicht gefunden");
std::cout << PRE << "Verwende Adapter: " << device << std::endl;
std::cout << PRE << "Stelle Verbindung mit Adapter her... " << std::flush;
usart.setBaudrate(BAUDRATE);
usart.openDevice(device);
std::cout << "OK" << std::endl;
std::cout << PRE << "Teste Verbindung... " << std::flush;
uint8_t tries = 3;
while (tries--)
{
// verwerfe Daten, die µC noch hat
//discard();
if (!testConnection())
continue;
if (!testIntConv())
continue;
break;
}
if (tries == 0)
abort("Verbindungstest fehlgeschlagen. Neueste Version im Einsatz?");
std::cout << "OK" << std::endl;
// Gib board info aus
std::vector<std::string> info = getBoardInfo();
std::cout << PRE << "AVR Firmware Version: " << info[0] << " um " << info[1] << " Uhr (" << info[2] << ")"
<< std::endl;
}
void B15F::reconnect()
{
uint8_t tries = RECONNECT_TRIES;
while(tries--)
{
delay_ms(RECONNECT_TIMEOUT);
discard();
if(testConnection())
return;
}
abort("Verbindung kann nicht repariert werden");
uint8_t tries = RECONNECT_TRIES;
while (tries--)
{
delay_ms(RECONNECT_TIMEOUT);
discard();
if (testConnection())
return;
}
abort("Verbindung kann nicht repariert werden");
}
void B15F::discard(void)
{
try
{
usart.clearOutputBuffer();
for(uint8_t i = 0; i < 16; i++)
{
usart.writeByte(RQ_DISC); // sende discard Befehl (verwerfe input)
delay_ms(4);
}
usart.clearInputBuffer();
}
catch(std::exception& ex)
{
abort(ex);
}
try
{
uint8_t rq[] =
{
RQ_DISC
};
usart.clearOutputBuffer();
for (uint8_t i = 0; i < 16; i++)
{
usart.transmit(&rq[0], 0, sizeof(rq)); // sende discard Befehl (verwerfe input)
delay_ms(4);
}
usart.clearInputBuffer();
}
catch (std::exception &ex)
{
abort(ex);
}
}
bool B15F::testConnection()
{
// erzeuge zufälliges Byte
srand(time(NULL));
uint8_t dummy = rand() % 256;
usart.writeByte(RQ_TEST);
usart.writeByte(dummy);
uint8_t aw = usart.readByte();
uint8_t mirror = usart.readByte();
return aw == MSG_OK && mirror == dummy;
// erzeuge zufälliges Byte
srand(time(NULL));
uint8_t dummy = rand() % 256;
uint8_t rq[] =
{
RQ_TEST,
dummy
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t aw[2];
usart.receive(&aw[0], 0, sizeof(aw));
return aw[0] == MSG_OK && aw[1] == dummy;
}
bool B15F::testIntConv()
{
srand(time(NULL));
uint16_t dummy = rand() % (0xFFFF / 3);
usart.writeByte(RQ_INT);
usart.writeInt(dummy);
uint16_t aw = usart.readInt();
return aw == dummy * 3;
srand(time(NULL));
uint16_t dummy = rand() % (0xFFFF / 3);
uint8_t rq[] =
{
RQ_INT,
static_cast<uint8_t >(dummy & 0xFF),
static_cast<uint8_t >(dummy >> 8)
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint16_t aw;
usart.receive(reinterpret_cast<uint8_t *>(&aw), 0, sizeof(aw));
return aw == dummy * 3;
}
std::vector<std::string> B15F::getBoardInfo(void)
{
std::vector<std::string> info;
usart.writeByte(RQ_INFO);
uint8_t n = usart.readByte();
while(n--)
{
uint8_t len = usart.readByte();
std::string str;
while(len--) {
str += static_cast<char>(usart.readByte());
}
info.push_back(str);
}
uint8_t aw = usart.readByte();
if(aw != MSG_OK)
abort("Board Info fehlerhalft: code " + std::to_string((int) aw));
return info;
std::vector<std::string> info;
uint8_t rq[] =
{
RQ_INFO
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t n;
usart.receive(&n, 0, sizeof(n));
while (n--)
{
uint8_t len;
usart.receive(&len, 0, sizeof(len));
char str[len + 1];
str[len] = '\0';
usart.receive(reinterpret_cast<uint8_t *>(&str[0]), 0, len);
info.push_back(std::string(str));
}
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
if (aw != MSG_OK)
abort("Board Info fehlerhalft: code " + std::to_string((int) aw));
return info;
}
bool B15F::activateSelfTestMode()
{
usart.writeByte(RQ_ST);
uint8_t aw = usart.readByte();
return aw == MSG_OK;
uint8_t rq[] =
{
RQ_ST
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
return aw == MSG_OK;
}
bool B15F::digitalWrite0(uint8_t port)
{
usart.writeByte(RQ_BA0);
usart.writeByte(port);
uint8_t aw = usart.readByte();
delay_us(10);
return aw == MSG_OK;
uint8_t rq[] =
{
RQ_BA0,
port
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
return aw == MSG_OK;
}
bool B15F::digitalWrite1(uint8_t port)
{
usart.writeByte(RQ_BA1);
usart.writeByte(port);
uint8_t aw = usart.readByte();
delay_us(10);
return aw == MSG_OK;
uint8_t rq[] =
{
RQ_BA1,
port
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
return aw == MSG_OK;
}
uint8_t B15F::digitalRead0()
{
usart.clearInputBuffer();
usart.writeByte(RQ_BE0);
uint8_t byte = usart.readByte();
delay_us(10);
return byte;
usart.clearInputBuffer();
uint8_t rq[] =
{
RQ_BE0
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
return aw;
}
uint8_t B15F::digitalRead1()
{
usart.clearInputBuffer();
usart.writeByte(RQ_BE1);
uint8_t byte = usart.readByte();
delay_us(10);
return byte;
usart.clearInputBuffer();
uint8_t rq[] =
{
RQ_BE1
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
return aw;
}
uint8_t B15F::readDipSwitch()
{
usart.clearInputBuffer();
usart.writeByte(RQ_DSW);
uint8_t byte = usart.readByte();
delay_us(10);
return byte;
usart.clearInputBuffer();
uint8_t rq[] =
{
RQ_DSW
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
return aw;
}
bool B15F::analogWrite0(uint16_t value)
{
usart.writeByte(RQ_AA0);
usart.writeInt(value);
uint8_t aw = usart.readByte();
delay_us(10);
return aw == MSG_OK;
uint8_t rq[] =
{
RQ_AA0,
static_cast<uint8_t >(value & 0xFF),
static_cast<uint8_t >(value >> 8)
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
return aw == MSG_OK;
}
bool B15F::analogWrite1(uint16_t value)
{
usart.writeByte(RQ_AA1);
usart.writeInt(value);
uint8_t aw = usart.readByte();
delay_us(10);
return aw == MSG_OK;
uint8_t rq[] =
{
RQ_AA1,
static_cast<uint8_t >(value & 0xFF),
static_cast<uint8_t >(value >> 8)
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
return aw == MSG_OK;
}
uint16_t B15F::analogRead(uint8_t channel)
{
usart.clearInputBuffer();
if(channel > 7)
abort("Bad ADC channel: " + std::to_string(channel));
uint8_t rq[] = {
RQ_ADC,
channel
};
int n_sent = usart.write_timeout(&rq[0], 0, sizeof(rq), 1000);
if(n_sent != sizeof(rq))
abort("Sent failed");
uint16_t adc = usart.readInt();
if(adc > 1023)
abort("Bad ADC data detected (1)");
return adc;
usart.clearInputBuffer();
if (channel > 7)
abort("Bad ADC channel: " + std::to_string(channel));
uint8_t rq[] =
{
RQ_ADC,
channel
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint16_t aw;
usart.receive(reinterpret_cast<uint8_t *>(&aw), 0, sizeof(aw));
if (aw > 1023)
abort("Bad ADC data detected (1)");
return aw;
}
void B15F::analogSequence(uint8_t channel_a, uint16_t* buffer_a, uint32_t offset_a, uint8_t channel_b, uint16_t* buffer_b, uint32_t offset_b, uint16_t start, int16_t delta, uint16_t count)
void
B15F::analogSequence(uint8_t channel_a, uint16_t *buffer_a, uint32_t offset_a, uint8_t channel_b, uint16_t *buffer_b,
uint32_t offset_b, uint16_t start, int16_t delta, uint16_t count)
{
// check pointers
buffer_a += offset_a;
buffer_b += offset_b;
usart.clearInputBuffer();
usart.writeByte(RQ_ADC_DAC_STROKE);
usart.writeByte(channel_a);
usart.writeByte(channel_b);
usart.writeInt(start);
usart.writeInt(static_cast<uint16_t>(delta));
usart.writeInt(count);
for(uint16_t i = 0; i < count; i++)
{
if(buffer_a)
{
buffer_a[i] = usart.readInt();
if(buffer_a[i] > 1023) // check for broken usart connection
abort("Bad ADC data detected (2)");
}
else
{
usart.readInt();
}
if(buffer_b)
{
buffer_b[i] = usart.readInt();
if(buffer_b[i] > 1023) // check for broken usart connection
abort("Bad ADC data detected (3)");
}
else
{
usart.readInt();
}
}
uint8_t aw = usart.readByte();
if(aw != MSG_OK)
abort("Sequenz unterbrochen");
delay_us(10);
// prepare pointers
buffer_a += offset_a;
buffer_b += offset_b;
usart.clearInputBuffer();
uint8_t rq[] =
{
RQ_ADC_DAC_STROKE,
channel_a,
channel_b,
static_cast<uint8_t >(start & 0xFF),
static_cast<uint8_t >(start >> 8),
static_cast<uint8_t >(delta & 0xFF),
static_cast<uint8_t >(delta >> 8),
static_cast<uint8_t >(count & 0xFF),
static_cast<uint8_t >(count >> 8)
};
usart.transmit(&rq[0], 0, sizeof(rq));
for (uint16_t i = 0; i < count; i++)
{
if (buffer_a)
{
usart.receive(reinterpret_cast<uint8_t *>(&buffer_a[i]), 0, 2);
if (buffer_a[i] > 1023) // check for broken usart connection
abort("Bad ADC data detected (2)");
}
else
{
usart.drop(2);
}
if (buffer_b)
{
usart.receive(reinterpret_cast<uint8_t *>(&buffer_b[i]), 0, 2);
if (buffer_b[i] > 1023) // check for broken usart connection
abort("Bad ADC data detected (3)");
}
else
{
usart.drop(2);
}
}
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
if(aw != MSG_OK)
abort("Sequenz unterbrochen");
}
uint8_t B15F::pwmSetFrequency(uint32_t freq)
{
usart.clearInputBuffer();
uint8_t rq[] =
{
RQ_PWM_SET_FREQ,
static_cast<uint8_t>((freq >> 0) & 0xFF),
static_cast<uint8_t>((freq >> 8) & 0xFF),
static_cast<uint8_t>((freq >> 16) & 0xFF),
static_cast<uint8_t>((freq >> 24) & 0xFF)
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
return aw;
}
bool B15F::pwmSetValue(uint8_t value)
{
usart.clearInputBuffer();
uint8_t rq[] =
{
RQ_PWM_SET_VALUE,
value
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
return aw == MSG_OK;
}
bool B15F::setRegister(volatile uint8_t* adr, uint8_t val)
{
usart.clearInputBuffer();
uint8_t rq[] =
{
RQ_SET_REG,
static_cast<uint8_t>(reinterpret_cast<size_t>(adr)),
val
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
return aw == val;
}
uint8_t B15F::getRegister(volatile uint8_t* adr)
{
usart.clearInputBuffer();
uint8_t rq[] =
{
RQ_GET_REG,
static_cast<uint8_t>(reinterpret_cast<size_t>(adr))
};
usart.transmit(&rq[0], 0, sizeof(rq));
uint8_t aw;
usart.receive(&aw, 0, sizeof(aw));
return aw;
}
void B15F::delay_ms(uint16_t ms)
{
std::this_thread::sleep_for(std::chrono::milliseconds(ms));
std::this_thread::sleep_for(std::chrono::milliseconds(ms));
}
void B15F::delay_us(uint16_t us)
{
std::this_thread::sleep_for(std::chrono::microseconds(us));
std::this_thread::sleep_for(std::chrono::microseconds(us));
}
B15F& B15F::getInstance(void)
{
if(!instance)
instance = new B15F();
return *instance;
B15F &B15F::getInstance(void)
{
if (!instance)
instance = new B15F();
return *instance;
}
// https://stackoverflow.com/a/478960
std::string B15F::exec(std::string cmd) {
std::string B15F::exec(std::string cmd)
{
std::array<char, 128> buffer;
std::string result;
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd.c_str(), "r"), pclose);
if (!pipe) {
if (!pipe)
{
throw std::runtime_error("popen() failed!");
}
while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) {
while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr)
{
result += buffer.data();
}
return result;
@ -321,22 +466,23 @@ std::string B15F::exec(std::string cmd) {
void B15F::abort(std::string msg)
{
DriverException ex(msg);
abort(ex);
DriverException ex(msg);
abort(ex);
}
void B15F::abort(std::exception& ex)
void B15F::abort(std::exception &ex)
{
if(errorhandler)
errorhandler(ex);
else
{
std::cerr << "NOTICE: B15F::errorhandler not set" << std::endl;
std::cout << ex.what() << std::endl;
throw DriverException(ex.what());
}
if (errorhandler)
errorhandler(ex);
else
{
std::cerr << "NOTICE: B15F::errorhandler not set" << std::endl;
std::cout << ex.what() << std::endl;
throw DriverException(ex.what());
}
}
void B15F::setAbortHandler(errorhandler_t func)
{
errorhandler = func;
errorhandler = func;
}

View file

@ -18,219 +18,263 @@
#include "driverexception.h"
#include "timeoutexception.h"
// wichtig für die Register-Zugriffe
#define _AVR_IO_H_ 1 // Erzwinge die Inklusion
#include "/usr/lib/avr/include/avr/sfr_defs.h"
#include "/usr/lib/avr/include/avr/iom1284p.h"
typedef std::function<void(std::exception&)> errorhandler_t;
/*! main driver class */
class B15F
{
private:
// privater Konstruktor
B15F(void);
// privater Konstruktor
B15F(void);
public:
/*************************************
* Grundfunktionen des B15F Treibers *
*************************************/
/**
* Versucht die Verbindung zum B15 wiederherzustellen
* \throws DriverException
*/
void reconnect(void);
/**
* Verwirft Daten im USART Puffer auf dieser Maschine und B15
* \throws DriverException
*/
void discard(void);
/**
* Testet die USART Verbindung auf Funktion
* \throws DriverException
*/
bool testConnection(void);
/**
* Testet die Integer Konvertierung der USART Verbindung
* \throws DriverException
*/
bool testIntConv(void);
/**
* Liefert Informationen zur aktuellen Firmware des B15
* \throws DriverException
*/
std::vector<std::string> getBoardInfo(void);
/**
* Lässt den Treiber für eine angegebene Zeit pausieren
* \param ms Verzögerung in Millisekunden
*/
void delay_ms(uint16_t ms);
/**
* Lässt den Treiber für eine angegebene Zeit pausieren
* \param us Verzögerung in Microsekunden
*/
void delay_us(uint16_t us);
/**
* Liefert eine Referenz zur aktuellen Treiber-Instanz
* @throws DriverException
*/
static B15F& getInstance(void);
/**
* Führt ein Befehl auf dieser Maschine aus und liefert stdout zurück
* \param cmd Der Befehl
*/
static std::string exec(std::string cmd);
/**
* Multithread sicherer Abbruch des B15F-Treibers
* \param msg Beschreibung der Abbruchursache
*/
static void abort(std::string msg);
/*************************************
* Grundfunktionen des B15F Treibers *
*************************************/
/**
* Multithread sicherer Abbruch des B15F-Treibers
* \param ex Exception als Abbruchursache
*/
static void abort(std::exception& ex);
/**
* Versucht die Verbindung zum B15 wiederherzustellen
* \throws DriverException
*/
void reconnect(void);
/**
* Setzt eine Fehlerbehandlungsroutine für den Treiberabbruch (abort)
* \param func Funktion, die Exception als Parameter bekommt
*/
static void setAbortHandler(errorhandler_t func);
/**
* Verwirft Daten im USART Puffer auf dieser Maschine und B15
* \throws DriverException
*/
void discard(void);
/*************************************/
/*************************
* Steuerbefehle für B15 *
*************************/
/**
* Versetzt das Board in den Selbsttest-Modus
* WICHTIG: Es darf dabei nichts an den Klemmen angeschlossen sein!
* \throws DriverException
*/
bool activateSelfTestMode(void);
/**
* Setzt den Wert des digitalen Ausgabeports 0
* \param port Wert für gesamten Port
* \throws DriverException
*/
bool digitalWrite0(uint8_t);
/**
* Setzt den Wert des digitalen Ausgabeports 1
* \param port Wert für gesamten Port
* \throws DriverException
*/
bool digitalWrite1(uint8_t);
/**
* Liest den Wert des digitalen Eingabeports 0
* \return Wert für gesamten Port
* \throws DriverException
*/
uint8_t digitalRead0(void);
/**
* Liest den Wert des digitalen Eingabeports 1
* \return Wert für gesamten Port
* \throws DriverException
*/
uint8_t digitalRead1(void);
/**
* Liest den Wert des digitalen Eingabeports, an dem der DIP-switch angeschlossen ist (S7)
* \return Wert für gesamten Port
* \throws DriverException
*/
uint8_t readDipSwitch(void);
/**
* Setzt den Wert des Digital-Analog-Converters (DAC / DAU) 0
* \param port 10-Bit Wert
* \throws DriverException
*/
bool analogWrite0(uint16_t);
/**
* Setzt den Wert des Digital-Analog-Converters (DAC / DAU) 1
* \param port 10-Bit Wert
* \throws DriverException
*/
bool analogWrite1(uint16_t);
/**
* Liest den Wert des Analog-Digital-Converters (ADC / ADU)
* \param channel Kanalwahl von 0 - 7
* \throws DriverException
*/
uint16_t analogRead(uint8_t channel);
/**
* DAC 0 wird auf den Startwert gesetzt und dann schrittweise um Delta inkrementiert.
* Für jeden eingestelleten DAC-Wert werden zwei ADCs (channel_a und channel_b) angesprochen und die Werte übermittelt.
* Die Werte werden in buffer_a für Kanal a und buffer_b für Kanal b gespeichert.
* \param channel_a Auswahl des ADC a, von 0 - 7
* \param buffer_a Speichertort für Werte des Kanals a
* \param offset_a Anzahl an Werten des Kanals a, die im Speicher übersprungen werden sollen
* \param channel_b Auswahl des ADC b, von 0 - 7
* \param buffer_b Speichertort für Werte des Kanals b
* \param offset_b Anzahl an Werten des Kanals b, die im Speicher übersprungen werden
* \param start Startwert des DACs
* \param delta Schrittweite, mit welcher der DAC inkrementiert wird
* \param count Anzahl an Inkrementierungen
* \throws DriverException
*/
void analogSequence(uint8_t channel_a, uint16_t* buffer_a, uint32_t offset_a, uint8_t channel_b, uint16_t* buffer_b, uint32_t offset_b, uint16_t start, int16_t delta, uint16_t count);
/*************************/
/**
* Testet die USART Verbindung auf Funktion
* \throws DriverException
*/
bool testConnection(void);
/**
* Testet die Integer Konvertierung der USART Verbindung
* \throws DriverException
*/
bool testIntConv(void);
/**
* Liefert Informationen zur aktuellen Firmware des B15
* \throws DriverException
*/
std::vector<std::string> getBoardInfo(void);
/**
* Lässt den Treiber für eine angegebene Zeit pausieren
* \param ms Verzögerung in Millisekunden
*/
void delay_ms(uint16_t ms);
/**
* Lässt den Treiber für eine angegebene Zeit pausieren
* \param us Verzögerung in Microsekunden
*/
void delay_us(uint16_t us);
/**
* Liefert eine Referenz zur aktuellen Treiber-Instanz
* @throws DriverException
*/
static B15F& getInstance(void);
/**
* Führt ein Befehl auf dieser Maschine aus und liefert stdout zurück
* \param cmd Der Befehl
*/
static std::string exec(std::string cmd);
/**
* Multithread sicherer Abbruch des B15F-Treibers
* \param msg Beschreibung der Abbruchursache
*/
static void abort(std::string msg);
/**
* Multithread sicherer Abbruch des B15F-Treibers
* \param ex Exception als Abbruchursache
*/
static void abort(std::exception& ex);
/**
* Setzt eine Fehlerbehandlungsroutine für den Treiberabbruch (abort)
* \param func Funktion, die Exception als Parameter bekommt
*/
static void setAbortHandler(errorhandler_t func);
/*************************************/
// CONSTANTS
const std::string PRE = "[B15F] ";
constexpr static uint8_t MSG_OK = 0xFF;
constexpr static uint8_t MSG_FAIL = 0xFE;
constexpr static uint16_t RECONNECT_TIMEOUT = 64; // ms
constexpr static uint16_t WDT_TIMEOUT = 15; // ms
constexpr static uint8_t RECONNECT_TRIES = 3;
constexpr static uint32_t BAUDRATE = 57600;
/*************************
* Steuerbefehle für B15 *
*************************/
/**
* Versetzt das Board in den Selbsttest-Modus
* WICHTIG: Es darf dabei nichts an den Klemmen angeschlossen sein!
* \throws DriverException
*/
bool activateSelfTestMode(void);
/**
* Setzt den Wert des digitalen Ausgabeports 0
* \param port Wert für gesamten Port
* \throws DriverException
*/
bool digitalWrite0(uint8_t);
/**
* Setzt den Wert des digitalen Ausgabeports 1
* \param port Wert für gesamten Port
* \throws DriverException
*/
bool digitalWrite1(uint8_t);
/**
* Liest den Wert des digitalen Eingabeports 0
* \return Wert für gesamten Port
* \throws DriverException
*/
uint8_t digitalRead0(void);
/**
* Liest den Wert des digitalen Eingabeports 1
* \return Wert für gesamten Port
* \throws DriverException
*/
uint8_t digitalRead1(void);
/**
* Liest den Wert des digitalen Eingabeports, an dem der DIP-switch angeschlossen ist (S7)
* \return Wert für gesamten Port
* \throws DriverException
*/
uint8_t readDipSwitch(void);
/**
* Setzt den Wert des Digital-Analog-Converters (DAC / DAU) 0
* \param port 10-Bit Wert
* \throws DriverException
*/
bool analogWrite0(uint16_t port);
/**
* Setzt den Wert des Digital-Analog-Converters (DAC / DAU) 1
* \param port 10-Bit Wert
* \throws DriverException
*/
bool analogWrite1(uint16_t port);
/**
* Liest den Wert des Analog-Digital-Converters (ADC / ADU)
* \param channel Kanalwahl von 0 - 7
* \throws DriverException
*/
uint16_t analogRead(uint8_t channel);
/**
* DAC 0 wird auf den Startwert gesetzt und dann schrittweise um Delta inkrementiert.
* Für jeden eingestelleten DAC-Wert werden zwei ADCs (channel_a und channel_b) angesprochen und die Werte übermittelt.
* Die Werte werden in buffer_a für Kanal a und buffer_b für Kanal b gespeichert.
* \param channel_a Auswahl des ADC a, von 0 - 7
* \param buffer_a Speichertort für Werte des Kanals a
* \param offset_a Anzahl an Werten des Kanals a, die im Speicher übersprungen werden sollen
* \param channel_b Auswahl des ADC b, von 0 - 7
* \param buffer_b Speichertort für Werte des Kanals b
* \param offset_b Anzahl an Werten des Kanals b, die im Speicher übersprungen werden
* \param start Startwert des DACs
* \param delta Schrittweite, mit welcher der DAC inkrementiert wird
* \param count Anzahl an Inkrementierungen
* \throws DriverException
*/
void analogSequence(uint8_t channel_a, uint16_t* buffer_a, uint32_t offset_a, uint8_t channel_b, uint16_t* buffer_b, uint32_t offset_b, uint16_t start, int16_t delta, uint16_t count);
/**
* Setzt die Register so, dass näherungsweise die gewünschte Frequenz erzeugt wird.
* Ist freq == 0 wird PWM deaktiviert.
* Standardfrequenz: 31300 (empfohlen, da dann TOP == 255)
* \param freq PWM Frequenz
* \return Top Wert des PWM Value für die gesetzte Frequenz
* \throws DriverException
*/
uint8_t pwmSetFrequency(uint32_t freq);
/**
* Setzt den PWM Wert.
* \param value PWM Wert [0..0xFF]
* \throws DriverException
*/
bool pwmSetValue(uint8_t value);
/**
* Setzt direkt den Wert eines MCU Registers.
* *Wichtig:* bei einer falschen Adresse kann das Board 15 ernsthaften Schaden nehmen!
* \param adr Speicheradresse des Registers
* \param val Neuer Wert für das Register
* \throws DriverException
*/
bool setRegister(volatile uint8_t* adr, uint8_t val);
/**
* Liefert den Wert eines MCU Registers.
* \param adr Speicheradresse des Registers
* \throws DriverException
*/
uint8_t getRegister(volatile uint8_t* adr);
/*************************/
// CONSTANTS
const std::string PRE = "[B15F] "; //!< B15F stdout prefix
constexpr static uint8_t MSG_OK = 0xFF; //!< Value to acknowledge a received command
constexpr static uint8_t MSG_FAIL = 0xFE; //!< Value to reject a received command
constexpr static uint16_t RECONNECT_TIMEOUT = 64; //!< Time in ms after which a reconnect attempt aborts
constexpr static uint16_t WDT_TIMEOUT = 15; //!< Time in ms after which the watch dog timer resets the MCU
constexpr static uint8_t RECONNECT_TRIES = 3; //!< Maximum count of reconnect attempts after which the driver stops
constexpr static uint32_t BAUDRATE = 57600; //!< USART baudrate for communication with the MCU
private:
/**
* Initialisiert und testet die Verbindung zum B15
* \throws DriverException
*/
void init(void);
USART usart;
static B15F* instance;
static errorhandler_t errorhandler;
// REQUESTS
constexpr static uint8_t RQ_DISC = 0;
constexpr static uint8_t RQ_TEST = 1;
constexpr static uint8_t RQ_INFO = 2;
constexpr static uint8_t RQ_INT = 3;
constexpr static uint8_t RQ_ST = 4;
constexpr static uint8_t RQ_BA0 = 5;
constexpr static uint8_t RQ_BA1 = 6;
constexpr static uint8_t RQ_BE0 = 7;
constexpr static uint8_t RQ_BE1 = 8;
constexpr static uint8_t RQ_DSW = 9;
constexpr static uint8_t RQ_AA0 = 10;
constexpr static uint8_t RQ_AA1 = 11;
constexpr static uint8_t RQ_ADC = 12;
constexpr static uint8_t RQ_ADC_DAC_STROKE = 13;
/**
* Initialisiert und testet die Verbindung zum B15
* \throws DriverException
*/
void init(void);
USART usart;
static B15F* instance;
static errorhandler_t errorhandler;
// REQUESTS
constexpr static uint8_t RQ_DISC = 0;
constexpr static uint8_t RQ_TEST = 1;
constexpr static uint8_t RQ_INFO = 2;
constexpr static uint8_t RQ_INT = 3;
constexpr static uint8_t RQ_ST = 4;
constexpr static uint8_t RQ_BA0 = 5;
constexpr static uint8_t RQ_BA1 = 6;
constexpr static uint8_t RQ_BE0 = 7;
constexpr static uint8_t RQ_BE1 = 8;
constexpr static uint8_t RQ_DSW = 9;
constexpr static uint8_t RQ_AA0 = 10;
constexpr static uint8_t RQ_AA1 = 11;
constexpr static uint8_t RQ_ADC = 12;
constexpr static uint8_t RQ_ADC_DAC_STROKE = 13;
constexpr static uint8_t RQ_PWM_SET_FREQ = 14;
constexpr static uint8_t RQ_PWM_SET_VALUE = 15;
constexpr static uint8_t RQ_SET_REG = 16;
constexpr static uint8_t RQ_GET_REG = 17;
};
#endif // B15F_H

View file

@ -2,21 +2,21 @@
Dot::Dot(uint16_t x, uint16_t y, uint8_t curve) : x(x), y(y), curve(curve)
{
if(curve >= 64)
throw std::range_error("Kurvenindex muss im Bereich [0, 63] liegen");
if(curve >= 64)
throw std::range_error("Kurvenindex muss im Bereich [0, 63] liegen");
}
uint16_t Dot::getX() const
{
return x;
return x;
}
uint16_t Dot::getY() const
{
return y;
return y;
}
uint8_t Dot::getCurve(void) const
{
return curve;
return curve;
}

View file

@ -4,17 +4,37 @@
#include <cstdint>
#include <stdexcept>
/**
* Immutable dot class with x and y coordinate and curve index.
* Dots with the same curve index get the same color by plotty.
*/
class Dot
{
public:
Dot(uint16_t x, uint16_t y, uint8_t curve);
uint16_t getX(void) const;
uint16_t getY(void) const;
uint8_t getCurve(void) const;
/**
* Constructor with x and y coordinate and curve index.
*/
Dot(uint16_t x, uint16_t y, uint8_t curve);
/**
* Returns the x coordinate.
*/
uint16_t getX(void) const;
/**
* Returns the y coordinate.
*/
uint16_t getY(void) const;
/**
* Returns the curve index.
*/
uint8_t getCurve(void) const;
private:
uint16_t x, y;
uint8_t curve;
uint16_t x, y;
uint8_t curve;
};

View file

@ -5,28 +5,30 @@
// SOURCE: https://stackoverflow.com/a/8152888
/*! Exception driver problems, for instance incompatible firmware version. */
class DriverException: public std::exception
{
public:
explicit DriverException(const char* message) : msg_(message)
{
}
explicit DriverException(const char* message) : msg_(message)
{
}
explicit DriverException(const std::string& message) : msg_(message)
{
}
explicit DriverException(const std::string& message) : msg_(message)
{
}
virtual ~DriverException() throw ()
{
}
virtual ~DriverException() throw ()
{
}
virtual const char* what() const throw ()
{
return msg_.c_str();
}
virtual const char* what() const throw ()
{
return msg_.c_str();
}
protected:
std::string msg_;
std::string msg_;
};
#endif // DRIVEREXCEPTION_H

View file

@ -2,197 +2,200 @@
void PlottyFile::addDot(Dot& dot)
{
dots.push_back(dot);
dots.push_back(dot);
}
void PlottyFile::addDot(Dot dot)
{
dots.push_back(dot);
dots.push_back(dot);
}
void PlottyFile::setFunctionType(FunctionType function_type)
{
this->function_type = function_type;
this->function_type = function_type;
}
void PlottyFile::setQuadrant(uint8_t quadrant)
{
if(quadrant < 1 || quadrant > 4)
throw std::range_error("Ungueltiger Quadrant");
this->quadrant = quadrant;
if(quadrant < 1 || quadrant > 4)
throw std::range_error("Ungueltiger Quadrant");
this->quadrant = quadrant;
}
void PlottyFile::setRefX(uint16_t ref_x)
{
this->ref_x = ref_x;
this->ref_x = ref_x;
}
void PlottyFile::setRefY(uint16_t ref_y)
{
this->ref_y = ref_y;
this->ref_y = ref_y;
}
void PlottyFile::setParaFirstCurve(uint16_t para_first)
{
this->para_first = para_first;
this->para_first = para_first;
}
void PlottyFile::setParaStepWidth(uint16_t para_stepwidth)
{
this->para_stepwidth = para_stepwidth;
this->para_stepwidth = para_stepwidth;
}
void PlottyFile::setUnitX(std::string unit_x)
{
this->unit_x = unit_x;
this->unit_x = unit_x;
}
void PlottyFile::setDescX(std::string desc_x)
{
this->desc_x = desc_x;
this->desc_x = desc_x;
}
void PlottyFile::setUnitY(std::string unit_y)
{
this->unit_y = unit_y;
this->unit_y = unit_y;
}
void PlottyFile::setDescY(std::string desc_y)
{
this->desc_y = desc_y;
this->desc_y = desc_y;
}
void PlottyFile::setUnitPara(std::string unit_para)
{
this->unit_para = unit_para;
this->unit_para = unit_para;
}
void PlottyFile::setDescPara(std::string desc_para)
{
this->desc_para = desc_para;
this->desc_para = desc_para;
}
FunctionType PlottyFile::getFunctionType() const
{
return function_type;
return function_type;
}
uint8_t PlottyFile::getQuadrant() const
{
return quadrant;
return quadrant;
}
uint16_t PlottyFile::getRefX() const
{
return ref_x;
return ref_x;
}
uint16_t PlottyFile::getRefY() const
{
return ref_y;
return ref_y;
}
uint16_t PlottyFile::getParaFirstCurve() const
{
return para_first;
return para_first;
}
uint16_t PlottyFile::getParaStepWidth() const
{
return para_stepwidth;
return para_stepwidth;
}
std::string PlottyFile::getUnitX() const
{
return unit_x;
return unit_x;
}
std::string PlottyFile::getDescX() const
{
return desc_x;
return desc_x;
}
std::string PlottyFile::getUnitY() const
{
return unit_y;
return unit_y;
}
std::string PlottyFile::getDescY() const
{
return desc_y;
return desc_y;
}
std::string PlottyFile::getUnitPara() const
{
return unit_para;
return unit_para;
}
std::string PlottyFile::getDescPara() const
{
return desc_para;
return desc_para;
}
void PlottyFile::prepStr(std::string& str, uint8_t len)
{
if(str.length() > len)
throw std::runtime_error("Zu grosser String.");
if(str.length() != len)
str += '\n';
while(str.length() < len)
str += '\0';
if(str.length() > len)
throw std::runtime_error("Zu grosser String.");
if(str.length() != len)
str += '\n';
while(str.length() < len)
str += '\0';
}
void PlottyFile::writeToFile(std::string filename)
{
prepStr(unit_x, STR_LEN_SHORT);
prepStr(desc_x, STR_LEN_LARGE);
prepStr(unit_y, STR_LEN_SHORT);
prepStr(desc_y, STR_LEN_LARGE);
prepStr(unit_para, STR_LEN_SHORT);
prepStr(desc_para, STR_LEN_LARGE);
std::ofstream file(filename);
// write file header
file.write(reinterpret_cast<char*>(&command), 1);
file.write(head.c_str(), head.length());
file.write(filetype.c_str(), filetype.length());
file.write(reinterpret_cast<char*>(&version), 2);
file.write(reinterpret_cast<char*>(&subversion), 2);
file.put(static_cast<uint8_t>(function_type));
file.write(reinterpret_cast<char*>(&quadrant), 1);
file.write(reinterpret_cast<char*>(&ref_x), 2);
file.write(reinterpret_cast<char*>(&ref_y), 2);
file.write(reinterpret_cast<char*>(&para_first), 2);
file.write(reinterpret_cast<char*>(&para_stepwidth), 2);
file.write(unit_x.c_str(), unit_x.length());
file.write(desc_x.c_str(), desc_x.length());
file.write(unit_y.c_str(), unit_y.length());
file.write(desc_y.c_str(), desc_y.length());
file.write(unit_para.c_str(), unit_para.length());
file.write(desc_para.c_str(), desc_para.length());
file.write(reinterpret_cast<const char*>(&eof), 1);
// make sure header size is 256 Byte
while(file.tellp() < 256)
file.put(0);
for(Dot& dot : dots)
{
file.put((dot.getX() >> 8) | (static_cast<uint8_t>(dot.getCurve()) << 2));
file.put(dot.getX() & 0xFF);
file.put(dot.getY() >> 8);
file.put(dot.getY() & 0xFF);
}
file.close();
{
if(dots.empty())
throw std::length_error("Es wurden keine Punkte gespeichert.");
prepStr(unit_x, STR_LEN_SHORT);
prepStr(desc_x, STR_LEN_LARGE);
prepStr(unit_y, STR_LEN_SHORT);
prepStr(desc_y, STR_LEN_LARGE);
prepStr(unit_para, STR_LEN_SHORT);
prepStr(desc_para, STR_LEN_LARGE);
std::ofstream file(filename);
// write file header
file.write(reinterpret_cast<char*>(&command), 1);
file.write(head.c_str(), head.length());
file.write(filetype.c_str(), filetype.length());
file.write(reinterpret_cast<char*>(&version), 2);
file.write(reinterpret_cast<char*>(&subversion), 2);
file.put(static_cast<uint8_t>(function_type));
file.write(reinterpret_cast<char*>(&quadrant), 1);
file.write(reinterpret_cast<char*>(&ref_x), 2);
file.write(reinterpret_cast<char*>(&ref_y), 2);
file.write(reinterpret_cast<char*>(&para_first), 2);
file.write(reinterpret_cast<char*>(&para_stepwidth), 2);
file.write(unit_x.c_str(), unit_x.length());
file.write(desc_x.c_str(), desc_x.length());
file.write(unit_y.c_str(), unit_y.length());
file.write(desc_y.c_str(), desc_y.length());
file.write(unit_para.c_str(), unit_para.length());
file.write(desc_para.c_str(), desc_para.length());
file.write(reinterpret_cast<const char*>(&eof), 1);
// make sure header size is 256 Byte
while(file.tellp() < 256)
file.put(0);
for(Dot& dot : dots)
{
file.put((dot.getX() >> 8) | (static_cast<uint8_t>(dot.getCurve()) << 2));
file.put(dot.getX() & 0xFF);
file.put(dot.getY() >> 8);
file.put(dot.getY() & 0xFF);
}
file.close();
}
void PlottyFile::startPlotty(std::string filename)
{
int code = system(("plotty --in " + filename).c_str());
if(code)
throw std::runtime_error("Fehler beim Aufruf von plotty");
int code = system(("plotty --in " + filename).c_str());
if(code)
throw std::runtime_error("Fehler beim Aufruf von plotty");
}

View file

@ -5,75 +5,205 @@
#include <fstream>
#include <exception>
#include <vector>
#include <stdexcept>
#include "dot.h"
enum FunctionType
{
CurveFamily = 'S',
Curve = 'C',
Level = 'P'
};
CurveFamily = 'S',
Curve = 'C',
Level = 'P'
};
/*! Wrapper class for convenient plot file creation, needed to display graphs using plotty. */
class PlottyFile
{
public:
void addDot(Dot& dot);
void addDot(Dot dot);
void setFunctionType(FunctionType);
void setQuadrant(uint8_t);
void setRefX(uint16_t);
void setRefY(uint16_t);
void setParaFirstCurve(uint16_t);
void setParaStepWidth(uint16_t);
void setUnitX(std::string);
void setDescX(std::string);
void setUnitY(std::string);
void setDescY(std::string);
void setUnitPara(std::string);
void setDescPara(std::string);
FunctionType getFunctionType(void) const;
uint8_t getQuadrant(void) const;
uint16_t getRefX(void) const;
uint16_t getRefY(void) const;
uint16_t getParaFirstCurve(void) const;
uint16_t getParaStepWidth(void) const;
std::string getUnitX(void) const;
std::string getDescX(void) const;
std::string getUnitY(void) const;
std::string getDescY(void) const;
std::string getUnitPara(void) const;
std::string getDescPara(void) const;
void writeToFile(std::string filename);
void startPlotty(std::string filename);
/**
* Adds a dot to the plotty file.
* \param dot the dot
*/
void addDot(Dot& dot);
/**
* Adds a dot by reference to the plotty file.
* \param dot the dot
*/
void addDot(Dot dot);
/**
* Sets the FunctionType of this plotty file.
* \param function_type enum value
*/
void setFunctionType(FunctionType function_type);
/**
* Sets the quadrant of this plot.
* \param quadrant quadrant number (1..4)
*/
void setQuadrant(uint8_t quadrant);
/**
* Sets reference (max) value of the x axis
* \param ref_x reference value
*/
void setRefX(uint16_t ref_x);
/**
* Sets reference (max) value of the y axis
* \param ref_y reference value
*/
void setRefY(uint16_t ref_y);
/**
* Sets initial value of the parameter.
* Gets used together with the stepwith to label the curves.
* \param para_first initial parameter value
*/
void setParaFirstCurve(uint16_t para_first);
/**
* Sets the stepwith the parameter got increased with each curve.
* \param para_first parameter stepwith
*/
void setParaStepWidth(uint16_t para_stepwidth);
/**
* Sets the unit of the x axis.
* \param para_first unit
*/
void setUnitX(std::string unit_x);
/**
* Sets the description of the x axis.
* \param para_first description
*/
void setDescX(std::string desc_x);
/**
* Sets the unit of the y axis.
* \param para_first unit
*/
void setUnitY(std::string unit_y);
/**
* Sets the description of the y axis.
* \param para_first description
*/
void setDescY(std::string desc_y);
/**
* Sets the unit of the parameter.
* \param para_first unit
*/
void setUnitPara(std::string unit_para);
/**
* Sets the description of the parameter.
* \param para_first description
*/
void setDescPara(std::string desc_para);
/**
* \return the FunctionType
*/
FunctionType getFunctionType(void) const;
/**
* \return the quadrant
*/
uint8_t getQuadrant(void) const;
/**
* \return x reference (max) value
*/
uint16_t getRefX(void) const;
/**
* \return y reference (max) value
*/
uint16_t getRefY(void) const;
/**
* \return initial parameter value
*/
uint16_t getParaFirstCurve(void) const;
/**
* \return parameter stepwith
*/
uint16_t getParaStepWidth(void) const;
/**
* \return unit of x axis
*/
std::string getUnitX(void) const;
/**
* \return description of x axis
*/
std::string getDescX(void) const;
/**
* \return unit of y axis
*/
std::string getUnitY(void) const;
/**
* \return description of y axis
*/
std::string getDescY(void) const;
/**
* \return unit of parameter
*/
std::string getUnitPara(void) const;
/**
* \return description of parameter
*/
std::string getDescPara(void) const;
/**
* Saves the PlottyFile in a binary format, ready to open with plotty.
* \param filename desired plot path
*/
void writeToFile(std::string filename);
/**
* Starts plotty with a plot file.
* \param filename plot path
*/
void startPlotty(std::string filename);
private:
void prepStr(std::string& str, uint8_t len);
void prepStr(std::string& str, uint8_t len);
std::vector<Dot> dots;
std::vector<Dot> dots;
int8_t command = 0x1D;
const std::string head = "HTWK-HWLab";
const std::string filetype = "MD";
int16_t version = 1;
int16_t subversion = 0;
FunctionType function_type = FunctionType::Curve;
uint8_t quadrant = 1;
uint16_t ref_x = 1023;
uint16_t ref_y = 1023;
uint16_t para_first = 1;
uint16_t para_stepwidth = 1;
std::string unit_x;
std::string desc_x;
std::string unit_y;
std::string desc_y;
std::string unit_para;
std::string desc_para;
const uint8_t eof = 0xD;
constexpr static uint8_t STR_LEN_SHORT = 10;
constexpr static uint8_t STR_LEN_LARGE = 20;
int8_t command = 0x1D;
const std::string head = "HTWK-HWLab";
const std::string filetype = "MD";
int16_t version = 1;
int16_t subversion = 0;
FunctionType function_type = FunctionType::Curve;
uint8_t quadrant = 1;
uint16_t ref_x = 1023;
uint16_t ref_y = 1023;
uint16_t para_first = 1;
uint16_t para_stepwidth = 1;
std::string unit_x;
std::string desc_x;
std::string unit_y;
std::string desc_y;
std::string unit_para;
std::string desc_para;
const uint8_t eof = 0xD;
constexpr static uint8_t STR_LEN_SHORT = 10;
constexpr static uint8_t STR_LEN_LARGE = 20;
};
#endif // PLOTTYFILE_H

View file

@ -2,34 +2,45 @@
#define TIMEOUTEXCEPTION_H
#include <exception>
#include <string>
// SOURCE: https://stackoverflow.com/a/8152888
/*! Exception for USART related timeouts. */
class TimeoutException: public std::exception
{
public:
explicit TimeoutException(const char* message, int timeout) : TimeoutException(std::string(message), timeout)
{
}
/**
* Constructor
* @param message as c-string
*/
explicit TimeoutException(const char* message) : msg(message)
{
}
explicit TimeoutException(const std::string& message, int timeout) : msg(message), m_timeout(timeout)
{
if(!msg.length())
msg = "Timeout reached (" + std::to_string(m_timeout) + ")";
}
/**
* Constructor
* @param message as c++-string
*/
explicit TimeoutException(const std::string& message) : msg(message)
{
}
virtual ~TimeoutException() throw ()
{
}
/**
* Standard-destructor
*/
virtual ~TimeoutException() = default;
virtual const char* what() const throw ()
{
return msg.c_str();
}
/**
* Get failure description
* @return error message as c-string
*/
virtual const char* what() const throw ()
{
return msg.c_str();
}
protected:
std::string msg;
int m_timeout;
std::string msg; //!< failure description
};
#endif // TIMEOUTEXCEPTION_H

View file

@ -1,324 +1,139 @@
#include <stdexcept>
#include "usart.h"
USART::~USART()
{
closeDevice();
}
void USART::openDevice(std::string device)
{
file_desc = open(device.c_str(), O_RDWR | O_NOCTTY | O_NDELAY /* | O_NONBLOCK*/);
if(file_desc <= 0)
throw USARTException("Fehler beim Öffnen des Gerätes");
struct termios options;
int code = tcgetattr(file_desc, &options);
if(code)
throw USARTException("Fehler beim Lesen der Geräteparameter");
options.c_cflag = CS8 | CLOCAL | CREAD;
options.c_iflag = IGNPAR;
options.c_oflag = 0;
options.c_lflag = 0;
options.c_cc[VMIN] = 0; // #bytes read returns at least
options.c_cc[VTIME] = timeout;
// Benutze blockierenden Modus
file_desc = open(device.c_str(), O_RDWR | O_NOCTTY);// | O_NDELAY
if (file_desc <= 0)
throw USARTException("Fehler beim Öffnen des Gerätes");
struct termios options;
int code = tcgetattr(file_desc, &options);
if (code)
throw USARTException("Fehler beim Lesen der Geräteparameter");
options.c_cflag = CS8 | CLOCAL | CREAD;
options.c_iflag = IGNPAR;
options.c_oflag = 0;
options.c_lflag = 0;
options.c_cc[VMIN] = 0;
options.c_cc[VTIME] = timeout;
code = cfsetspeed(&options, baudrate);
if(code)
throw USARTException("Fehler beim Setzen der Baudrate");
code = tcsetattr(file_desc, TCSANOW, &options);
if(code)
throw USARTException("Fehler beim Setzen der Geräteparameter");
clearOutputBuffer();
clearInputBuffer();
if (code)
throw USARTException("Fehler beim Setzen der Baudrate");
code = tcsetattr(file_desc, TCSANOW, &options);
if (code)
throw USARTException("Fehler beim Setzen der Geräteparameter");
code = fcntl(file_desc, F_SETFL, 0); // blockierender Modus
if (code)
throw USARTException("Fehler beim Aktivieren des blockierenden Modus'");
clearOutputBuffer();
clearInputBuffer();
}
void USART::closeDevice()
{
int code = close(file_desc);
if(code)
throw USARTException("Fehler beim Schließen des Gerätes");
if (file_desc > 0)
{
int code = close(file_desc);
if (code)
throw USARTException("Fehler beim Schließen des Gerätes");
file_desc = -1;
}
}
void USART::clearInputBuffer()
{
int code = tcflush(file_desc, TCIFLUSH);
if(code)
throw USARTException("Fehler beim Leeren des Eingangspuffers");
int code = tcflush(file_desc, TCIFLUSH);
if (code)
throw USARTException("Fehler beim Leeren des Eingangspuffers");
}
void USART::clearOutputBuffer()
{
int code = tcflush(file_desc, TCOFLUSH);
if(code)
throw USARTException("Fehler beim Leeren des Ausgangspuffers");
int code = tcflush(file_desc, TCOFLUSH);
if (code)
throw USARTException("Fehler beim Leeren des Ausgangspuffers");
}
void USART::flushOutputBuffer()
{
int code = tcdrain(file_desc);
if(code)
throw USARTException("Fehler beim Versenden des Ausgangspuffers");
int code = tcdrain(file_desc);
if (code)
throw USARTException("Fehler beim Versenden des Ausgangspuffers");
}
void USART::printStatistics()
void USART::transmit(uint8_t *buffer, uint16_t offset, uint8_t len)
{
double pz = 1e2 * n_blocks_failed / n_blocks_total;
pz = std::round(pz * 1e2) / 1e2;
std::cout << "blocks total: " << n_blocks_total << " ok: " << (n_blocks_total - n_blocks_failed) << " failed: " << n_blocks_failed << " (" << pz << "%)" << std::endl;
int code = write(file_desc, buffer + offset, len);
if (code != len)
throw USARTException(
std::string(__FUNCTION__) + " failed: " + std::string(__FILE__) + "#" + std::to_string(__LINE__) +
", " + strerror(code) + " (code " + std::to_string(code) + " / " + std::to_string(len) + ")");
}
void USART::writeByte(uint8_t b)
void USART::receive(uint8_t *buffer, uint16_t offset, uint8_t len)
{
int sent = write(file_desc, &b, 1);
if(sent != 1)
{
std::cout << "WARNUNG: Fehler beim Senden (" << sent << "): writeByte(), wiederhole..." << std::endl;
usleep(100000);
sent = write(file_desc, &b, 1);
if(sent != 1)
throw USARTException("Fehler beim Senden: writeByte()");
}
}
void USART::writeInt(uint16_t d)
{
int sent = write(file_desc, reinterpret_cast<char*>(&d), 2);
if(sent != 2)
throw USARTException("Fehler beim Senden: writeInt()");
int bytes_avail, code;
auto start = std::chrono::steady_clock::now();
auto end = std::chrono::steady_clock::now();
do
{
code = ioctl(file_desc, FIONREAD, &bytes_avail);
if (code)
throw USARTException(
std::string(__FUNCTION__) + " failed: " + std::string(__FILE__) + "#" + std::to_string(__LINE__) +
", " + strerror(code) + " (code " + std::to_string(code) + ")");
end = std::chrono::steady_clock::now();
long elapsed =
std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count() / 100; // in Dezisekunden
if (elapsed >= timeout)
throw TimeoutException(
std::string(__FUNCTION__) + " failed: " + std::string(__FILE__) + "#" + std::to_string(__LINE__) +
", " + std::to_string(elapsed) + " / " + std::to_string(timeout) + " ds");
}
while (bytes_avail < len);
code = read(file_desc, buffer + offset, len);
if (code != len)
throw USARTException(
std::string(__FUNCTION__) + " failed: " + std::string(__FILE__) + "#" + std::to_string(__LINE__) +
", " + strerror(code) + " (code " + std::to_string(code) + " / " + std::to_string(len) + ")");
}
int USART::read_timeout(uint8_t* buffer, uint16_t offset, uint8_t len, uint32_t timeout)
void USART::drop(uint8_t len)
{
uint32_t elapsed = 0;
int n_read = -1;
auto start = std::chrono::steady_clock::now();
auto end = start;
while(elapsed < timeout)
{
n_read = read(file_desc, buffer + offset, len);
if (n_read == len)
return n_read;
end = std::chrono::steady_clock::now();
elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end - start).count();
}
return 0;
}
int USART::write_timeout(uint8_t* buffer, uint16_t offset, uint8_t len, uint32_t timeout)
{
uint32_t elapsed = 0;
int n_sent = -1;
auto start = std::chrono::steady_clock::now();
auto end = start;
while(elapsed < timeout)
{
n_sent = write(file_desc, buffer + offset, len);
flushOutputBuffer();
if (n_sent == len)
return n_sent;
end = std::chrono::steady_clock::now();
elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end - start).count();
}
return n_sent;
}
void USART::writeBlock(uint8_t* buffer, uint16_t offset, uint8_t len)
{
uint8_t crc;
uint8_t aw;
const uint16_t us_per_bit = (1000000 / baudrate) * 16;
const uint16_t n_total = len + 3;
n_blocks_total++;
bool failed = false;
do
{
// calc crc
crc = 0;
for(uint8_t i = 0; i < len; i++)
{
crc ^= buffer[i];
for (uint8_t k = 0; k < 8; k++)
{
if (crc & 1)
crc ^= CRC7_POLY;
crc >>= 1;
}
}
// construct block
block_buffer[0] = len;
std::memcpy(&block_buffer[1], buffer + offset, len);
block_buffer[len + 1] = crc;
block_buffer[len + 2] = BLOCK_END;
// send block
clearOutputBuffer();
clearInputBuffer();
int n_sent = write_timeout(&block_buffer[0], 0, len + 3, us_per_bit * n_total);
if(n_sent != n_total)
throw std::runtime_error("fatal (send): " + std::to_string(n_sent));
/*for(uint8_t i = 0; i < len + 3; i++)
{
write_timeout(&block_buffer[i], 0, 1, us_per_bit * n_total);
//tcdrain(file_desc);
//usleep(1000);
}*/
// flush output data
tcdrain(file_desc);
//usleep(us_per_bit * n_total * 10);
// check response
int n_read = read_timeout(&aw, 0, 1, us_per_bit * n_blocks_total * 10);
for(uint16_t i = 0; i < 255 && n_read != 1; i++)
{
writeByte(0x80); // Stoppzeichen für Block
if(tcdrain(file_desc))
{
std::cout << "drain failed" << std::endl;
}
std::cout << "WARNING: read error (" << n_read << "), retry #" << (int) i << std::endl;
usleep(us_per_bit*100);
n_read = read_timeout(&aw, 0, 1, us_per_bit);
}
if(n_read != 1)
throw std::runtime_error("fatal: " + std::to_string(n_read));
//clearInputBuffer();
if(aw != 0xFF) {
if(!failed)
n_blocks_failed++;
failed = true;
std::cout << "block failed, retry" << std::endl;
}
}
while(aw != 0xFF);
//std::cout << "OK" << std::endl;
}
uint8_t USART::readByte(void)
{
char b;
auto start = std::chrono::steady_clock::now();
auto end = start;
uint16_t elapsed = 0;
while(elapsed < timeout * 100)
{
int code = read(file_desc, &b, 1);
if (code > 0)
return static_cast<uint8_t>(b);
end = std::chrono::steady_clock::now();
elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
}
throw TimeoutException("Verbindung unterbrochen.", timeout);
}
uint16_t USART::readInt(void)
{
return readByte() | readByte() << 8;
}
bool USART::readBlock(uint8_t* buffer, uint16_t offset)
{
uint8_t len = readByte();
uint8_t crc = 0;
buffer += offset;
uint32_t block_timeout = timeout / 10;
// wait for block
int n_ready;
uint16_t elapsed = 0;
auto start = std::chrono::steady_clock::now();
auto end = start;
while(elapsed < block_timeout)
{
int code = ioctl(file_desc, FIONREAD, &n_ready);
if(code != 0)
{
std::cout << "n_ready code: " << code << std::endl;
return false;
}
if(n_ready >= len + 1)
break;
end = std::chrono::steady_clock::now();
elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end - start).count();
}
if(elapsed >= timeout)
{
std::cout << "block timeout: " << std::endl;
return false;
}
while(len--)
{
*buffer = readByte();
crc ^= *buffer++;
for (uint8_t i = 0; i < 8; i++)
{
if (crc & 1)
crc ^= CRC7_POLY;
crc >>= 1;
}
}
crc ^= readByte();
for (uint8_t i = 0; i < 8; i++)
{
if (crc & 1)
crc ^= CRC7_POLY;
crc >>= 1;
}
if(TEST == 1)
crc = 1;
if(TEST > 100)
TEST = 0;
if (crc == 0)
{
writeByte(0xFF);
return true;
}
else
{
writeByte(0xFE);
return false;
}
// Kann bestimmt noch eleganter gelöst werden
uint8_t dummy[len];
receive(&dummy[0], 0, len);
}
uint32_t USART::getBaudrate()
{
return baudrate;
return baudrate;
}
uint8_t USART::getTimeout()
{
return timeout;
return timeout;
}
void USART::setBaudrate(uint32_t baudrate)
{
this->baudrate = baudrate;
this->baudrate = baudrate;
}
void USART::setTimeout(uint8_t timeout)
{
this->timeout = timeout;
this->timeout = timeout;
}

View file

@ -1,150 +1,139 @@
#ifndef USART_H
#define USART_H
#include <iostream>
#include <cstdint>
#include <chrono>
#include <unistd.h>
#include <cstring>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <termios.h>
#include <cmath>
#include <sys/ioctl.h>
#include <string.h>
#include "usartexception.h"
#include "timeoutexception.h"
/*! C++ Wrapper class for termios usart library. */
class USART
{
public:
/*************************************************
* Methoden für die Verwaltung der Schnittstelle *
*************************************************/
/**
* Öffnet die USART Schnittstelle
* \param device Linux-Gerätepfad
* \throws USARTException
*/
void openDevice(std::string device);
/**
* Schließt die USART Schnittstelle
* \throws USARTException
*/
void closeDevice(void);
/**
* Verwirft Daten, die bereits im Puffer liegen, aber noch nicht gelesen wurden
* \throws USARTException
*/
void clearInputBuffer(void);
/**
* Verwirft Daten, die bereits im Puffer liegen, aber noch nicht gesendet wurden
* \throws USARTException
*/
void clearOutputBuffer(void);
/**
* Schreibt Daten, die bereits im Puffer liegen, aber noch nicht gesendet wurden
* \throws USARTException
*/
void flushOutputBuffer(void);
/**
* Gibt Anzahl an erfolgreichen und fehlgeschlagenen Block-Übertragungen an
*/
void printStatistics(void);
/*************************************************/
/*************************************
* Methoden für die Datenübertragung *
*************************************/
/**
* Sendet ein Byte über die USART Schnittstelle
* \param b das zu sendende Byte
* \throws USARTException
*/
void writeByte(uint8_t b);
/**
* Sendet ein Integer über die USART Schnittstelle
* \param b das zu sendende Byte
* \throws USARTException
*/
void writeInt(uint16_t d);
/**
* Empfängt ein Byte über die USART Schnittstelle
* \throws USARTException
*/
uint8_t readByte(void);
/**
* Empfängt ein Integer über die USART Schnittstelle
* \throws USARTException
*/
uint16_t readInt(void);
int read_timeout(uint8_t* buffer, uint16_t offset, uint8_t len, uint32_t timeout);
int write_timeout(uint8_t* buffer, uint16_t offset, uint8_t len, uint32_t timeout);
void writeBlock(uint8_t* buffer, uint16_t offset, uint8_t len);
bool readBlock(uint8_t* buffer, uint16_t offset);
/*************************************/
/***************************************
* Methoden für einstellbare Parameter *
***************************************/
/**
* Liefert die eingestellte Baudrate
* <b>Änderungen werden erst nach einem open() wirksam</b>
*/
uint32_t getBaudrate(void);
/**
* Liefert den eingestellten Timeout (in Dezisekunden)
* <b>Änderungen werden erst nach einem open() wirksam</b>
*/
uint8_t getTimeout(void);
/**
* Setzt die Baudrate
* <b>Änderungen werden erst nach einem open() wirksam</b>
*/
void setBaudrate(uint32_t baudrate);
/**
* Setzt den Timeout (in Dezisekunden)
* <b>Änderungen werden erst nach einem open() wirksam</b>
*/
void setTimeout(uint8_t timeout);
/***************************************/
constexpr static uint8_t CRC7_POLY = 0x91;
constexpr static uint8_t MAX_BLOCK_SIZE = 64;
constexpr static uint8_t BLOCK_END = 0x80;
/*************************************************
* Methoden für die Verwaltung der Schnittstelle *
*************************************************/
/**
* Standard-Konstruktor
*/
explicit USART() = default;
/**
* Destructor, ruft automatisch closeDevice() auf
*/
virtual ~USART(void);
/**
* Öffnet die USART Schnittstelle
* \param device Linux-Gerätepfad
* \throws USARTException
*/
void openDevice(std::string device);
/**
* Schließt die USART Schnittstelle
* \throws USARTException
*/
void closeDevice(void);
/**
* Verwirft Daten, die bereits im Puffer liegen, aber noch nicht gelesen wurden
* \throws USARTException
*/
void clearInputBuffer(void);
/**
* Verwirft Daten, die bereits im Puffer liegen, aber noch nicht gesendet wurden
* \throws USARTException
*/
void clearOutputBuffer(void);
/**
* Schreibt Daten, die bereits im Puffer liegen, aber noch nicht gesendet wurden
* \throws USARTException
*/
void flushOutputBuffer(void);
/*************************************************/
/*************************************
* Methoden für die Datenübertragung *
*************************************/
/**
* Sends n bytes from the buffer over USART
* \param buffer target buffer
* \param offset in buffer (mostly 0)
* \param len count of bytes to send
* \throws USARTException
*/
void transmit(uint8_t *buffer, uint16_t offset, uint8_t len);
/**
* Receives n bytes from USART and writes them into the buffer
* \param buffer target buffer
* \param offset in buffer (mostly 0)
* \param len count of bytes to receive
* \throws USARTException
*/
void receive(uint8_t *buffer, uint16_t offset, uint8_t len);
/**
* Receives n bytes but discards them
* \param len count of bytes to receive
* \throws USARTException
*/
void drop(uint8_t len);
/*************************************/
/***************************************
* Methoden für einstellbare Parameter *
***************************************/
/**
* Liefert die eingestellte Baudrate
* <b>Änderungen werden erst nach einem open() wirksam</b>
*/
uint32_t getBaudrate(void);
/**
* Liefert den eingestellten Timeout (in Dezisekunden)
* <b>Änderungen werden erst nach einem open() wirksam</b>
*/
uint8_t getTimeout(void);
/**
* Setzt die Baudrate
* <b>Änderungen werden erst nach openDevice() wirksam</b>
*/
void setBaudrate(uint32_t baudrate);
/**
* Setzt den Timeout (in Dezisekunden)
* <b>Änderungen werden erst nach openDevice() wirksam</b>
*/
void setTimeout(uint8_t timeout);
/***************************************/
private:
int file_desc = -1; // Linux Dateideskriptor
uint32_t baudrate = 9600; // Standard-Baudrate, sollte mit setBaudrate() überschrieben werden!
int TEST = 0;
uint8_t timeout = 10; // in Dezisekunden
uint8_t block_buffer[MAX_BLOCK_SIZE + 3];
// debug statistics
uint32_t n_blocks_total = 0;
uint32_t n_blocks_failed = 0;
int file_desc = -1; //!< Linux Dateideskriptor
uint32_t baudrate = 9600; //!< Standard-Baudrate, sollte mit setBaudrate() überschrieben werden!
uint8_t timeout = 10; //!< in Dezisekunden
};
#endif // USART_H

View file

@ -4,30 +4,43 @@
#include <exception>
#include <string>
// SOURCE: https://stackoverflow.com/a/8152888
/*! Exception for USART problems, for instance buffer overflow. */
class USARTException: public std::exception
{
public:
explicit USARTException(const char* message) : msg(message)
{
}
/**
* Constructor
* @param message as c-string
*/
explicit USARTException(const char* message) : msg(message)
{
}
explicit USARTException(const std::string& message) : msg(message)
{
}
/**
* Constructor
* @param message as c++-string
*/
explicit USARTException(const std::string& message) : msg(message)
{
}
virtual ~USARTException() throw ()
{
}
/**
* Standard-destructor
*/
virtual ~USARTException() = default;
virtual const char* what() const throw ()
{
return msg.c_str();
}
/**
* Get failure description
* @return error message as c-string
*/
virtual const char* what() const throw ()
{
return msg.c_str();
}
protected:
std::string msg;
std::string msg; //!< failure description
};
#endif // USARTEXCEPTION_H

View file

@ -6,277 +6,277 @@ std::thread t_refresh;
void show_main(int)
{
ViewSelection* view = new ViewSelection();
view->setTitle("B15F - Command Line Interface");
view->addChoice("[ Monitor - Eingaben beobachten ]", &show_monitor);
view->addChoice("[ Digitale Ausgabe BE0 ]", &show_digital_output0);
view->addChoice("[ Digitale Ausgabe BE1 ]", &show_digital_output1);
view->addChoice("[ Analoge Ausgabe AA0 ]", &show_analog_output0);
view->addChoice("[ Analoge Ausgabe AA1 ]", &show_analog_output1);
view->addChoice("[ Selbsttest des B15 ]", &show_selftest_info);
view->addChoice("[ Informationen ]", &show_info);
view->addChoice("", nullptr);
view->addChoice("[ Beenden ]", &finish);
view->repaint();
win_stack.push_back(view);
input(0);
ViewSelection* view = new ViewSelection();
view->setTitle("B15F - Command Line Interface");
view->addChoice("[ Monitor - Eingaben beobachten ]", &show_monitor);
view->addChoice("[ Digitale Ausgabe BE0 ]", &show_digital_output0);
view->addChoice("[ Digitale Ausgabe BE1 ]", &show_digital_output1);
view->addChoice("[ Analoge Ausgabe AA0 ]", &show_analog_output0);
view->addChoice("[ Analoge Ausgabe AA1 ]", &show_analog_output1);
view->addChoice("[ Selbsttest des B15 ]", &show_selftest_info);
view->addChoice("[ Informationen ]", &show_info);
view->addChoice("", nullptr);
view->addChoice("[ Beenden ]", &finish);
view->repaint();
win_stack.push_back(view);
input(0);
}
void input(int)
{
call_t nextCall;
int key;
do
{
key = wgetch(View::getWinContext());
win_stack.back()->repaint();
nextCall = win_stack.back()->keypress(key);
if(key == -1)
view_back(key);
if(nextCall)
nextCall(key);
}
while(win_stack.size());
call_t nextCall;
int key;
do
{
key = wgetch(View::getWinContext());
win_stack.back()->repaint();
nextCall = win_stack.back()->keypress(key);
if(key == -1)
view_back(key);
if(nextCall)
nextCall(key);
}
while(win_stack.size());
}
void view_back(int)
{
if(win_stack.size())
{
delete win_stack.back();
win_stack.pop_back();
}
if(win_stack.size())
win_stack.back()->repaint();
if(win_stack.size())
{
delete win_stack.back();
win_stack.pop_back();
}
if(win_stack.size())
win_stack.back()->repaint();
}
void finish(int)
{
cleanup();
exit(EXIT_SUCCESS);
cleanup();
exit(EXIT_SUCCESS);
}
void cleanup()
{
if(t_refresh.joinable())
t_refresh.join();
clrtoeol();
refresh();
endwin();
if(t_refresh.joinable())
t_refresh.join();
clrtoeol();
refresh();
endwin();
}
void show_info(int)
{
ViewInfo* view = new ViewInfo();
view->setTitle("Info");
view->setText("Informationen zu Board 15 Famulus Edition\nEs war einmal...");
view->setLabelClose("[ Zurueck ]");
view->repaint();
win_stack.push_back(view);
input(0);
ViewInfo* view = new ViewInfo();
view->setTitle("Info");
view->setText("Informationen zu Board 15 Famulus Edition\nEs war einmal...");
view->setLabelClose("[ Zurueck ]");
view->repaint();
win_stack.push_back(view);
input(0);
}
void show_monitor(int)
{
ViewMonitor* view = new ViewMonitor();
view->setTitle("Monitor");
view->setText("\nErfasse Messwerte...");
view->setLabelClose("[ Zurueck ]");
view->repaint();
win_stack.push_back(view);
input(0);
ViewMonitor* view = new ViewMonitor();
view->setTitle("Monitor");
view->setText("\nErfasse Messwerte...");
view->setLabelClose("[ Zurueck ]");
view->repaint();
win_stack.push_back(view);
input(0);
}
void show_invalid_port_input(int)
{
ViewInfo* view = new ViewInfo();
view->setTitle("Falsche Eingabe");
view->setText("Bitte geben Sie einen Wert aus dem Intervall [0, FF] an.");
view->setLabelClose("[ Schliessen ]");
view->repaint();
win_stack.push_back(view);
input(0);
ViewInfo* view = new ViewInfo();
view->setTitle("Falsche Eingabe");
view->setText("Bitte geben Sie einen Wert aus dem Intervall [0, FF] an.");
view->setLabelClose("[ Schliessen ]");
view->repaint();
win_stack.push_back(view);
input(0);
}
void show_invalid_dac_input(int)
{
ViewInfo* view = new ViewInfo();
view->setTitle("Falsche Eingabe");
view->setText("Bitte geben Sie einen Wert aus dem Intervall [0, 1023] an.");
view->setLabelClose("[ Schliessen ]");
view->repaint();
win_stack.push_back(view);
input(0);
ViewInfo* view = new ViewInfo();
view->setTitle("Falsche Eingabe");
view->setText("Bitte geben Sie einen Wert aus dem Intervall [0, 1023] an.");
view->setLabelClose("[ Schliessen ]");
view->repaint();
win_stack.push_back(view);
input(0);
}
void write_digital_output0(int)
{
try
{
int d = std::stoi(static_cast<ViewPromt*>(win_stack.back())->getInput(), 0, 16);
if(d > 255 || 0 > d)
throw std::invalid_argument("bad value");
uint8_t port = static_cast<uint8_t>(d);
B15F& drv = B15F::getInstance();
drv.digitalWrite0(port);
view_back(0);
}
catch(std::invalid_argument& ex)
{
show_invalid_port_input(0);
}
try
{
int d = std::stoi(static_cast<ViewPromt*>(win_stack.back())->getInput(), 0, 16);
if(d > 255 || 0 > d)
throw std::invalid_argument("bad value");
uint8_t port = static_cast<uint8_t>(d);
B15F& drv = B15F::getInstance();
drv.digitalWrite0(port);
view_back(0);
}
catch(std::invalid_argument& ex)
{
show_invalid_port_input(0);
}
}
void write_digital_output1(int)
{
try
{
int d = std::stoi(static_cast<ViewPromt*>(win_stack.back())->getInput(), 0, 16);
if(d > 255 || 0 > d)
throw std::invalid_argument("bad value");
uint8_t port = static_cast<uint8_t>(d);
B15F& drv = B15F::getInstance();
drv.digitalWrite1(port);
view_back(0);
}
catch(std::invalid_argument& ex)
{
show_invalid_port_input(0);
}
try
{
int d = std::stoi(static_cast<ViewPromt*>(win_stack.back())->getInput(), 0, 16);
if(d > 255 || 0 > d)
throw std::invalid_argument("bad value");
uint8_t port = static_cast<uint8_t>(d);
B15F& drv = B15F::getInstance();
drv.digitalWrite1(port);
view_back(0);
}
catch(std::invalid_argument& ex)
{
show_invalid_port_input(0);
}
}
void write_analog_output0(int)
{
try
{
uint16_t port = std::stoi(static_cast<ViewPromt*>(win_stack.back())->getInput());
if(port > 1023)
throw std::invalid_argument("bad value");
B15F& drv = B15F::getInstance();
drv.analogWrite0(port);
view_back(0);
}
catch(std::invalid_argument& ex)
{
show_invalid_dac_input(0);
}
try
{
uint16_t port = std::stoi(static_cast<ViewPromt*>(win_stack.back())->getInput());
if(port > 1023)
throw std::invalid_argument("bad value");
B15F& drv = B15F::getInstance();
drv.analogWrite0(port);
view_back(0);
}
catch(std::invalid_argument& ex)
{
show_invalid_dac_input(0);
}
}
void write_analog_output1(int)
{
try
{
uint16_t port = std::stoi(static_cast<ViewPromt*>(win_stack.back())->getInput());
if(port > 1023)
throw std::invalid_argument("bad value");
B15F& drv = B15F::getInstance();
drv.analogWrite1(port);
view_back(0);
}
catch(std::invalid_argument& ex)
{
show_invalid_dac_input(0);
}
try
{
uint16_t port = std::stoi(static_cast<ViewPromt*>(win_stack.back())->getInput());
if(port > 1023)
throw std::invalid_argument("bad value");
B15F& drv = B15F::getInstance();
drv.analogWrite1(port);
view_back(0);
}
catch(std::invalid_argument& ex)
{
show_invalid_dac_input(0);
}
}
void show_digital_output0(int)
{
ViewPromt* view = new ViewPromt();
view->setTitle("Digitale Ausgabe BE0");
view->setMessage("\nAusgabe Port-Wert (hex): 0x");
view->setCancel("[ Zurueck ]", true);
view->setConfirm("[ OK ]", &write_digital_output0);
view->repaint();
win_stack.push_back(view);
input(0);
ViewPromt* view = new ViewPromt();
view->setTitle("Digitale Ausgabe BE0");
view->setMessage("\nAusgabe Port-Wert (hex): 0x");
view->setCancel("[ Zurueck ]", true);
view->setConfirm("[ OK ]", &write_digital_output0);
view->repaint();
win_stack.push_back(view);
input(0);
}
void show_digital_output1(int)
{
ViewPromt* view = new ViewPromt();
view->setTitle("Digitale Ausgabe BE1");
view->setMessage("\nAusgabe Port-Wert (hex): 0x");
view->setCancel("[ Zurueck ]", true);
view->setConfirm("[ OK ]", &write_digital_output1);
view->repaint();
win_stack.push_back(view);
input(0);
ViewPromt* view = new ViewPromt();
view->setTitle("Digitale Ausgabe BE1");
view->setMessage("\nAusgabe Port-Wert (hex): 0x");
view->setCancel("[ Zurueck ]", true);
view->setConfirm("[ OK ]", &write_digital_output1);
view->repaint();
win_stack.push_back(view);
input(0);
}
void show_analog_output0(int)
{
ViewPromt* view = new ViewPromt();
view->setTitle("Analoge Ausgabe AA0");
view->setMessage("\nAusgabe 10-Bit-Wert (0...1023): ");
view->setCancel("[ Zurueck ]", true);
view->setConfirm("[ OK ]", &write_analog_output0);
view->repaint();
win_stack.push_back(view);
input(0);
ViewPromt* view = new ViewPromt();
view->setTitle("Analoge Ausgabe AA0");
view->setMessage("\nAusgabe 10-Bit-Wert (0...1023): ");
view->setCancel("[ Zurueck ]", true);
view->setConfirm("[ OK ]", &write_analog_output0);
view->repaint();
win_stack.push_back(view);
input(0);
}
void show_analog_output1(int)
{
ViewPromt* view = new ViewPromt();
view->setTitle("Analoge Ausgabe AA1");
view->setMessage("\nAusgabe 10-Bit-Wert (0...1023): ");
view->setCancel("[ Zurueck ]", true);
view->setConfirm("[ OK ]", &write_analog_output1);
view->repaint();
win_stack.push_back(view);
input(0);
ViewPromt* view = new ViewPromt();
view->setTitle("Analoge Ausgabe AA1");
view->setMessage("\nAusgabe 10-Bit-Wert (0...1023): ");
view->setCancel("[ Zurueck ]", true);
view->setConfirm("[ OK ]", &write_analog_output1);
view->repaint();
win_stack.push_back(view);
input(0);
}
void start_selftest(int)
{
B15F& drv = B15F::getInstance();
drv.activateSelfTestMode();
ViewInfo* view = new ViewInfo();
view->setTitle("Selbsttest aktiv");
view->setText("Das B15 befindet sich jetzt im Selbsttestmodus.\n \nSelbsttest:\nZu Beginn geht der Reihe nach jede LED von BA0 bis BA1 an.\nDanach leuchten die LEDs an AA0 und AA1 kurz auf.\nZum Schluss spiegelt in einer Endlosschleife:\n* BA0 Port BE0\n* BA1 die DIP-Schalter S7\n* AA0 ADC0\n* AA1 ADC1");
view->setLabelClose("[ Selbsttest Beenden ]");
view->setCall(&stop_selftest);
view->repaint();
win_stack.push_back(view);
input(0);
B15F& drv = B15F::getInstance();
drv.activateSelfTestMode();
ViewInfo* view = new ViewInfo();
view->setTitle("Selbsttest aktiv");
view->setText("Das B15 befindet sich jetzt im Selbsttestmodus.\n \nSelbsttest:\nZu Beginn geht der Reihe nach jede LED von BA0 bis BA1 an.\nDanach leuchten die LEDs an AA0 und AA1 kurz auf.\nZum Schluss spiegelt in einer Endlosschleife:\n* BA0 Port BE0\n* BA1 die DIP-Schalter S7\n* AA0 ADC0\n* AA1 ADC1");
view->setLabelClose("[ Selbsttest Beenden ]");
view->setCall(&stop_selftest);
view->repaint();
win_stack.push_back(view);
input(0);
}
void stop_selftest(int)
{
B15F& drv = B15F::getInstance();
drv.discard();
drv.delay_ms(B15F::WDT_TIMEOUT);
drv.reconnect();
drv.digitalWrite0(0);
drv.digitalWrite1(0);
B15F& drv = B15F::getInstance();
drv.discard();
drv.delay_ms(B15F::WDT_TIMEOUT);
drv.reconnect();
drv.digitalWrite0(0);
drv.digitalWrite1(0);
}
void show_selftest_info(int)
{
ViewInfo* view = new ViewInfo();
view->setTitle("Selbsttest");
view->setText("Bitte entfernen Sie jetzt alle Draehte von den Anschlussklemmen und bestaetigen\nmit Enter.");
view->setLabelClose("[ Weiter ]");
view->setCall(&start_selftest);
view->repaint();
win_stack.push_back(view);
input(0);
ViewInfo* view = new ViewInfo();
view->setTitle("Selbsttest");
view->setText("Bitte entfernen Sie jetzt alle Draehte von den Anschlussklemmen und bestaetigen\nmit Enter.");
view->setLabelClose("[ Weiter ]");
view->setCall(&start_selftest);
view->repaint();
win_stack.push_back(view);
input(0);
}

View file

@ -4,12 +4,12 @@ WINDOW* View::win = nullptr;
View::View()
{
if(!win)
{
B15F::abort("View::win not initialized, missing context");
}
getmaxyx(win, height, width); // init width and height
keypad(win, TRUE);
if(!win)
{
B15F::abort("View::win not initialized, missing context");
}
getmaxyx(win, height, width); // init width and height
keypad(win, TRUE);
}
View::~View()
@ -18,12 +18,12 @@ View::~View()
void View::setWinContext(WINDOW* win)
{
View::win = win;
View::win = win;
}
WINDOW* View::getWinContext()
{
return win;
return win;
}
// from: https://stackoverflow.com/a/37454181
@ -46,33 +46,33 @@ std::vector<std::string> View::str_split(const std::string& str, const std::stri
void View::setTitle(std::string title)
{
this->title = title;
this->title = title;
}
void View::repaint()
{
// get screen size
struct winsize size;
if (ioctl(0, TIOCGWINSZ, (char *) &size) < 0)
throw std::runtime_error("TIOCGWINSZ error");
start_x = floor((size.ws_col - width) / 2.);
start_y = floor((size.ws_row - height) / 2.);
curs_set(0); // hide cursor
mvwin(win, start_y, start_x);
clear();
wclear(win);
// generic draw
box(win, 0, 0);
int offset_x = (width - title.length()) / 2;
mvwprintw(win, 1, offset_x, "%s", title.c_str());
// specific draw
draw();
// get screen size
struct winsize size;
if (ioctl(0, TIOCGWINSZ, (char *) &size) < 0)
throw std::runtime_error("TIOCGWINSZ error");
refresh();
wrefresh(win);
start_x = floor((size.ws_col - width) / 2.);
start_y = floor((size.ws_row - height) / 2.);
curs_set(0); // hide cursor
mvwin(win, start_y, start_x);
clear();
wclear(win);
// generic draw
box(win, 0, 0);
int offset_x = (width - title.length()) / 2;
mvwprintw(win, 1, offset_x, "%s", title.c_str());
// specific draw
draw();
refresh();
wrefresh(win);
}

View file

@ -14,32 +14,34 @@
extern std::string ERR_MSG;
typedef std::function<void(int)> call_t;
/*! Base class for multiple views with the ncurses user interface. */
class View
{
public:
View(void);
virtual ~View(void);
static void setWinContext(WINDOW* win);
static WINDOW* getWinContext(void);
static std::vector<std::string> str_split(const std::string& str, const std::string delim);
virtual void setTitle(std::string title);
virtual void repaint(void);
virtual void draw(void) = 0;
virtual call_t keypress(int& key) = 0;
View(void);
virtual ~View(void);
static void setWinContext(WINDOW* win);
static WINDOW* getWinContext(void);
static std::vector<std::string> str_split(const std::string& str, const std::string delim);
virtual void setTitle(std::string title);
virtual void repaint(void);
virtual void draw(void) = 0;
virtual call_t keypress(int& key) = 0;
protected:
int width, height;
int start_x = 0, start_y = 0;
std::string title;
std::vector<call_t> calls;
static WINDOW* win;
constexpr static int KEY_ENT = 10;
int width, height;
int start_x = 0, start_y = 0;
std::string title;
std::vector<call_t> calls;
static WINDOW* win;
constexpr static int KEY_ENT = 10;
};
#endif // VIEW_H

View file

@ -2,62 +2,62 @@
ViewInfo::ViewInfo()
{
calls.push_back(nullptr);
calls.push_back(nullptr);
}
void ViewInfo::setText(std::string text)
{
this->text = text;
this->text = text;
}
void ViewInfo::setLabelClose(std::string label)
{
this->label_close = label;
this->label_close = label;
}
void ViewInfo::setCall(call_t call)
{
calls[0] = call;
calls[0] = call;
}
void ViewInfo::draw()
{
int li = 0;
for(std::string line : str_split(text, "\n"))
mvwprintw(win, text_offset_y + li++, text_offset_x, "%s", line.c_str());
close_offset_x = (width - label_close.length()) / 2;
close_offset_y = height - 2;
wattron(win, A_REVERSE);
mvwprintw(win, close_offset_y, close_offset_x, "%s", label_close.c_str());
wattroff(win, A_REVERSE);
int li = 0;
for(std::string line : str_split(text, "\n"))
mvwprintw(win, text_offset_y + li++, text_offset_x, "%s", line.c_str());
close_offset_x = (width - label_close.length()) / 2;
close_offset_y = height - 2;
wattron(win, A_REVERSE);
mvwprintw(win, close_offset_y, close_offset_x, "%s", label_close.c_str());
wattroff(win, A_REVERSE);
}
call_t ViewInfo::keypress(int& key)
{
switch(key)
{
case KEY_MOUSE:
{
// http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml
MEVENT event;
if(getmouse(&event) == OK && event.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED))
{
size_t column = start_x + close_offset_x;
size_t row = start_y + close_offset_y;
size_t mouse_x = event.x, mouse_y = event.y;
if(mouse_y == row && mouse_x >= column && mouse_x < column + label_close.length())
key = -1; // do return from view
}
break;
}
case KEY_ENT:
key = -1; // do return from view
break;
default:
break;
}
return calls[0];
switch(key)
{
case KEY_MOUSE:
{
// http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml
MEVENT event;
if(getmouse(&event) == OK && event.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED))
{
size_t column = start_x + close_offset_x;
size_t row = start_y + close_offset_y;
size_t mouse_x = event.x, mouse_y = event.y;
if(mouse_y == row && mouse_x >= column && mouse_x < column + label_close.length())
key = -1; // do return from view
}
break;
}
case KEY_ENT:
key = -1; // do return from view
break;
default:
break;
}
return calls[0];
}

View file

@ -3,23 +3,25 @@
#include "view.h"
/*! View for simple text message output. */
class ViewInfo : public View
{
public:
ViewInfo(void);
virtual void setText(std::string text);
virtual void setLabelClose(std::string label);;
virtual void setCall(call_t call);
virtual void draw(void) override;
virtual call_t keypress(int& key) override;
ViewInfo(void);
virtual void setText(std::string text);
virtual void setLabelClose(std::string label);;
virtual void setCall(call_t call);
virtual void draw(void) override;
virtual call_t keypress(int& key) override;
protected:
std::string text;
std::string label_close;
int close_offset_x = 0;
int close_offset_y = 0;
constexpr static int text_offset_x = 2;
constexpr static int text_offset_y = 3;
std::string text;
std::string label_close;
int close_offset_x = 0;
int close_offset_y = 0;
constexpr static int text_offset_x = 2;
constexpr static int text_offset_y = 3;
};
#endif // VIEW_INFO

View file

@ -1,139 +1,139 @@
#include "view_monitor.h"
ViewMonitor::ViewMonitor() : t_worker(&ViewMonitor::worker, this)
{
{
}
call_t ViewMonitor::keypress(int& key)
{
switch(key)
{
case KEY_MOUSE:
{
// http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml
MEVENT event;
bool hit = false;
if(getmouse(&event) == OK && event.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED))
{
size_t column = start_x + close_offset_x;
size_t row = start_y + close_offset_y;
size_t mouse_x = event.x, mouse_y = event.y;
if(mouse_y == row && mouse_x >= column && mouse_x < column + label_close.length())
hit = true;
}
if(!hit)
break;
// fall through to next case
[[fallthrough]];
}
case KEY_ENT:
run_worker = false;
key = -1; // do return from view
wclear(win);
wrefresh(win);
t_worker.join();
break;
default:
break;
}
return calls[0];
switch(key)
{
case KEY_MOUSE:
{
// http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml
MEVENT event;
bool hit = false;
if(getmouse(&event) == OK && event.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED))
{
size_t column = start_x + close_offset_x;
size_t row = start_y + close_offset_y;
size_t mouse_x = event.x, mouse_y = event.y;
if(mouse_y == row && mouse_x >= column && mouse_x < column + label_close.length())
hit = true;
}
if(!hit)
break;
// fall through to next case
[[fallthrough]];
}
case KEY_ENT:
run_worker = false;
key = -1; // do return from view
wclear(win);
wrefresh(win);
t_worker.join();
break;
default:
break;
}
return calls[0];
}
std::string ViewMonitor::fancyDigitalString(uint8_t& b)
{
std::stringstream str;
str << std::bitset<8>(b).to_string();
str << " ";
str << "0x" << std::setfill ('0') << std::setw(2) << std::hex << (int) b << std::dec;
return str.str();
std::stringstream str;
str << std::bitset<8>(b).to_string();
str << " ";
str << "0x" << std::setfill ('0') << std::setw(2) << std::hex << (int) b << std::dec;
return str.str();
}
std::string ViewMonitor::fancyAnalogString(uint16_t& v)
{
std::stringstream str;
double volt = round(v * 100.0 * 5.0 / 1023.0) / 100.0;
str << std::setfill ('0') << std::setw(4) << (int) v << " " << std::fixed << std::setprecision(2) << volt << " V ";
str << "[";
uint8_t p = round(v * 40.0 / 1023.0);
for(uint8_t i = 0; i < p; i++)
str << "X";
for(uint8_t i = 0; i < 40 - p; i++)
str << " ";
str << "]" << std::endl;
return str.str();
std::stringstream str;
double volt = round(v * 100.0 * 5.0 / 1023.0) / 100.0;
str << std::setfill ('0') << std::setw(4) << (int) v << " " << std::fixed << std::setprecision(2) << volt << " V ";
str << "[";
uint8_t p = round(v * 40.0 / 1023.0);
for(uint8_t i = 0; i < p; i++)
str << "X";
for(uint8_t i = 0; i < 40 - p; i++)
str << " ";
str << "]" << std::endl;
return str.str();
}
void ViewMonitor::worker()
{
B15F& drv = B15F::getInstance();
while(run_worker)
{
try
{
std::this_thread::sleep_for(std::chrono::milliseconds(100));
uint8_t be0 = drv.digitalRead0();
uint8_t be1 = drv.digitalRead1();
uint8_t dsw = drv.readDipSwitch();
uint16_t adc[8];
for(uint8_t i = 0; i < sizeof(adc) / sizeof(adc[0]); i++)
adc[i] = drv.analogRead(i);
std::stringstream str;
// hline
for(uint8_t i = 0; i < width - 2 * text_offset_x; i++)
if(i % 2 == 0)
str << "-";
else
str << " ";
str << std::endl;
str << "Digitale Enigaenge:" << std::endl;
str << "Binaere Eingabe 0: " << fancyDigitalString(be0) << std::endl;
str << "Binaere Eingabe 1: " << fancyDigitalString(be1) << std::endl;
str << "Dip Schalter (S7): " << fancyDigitalString(dsw) << std::endl;
// hline
for(uint8_t i = 0; i < width - 2 * text_offset_x; i++)
if(i % 2 == 0)
str << "-";
else
str << " ";
str << std::endl;
str << "Analoge Eingaenge:" << std::endl;
for(uint8_t i = 0; i < sizeof(adc) / sizeof(adc[0]); i++)
{
str << "Kanal " << std::to_string((int) i) << ": ";
str << fancyAnalogString(adc[i]) << std::endl;
}
text = str.str();
repaint();
}
catch(DriverException& ex)
{
std::cout << "DriverException: " << ex.what() << std::endl;
drv.delay_ms(1000);
}
catch(...)
{
try
{
drv.reconnect();
}
catch(...)
{
B15F::abort("yoho meine dudes");
return;
}
}
}
B15F& drv = B15F::getInstance();
while(run_worker)
{
try
{
std::this_thread::sleep_for(std::chrono::milliseconds(100));
uint8_t be0 = drv.digitalRead0();
uint8_t be1 = drv.digitalRead1();
uint8_t dsw = drv.readDipSwitch();
uint16_t adc[8];
for(uint8_t i = 0; i < sizeof(adc) / sizeof(adc[0]); i++)
adc[i] = drv.analogRead(i);
std::stringstream str;
// hline
for(uint8_t i = 0; i < width - 2 * text_offset_x; i++)
if(i % 2 == 0)
str << "-";
else
str << " ";
str << std::endl;
str << "Digitale Enigaenge:" << std::endl;
str << "Binaere Eingabe 0: " << fancyDigitalString(be0) << std::endl;
str << "Binaere Eingabe 1: " << fancyDigitalString(be1) << std::endl;
str << "Dip Schalter (S7): " << fancyDigitalString(dsw) << std::endl;
// hline
for(uint8_t i = 0; i < width - 2 * text_offset_x; i++)
if(i % 2 == 0)
str << "-";
else
str << " ";
str << std::endl;
str << "Analoge Eingaenge:" << std::endl;
for(uint8_t i = 0; i < sizeof(adc) / sizeof(adc[0]); i++)
{
str << "Kanal " << std::to_string((int) i) << ": ";
str << fancyAnalogString(adc[i]) << std::endl;
}
text = str.str();
repaint();
}
catch(DriverException& ex)
{
std::cout << "DriverException: " << ex.what() << std::endl;
drv.delay_ms(1000);
}
catch(...)
{
try
{
drv.reconnect();
}
catch(...)
{
B15F::abort("yoho meine dudes");
return;
}
}
}
}

View file

@ -8,22 +8,24 @@
#include "view_info.h"
#include "../drv/b15f.h"
/*! View to display all B15 inputs. */
class ViewMonitor : public ViewInfo
{
public:
ViewMonitor(void);
virtual call_t keypress(int& key) override;
ViewMonitor(void);
virtual call_t keypress(int& key) override;
private:
std::string fancyDigitalString(uint8_t& b);
std::string fancyAnalogString(uint16_t& v);
std::string fancyDigitalString(uint8_t& b);
std::string fancyAnalogString(uint16_t& v);
protected:
virtual void worker(void);
volatile bool run_worker = true;
std::thread t_worker;
virtual void worker(void);
volatile bool run_worker = true;
std::thread t_worker;
};
#endif // VIEW_MONITOR_H

View file

@ -2,120 +2,120 @@
void ViewPromt::draw()
{
curs_set(1); // show cursor
int li = text_offset_y;
int ci = 0;
for(std::string line : str_split(message + input, "\n"))
{
mvwprintw(win, ++li, text_offset_x, "%s", line.c_str());
ci = line.length() + text_offset_x;
}
button_offset_x = (width - label_cancel.length() - sep.length() - label_confirm.length()) / 2;
button_offset_y = height - text_offset_y;
if(selection == 0)
{
wattron(win, A_REVERSE);
mvwprintw(win, button_offset_y, button_offset_x, "%s", label_cancel.c_str());
wattroff(win, A_REVERSE);
mvwprintw(win, button_offset_y, button_offset_x + label_cancel.length(), "%s", sep.c_str());
mvwprintw(win, button_offset_y, button_offset_x + label_cancel.length() + sep.length(), "%s", label_confirm.c_str());
}
else
{
mvwprintw(win, button_offset_y, button_offset_x, "%s", label_cancel.c_str());
mvwprintw(win, button_offset_y, button_offset_x + label_cancel.length(), "%s", sep.c_str());
wattron(win, A_REVERSE);
mvwprintw(win, button_offset_y, button_offset_x + label_cancel.length() + sep.length(), "%s", label_confirm.c_str());
wattroff(win, A_REVERSE);
}
wmove(win, li, ci);
curs_set(1); // show cursor
int li = text_offset_y;
int ci = 0;
for(std::string line : str_split(message + input, "\n"))
{
mvwprintw(win, ++li, text_offset_x, "%s", line.c_str());
ci = line.length() + text_offset_x;
}
button_offset_x = (width - label_cancel.length() - sep.length() - label_confirm.length()) / 2;
button_offset_y = height - text_offset_y;
if(selection == 0)
{
wattron(win, A_REVERSE);
mvwprintw(win, button_offset_y, button_offset_x, "%s", label_cancel.c_str());
wattroff(win, A_REVERSE);
mvwprintw(win, button_offset_y, button_offset_x + label_cancel.length(), "%s", sep.c_str());
mvwprintw(win, button_offset_y, button_offset_x + label_cancel.length() + sep.length(), "%s", label_confirm.c_str());
}
else
{
mvwprintw(win, button_offset_y, button_offset_x, "%s", label_cancel.c_str());
mvwprintw(win, button_offset_y, button_offset_x + label_cancel.length(), "%s", sep.c_str());
wattron(win, A_REVERSE);
mvwprintw(win, button_offset_y, button_offset_x + label_cancel.length() + sep.length(), "%s", label_confirm.c_str());
wattroff(win, A_REVERSE);
}
wmove(win, li, ci);
}
void ViewPromt::setMessage(std::string message)
{
this->message = message;
this->message = message;
}
void ViewPromt::setConfirm(std::string name, std::function<void(int)> call)
{
label_confirm = name;
call_confirm = call;
label_confirm = name;
call_confirm = call;
}
void ViewPromt::setCancel(std::string name, bool cancelable)
{
label_cancel = name;
this->cancelable = cancelable;
label_cancel = name;
this->cancelable = cancelable;
}
std::string ViewPromt::getInput()
{
return input;
return input;
}
std::function<void(int)> ViewPromt::keypress(int& key)
{
std::function<void(int)> ret = nullptr;
switch(key)
{
case KEY_BACKSPACE:
if(input.length())
input.pop_back();
break;
case '\t':
case KEY_LEFT:
case KEY_RIGHT:
selection = (selection + 1 ) % 2;
break;
case KEY_MOUSE:
{
// http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml
MEVENT event;
bool hit = false;
if(getmouse(&event) == OK && event.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED))
{
size_t column_start = start_x + button_offset_x;
size_t row_start = start_y + button_offset_y;
size_t mouse_x = event.x, mouse_y = event.y;
if(mouse_y == row_start)
{
if(cancelable && mouse_x >= column_start && mouse_x < column_start + label_cancel.length())
{
if(selection == 0 || event.bstate & BUTTON1_DOUBLE_CLICKED)
hit = true;
selection = 0;
}
if(mouse_x >= column_start + label_cancel.length() + sep.length() && mouse_x < column_start + label_cancel.length() + sep.length() + label_confirm.length())
{
if(selection == 1 || event.bstate & BUTTON1_DOUBLE_CLICKED)
hit = true;
selection = 1;
}
}
}
if(!hit)
break;
// fall through to next case
[[fallthrough]];
}
case KEY_ENT:
if(selection == 0) // exit
key = -1; // do return from view
else
ret = call_confirm;
break;
default:
break;
}
if(key >= ' ' && key <= '~')
input += (char) key;
if(key != KEY_ENT)
{
std::function<void(int)> ret = nullptr;
switch(key)
{
case KEY_BACKSPACE:
if(input.length())
input.pop_back();
break;
case '\t':
case KEY_LEFT:
case KEY_RIGHT:
selection = (selection + 1 ) % 2;
break;
case KEY_MOUSE:
{
// http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml
MEVENT event;
bool hit = false;
if(getmouse(&event) == OK && event.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED))
{
size_t column_start = start_x + button_offset_x;
size_t row_start = start_y + button_offset_y;
size_t mouse_x = event.x, mouse_y = event.y;
if(mouse_y == row_start)
{
if(cancelable && mouse_x >= column_start && mouse_x < column_start + label_cancel.length())
{
if(selection == 0 || event.bstate & BUTTON1_DOUBLE_CLICKED)
hit = true;
selection = 0;
}
if(mouse_x >= column_start + label_cancel.length() + sep.length() && mouse_x < column_start + label_cancel.length() + sep.length() + label_confirm.length())
{
if(selection == 1 || event.bstate & BUTTON1_DOUBLE_CLICKED)
hit = true;
selection = 1;
}
}
}
if(!hit)
break;
// fall through to next case
[[fallthrough]];
}
case KEY_ENT:
if(selection == 0) // exit
key = -1; // do return from view
else
ret = call_confirm;
break;
default:
break;
}
if(key >= ' ' && key <= '~')
input += (char) key;
if(key != KEY_ENT)
repaint();
return ret;
return ret;
}

View file

@ -5,28 +5,30 @@
#include <string>
#include "view.h"
/*! View for basic user text input. */
class ViewPromt : public View
{
public:
virtual void draw(void) override;
virtual void setMessage(std::string message);
virtual void setConfirm(std::string name, call_t call);
virtual void setCancel(std::string name, bool cancelable);
virtual std::string getInput(void);
virtual call_t keypress(int& key) override;
virtual void draw(void) override;
virtual void setMessage(std::string message);
virtual void setConfirm(std::string name, call_t call);
virtual void setCancel(std::string name, bool cancelable);
virtual std::string getInput(void);
virtual call_t keypress(int& key) override;
protected:
size_t selection = 1;
std::string input;
std::string message = "Input";
std::string label_confirm = "[ OK ]";
std::string sep = " ";
std::string label_cancel = "[ Cancel ]";
call_t call_confirm = nullptr;
bool cancelable = true;
int button_offset_x = 0, button_offset_y = 0;
constexpr static int text_offset_x = 2;
constexpr static int text_offset_y = 2;
size_t selection = 1;
std::string input;
std::string message = "Input";
std::string label_confirm = "[ OK ]";
std::string sep = " ";
std::string label_cancel = "[ Cancel ]";
call_t call_confirm = nullptr;
bool cancelable = true;
int button_offset_x = 0, button_offset_y = 0;
constexpr static int text_offset_x = 2;
constexpr static int text_offset_y = 2;
};
#endif // VIEW_PROMT_H

View file

@ -2,75 +2,75 @@
void ViewSelection::draw()
{
//curs_set(0); // hide cursor
for(size_t i = 0; i < choices.size(); i++)
{
if(selection == i)
wattron(win, A_REVERSE);
mvwprintw(win, i + choice_offset_y, choice_offset_x, "%s", choices[i].c_str());
if(selection == i)
wattroff(win, A_REVERSE);
}
//curs_set(0); // hide cursor
for(size_t i = 0; i < choices.size(); i++)
{
if(selection == i)
wattron(win, A_REVERSE);
mvwprintw(win, i + choice_offset_y, choice_offset_x, "%s", choices[i].c_str());
if(selection == i)
wattroff(win, A_REVERSE);
}
}
void ViewSelection::addChoice(std::string name, call_t call)
{
choices.push_back(name);
calls.push_back(call);
choices.push_back(name);
calls.push_back(call);
}
call_t ViewSelection::keypress(int& key)
{
call_t ret = nullptr;
switch(key)
{
case KEY_UP:
do
selection = (selection - 1 + choices.size()) % choices.size();
while(!choices[selection].length() && choices.size());
break;
case '\t':
case KEY_DOWN:
do
selection = (selection + 1) % choices.size();
while(!choices[selection].length() && choices.size());
break;
case KEY_MOUSE:
{
// http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml
MEVENT event;
bool hit = false;
if(getmouse(&event) == OK && event.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED))
{
size_t column_start = start_x + choice_offset_x;
size_t row_start = start_y + choice_offset_y;
size_t mouse_x = event.x, mouse_y = event.y;
for(size_t i = 0; i < choices.size(); i++)
if(choices[i].length() && mouse_y == row_start + i && mouse_x >= column_start && mouse_x < column_start + choices[i].length())
{
if(selection == i || event.bstate & BUTTON1_DOUBLE_CLICKED)
hit = true;
selection = i;
}
}
if(!hit)
break;
// fall through to next case
[[fallthrough]];
}
case KEY_ENT:
if(selection == choices.size() - 1) // exit
key = -1; // do return from view
else
ret = calls[selection];
break;
default:
break;
}
repaint();
return ret;
call_t ret = nullptr;
switch(key)
{
case KEY_UP:
do
selection = (selection - 1 + choices.size()) % choices.size();
while(!choices[selection].length() && choices.size());
break;
case '\t':
case KEY_DOWN:
do
selection = (selection + 1) % choices.size();
while(!choices[selection].length() && choices.size());
break;
case KEY_MOUSE:
{
// http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml
MEVENT event;
bool hit = false;
if(getmouse(&event) == OK && event.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED))
{
size_t column_start = start_x + choice_offset_x;
size_t row_start = start_y + choice_offset_y;
size_t mouse_x = event.x, mouse_y = event.y;
for(size_t i = 0; i < choices.size(); i++)
if(choices[i].length() && mouse_y == row_start + i && mouse_x >= column_start && mouse_x < column_start + choices[i].length())
{
if(selection == i || event.bstate & BUTTON1_DOUBLE_CLICKED)
hit = true;
selection = i;
}
}
if(!hit)
break;
// fall through to next case
[[fallthrough]];
}
case KEY_ENT:
if(selection == choices.size() - 1) // exit
key = -1; // do return from view
else
ret = calls[selection];
break;
default:
break;
}
repaint();
return ret;
}

View file

@ -5,20 +5,22 @@
#include <string>
#include "view.h"
/*! View for user selection input. */
class ViewSelection : public View
{
public:
virtual void draw(void) override;
virtual void addChoice(std::string name, call_t call);
virtual call_t keypress(int& key) override;
virtual void draw(void) override;
virtual void addChoice(std::string name, call_t call);
virtual call_t keypress(int& key) override;
protected:
size_t selection = 0;
std::vector<std::string> choices;
constexpr static int choice_offset_x = 2;
constexpr static int choice_offset_y = 3;
size_t selection = 0;
std::vector<std::string> choices;
constexpr static int choice_offset_x = 2;
constexpr static int choice_offset_y = 3;
};
#endif // VIEW_SELECTION_H

1219
docs/atmegaiom1284p.h Normal file

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -85,7 +85,7 @@ $(function() {
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -74,9 +74,9 @@ $(function() {
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1">activateSelfTestMode</a>(void)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627">analogRead</a>(uint8_t channel)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#ab82a324426c3063318c6cafb3089ae02">analogSequence</a>(uint8_t channel_a, uint16_t *buffer_a, uint32_t offset_a, uint8_t channel_b, uint16_t *buffer_b, uint32_t offset_b, uint16_t start, int16_t delta, uint16_t count)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#a5c5583d591afdd3f9501856c6b0ba3e3">analogWrite0</a>(uint16_t)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#a63d67795879cdc0b035c9c970e7d6fc3">analogWrite1</a>(uint16_t)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>BAUDRATE</b> (defined in <a class="el" href="classB15F.html">B15F</a>)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3">analogWrite0</a>(uint16_t port)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#a7f1becceac744f5cd2ad529748fd836f">analogWrite1</a>(uint16_t port)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87">BAUDRATE</a></td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">delay_ms</a>(uint16_t ms)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(uint16_t us)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#ae0df6d423deeb2fd610968bd1c72060e">digitalRead0</a>(void)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
@ -87,21 +87,25 @@ $(function() {
<tr><td class="entry"><a class="el" href="classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a">exec</a>(std::string cmd)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#a4f01677e73d6d172a2c1cae9427a591b">getBoardInfo</a>(void)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">getInstance</a>(void)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MSG_FAIL</b> (defined in <a class="el" href="classB15F.html">B15F</a>)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>MSG_OK</b> (defined in <a class="el" href="classB15F.html">B15F</a>)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>PRE</b> (defined in <a class="el" href="classB15F.html">B15F</a>)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a">readDipSwitch</a>(void)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7">reconnect</a>(void)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>RECONNECT_TIMEOUT</b> (defined in <a class="el" href="classB15F.html">B15F</a>)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>RECONNECT_TRIES</b> (defined in <a class="el" href="classB15F.html">B15F</a>)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9">setAbortHandler</a>(errorhandler_t func)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#a9bd47da39928af6f51075bdc3fe73ddc">getRegister</a>(volatile uint8_t *adr)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#a77d1ecf24b406c9204665d3b09c36f1e">MSG_FAIL</a></td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a></td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">PRE</a></td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#ac6f6532bb9550a0632c28b98c157d0a1">pwmSetFrequency</a>(uint32_t freq)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#af9aad3c0db5d5a8b37219d713e1977ee">pwmSetValue</a>(uint8_t value)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a">readDipSwitch</a>(void)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7">reconnect</a>(void)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#a040951746fbfd632e12bd1ad14578816">RECONNECT_TIMEOUT</a></td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc">RECONNECT_TRIES</a></td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9">setAbortHandler</a>(errorhandler_t func)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#ab446ecffab28d4515dfade79a8efc93d">setRegister</a>(volatile uint8_t *adr, uint8_t val)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#af01983594f2af98ab2b1e514aa036a5d">testConnection</a>(void)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classB15F.html#a7b8a0e2a9156f7dcb05d097f23666a78">testIntConv</a>(void)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>WDT_TIMEOUT</b> (defined in <a class="el" href="classB15F.html">B15F</a>)</td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classB15F.html#a158d13bc84aed6430cdede1396384e06">WDT_TIMEOUT</a></td><td class="entry"><a class="el" href="classB15F.html">B15F</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -72,6 +72,8 @@ $(function() {
<div class="title">B15F Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="b15f_8h_source.html">b15f.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
@ -101,14 +103,22 @@ Public Member Functions</h2></td></tr>
<tr class="separator:afc76b612dd4faeee0ac02a66b65af5f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f858f21ea81d491b5031b3644a2239a"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a">readDipSwitch</a> (void)</td></tr>
<tr class="separator:a6f858f21ea81d491b5031b3644a2239a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c5583d591afdd3f9501856c6b0ba3e3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#a5c5583d591afdd3f9501856c6b0ba3e3">analogWrite0</a> (uint16_t)</td></tr>
<tr class="separator:a5c5583d591afdd3f9501856c6b0ba3e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63d67795879cdc0b035c9c970e7d6fc3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#a63d67795879cdc0b035c9c970e7d6fc3">analogWrite1</a> (uint16_t)</td></tr>
<tr class="separator:a63d67795879cdc0b035c9c970e7d6fc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc55fd590c7fa5c942d100cb60c4b0d3"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3">analogWrite0</a> (uint16_t port)</td></tr>
<tr class="separator:afc55fd590c7fa5c942d100cb60c4b0d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7f1becceac744f5cd2ad529748fd836f"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#a7f1becceac744f5cd2ad529748fd836f">analogWrite1</a> (uint16_t port)</td></tr>
<tr class="separator:a7f1becceac744f5cd2ad529748fd836f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0bd1f69751e2dc3c462db9213fc4627"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627">analogRead</a> (uint8_t channel)</td></tr>
<tr class="separator:ae0bd1f69751e2dc3c462db9213fc4627"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab82a324426c3063318c6cafb3089ae02"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#ab82a324426c3063318c6cafb3089ae02">analogSequence</a> (uint8_t channel_a, uint16_t *buffer_a, uint32_t offset_a, uint8_t channel_b, uint16_t *buffer_b, uint32_t offset_b, uint16_t start, int16_t delta, uint16_t count)</td></tr>
<tr class="separator:ab82a324426c3063318c6cafb3089ae02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac6f6532bb9550a0632c28b98c157d0a1"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#ac6f6532bb9550a0632c28b98c157d0a1">pwmSetFrequency</a> (uint32_t freq)</td></tr>
<tr class="separator:ac6f6532bb9550a0632c28b98c157d0a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9aad3c0db5d5a8b37219d713e1977ee"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#af9aad3c0db5d5a8b37219d713e1977ee">pwmSetValue</a> (uint8_t value)</td></tr>
<tr class="separator:af9aad3c0db5d5a8b37219d713e1977ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab446ecffab28d4515dfade79a8efc93d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#ab446ecffab28d4515dfade79a8efc93d">setRegister</a> (volatile uint8_t *adr, uint8_t val)</td></tr>
<tr class="separator:ab446ecffab28d4515dfade79a8efc93d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bd47da39928af6f51075bdc3fe73ddc"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#a9bd47da39928af6f51075bdc3fe73ddc">getRegister</a> (volatile uint8_t *adr)</td></tr>
<tr class="separator:a9bd47da39928af6f51075bdc3fe73ddc"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
@ -126,33 +136,41 @@ Static Public Member Functions</h2></td></tr>
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a3b0fc1f85954b2d9c145af4a3af5b1ec"><td class="memItemLeft" align="right" valign="top"><a id="a3b0fc1f85954b2d9c145af4a3af5b1ec"></a>
const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>PRE</b> = &quot;[B15F] &quot;</td></tr>
const std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">PRE</a> = &quot;[B15F] &quot;</td></tr>
<tr class="memdesc:a3b0fc1f85954b2d9c145af4a3af5b1ec"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classB15F.html">B15F</a> stdout prefix. <br /></td></tr>
<tr class="separator:a3b0fc1f85954b2d9c145af4a3af5b1ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:ab01299858f74a6cec598688562e0ad02"><td class="memItemLeft" align="right" valign="top"><a id="ab01299858f74a6cec598688562e0ad02"></a>
constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>MSG_OK</b> = 0xFF</td></tr>
constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a> = 0xFF</td></tr>
<tr class="memdesc:ab01299858f74a6cec598688562e0ad02"><td class="mdescLeft">&#160;</td><td class="mdescRight">Value to acknowledge a received command. <br /></td></tr>
<tr class="separator:ab01299858f74a6cec598688562e0ad02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77d1ecf24b406c9204665d3b09c36f1e"><td class="memItemLeft" align="right" valign="top"><a id="a77d1ecf24b406c9204665d3b09c36f1e"></a>
constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>MSG_FAIL</b> = 0xFE</td></tr>
constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#a77d1ecf24b406c9204665d3b09c36f1e">MSG_FAIL</a> = 0xFE</td></tr>
<tr class="memdesc:a77d1ecf24b406c9204665d3b09c36f1e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Value to reject a received command. <br /></td></tr>
<tr class="separator:a77d1ecf24b406c9204665d3b09c36f1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a040951746fbfd632e12bd1ad14578816"><td class="memItemLeft" align="right" valign="top"><a id="a040951746fbfd632e12bd1ad14578816"></a>
constexpr static uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>RECONNECT_TIMEOUT</b> = 64</td></tr>
constexpr static uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#a040951746fbfd632e12bd1ad14578816">RECONNECT_TIMEOUT</a> = 64</td></tr>
<tr class="memdesc:a040951746fbfd632e12bd1ad14578816"><td class="mdescLeft">&#160;</td><td class="mdescRight">Time in ms after which a reconnect attempt aborts. <br /></td></tr>
<tr class="separator:a040951746fbfd632e12bd1ad14578816"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a158d13bc84aed6430cdede1396384e06"><td class="memItemLeft" align="right" valign="top"><a id="a158d13bc84aed6430cdede1396384e06"></a>
constexpr static uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>WDT_TIMEOUT</b> = 15</td></tr>
constexpr static uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#a158d13bc84aed6430cdede1396384e06">WDT_TIMEOUT</a> = 15</td></tr>
<tr class="memdesc:a158d13bc84aed6430cdede1396384e06"><td class="mdescLeft">&#160;</td><td class="mdescRight">Time in ms after which the watch dog timer resets the MCU. <br /></td></tr>
<tr class="separator:a158d13bc84aed6430cdede1396384e06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c4895bdbcd71ff6743becf97985c2dc"><td class="memItemLeft" align="right" valign="top"><a id="a6c4895bdbcd71ff6743becf97985c2dc"></a>
constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>RECONNECT_TRIES</b> = 3</td></tr>
constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc">RECONNECT_TRIES</a> = 3</td></tr>
<tr class="memdesc:a6c4895bdbcd71ff6743becf97985c2dc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximum count of reconnect attempts after which the driver stops. <br /></td></tr>
<tr class="separator:a6c4895bdbcd71ff6743becf97985c2dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d548d6861cfc69753161bf9cda14f87"><td class="memItemLeft" align="right" valign="top"><a id="a7d548d6861cfc69753161bf9cda14f87"></a>
constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>BAUDRATE</b> = 57600</td></tr>
constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87">BAUDRATE</a> = 57600</td></tr>
<tr class="memdesc:a7d548d6861cfc69753161bf9cda14f87"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classUSART.html">USART</a> baudrate for communication with the MCU. <br /></td></tr>
<tr class="separator:a7d548d6861cfc69753161bf9cda14f87"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="b15f_8h_source.html#l00024">24</a> of file <a class="el" href="b15f_8h_source.html">b15f.h</a>.</p>
<div class="textblock"><p>main driver class </p>
<p class="definition">Definition at line <a class="el" href="b15f_8h_source.html#l00031">31</a> of file <a class="el" href="b15f_8h_source.html">b15f.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ac962a6a49bddd0e261a8c7d3aded23f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac962a6a49bddd0e261a8c7d3aded23f8">&#9670;&nbsp;</a></span>abort() <span class="overload">[1/2]</span></h2>
@ -184,7 +202,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00327">327</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00473">473</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -218,7 +236,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00322">322</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00467">467</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -244,7 +262,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00144">144</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00166">166</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -276,7 +294,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00219">219</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00279">279</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -368,12 +386,12 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00241">241</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00302">302</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
<a id="a5c5583d591afdd3f9501856c6b0ba3e3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5c5583d591afdd3f9501856c6b0ba3e3">&#9670;&nbsp;</a></span>analogWrite0()</h2>
<a id="afc55fd590c7fa5c942d100cb60c4b0d3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc55fd590c7fa5c942d100cb60c4b0d3">&#9670;&nbsp;</a></span>analogWrite0()</h2>
<div class="memitem">
<div class="memproto">
@ -382,7 +400,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
<td class="memname">bool B15F::analogWrite0 </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td class="paramname"><em>port</em></td><td>)</td>
<td></td>
</tr>
</table>
@ -400,12 +418,12 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00199">199</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00249">249</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
<a id="a63d67795879cdc0b035c9c970e7d6fc3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63d67795879cdc0b035c9c970e7d6fc3">&#9670;&nbsp;</a></span>analogWrite1()</h2>
<a id="a7f1becceac744f5cd2ad529748fd836f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f1becceac744f5cd2ad529748fd836f">&#9670;&nbsp;</a></span>analogWrite1()</h2>
<div class="memitem">
<div class="memproto">
@ -414,7 +432,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
<td class="memname">bool B15F::analogWrite1 </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td class="paramname"><em>port</em></td><td>)</td>
<td></td>
</tr>
</table>
@ -432,7 +450,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00209">209</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00264">264</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -458,7 +476,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00290">290</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00432">432</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -484,7 +502,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00295">295</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00437">437</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -511,7 +529,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00172">172</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00207">207</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -538,7 +556,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00181">181</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00221">221</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -570,7 +588,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00152">152</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00179">179</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -602,7 +620,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00162">162</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00193">193</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -662,7 +680,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00309">309</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00451">451</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -688,7 +706,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00118">118</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00134">134</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -722,7 +740,104 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00300">300</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00442">442</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
<a id="a9bd47da39928af6f51075bdc3fe73ddc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9bd47da39928af6f51075bdc3fe73ddc">&#9670;&nbsp;</a></span>getRegister()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t B15F::getRegister </td>
<td>(</td>
<td class="paramtype">volatile uint8_t *&#160;</td>
<td class="paramname"><em>adr</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Liefert den Wert eines MCU Registers. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">adr</td><td>Speicheradresse des Registers </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classDriverException.html">DriverException</a></td><td></td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00414">414</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
<a id="ac6f6532bb9550a0632c28b98c157d0a1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac6f6532bb9550a0632c28b98c157d0a1">&#9670;&nbsp;</a></span>pwmSetFrequency()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t B15F::pwmSetFrequency </td>
<td>(</td>
<td class="paramtype">uint32_t&#160;</td>
<td class="paramname"><em>freq</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Setzt die Register so, dass näherungsweise die gewünschte Frequenz erzeugt wird. Ist freq == 0 wird PWM deaktiviert. Standardfrequenz: 31300 (empfohlen, da dann TOP == 255) </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">freq</td><td>PWM Frequenz </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Top Wert des PWM Value für die gesetzte Frequenz </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classDriverException.html">DriverException</a></td><td></td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00359">359</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
<a id="af9aad3c0db5d5a8b37219d713e1977ee"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9aad3c0db5d5a8b37219d713e1977ee">&#9670;&nbsp;</a></span>pwmSetValue()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool B15F::pwmSetValue </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>value</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Setzt den PWM Wert. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>PWM Wert [0..0xFF] </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classDriverException.html">DriverException</a></td><td></td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00379">379</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -749,7 +864,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00190">190</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00235">235</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -809,7 +924,50 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00339">339</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00485">485</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
<a id="ab446ecffab28d4515dfade79a8efc93d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab446ecffab28d4515dfade79a8efc93d">&#9670;&nbsp;</a></span>setRegister()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">bool B15F::setRegister </td>
<td>(</td>
<td class="paramtype">volatile uint8_t *&#160;</td>
<td class="paramname"><em>adr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>val</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Setzt direkt den Wert eines MCU Registers. <em>Wichtig:</em> bei einer falschen Adresse kann das Board 15 ernsthaften Schaden nehmen! </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">adr</td><td>Speicheradresse des Registers </td></tr>
<tr><td class="paramname">val</td><td>Neuer Wert für das Register </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classDriverException.html">DriverException</a></td><td></td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00396">396</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -835,7 +993,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00090">90</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00095">95</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -861,7 +1019,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00105">105</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00114">114</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p>
</div>
</div>
@ -872,7 +1030,7 @@ constexpr static uint32_t&#160;</td><td class="memItemRight" valign="bottom"><b>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -69,14 +69,14 @@ $(function() {
<p>This is the complete list of members for <a class="el" href="classDot.html">Dot</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Dot</b>(uint16_t x, uint16_t y, uint8_t curve) (defined in <a class="el" href="classDot.html">Dot</a>)</td><td class="entry"><a class="el" href="classDot.html">Dot</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>getCurve</b>(void) const (defined in <a class="el" href="classDot.html">Dot</a>)</td><td class="entry"><a class="el" href="classDot.html">Dot</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getX</b>(void) const (defined in <a class="el" href="classDot.html">Dot</a>)</td><td class="entry"><a class="el" href="classDot.html">Dot</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>getY</b>(void) const (defined in <a class="el" href="classDot.html">Dot</a>)</td><td class="entry"><a class="el" href="classDot.html">Dot</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDot.html#ad975f119c0627a928790b3cd5ca6da05">Dot</a>(uint16_t x, uint16_t y, uint8_t curve)</td><td class="entry"><a class="el" href="classDot.html">Dot</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classDot.html#ad0ae7dc1a9be3d8d985affc089b34396">getCurve</a>(void) const</td><td class="entry"><a class="el" href="classDot.html">Dot</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classDot.html#a029f0cc99c474122b77a708a317e7f77">getX</a>(void) const</td><td class="entry"><a class="el" href="classDot.html">Dot</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classDot.html#a8fcb987e6308d8184d1a2c8692227e58">getY</a>(void) const</td><td class="entry"><a class="el" href="classDot.html">Dot</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -69,33 +69,134 @@ $(function() {
<div class="title">Dot Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="dot_8h_source.html">dot.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad975f119c0627a928790b3cd5ca6da05"><td class="memItemLeft" align="right" valign="top"><a id="ad975f119c0627a928790b3cd5ca6da05"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>Dot</b> (uint16_t x, uint16_t y, uint8_t curve)</td></tr>
<tr class="memitem:ad975f119c0627a928790b3cd5ca6da05"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDot.html#ad975f119c0627a928790b3cd5ca6da05">Dot</a> (uint16_t x, uint16_t y, uint8_t curve)</td></tr>
<tr class="separator:ad975f119c0627a928790b3cd5ca6da05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a029f0cc99c474122b77a708a317e7f77"><td class="memItemLeft" align="right" valign="top"><a id="a029f0cc99c474122b77a708a317e7f77"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>getX</b> (void) const</td></tr>
<tr class="memitem:a029f0cc99c474122b77a708a317e7f77"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDot.html#a029f0cc99c474122b77a708a317e7f77">getX</a> (void) const</td></tr>
<tr class="separator:a029f0cc99c474122b77a708a317e7f77"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8fcb987e6308d8184d1a2c8692227e58"><td class="memItemLeft" align="right" valign="top"><a id="a8fcb987e6308d8184d1a2c8692227e58"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>getY</b> (void) const</td></tr>
<tr class="memitem:a8fcb987e6308d8184d1a2c8692227e58"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDot.html#a8fcb987e6308d8184d1a2c8692227e58">getY</a> (void) const</td></tr>
<tr class="separator:a8fcb987e6308d8184d1a2c8692227e58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad0ae7dc1a9be3d8d985affc089b34396"><td class="memItemLeft" align="right" valign="top"><a id="ad0ae7dc1a9be3d8d985affc089b34396"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>getCurve</b> (void) const</td></tr>
<tr class="memitem:ad0ae7dc1a9be3d8d985affc089b34396"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classDot.html#ad0ae7dc1a9be3d8d985affc089b34396">getCurve</a> (void) const</td></tr>
<tr class="separator:ad0ae7dc1a9be3d8d985affc089b34396"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="dot_8h_source.html#l00007">7</a> of file <a class="el" href="dot_8h_source.html">dot.h</a>.</p>
</div><hr/>The documentation for this class was generated from the following files:<ul>
<div class="textblock"><p>Immutable dot class with x and y coordinate and curve index. Dots with the same curve index get the same color by plotty. </p>
<p class="definition">Definition at line <a class="el" href="dot_8h_source.html#l00012">12</a> of file <a class="el" href="dot_8h_source.html">dot.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="ad975f119c0627a928790b3cd5ca6da05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad975f119c0627a928790b3cd5ca6da05">&#9670;&nbsp;</a></span>Dot()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">Dot::Dot </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>curve</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor with x and y coordinate and curve index. </p>
<p class="definition">Definition at line <a class="el" href="dot_8cpp_source.html#l00003">3</a> of file <a class="el" href="dot_8cpp_source.html">dot.cpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ad0ae7dc1a9be3d8d985affc089b34396"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad0ae7dc1a9be3d8d985affc089b34396">&#9670;&nbsp;</a></span>getCurve()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t Dot::getCurve </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the curve index. </p>
<p class="definition">Definition at line <a class="el" href="dot_8cpp_source.html#l00019">19</a> of file <a class="el" href="dot_8cpp_source.html">dot.cpp</a>.</p>
</div>
</div>
<a id="a029f0cc99c474122b77a708a317e7f77"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a029f0cc99c474122b77a708a317e7f77">&#9670;&nbsp;</a></span>getX()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t Dot::getX </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the x coordinate. </p>
<p class="definition">Definition at line <a class="el" href="dot_8cpp_source.html#l00009">9</a> of file <a class="el" href="dot_8cpp_source.html">dot.cpp</a>.</p>
</div>
</div>
<a id="a8fcb987e6308d8184d1a2c8692227e58"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8fcb987e6308d8184d1a2c8692227e58">&#9670;&nbsp;</a></span>getY()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t Dot::getY </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the y coordinate. </p>
<p class="definition">Definition at line <a class="el" href="dot_8cpp_source.html#l00014">14</a> of file <a class="el" href="dot_8cpp_source.html">dot.cpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>drv/<a class="el" href="dot_8h_source.html">dot.h</a></li>
<li>drv/<a class="el" href="dot_8cpp_source.html">dot.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -77,7 +77,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -70,9 +70,13 @@ $(function() {
<div class="title">DriverException Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for DriverException:</div>
<div class="dyncontent">
<p><code>#include &lt;<a class="el" href="driverexception_8h_source.html">driverexception.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for DriverException:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center">
<img src="classDriverException.png" alt=""/>
</div></div>
@ -96,15 +100,16 @@ std::string&#160;</td><td class="memItemRight" valign="bottom"><b>msg_</b></td><
<tr class="separator:ab8777afe3f5aed2e66f2b2fcb480a651"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="driverexception_8h_source.html#l00008">8</a> of file <a class="el" href="driverexception_8h_source.html">driverexception.h</a>.</p>
<div class="textblock"><p>Exception driver problems, for instance incompatible firmware version. </p>
<p class="definition">Definition at line <a class="el" href="driverexception_8h_source.html#l00010">10</a> of file <a class="el" href="driverexception_8h_source.html">driverexception.h</a>.</p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<li>drv/<a class="el" href="driverexception_8h_source.html">driverexception.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -69,38 +69,38 @@ $(function() {
<p>This is the complete list of members for <a class="el" href="classPlottyFile.html">PlottyFile</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>addDot</b>(Dot &amp;dot) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>addDot</b>(Dot dot) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDescPara</b>(void) const (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>getDescX</b>(void) const (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getDescY</b>(void) const (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>getFunctionType</b>(void) const (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getParaFirstCurve</b>(void) const (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>getParaStepWidth</b>(void) const (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getQuadrant</b>(void) const (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>getRefX</b>(void) const (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getRefY</b>(void) const (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>getUnitPara</b>(void) const (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getUnitX</b>(void) const (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>getUnitY</b>(void) const (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setDescPara</b>(std::string) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>setDescX</b>(std::string) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setDescY</b>(std::string) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>setFunctionType</b>(FunctionType) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setParaFirstCurve</b>(uint16_t) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>setParaStepWidth</b>(uint16_t) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setQuadrant</b>(uint8_t) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>setRefX</b>(uint16_t) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setRefY</b>(uint16_t) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>setUnitPara</b>(std::string) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>setUnitX</b>(std::string) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>setUnitY</b>(std::string) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>startPlotty</b>(std::string filename) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>writeToFile</b>(std::string filename) (defined in <a class="el" href="classPlottyFile.html">PlottyFile</a>)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#ae091e6eaaca16302f17572ac7dec6f7c">addDot</a>(Dot &amp;dot)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#a80e4b45219b4e9571992edfc28a28568">addDot</a>(Dot dot)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#a536967daae3b382a5d6575f55450e198">getDescPara</a>(void) const</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#a9cf7baa569be308c2cf6e07cadded09d">getDescX</a>(void) const</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#ab4a847fd71a804182f211233e194df45">getDescY</a>(void) const</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#a88bb7d8350ed5fbc7a40e8d903c94bdb">getFunctionType</a>(void) const</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#a40828c93d66fe80166c4f603d5bdfa48">getParaFirstCurve</a>(void) const</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#a9da23f2bb8e6eb1837fc992ffd4057db">getParaStepWidth</a>(void) const</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#a54e94e80061a27614f2d4d63697d3376">getQuadrant</a>(void) const</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#a7dd84b9f0826f3220fc6b5a4f1ce9890">getRefX</a>(void) const</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#ae6650c61a3b1a610ce716253418bd7f2">getRefY</a>(void) const</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#abcda4139adf8c5ab8a93b13b84ac097c">getUnitPara</a>(void) const</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#af952ac5e2c40896acaf6a86063874fe3">getUnitX</a>(void) const</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#a746b96036872dbece204e9739f3413b6">getUnitY</a>(void) const</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#a431904143c3c1164a2e8b8cfec3c77ab">setDescPara</a>(std::string desc_para)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#aa0449c290265d55d6223b19cf0a88b0a">setDescX</a>(std::string desc_x)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#a38a3a4dfc76bc70523727584bf01d590">setDescY</a>(std::string desc_y)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#a4e5ab1ebb012a5cc1a3d6458a4cd512f">setFunctionType</a>(FunctionType function_type)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#aa676414793becb975506f48d6e949dd0">setParaFirstCurve</a>(uint16_t para_first)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#a6caebd31e04e2e7081cc007047350355">setParaStepWidth</a>(uint16_t para_stepwidth)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#a1953ee0d9a87b7353c16139584e9c2ae">setQuadrant</a>(uint8_t quadrant)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#a80c2c2e97a454566f9c1f2c51e1d7f3e">setRefX</a>(uint16_t ref_x)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#a3a371228ddcc007e97eebe7cc04dffc2">setRefY</a>(uint16_t ref_y)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#abbac84109a1e0958a4ca5c270fac0986">setUnitPara</a>(std::string unit_para)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#ab8d35a841ca9c325fca671cf34e03527">setUnitX</a>(std::string unit_x)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#abb18c814f435926f741f7ceb310f3059">setUnitY</a>(std::string unit_y)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classPlottyFile.html#a08a115ef10458cadfe76077d623313df">startPlotty</a>(std::string filename)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classPlottyFile.html#a82c348e7fade2edcbc907e7c2bc2e305">writeToFile</a>(std::string filename)</td><td class="entry"><a class="el" href="classPlottyFile.html">PlottyFile</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -69,105 +69,749 @@ $(function() {
<div class="title">PlottyFile Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="plottyfile_8h_source.html">plottyfile.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ae091e6eaaca16302f17572ac7dec6f7c"><td class="memItemLeft" align="right" valign="top"><a id="ae091e6eaaca16302f17572ac7dec6f7c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>addDot</b> (<a class="el" href="classDot.html">Dot</a> &amp;dot)</td></tr>
<tr class="memitem:ae091e6eaaca16302f17572ac7dec6f7c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#ae091e6eaaca16302f17572ac7dec6f7c">addDot</a> (<a class="el" href="classDot.html">Dot</a> &amp;dot)</td></tr>
<tr class="separator:ae091e6eaaca16302f17572ac7dec6f7c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80e4b45219b4e9571992edfc28a28568"><td class="memItemLeft" align="right" valign="top"><a id="a80e4b45219b4e9571992edfc28a28568"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>addDot</b> (<a class="el" href="classDot.html">Dot</a> dot)</td></tr>
<tr class="memitem:a80e4b45219b4e9571992edfc28a28568"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a80e4b45219b4e9571992edfc28a28568">addDot</a> (<a class="el" href="classDot.html">Dot</a> dot)</td></tr>
<tr class="separator:a80e4b45219b4e9571992edfc28a28568"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a189d8cfd0ae81a62ecf620279e07b966"><td class="memItemLeft" align="right" valign="top"><a id="a189d8cfd0ae81a62ecf620279e07b966"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setFunctionType</b> (FunctionType)</td></tr>
<tr class="separator:a189d8cfd0ae81a62ecf620279e07b966"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7cc60f268d34bbb5d672a4171c75604"><td class="memItemLeft" align="right" valign="top"><a id="ad7cc60f268d34bbb5d672a4171c75604"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setQuadrant</b> (uint8_t)</td></tr>
<tr class="separator:ad7cc60f268d34bbb5d672a4171c75604"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc019b323200923c2f02f9156fd29e6a"><td class="memItemLeft" align="right" valign="top"><a id="afc019b323200923c2f02f9156fd29e6a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setRefX</b> (uint16_t)</td></tr>
<tr class="separator:afc019b323200923c2f02f9156fd29e6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aff7a9b1fa247588e1740e719ea19222f"><td class="memItemLeft" align="right" valign="top"><a id="aff7a9b1fa247588e1740e719ea19222f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setRefY</b> (uint16_t)</td></tr>
<tr class="separator:aff7a9b1fa247588e1740e719ea19222f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae24cfd5c953e7726f6140a65c989a635"><td class="memItemLeft" align="right" valign="top"><a id="ae24cfd5c953e7726f6140a65c989a635"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setParaFirstCurve</b> (uint16_t)</td></tr>
<tr class="separator:ae24cfd5c953e7726f6140a65c989a635"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5bba6acb78ae3fbbf35375c063690b6e"><td class="memItemLeft" align="right" valign="top"><a id="a5bba6acb78ae3fbbf35375c063690b6e"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setParaStepWidth</b> (uint16_t)</td></tr>
<tr class="separator:a5bba6acb78ae3fbbf35375c063690b6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a040a05b4f606c7bf904be149c039452f"><td class="memItemLeft" align="right" valign="top"><a id="a040a05b4f606c7bf904be149c039452f"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setUnitX</b> (std::string)</td></tr>
<tr class="separator:a040a05b4f606c7bf904be149c039452f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada0b074e2248b1a710d5df33ebfbc8d1"><td class="memItemLeft" align="right" valign="top"><a id="ada0b074e2248b1a710d5df33ebfbc8d1"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setDescX</b> (std::string)</td></tr>
<tr class="separator:ada0b074e2248b1a710d5df33ebfbc8d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b41356b1d3fac9f864785f70cbf9c57"><td class="memItemLeft" align="right" valign="top"><a id="a7b41356b1d3fac9f864785f70cbf9c57"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setUnitY</b> (std::string)</td></tr>
<tr class="separator:a7b41356b1d3fac9f864785f70cbf9c57"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9249d341c81f6c3b8dd02ba2459e6507"><td class="memItemLeft" align="right" valign="top"><a id="a9249d341c81f6c3b8dd02ba2459e6507"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setDescY</b> (std::string)</td></tr>
<tr class="separator:a9249d341c81f6c3b8dd02ba2459e6507"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35bf02fb23f01ba0a1c3f480b69ed46d"><td class="memItemLeft" align="right" valign="top"><a id="a35bf02fb23f01ba0a1c3f480b69ed46d"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setUnitPara</b> (std::string)</td></tr>
<tr class="separator:a35bf02fb23f01ba0a1c3f480b69ed46d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af617e3a349f18368e216c977da4017bc"><td class="memItemLeft" align="right" valign="top"><a id="af617e3a349f18368e216c977da4017bc"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>setDescPara</b> (std::string)</td></tr>
<tr class="separator:af617e3a349f18368e216c977da4017bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88bb7d8350ed5fbc7a40e8d903c94bdb"><td class="memItemLeft" align="right" valign="top"><a id="a88bb7d8350ed5fbc7a40e8d903c94bdb"></a>
FunctionType&#160;</td><td class="memItemRight" valign="bottom"><b>getFunctionType</b> (void) const</td></tr>
<tr class="memitem:a4e5ab1ebb012a5cc1a3d6458a4cd512f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a4e5ab1ebb012a5cc1a3d6458a4cd512f">setFunctionType</a> (FunctionType function_type)</td></tr>
<tr class="separator:a4e5ab1ebb012a5cc1a3d6458a4cd512f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1953ee0d9a87b7353c16139584e9c2ae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a1953ee0d9a87b7353c16139584e9c2ae">setQuadrant</a> (uint8_t quadrant)</td></tr>
<tr class="separator:a1953ee0d9a87b7353c16139584e9c2ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a80c2c2e97a454566f9c1f2c51e1d7f3e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a80c2c2e97a454566f9c1f2c51e1d7f3e">setRefX</a> (uint16_t ref_x)</td></tr>
<tr class="separator:a80c2c2e97a454566f9c1f2c51e1d7f3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3a371228ddcc007e97eebe7cc04dffc2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a3a371228ddcc007e97eebe7cc04dffc2">setRefY</a> (uint16_t ref_y)</td></tr>
<tr class="separator:a3a371228ddcc007e97eebe7cc04dffc2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa676414793becb975506f48d6e949dd0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#aa676414793becb975506f48d6e949dd0">setParaFirstCurve</a> (uint16_t para_first)</td></tr>
<tr class="separator:aa676414793becb975506f48d6e949dd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6caebd31e04e2e7081cc007047350355"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a6caebd31e04e2e7081cc007047350355">setParaStepWidth</a> (uint16_t para_stepwidth)</td></tr>
<tr class="separator:a6caebd31e04e2e7081cc007047350355"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8d35a841ca9c325fca671cf34e03527"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#ab8d35a841ca9c325fca671cf34e03527">setUnitX</a> (std::string unit_x)</td></tr>
<tr class="separator:ab8d35a841ca9c325fca671cf34e03527"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0449c290265d55d6223b19cf0a88b0a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#aa0449c290265d55d6223b19cf0a88b0a">setDescX</a> (std::string desc_x)</td></tr>
<tr class="separator:aa0449c290265d55d6223b19cf0a88b0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb18c814f435926f741f7ceb310f3059"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#abb18c814f435926f741f7ceb310f3059">setUnitY</a> (std::string unit_y)</td></tr>
<tr class="separator:abb18c814f435926f741f7ceb310f3059"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38a3a4dfc76bc70523727584bf01d590"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a38a3a4dfc76bc70523727584bf01d590">setDescY</a> (std::string desc_y)</td></tr>
<tr class="separator:a38a3a4dfc76bc70523727584bf01d590"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbac84109a1e0958a4ca5c270fac0986"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#abbac84109a1e0958a4ca5c270fac0986">setUnitPara</a> (std::string unit_para)</td></tr>
<tr class="separator:abbac84109a1e0958a4ca5c270fac0986"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a431904143c3c1164a2e8b8cfec3c77ab"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a431904143c3c1164a2e8b8cfec3c77ab">setDescPara</a> (std::string desc_para)</td></tr>
<tr class="separator:a431904143c3c1164a2e8b8cfec3c77ab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88bb7d8350ed5fbc7a40e8d903c94bdb"><td class="memItemLeft" align="right" valign="top">FunctionType&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a88bb7d8350ed5fbc7a40e8d903c94bdb">getFunctionType</a> (void) const</td></tr>
<tr class="separator:a88bb7d8350ed5fbc7a40e8d903c94bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a54e94e80061a27614f2d4d63697d3376"><td class="memItemLeft" align="right" valign="top"><a id="a54e94e80061a27614f2d4d63697d3376"></a>
uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>getQuadrant</b> (void) const</td></tr>
<tr class="memitem:a54e94e80061a27614f2d4d63697d3376"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a54e94e80061a27614f2d4d63697d3376">getQuadrant</a> (void) const</td></tr>
<tr class="separator:a54e94e80061a27614f2d4d63697d3376"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7dd84b9f0826f3220fc6b5a4f1ce9890"><td class="memItemLeft" align="right" valign="top"><a id="a7dd84b9f0826f3220fc6b5a4f1ce9890"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>getRefX</b> (void) const</td></tr>
<tr class="memitem:a7dd84b9f0826f3220fc6b5a4f1ce9890"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a7dd84b9f0826f3220fc6b5a4f1ce9890">getRefX</a> (void) const</td></tr>
<tr class="separator:a7dd84b9f0826f3220fc6b5a4f1ce9890"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6650c61a3b1a610ce716253418bd7f2"><td class="memItemLeft" align="right" valign="top"><a id="ae6650c61a3b1a610ce716253418bd7f2"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>getRefY</b> (void) const</td></tr>
<tr class="memitem:ae6650c61a3b1a610ce716253418bd7f2"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#ae6650c61a3b1a610ce716253418bd7f2">getRefY</a> (void) const</td></tr>
<tr class="separator:ae6650c61a3b1a610ce716253418bd7f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a40828c93d66fe80166c4f603d5bdfa48"><td class="memItemLeft" align="right" valign="top"><a id="a40828c93d66fe80166c4f603d5bdfa48"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>getParaFirstCurve</b> (void) const</td></tr>
<tr class="memitem:a40828c93d66fe80166c4f603d5bdfa48"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a40828c93d66fe80166c4f603d5bdfa48">getParaFirstCurve</a> (void) const</td></tr>
<tr class="separator:a40828c93d66fe80166c4f603d5bdfa48"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9da23f2bb8e6eb1837fc992ffd4057db"><td class="memItemLeft" align="right" valign="top"><a id="a9da23f2bb8e6eb1837fc992ffd4057db"></a>
uint16_t&#160;</td><td class="memItemRight" valign="bottom"><b>getParaStepWidth</b> (void) const</td></tr>
<tr class="memitem:a9da23f2bb8e6eb1837fc992ffd4057db"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a9da23f2bb8e6eb1837fc992ffd4057db">getParaStepWidth</a> (void) const</td></tr>
<tr class="separator:a9da23f2bb8e6eb1837fc992ffd4057db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af952ac5e2c40896acaf6a86063874fe3"><td class="memItemLeft" align="right" valign="top"><a id="af952ac5e2c40896acaf6a86063874fe3"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>getUnitX</b> (void) const</td></tr>
<tr class="memitem:af952ac5e2c40896acaf6a86063874fe3"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#af952ac5e2c40896acaf6a86063874fe3">getUnitX</a> (void) const</td></tr>
<tr class="separator:af952ac5e2c40896acaf6a86063874fe3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9cf7baa569be308c2cf6e07cadded09d"><td class="memItemLeft" align="right" valign="top"><a id="a9cf7baa569be308c2cf6e07cadded09d"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>getDescX</b> (void) const</td></tr>
<tr class="memitem:a9cf7baa569be308c2cf6e07cadded09d"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a9cf7baa569be308c2cf6e07cadded09d">getDescX</a> (void) const</td></tr>
<tr class="separator:a9cf7baa569be308c2cf6e07cadded09d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a746b96036872dbece204e9739f3413b6"><td class="memItemLeft" align="right" valign="top"><a id="a746b96036872dbece204e9739f3413b6"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>getUnitY</b> (void) const</td></tr>
<tr class="memitem:a746b96036872dbece204e9739f3413b6"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a746b96036872dbece204e9739f3413b6">getUnitY</a> (void) const</td></tr>
<tr class="separator:a746b96036872dbece204e9739f3413b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4a847fd71a804182f211233e194df45"><td class="memItemLeft" align="right" valign="top"><a id="ab4a847fd71a804182f211233e194df45"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>getDescY</b> (void) const</td></tr>
<tr class="memitem:ab4a847fd71a804182f211233e194df45"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#ab4a847fd71a804182f211233e194df45">getDescY</a> (void) const</td></tr>
<tr class="separator:ab4a847fd71a804182f211233e194df45"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abcda4139adf8c5ab8a93b13b84ac097c"><td class="memItemLeft" align="right" valign="top"><a id="abcda4139adf8c5ab8a93b13b84ac097c"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>getUnitPara</b> (void) const</td></tr>
<tr class="memitem:abcda4139adf8c5ab8a93b13b84ac097c"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#abcda4139adf8c5ab8a93b13b84ac097c">getUnitPara</a> (void) const</td></tr>
<tr class="separator:abcda4139adf8c5ab8a93b13b84ac097c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a536967daae3b382a5d6575f55450e198"><td class="memItemLeft" align="right" valign="top"><a id="a536967daae3b382a5d6575f55450e198"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>getDescPara</b> (void) const</td></tr>
<tr class="memitem:a536967daae3b382a5d6575f55450e198"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a536967daae3b382a5d6575f55450e198">getDescPara</a> (void) const</td></tr>
<tr class="separator:a536967daae3b382a5d6575f55450e198"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82c348e7fade2edcbc907e7c2bc2e305"><td class="memItemLeft" align="right" valign="top"><a id="a82c348e7fade2edcbc907e7c2bc2e305"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>writeToFile</b> (std::string filename)</td></tr>
<tr class="memitem:a82c348e7fade2edcbc907e7c2bc2e305"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a82c348e7fade2edcbc907e7c2bc2e305">writeToFile</a> (std::string filename)</td></tr>
<tr class="separator:a82c348e7fade2edcbc907e7c2bc2e305"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08a115ef10458cadfe76077d623313df"><td class="memItemLeft" align="right" valign="top"><a id="a08a115ef10458cadfe76077d623313df"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>startPlotty</b> (std::string filename)</td></tr>
<tr class="memitem:a08a115ef10458cadfe76077d623313df"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classPlottyFile.html#a08a115ef10458cadfe76077d623313df">startPlotty</a> (std::string filename)</td></tr>
<tr class="separator:a08a115ef10458cadfe76077d623313df"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="plottyfile_8h_source.html#l00017">17</a> of file <a class="el" href="plottyfile_8h_source.html">plottyfile.h</a>.</p>
</div><hr/>The documentation for this class was generated from the following files:<ul>
<div class="textblock"><p>Wrapper class for convenient plot file creation, needed to display graphs using plotty. </p>
<p class="definition">Definition at line <a class="el" href="plottyfile_8h_source.html#l00020">20</a> of file <a class="el" href="plottyfile_8h_source.html">plottyfile.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="ae091e6eaaca16302f17572ac7dec6f7c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae091e6eaaca16302f17572ac7dec6f7c">&#9670;&nbsp;</a></span>addDot() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::addDot </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classDot.html">Dot</a> &amp;&#160;</td>
<td class="paramname"><em>dot</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a dot to the plotty file. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dot</td><td>the dot </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00003">3</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a80e4b45219b4e9571992edfc28a28568"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80e4b45219b4e9571992edfc28a28568">&#9670;&nbsp;</a></span>addDot() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::addDot </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classDot.html">Dot</a>&#160;</td>
<td class="paramname"><em>dot</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a dot by reference to the plotty file. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dot</td><td>the dot </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00008">8</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a536967daae3b382a5d6575f55450e198"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a536967daae3b382a5d6575f55450e198">&#9670;&nbsp;</a></span>getDescPara()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string PlottyFile::getDescPara </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>description of parameter </dd></dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00130">130</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a9cf7baa569be308c2cf6e07cadded09d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9cf7baa569be308c2cf6e07cadded09d">&#9670;&nbsp;</a></span>getDescX()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string PlottyFile::getDescX </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>description of x axis </dd></dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00110">110</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="ab4a847fd71a804182f211233e194df45"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4a847fd71a804182f211233e194df45">&#9670;&nbsp;</a></span>getDescY()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string PlottyFile::getDescY </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>description of y axis </dd></dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00120">120</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a88bb7d8350ed5fbc7a40e8d903c94bdb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88bb7d8350ed5fbc7a40e8d903c94bdb">&#9670;&nbsp;</a></span>getFunctionType()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">FunctionType PlottyFile::getFunctionType </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the FunctionType </dd></dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00075">75</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a40828c93d66fe80166c4f603d5bdfa48"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a40828c93d66fe80166c4f603d5bdfa48">&#9670;&nbsp;</a></span>getParaFirstCurve()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t PlottyFile::getParaFirstCurve </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>initial parameter value </dd></dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00095">95</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a9da23f2bb8e6eb1837fc992ffd4057db"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9da23f2bb8e6eb1837fc992ffd4057db">&#9670;&nbsp;</a></span>getParaStepWidth()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t PlottyFile::getParaStepWidth </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>parameter stepwith </dd></dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00100">100</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a54e94e80061a27614f2d4d63697d3376"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a54e94e80061a27614f2d4d63697d3376">&#9670;&nbsp;</a></span>getQuadrant()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t PlottyFile::getQuadrant </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the quadrant </dd></dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00080">80</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a7dd84b9f0826f3220fc6b5a4f1ce9890"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7dd84b9f0826f3220fc6b5a4f1ce9890">&#9670;&nbsp;</a></span>getRefX()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t PlottyFile::getRefX </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>x reference (max) value </dd></dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00085">85</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="ae6650c61a3b1a610ce716253418bd7f2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6650c61a3b1a610ce716253418bd7f2">&#9670;&nbsp;</a></span>getRefY()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t PlottyFile::getRefY </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>y reference (max) value </dd></dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00090">90</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="abcda4139adf8c5ab8a93b13b84ac097c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abcda4139adf8c5ab8a93b13b84ac097c">&#9670;&nbsp;</a></span>getUnitPara()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string PlottyFile::getUnitPara </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>unit of parameter </dd></dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00125">125</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="af952ac5e2c40896acaf6a86063874fe3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af952ac5e2c40896acaf6a86063874fe3">&#9670;&nbsp;</a></span>getUnitX()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string PlottyFile::getUnitX </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>unit of x axis </dd></dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00105">105</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a746b96036872dbece204e9739f3413b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a746b96036872dbece204e9739f3413b6">&#9670;&nbsp;</a></span>getUnitY()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">std::string PlottyFile::getUnitY </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>unit of y axis </dd></dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00115">115</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a431904143c3c1164a2e8b8cfec3c77ab"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a431904143c3c1164a2e8b8cfec3c77ab">&#9670;&nbsp;</a></span>setDescPara()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::setDescPara </td>
<td>(</td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>desc_para</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the description of the parameter. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">para_first</td><td>description </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00070">70</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="aa0449c290265d55d6223b19cf0a88b0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa0449c290265d55d6223b19cf0a88b0a">&#9670;&nbsp;</a></span>setDescX()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::setDescX </td>
<td>(</td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>desc_x</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the description of the x axis. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">para_first</td><td>description </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00050">50</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a38a3a4dfc76bc70523727584bf01d590"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38a3a4dfc76bc70523727584bf01d590">&#9670;&nbsp;</a></span>setDescY()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::setDescY </td>
<td>(</td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>desc_y</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the description of the y axis. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">para_first</td><td>description </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00060">60</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a4e5ab1ebb012a5cc1a3d6458a4cd512f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4e5ab1ebb012a5cc1a3d6458a4cd512f">&#9670;&nbsp;</a></span>setFunctionType()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::setFunctionType </td>
<td>(</td>
<td class="paramtype">FunctionType&#160;</td>
<td class="paramname"><em>function_type</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the FunctionType of this plotty file. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">function_type</td><td>enum value </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00013">13</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="aa676414793becb975506f48d6e949dd0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa676414793becb975506f48d6e949dd0">&#9670;&nbsp;</a></span>setParaFirstCurve()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::setParaFirstCurve </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>para_first</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets initial value of the parameter. Gets used together with the stepwith to label the curves. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">para_first</td><td>initial parameter value </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00035">35</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a6caebd31e04e2e7081cc007047350355"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6caebd31e04e2e7081cc007047350355">&#9670;&nbsp;</a></span>setParaStepWidth()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::setParaStepWidth </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>para_stepwidth</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the stepwith the parameter got increased with each curve. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">para_first</td><td>parameter stepwith </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00040">40</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a1953ee0d9a87b7353c16139584e9c2ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1953ee0d9a87b7353c16139584e9c2ae">&#9670;&nbsp;</a></span>setQuadrant()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::setQuadrant </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>quadrant</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the quadrant of this plot. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">quadrant</td><td>quadrant number (1..4) </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00018">18</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a80c2c2e97a454566f9c1f2c51e1d7f3e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a80c2c2e97a454566f9c1f2c51e1d7f3e">&#9670;&nbsp;</a></span>setRefX()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::setRefX </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>ref_x</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets reference (max) value of the x axis </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ref_x</td><td>reference value </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00025">25</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a3a371228ddcc007e97eebe7cc04dffc2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a371228ddcc007e97eebe7cc04dffc2">&#9670;&nbsp;</a></span>setRefY()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::setRefY </td>
<td>(</td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>ref_y</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets reference (max) value of the y axis </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ref_y</td><td>reference value </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00030">30</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="abbac84109a1e0958a4ca5c270fac0986"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abbac84109a1e0958a4ca5c270fac0986">&#9670;&nbsp;</a></span>setUnitPara()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::setUnitPara </td>
<td>(</td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>unit_para</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the unit of the parameter. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">para_first</td><td>unit </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00065">65</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="ab8d35a841ca9c325fca671cf34e03527"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab8d35a841ca9c325fca671cf34e03527">&#9670;&nbsp;</a></span>setUnitX()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::setUnitX </td>
<td>(</td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>unit_x</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the unit of the x axis. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">para_first</td><td>unit </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00045">45</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="abb18c814f435926f741f7ceb310f3059"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb18c814f435926f741f7ceb310f3059">&#9670;&nbsp;</a></span>setUnitY()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::setUnitY </td>
<td>(</td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>unit_y</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the unit of the y axis. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">para_first</td><td>unit </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00055">55</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a08a115ef10458cadfe76077d623313df"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08a115ef10458cadfe76077d623313df">&#9670;&nbsp;</a></span>startPlotty()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::startPlotty </td>
<td>(</td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>filename</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Starts plotty with a plot file. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">filename</td><td>plot path </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00196">196</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<a id="a82c348e7fade2edcbc907e7c2bc2e305"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a82c348e7fade2edcbc907e7c2bc2e305">&#9670;&nbsp;</a></span>writeToFile()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void PlottyFile::writeToFile </td>
<td>(</td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>filename</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Saves the <a class="el" href="classPlottyFile.html">PlottyFile</a> in a binary format, ready to open with plotty. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">filename</td><td>desired plot path </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="plottyfile_8cpp_source.html#l00147">147</a> of file <a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>drv/<a class="el" href="plottyfile_8h_source.html">plottyfile.h</a></li>
<li>drv/<a class="el" href="plottyfile_8cpp_source.html">plottyfile.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -69,16 +69,15 @@ $(function() {
<p>This is the complete list of members for <a class="el" href="classTimeoutException.html">TimeoutException</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_timeout</b> (defined in <a class="el" href="classTimeoutException.html">TimeoutException</a>)</td><td class="entry"><a class="el" href="classTimeoutException.html">TimeoutException</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>msg</b> (defined in <a class="el" href="classTimeoutException.html">TimeoutException</a>)</td><td class="entry"><a class="el" href="classTimeoutException.html">TimeoutException</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>TimeoutException</b>(const char *message, int timeout) (defined in <a class="el" href="classTimeoutException.html">TimeoutException</a>)</td><td class="entry"><a class="el" href="classTimeoutException.html">TimeoutException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>TimeoutException</b>(const std::string &amp;message, int timeout) (defined in <a class="el" href="classTimeoutException.html">TimeoutException</a>)</td><td class="entry"><a class="el" href="classTimeoutException.html">TimeoutException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>what</b>() const (defined in <a class="el" href="classTimeoutException.html">TimeoutException</a>)</td><td class="entry"><a class="el" href="classTimeoutException.html">TimeoutException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>~TimeoutException</b>() (defined in <a class="el" href="classTimeoutException.html">TimeoutException</a>)</td><td class="entry"><a class="el" href="classTimeoutException.html">TimeoutException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classTimeoutException.html#aa625fc0fae48a67737a98eafb91c9624">msg</a></td><td class="entry"><a class="el" href="classTimeoutException.html">TimeoutException</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="classTimeoutException.html#aa45912234da11ffc9dd3594a1bbc0218">TimeoutException</a>(const char *message)</td><td class="entry"><a class="el" href="classTimeoutException.html">TimeoutException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classTimeoutException.html#ad6e5c200fbfd276f48a6c1163e2d2988">TimeoutException</a>(const std::string &amp;message)</td><td class="entry"><a class="el" href="classTimeoutException.html">TimeoutException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classTimeoutException.html#a97eaf01fc39ddb94b060020b42fefd6e">what</a>() const</td><td class="entry"><a class="el" href="classTimeoutException.html">TimeoutException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classTimeoutException.html#a2f686b262d2ccffa0090fda9b44ab540">~TimeoutException</a>()=default</td><td class="entry"><a class="el" href="classTimeoutException.html">TimeoutException</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -70,44 +70,176 @@ $(function() {
<div class="title">TimeoutException Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for TimeoutException:</div>
<div class="dyncontent">
<p><code>#include &lt;<a class="el" href="timeoutexception_8h_source.html">timeoutexception.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for TimeoutException:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center">
<img src="classTimeoutException.png" alt=""/>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a33d1b23baf86d5481e1fe18db8a37c15"><td class="memItemLeft" align="right" valign="top"><a id="a33d1b23baf86d5481e1fe18db8a37c15"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>TimeoutException</b> (const char *message, int timeout)</td></tr>
<tr class="separator:a33d1b23baf86d5481e1fe18db8a37c15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6c6f1372eaeab7dd2f4dec06cc1e8f8f"><td class="memItemLeft" align="right" valign="top"><a id="a6c6f1372eaeab7dd2f4dec06cc1e8f8f"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>TimeoutException</b> (const std::string &amp;message, int timeout)</td></tr>
<tr class="separator:a6c6f1372eaeab7dd2f4dec06cc1e8f8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97eaf01fc39ddb94b060020b42fefd6e"><td class="memItemLeft" align="right" valign="top"><a id="a97eaf01fc39ddb94b060020b42fefd6e"></a>
virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><b>what</b> () const throw ()</td></tr>
<tr class="memitem:aa45912234da11ffc9dd3594a1bbc0218"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTimeoutException.html#aa45912234da11ffc9dd3594a1bbc0218">TimeoutException</a> (const char *message)</td></tr>
<tr class="separator:aa45912234da11ffc9dd3594a1bbc0218"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6e5c200fbfd276f48a6c1163e2d2988"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTimeoutException.html#ad6e5c200fbfd276f48a6c1163e2d2988">TimeoutException</a> (const std::string &amp;message)</td></tr>
<tr class="separator:ad6e5c200fbfd276f48a6c1163e2d2988"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f686b262d2ccffa0090fda9b44ab540"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTimeoutException.html#a2f686b262d2ccffa0090fda9b44ab540">~TimeoutException</a> ()=default</td></tr>
<tr class="separator:a2f686b262d2ccffa0090fda9b44ab540"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a97eaf01fc39ddb94b060020b42fefd6e"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTimeoutException.html#a97eaf01fc39ddb94b060020b42fefd6e">what</a> () const throw ()</td></tr>
<tr class="separator:a97eaf01fc39ddb94b060020b42fefd6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:aa625fc0fae48a67737a98eafb91c9624"><td class="memItemLeft" align="right" valign="top"><a id="aa625fc0fae48a67737a98eafb91c9624"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>msg</b></td></tr>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTimeoutException.html#aa625fc0fae48a67737a98eafb91c9624">msg</a></td></tr>
<tr class="memdesc:aa625fc0fae48a67737a98eafb91c9624"><td class="mdescLeft">&#160;</td><td class="mdescRight">failure description <br /></td></tr>
<tr class="separator:aa625fc0fae48a67737a98eafb91c9624"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a00704ad4af4a07e6956949f633b5b161"><td class="memItemLeft" align="right" valign="top"><a id="a00704ad4af4a07e6956949f633b5b161"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>m_timeout</b></td></tr>
<tr class="separator:a00704ad4af4a07e6956949f633b5b161"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="timeoutexception_8h_source.html#l00008">8</a> of file <a class="el" href="timeoutexception_8h_source.html">timeoutexception.h</a>.</p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
<div class="textblock"><p>Exception for <a class="el" href="classUSART.html">USART</a> related timeouts. </p>
<p class="definition">Definition at line <a class="el" href="timeoutexception_8h_source.html#l00009">9</a> of file <a class="el" href="timeoutexception_8h_source.html">timeoutexception.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="aa45912234da11ffc9dd3594a1bbc0218"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa45912234da11ffc9dd3594a1bbc0218">&#9670;&nbsp;</a></span>TimeoutException() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">TimeoutException::TimeoutException </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>message</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>as c-string </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="timeoutexception_8h_source.html#l00016">16</a> of file <a class="el" href="timeoutexception_8h_source.html">timeoutexception.h</a>.</p>
</div>
</div>
<a id="ad6e5c200fbfd276f48a6c1163e2d2988"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad6e5c200fbfd276f48a6c1163e2d2988">&#9670;&nbsp;</a></span>TimeoutException() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">TimeoutException::TimeoutException </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>message</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>as c++-string </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="timeoutexception_8h_source.html#l00024">24</a> of file <a class="el" href="timeoutexception_8h_source.html">timeoutexception.h</a>.</p>
</div>
</div>
<a id="a2f686b262d2ccffa0090fda9b44ab540"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2f686b262d2ccffa0090fda9b44ab540">&#9670;&nbsp;</a></span>~TimeoutException()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual TimeoutException::~TimeoutException </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Standard-destructor </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a97eaf01fc39ddb94b060020b42fefd6e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a97eaf01fc39ddb94b060020b42fefd6e">&#9670;&nbsp;</a></span>what()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual const char* TimeoutException::what </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
<tr>
<td align="right">throw </td><td>(</td><td colspan="2"></td>
</tr>
<tr>
<td align="right"></td><td>)</td><td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get failure description </p><dl class="section return"><dt>Returns</dt><dd>error message as c-string </dd></dl>
<p class="definition">Definition at line <a class="el" href="timeoutexception_8h_source.html#l00037">37</a> of file <a class="el" href="timeoutexception_8h_source.html">timeoutexception.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>drv/<a class="el" href="timeoutexception_8h_source.html">timeoutexception.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -69,31 +69,24 @@ $(function() {
<p>This is the complete list of members for <a class="el" href="classUSART.html">USART</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>BLOCK_END</b> (defined in <a class="el" href="classUSART.html">USART</a>)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSART.html#a756d268a8762c316f91ca3238972b0c1">clearOutputBuffer</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classUSART.html#af80d6291ac1d2df04cfa1d8d27458cc5">closeDevice</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>CRC7_POLY</b> (defined in <a class="el" href="classUSART.html">USART</a>)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr><td class="entry"><a class="el" href="classUSART.html#adb6ff4d1cf1af79ca255c5a81780200d">flushOutputBuffer</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSART.html#a4918672d8069df205378a528b1892db3">getBaudrate</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classUSART.html#a19cf777956a038878fc2d2b58c3d2b41">getTimeout</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>MAX_BLOCK_SIZE</b> (defined in <a class="el" href="classUSART.html">USART</a>)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classUSART.html#a756d268a8762c316f91ca3238972b0c1">clearOutputBuffer</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSART.html#af80d6291ac1d2df04cfa1d8d27458cc5">closeDevice</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classUSART.html#a038d00c0b3d8c0c13c3e7eae5dad7813">drop</a>(uint8_t len)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSART.html#adb6ff4d1cf1af79ca255c5a81780200d">flushOutputBuffer</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classUSART.html#a4918672d8069df205378a528b1892db3">getBaudrate</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSART.html#a19cf777956a038878fc2d2b58c3d2b41">getTimeout</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classUSART.html#a5f7e2abda2ec4a68a5fdb8ee2f8a940a">openDevice</a>(std::string device)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSART.html#a33559bb8f0eda33a489d47b9c9227b59">printStatistics</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>read_timeout</b>(uint8_t *buffer, uint16_t offset, uint8_t len, uint32_t timeout) (defined in <a class="el" href="classUSART.html">USART</a>)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>readBlock</b>(uint8_t *buffer, uint16_t offset) (defined in <a class="el" href="classUSART.html">USART</a>)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSART.html#a0fdc238203852f00bd750127602b2a6a">receive</a>(uint8_t *buffer, uint16_t offset, uint8_t len)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classUSART.html#aac63918a8b97ae63ee607cfa39e6d88d">setBaudrate</a>(uint32_t baudrate)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSART.html#ad7fe866cebe920784d2b17602824c7ff">setTimeout</a>(uint8_t timeout)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>write_timeout</b>(uint8_t *buffer, uint16_t offset, uint8_t len, uint32_t timeout) (defined in <a class="el" href="classUSART.html">USART</a>)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>writeBlock</b>(uint8_t *buffer, uint16_t offset, uint8_t len) (defined in <a class="el" href="classUSART.html">USART</a>)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(uint8_t b)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a>(uint16_t d)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="classUSART.html#a41b19dd58f307015b73e154048cd74ca">transmit</a>(uint8_t *buffer, uint16_t offset, uint8_t len)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSART.html#a5daed20dc595c43d87c4c28bb08a7449">USART</a>()=default</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classUSART.html#a0c8eb1a939ca00921e22f6cbcc7bb749">~USART</a>(void)</td><td class="entry"><a class="el" href="classUSART.html">USART</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -64,15 +64,20 @@ $(function() {
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a> &#124;
<a href="classUSART-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">USART Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="usart_8h_source.html">usart.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a5daed20dc595c43d87c4c28bb08a7449"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#a5daed20dc595c43d87c4c28bb08a7449">USART</a> ()=default</td></tr>
<tr class="separator:a5daed20dc595c43d87c4c28bb08a7449"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0c8eb1a939ca00921e22f6cbcc7bb749"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#a0c8eb1a939ca00921e22f6cbcc7bb749">~USART</a> (void)</td></tr>
<tr class="separator:a0c8eb1a939ca00921e22f6cbcc7bb749"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f7e2abda2ec4a68a5fdb8ee2f8a940a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#a5f7e2abda2ec4a68a5fdb8ee2f8a940a">openDevice</a> (std::string device)</td></tr>
<tr class="separator:a5f7e2abda2ec4a68a5fdb8ee2f8a940a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af80d6291ac1d2df04cfa1d8d27458cc5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#af80d6291ac1d2df04cfa1d8d27458cc5">closeDevice</a> (void)</td></tr>
@ -83,28 +88,12 @@ Public Member Functions</h2></td></tr>
<tr class="separator:a756d268a8762c316f91ca3238972b0c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb6ff4d1cf1af79ca255c5a81780200d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#adb6ff4d1cf1af79ca255c5a81780200d">flushOutputBuffer</a> (void)</td></tr>
<tr class="separator:adb6ff4d1cf1af79ca255c5a81780200d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33559bb8f0eda33a489d47b9c9227b59"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#a33559bb8f0eda33a489d47b9c9227b59">printStatistics</a> (void)</td></tr>
<tr class="separator:a33559bb8f0eda33a489d47b9c9227b59"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60eadbe9956bab8144ee96d89eacd9f5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a> (uint8_t b)</td></tr>
<tr class="separator:a60eadbe9956bab8144ee96d89eacd9f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a78b30d9aa863f38745e982860392599a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a> (uint16_t d)</td></tr>
<tr class="separator:a78b30d9aa863f38745e982860392599a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8f54b98b26bfe084359a5604bda82562"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a> (void)</td></tr>
<tr class="separator:a8f54b98b26bfe084359a5604bda82562"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1534c229db71a375e556cf1e7d0b8119"><td class="memItemLeft" align="right" valign="top">uint16_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a> (void)</td></tr>
<tr class="separator:a1534c229db71a375e556cf1e7d0b8119"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d024eae412c26c8026a19c23152fb15"><td class="memItemLeft" align="right" valign="top"><a id="a7d024eae412c26c8026a19c23152fb15"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>read_timeout</b> (uint8_t *buffer, uint16_t offset, uint8_t len, uint32_t timeout)</td></tr>
<tr class="separator:a7d024eae412c26c8026a19c23152fb15"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc38663b1be6af13dd6bc295b34b1f91"><td class="memItemLeft" align="right" valign="top"><a id="abc38663b1be6af13dd6bc295b34b1f91"></a>
int&#160;</td><td class="memItemRight" valign="bottom"><b>write_timeout</b> (uint8_t *buffer, uint16_t offset, uint8_t len, uint32_t timeout)</td></tr>
<tr class="separator:abc38663b1be6af13dd6bc295b34b1f91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5380551953f95293287d93a3291e6f9"><td class="memItemLeft" align="right" valign="top"><a id="aa5380551953f95293287d93a3291e6f9"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>writeBlock</b> (uint8_t *buffer, uint16_t offset, uint8_t len)</td></tr>
<tr class="separator:aa5380551953f95293287d93a3291e6f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6301a60df27ab1506ce8d64e3b061eb2"><td class="memItemLeft" align="right" valign="top"><a id="a6301a60df27ab1506ce8d64e3b061eb2"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>readBlock</b> (uint8_t *buffer, uint16_t offset)</td></tr>
<tr class="separator:a6301a60df27ab1506ce8d64e3b061eb2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41b19dd58f307015b73e154048cd74ca"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#a41b19dd58f307015b73e154048cd74ca">transmit</a> (uint8_t *buffer, uint16_t offset, uint8_t len)</td></tr>
<tr class="separator:a41b19dd58f307015b73e154048cd74ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0fdc238203852f00bd750127602b2a6a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#a0fdc238203852f00bd750127602b2a6a">receive</a> (uint8_t *buffer, uint16_t offset, uint8_t len)</td></tr>
<tr class="separator:a0fdc238203852f00bd750127602b2a6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a038d00c0b3d8c0c13c3e7eae5dad7813"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#a038d00c0b3d8c0c13c3e7eae5dad7813">drop</a> (uint8_t len)</td></tr>
<tr class="separator:a038d00c0b3d8c0c13c3e7eae5dad7813"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4918672d8069df205378a528b1892db3"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#a4918672d8069df205378a528b1892db3">getBaudrate</a> (void)</td></tr>
<tr class="separator:a4918672d8069df205378a528b1892db3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19cf777956a038878fc2d2b58c3d2b41"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#a19cf777956a038878fc2d2b58c3d2b41">getTimeout</a> (void)</td></tr>
@ -113,23 +102,68 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>readBlock</b> (uint8_
<tr class="separator:aac63918a8b97ae63ee607cfa39e6d88d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7fe866cebe920784d2b17602824c7ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSART.html#ad7fe866cebe920784d2b17602824c7ff">setTimeout</a> (uint8_t timeout)</td></tr>
<tr class="separator:ad7fe866cebe920784d2b17602824c7ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a3401693a5b971f54a2bf177e9a8b55fd"><td class="memItemLeft" align="right" valign="top"><a id="a3401693a5b971f54a2bf177e9a8b55fd"></a>
constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>CRC7_POLY</b> = 0x91</td></tr>
<tr class="separator:a3401693a5b971f54a2bf177e9a8b55fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a43cc131e2611437ed3c6c0448ba5ade5"><td class="memItemLeft" align="right" valign="top"><a id="a43cc131e2611437ed3c6c0448ba5ade5"></a>
constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>MAX_BLOCK_SIZE</b> = 64</td></tr>
<tr class="separator:a43cc131e2611437ed3c6c0448ba5ade5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19bfa88e843626b2d822361738cf0039"><td class="memItemLeft" align="right" valign="top"><a id="a19bfa88e843626b2d822361738cf0039"></a>
constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>BLOCK_END</b> = 0x80</td></tr>
<tr class="separator:a19bfa88e843626b2d822361738cf0039"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<div class="textblock"><p>C++ Wrapper class for termios usart library. </p>
<p class="definition">Definition at line <a class="el" href="usart_8h_source.html#l00016">16</a> of file <a class="el" href="usart_8h_source.html">usart.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a5daed20dc595c43d87c4c28bb08a7449"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5daed20dc595c43d87c4c28bb08a7449">&#9670;&nbsp;</a></span>USART()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">USART::USART </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Standard-Konstruktor </p>
</div>
</div>
<a id="a0c8eb1a939ca00921e22f6cbcc7bb749"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0c8eb1a939ca00921e22f6cbcc7bb749">&#9670;&nbsp;</a></span>~USART()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">USART::~USART </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Destructor, ruft automatisch <a class="el" href="classUSART.html#af80d6291ac1d2df04cfa1d8d27458cc5">closeDevice()</a> auf </p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00004">4</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a28a2b4c5ed66b2c3a81196f76884f156"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a28a2b4c5ed66b2c3a81196f76884f156">&#9670;&nbsp;</a></span>clearInputBuffer()</h2>
@ -152,7 +186,7 @@ constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>B
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00039">39</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00054">54</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
@ -178,7 +212,7 @@ constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>B
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00046">46</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00061">61</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
@ -204,7 +238,39 @@ constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>B
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00032">32</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00043">43</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
<a id="a038d00c0b3d8c0c13c3e7eae5dad7813"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a038d00c0b3d8c0c13c3e7eae5dad7813">&#9670;&nbsp;</a></span>drop()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void USART::drop </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>len</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Receives n bytes but discards them </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">len</td><td>count of bytes to receive </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classUSARTException.html">USARTException</a></td><td></td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00114">114</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
@ -230,7 +296,7 @@ constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>B
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00053">53</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00068">68</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
@ -251,7 +317,7 @@ constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>B
</div><div class="memdoc">
<p>Liefert die eingestellte Baudrate <b>Änderungen werden erst nach einem open() wirksam</b> </p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00306">306</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00121">121</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
@ -272,7 +338,7 @@ constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>B
</div><div class="memdoc">
<p>Liefert den eingestellten Timeout (in Dezisekunden) <b>Änderungen werden erst nach einem open() wirksam</b> </p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00311">311</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00126">126</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
@ -304,80 +370,57 @@ constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>B
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00003">3</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00009">9</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
<a id="a33559bb8f0eda33a489d47b9c9227b59"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33559bb8f0eda33a489d47b9c9227b59">&#9670;&nbsp;</a></span>printStatistics()</h2>
<a id="a0fdc238203852f00bd750127602b2a6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0fdc238203852f00bd750127602b2a6a">&#9670;&nbsp;</a></span>receive()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void USART::printStatistics </td>
<td class="memname">void USART::receive </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gibt Anzahl an erfolgreichen und fehlgeschlagenen Block-Übertragungen an </p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00060">60</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
<a id="a8f54b98b26bfe084359a5604bda82562"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f54b98b26bfe084359a5604bda82562">&#9670;&nbsp;</a></span>readByte()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t USART::readByte </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Empfängt ein Byte über die <a class="el" href="classUSART.html">USART</a> Schnittstelle </p><dl class="exception"><dt>Exceptions</dt><dd>
<p>Receives n bytes from <a class="el" href="classUSART.html">USART</a> and writes them into the buffer </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">buffer</td><td>target buffer </td></tr>
<tr><td class="paramname">offset</td><td>in buffer (mostly 0) </td></tr>
<tr><td class="paramname">len</td><td>count of bytes to receive </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classUSARTException.html">USARTException</a></td><td></td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00210">210</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
<a id="a1534c229db71a375e556cf1e7d0b8119"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1534c229db71a375e556cf1e7d0b8119">&#9670;&nbsp;</a></span>readInt()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint16_t USART::readInt </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Empfängt ein Integer über die <a class="el" href="classUSART.html">USART</a> Schnittstelle </p><dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classUSARTException.html">USARTException</a></td><td></td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00229">229</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00084">84</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
@ -396,9 +439,9 @@ constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>B
</tr>
</table>
</div><div class="memdoc">
<p>Setzt die Baudrate <b>Änderungen werden erst nach einem open() wirksam</b> </p>
<p>Setzt die Baudrate <b>Änderungen werden erst nach <a class="el" href="classUSART.html#a5f7e2abda2ec4a68a5fdb8ee2f8a940a">openDevice()</a> wirksam</b> </p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00316">316</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00131">131</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
@ -417,62 +460,48 @@ constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>B
</tr>
</table>
</div><div class="memdoc">
<p>Setzt den Timeout (in Dezisekunden) <b>Änderungen werden erst nach einem open() wirksam</b> </p>
<p>Setzt den Timeout (in Dezisekunden) <b>Änderungen werden erst nach <a class="el" href="classUSART.html#a5f7e2abda2ec4a68a5fdb8ee2f8a940a">openDevice()</a> wirksam</b> </p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00321">321</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00136">136</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
<a id="a60eadbe9956bab8144ee96d89eacd9f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a60eadbe9956bab8144ee96d89eacd9f5">&#9670;&nbsp;</a></span>writeByte()</h2>
<a id="a41b19dd58f307015b73e154048cd74ca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41b19dd58f307015b73e154048cd74ca">&#9670;&nbsp;</a></span>transmit()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void USART::writeByte </td>
<td class="memname">void USART::transmit </td>
<td>(</td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>b</em></td><td>)</td>
<td></td>
<td class="paramtype">uint8_t *&#160;</td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sendet ein Byte über die <a class="el" href="classUSART.html">USART</a> Schnittstelle </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">b</td><td>das zu sendende Byte </td></tr>
</table>
</dd>
</dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classUSARTException.html">USARTException</a></td><td></td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00067">67</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
<a id="a78b30d9aa863f38745e982860392599a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78b30d9aa863f38745e982860392599a">&#9670;&nbsp;</a></span>writeInt()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void USART::writeInt </td>
<td>(</td>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint16_t&#160;</td>
<td class="paramname"><em>d</em></td><td>)</td>
<td class="paramname"><em>offset</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint8_t&#160;</td>
<td class="paramname"><em>len</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sendet ein Integer über die <a class="el" href="classUSART.html">USART</a> Schnittstelle </p><dl class="params"><dt>Parameters</dt><dd>
<p>Sends n bytes from the buffer over <a class="el" href="classUSART.html">USART</a> </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">b</td><td>das zu sendende Byte </td></tr>
<tr><td class="paramname">buffer</td><td>target buffer </td></tr>
<tr><td class="paramname">offset</td><td>in buffer (mostly 0) </td></tr>
<tr><td class="paramname">len</td><td>count of bytes to send </td></tr>
</table>
</dd>
</dl>
@ -483,7 +512,7 @@ constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>B
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00081">81</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="usart_8cpp_source.html#l00075">75</a> of file <a class="el" href="usart_8cpp_source.html">usart.cpp</a>.</p>
</div>
</div>
@ -494,7 +523,7 @@ constexpr static uint8_t&#160;</td><td class="memItemRight" valign="bottom"><b>B
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -69,15 +69,15 @@ $(function() {
<p>This is the complete list of members for <a class="el" href="classUSARTException.html">USARTException</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>msg</b> (defined in <a class="el" href="classUSARTException.html">USARTException</a>)</td><td class="entry"><a class="el" href="classUSARTException.html">USARTException</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>USARTException</b>(const char *message) (defined in <a class="el" href="classUSARTException.html">USARTException</a>)</td><td class="entry"><a class="el" href="classUSARTException.html">USARTException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>USARTException</b>(const std::string &amp;message) (defined in <a class="el" href="classUSARTException.html">USARTException</a>)</td><td class="entry"><a class="el" href="classUSARTException.html">USARTException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>what</b>() const (defined in <a class="el" href="classUSARTException.html">USARTException</a>)</td><td class="entry"><a class="el" href="classUSARTException.html">USARTException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~USARTException</b>() (defined in <a class="el" href="classUSARTException.html">USARTException</a>)</td><td class="entry"><a class="el" href="classUSARTException.html">USARTException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSARTException.html#a14c80df95f216d221aa97cffbcd8dd79">msg</a></td><td class="entry"><a class="el" href="classUSARTException.html">USARTException</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
<tr><td class="entry"><a class="el" href="classUSARTException.html#a3c359db129825703b91392d5128cf93d">USARTException</a>(const char *message)</td><td class="entry"><a class="el" href="classUSARTException.html">USARTException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSARTException.html#a643c0a8b7f0d81e2f1693a75b378e6c2">USARTException</a>(const std::string &amp;message)</td><td class="entry"><a class="el" href="classUSARTException.html">USARTException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
<tr><td class="entry"><a class="el" href="classUSARTException.html#a2af5e3c00cd0585c7427c2e0420a8f15">what</a>() const</td><td class="entry"><a class="el" href="classUSARTException.html">USARTException</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classUSARTException.html#a0e008b3cb4974859e6bc8c8f8eb480be">~USARTException</a>()=default</td><td class="entry"><a class="el" href="classUSARTException.html">USARTException</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -70,41 +70,176 @@ $(function() {
<div class="title">USARTException Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for USARTException:</div>
<div class="dyncontent">
<p><code>#include &lt;<a class="el" href="usartexception_8h_source.html">usartexception.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for USARTException:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center">
<img src="classUSARTException.png" alt=""/>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3c359db129825703b91392d5128cf93d"><td class="memItemLeft" align="right" valign="top"><a id="a3c359db129825703b91392d5128cf93d"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>USARTException</b> (const char *message)</td></tr>
<tr class="memitem:a3c359db129825703b91392d5128cf93d"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSARTException.html#a3c359db129825703b91392d5128cf93d">USARTException</a> (const char *message)</td></tr>
<tr class="separator:a3c359db129825703b91392d5128cf93d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a643c0a8b7f0d81e2f1693a75b378e6c2"><td class="memItemLeft" align="right" valign="top"><a id="a643c0a8b7f0d81e2f1693a75b378e6c2"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>USARTException</b> (const std::string &amp;message)</td></tr>
<tr class="memitem:a643c0a8b7f0d81e2f1693a75b378e6c2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSARTException.html#a643c0a8b7f0d81e2f1693a75b378e6c2">USARTException</a> (const std::string &amp;message)</td></tr>
<tr class="separator:a643c0a8b7f0d81e2f1693a75b378e6c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2af5e3c00cd0585c7427c2e0420a8f15"><td class="memItemLeft" align="right" valign="top"><a id="a2af5e3c00cd0585c7427c2e0420a8f15"></a>
virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><b>what</b> () const throw ()</td></tr>
<tr class="memitem:a0e008b3cb4974859e6bc8c8f8eb480be"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSARTException.html#a0e008b3cb4974859e6bc8c8f8eb480be">~USARTException</a> ()=default</td></tr>
<tr class="separator:a0e008b3cb4974859e6bc8c8f8eb480be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2af5e3c00cd0585c7427c2e0420a8f15"><td class="memItemLeft" align="right" valign="top">virtual const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSARTException.html#a2af5e3c00cd0585c7427c2e0420a8f15">what</a> () const throw ()</td></tr>
<tr class="separator:a2af5e3c00cd0585c7427c2e0420a8f15"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a14c80df95f216d221aa97cffbcd8dd79"><td class="memItemLeft" align="right" valign="top"><a id="a14c80df95f216d221aa97cffbcd8dd79"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><b>msg</b></td></tr>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classUSARTException.html#a14c80df95f216d221aa97cffbcd8dd79">msg</a></td></tr>
<tr class="memdesc:a14c80df95f216d221aa97cffbcd8dd79"><td class="mdescLeft">&#160;</td><td class="mdescRight">failure description <br /></td></tr>
<tr class="separator:a14c80df95f216d221aa97cffbcd8dd79"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<div class="textblock"><p>Exception for <a class="el" href="classUSART.html">USART</a> problems, for instance buffer overflow. </p>
<p class="definition">Definition at line <a class="el" href="usartexception_8h_source.html#l00009">9</a> of file <a class="el" href="usartexception_8h_source.html">usartexception.h</a>.</p>
</div><hr/>The documentation for this class was generated from the following file:<ul>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a3c359db129825703b91392d5128cf93d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3c359db129825703b91392d5128cf93d">&#9670;&nbsp;</a></span>USARTException() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">USARTException::USARTException </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>message</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>as c-string </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="usartexception_8h_source.html#l00016">16</a> of file <a class="el" href="usartexception_8h_source.html">usartexception.h</a>.</p>
</div>
</div>
<a id="a643c0a8b7f0d81e2f1693a75b378e6c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a643c0a8b7f0d81e2f1693a75b378e6c2">&#9670;&nbsp;</a></span>USARTException() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">USARTException::USARTException </td>
<td>(</td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>message</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">explicit</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Constructor </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">message</td><td>as c++-string </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="usartexception_8h_source.html#l00024">24</a> of file <a class="el" href="usartexception_8h_source.html">usartexception.h</a>.</p>
</div>
</div>
<a id="a0e008b3cb4974859e6bc8c8f8eb480be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e008b3cb4974859e6bc8c8f8eb480be">&#9670;&nbsp;</a></span>~USARTException()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual USARTException::~USARTException </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Standard-destructor </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a2af5e3c00cd0585c7427c2e0420a8f15"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2af5e3c00cd0585c7427c2e0420a8f15">&#9670;&nbsp;</a></span>what()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual const char* USARTException::what </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
<tr>
<td align="right">throw </td><td>(</td><td colspan="2"></td>
</tr>
<tr>
<td align="right"></td><td>)</td><td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get failure description </p><dl class="section return"><dt>Returns</dt><dd>error message as c-string </dd></dl>
<p class="definition">Definition at line <a class="el" href="usartexception_8h_source.html#l00037">37</a> of file <a class="el" href="usartexception_8h_source.html">usartexception.h</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>drv/<a class="el" href="usartexception_8h_source.html">usartexception.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -89,7 +89,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -72,9 +72,13 @@ $(function() {
<div class="title">View Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for View:</div>
<div class="dyncontent">
<p><code>#include &lt;<a class="el" href="view_8h_source.html">view.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for View:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center">
<img src="classView.png" usemap="#View_map" alt=""/>
<map id="View_map" name="View_map">
@ -143,8 +147,9 @@ constexpr static int&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_E
<tr class="separator:a3554cf8689cad24c643665aa3d182134"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="view_8h_source.html#l00017">17</a> of file <a class="el" href="view_8h_source.html">view.h</a>.</p>
<div class="textblock"><p>Base class for multiple views with the ncurses user interface. </p>
<p class="definition">Definition at line <a class="el" href="view_8h_source.html#l00019">19</a> of file <a class="el" href="view_8h_source.html">view.h</a>.</p>
</div><hr/>The documentation for this class was generated from the following files:<ul>
<li>ui/<a class="el" href="view_8h_source.html">view.h</a></li>
<li>ui/<a class="el" href="view_8cpp_source.html">view.cpp</a></li>
@ -152,7 +157,7 @@ constexpr static int&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_E
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -99,7 +99,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -71,9 +71,13 @@ $(function() {
<div class="title">ViewInfo Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for ViewInfo:</div>
<div class="dyncontent">
<p><code>#include &lt;<a class="el" href="view__info_8h_source.html">view_info.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for ViewInfo:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center">
<img src="classViewInfo.png" usemap="#ViewInfo_map" alt=""/>
<map id="ViewInfo_map" name="ViewInfo_map">
@ -171,8 +175,9 @@ static std::vector&lt; std::string &gt;&#160;</td><td class="memItemRight" valig
<tr class="separator:a52c2e2a7bc56388e7d9bfa398ad52668 inherit pub_static_methods_classView"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="view__info_8h_source.html#l00006">6</a> of file <a class="el" href="view__info_8h_source.html">view_info.h</a>.</p>
<div class="textblock"><p><a class="el" href="classView.html">View</a> for simple text message output. </p>
<p class="definition">Definition at line <a class="el" href="view__info_8h_source.html#l00008">8</a> of file <a class="el" href="view__info_8h_source.html">view_info.h</a>.</p>
</div><hr/>The documentation for this class was generated from the following files:<ul>
<li>ui/<a class="el" href="view__info_8h_source.html">view_info.h</a></li>
<li>ui/<a class="el" href="view__info_8cpp_source.html">view_info.cpp</a></li>
@ -180,7 +185,7 @@ static std::vector&lt; std::string &gt;&#160;</td><td class="memItemRight" valig
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -103,7 +103,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -71,9 +71,13 @@ $(function() {
<div class="title">ViewMonitor Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for ViewMonitor:</div>
<div class="dyncontent">
<p><code>#include &lt;<a class="el" href="view__monitor_8h_source.html">view_monitor.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for ViewMonitor:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center">
<img src="classViewMonitor.png" usemap="#ViewMonitor_map" alt=""/>
<map id="ViewMonitor_map" name="ViewMonitor_map">
@ -183,8 +187,9 @@ constexpr static int&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_E
<tr class="separator:a3554cf8689cad24c643665aa3d182134 inherit pro_static_attribs_classView"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="view__monitor_8h_source.html#l00011">11</a> of file <a class="el" href="view__monitor_8h_source.html">view_monitor.h</a>.</p>
<div class="textblock"><p><a class="el" href="classView.html">View</a> to display all B15 inputs. </p>
<p class="definition">Definition at line <a class="el" href="view__monitor_8h_source.html#l00013">13</a> of file <a class="el" href="view__monitor_8h_source.html">view_monitor.h</a>.</p>
</div><hr/>The documentation for this class was generated from the following files:<ul>
<li>ui/<a class="el" href="view__monitor_8h_source.html">view_monitor.h</a></li>
<li>ui/<a class="el" href="view__monitor_8cpp_source.html">view_monitor.cpp</a></li>
@ -192,7 +197,7 @@ constexpr static int&#160;</td><td class="memItemRight" valign="bottom"><b>KEY_E
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -105,7 +105,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -71,9 +71,13 @@ $(function() {
<div class="title">ViewPromt Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for ViewPromt:</div>
<div class="dyncontent">
<p><code>#include &lt;<a class="el" href="view__promt_8h_source.html">view_promt.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for ViewPromt:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center">
<img src="classViewPromt.png" usemap="#ViewPromt_map" alt=""/>
<map id="ViewPromt_map" name="ViewPromt_map">
@ -191,8 +195,9 @@ static std::vector&lt; std::string &gt;&#160;</td><td class="memItemRight" valig
<tr class="separator:a52c2e2a7bc56388e7d9bfa398ad52668 inherit pub_static_methods_classView"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="view__promt_8h_source.html#l00008">8</a> of file <a class="el" href="view__promt_8h_source.html">view_promt.h</a>.</p>
<div class="textblock"><p><a class="el" href="classView.html">View</a> for basic user text input. </p>
<p class="definition">Definition at line <a class="el" href="view__promt_8h_source.html#l00010">10</a> of file <a class="el" href="view__promt_8h_source.html">view_promt.h</a>.</p>
</div><hr/>The documentation for this class was generated from the following files:<ul>
<li>ui/<a class="el" href="view__promt_8h_source.html">view_promt.h</a></li>
<li>ui/<a class="el" href="view__promt_8cpp_source.html">view_promt.cpp</a></li>
@ -200,7 +205,7 @@ static std::vector&lt; std::string &gt;&#160;</td><td class="memItemRight" valig
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -94,7 +94,7 @@ $(function() {
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -71,9 +71,13 @@ $(function() {
<div class="title">ViewSelection Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<div class="dynheader">
Inheritance diagram for ViewSelection:</div>
<div class="dyncontent">
<p><code>#include &lt;<a class="el" href="view__selection_8h_source.html">view_selection.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
<img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for ViewSelection:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center">
<img src="classViewSelection.png" usemap="#ViewSelection_map" alt=""/>
<map id="ViewSelection_map" name="ViewSelection_map">
@ -158,8 +162,9 @@ static std::vector&lt; std::string &gt;&#160;</td><td class="memItemRight" valig
<tr class="separator:a52c2e2a7bc56388e7d9bfa398ad52668 inherit pub_static_methods_classView"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock">
<p class="definition">Definition at line <a class="el" href="view__selection_8h_source.html#l00008">8</a> of file <a class="el" href="view__selection_8h_source.html">view_selection.h</a>.</p>
<div class="textblock"><p><a class="el" href="classView.html">View</a> for user selection input. </p>
<p class="definition">Definition at line <a class="el" href="view__selection_8h_source.html#l00010">10</a> of file <a class="el" href="view__selection_8h_source.html">view_selection.h</a>.</p>
</div><hr/>The documentation for this class was generated from the following files:<ul>
<li>ui/<a class="el" href="view__selection_8h_source.html">view_selection.h</a></li>
<li>ui/<a class="el" href="view__selection_8cpp_source.html">view_selection.cpp</a></li>
@ -167,7 +172,7 @@ static std::vector&lt; std::string &gt;&#160;</td><td class="memItemRight" valig
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -105,7 +105,7 @@ $(function() {
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

File diff suppressed because one or more lines are too long

View file

@ -73,7 +73,7 @@ $(function() {
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -0,0 +1,81 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>B15F: cmake-build-debug/CMakeFiles/3.14.3/CompilerIdC Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">B15F
</div>
<div id="projectbrief">Board 15 Famulus Edition</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_95e29a8b8ee7c54052c171a88bb95675.html">cmake-build-debug</a></li><li class="navelem"><a class="el" href="dir_f89abcb304c928c7d889aa5625570de5.html">CMakeFiles</a></li><li class="navelem"><a class="el" href="dir_3d3c8ff3ebf9841b39117ac899f41936.html">3.14.3</a></li><li class="navelem"><a class="el" href="dir_19f2f1b99f19c12fa55b8d312cf373ed.html">CompilerIdC</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">CompilerIdC Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View file

@ -0,0 +1,85 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>B15F: cmake-build-debug/CMakeFiles/3.14.3 Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">B15F
</div>
<div id="projectbrief">Board 15 Famulus Edition</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_95e29a8b8ee7c54052c171a88bb95675.html">cmake-build-debug</a></li><li class="navelem"><a class="el" href="dir_f89abcb304c928c7d889aa5625570de5.html">CMakeFiles</a></li><li class="navelem"><a class="el" href="dir_3d3c8ff3ebf9841b39117ac899f41936.html">3.14.3</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">3.14.3 Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
Directories</h2></td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View file

@ -73,7 +73,7 @@ $(function() {
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -0,0 +1,81 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>B15F: cmake-build-debug/CMakeFiles/3.14.3/CompilerIdCXX Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">B15F
</div>
<div id="projectbrief">Board 15 Famulus Edition</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_95e29a8b8ee7c54052c171a88bb95675.html">cmake-build-debug</a></li><li class="navelem"><a class="el" href="dir_f89abcb304c928c7d889aa5625570de5.html">CMakeFiles</a></li><li class="navelem"><a class="el" href="dir_3d3c8ff3ebf9841b39117ac899f41936.html">3.14.3</a></li><li class="navelem"><a class="el" href="dir_90e361ec3542f3dd076ea3ad19547437.html">CompilerIdCXX</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">CompilerIdCXX Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View file

@ -0,0 +1,85 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>B15F: cmake-build-debug Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">B15F
</div>
<div id="projectbrief">Board 15 Famulus Edition</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_95e29a8b8ee7c54052c171a88bb95675.html">cmake-build-debug</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">cmake-build-debug Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a>
Directories</h2></td></tr>
</table>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View file

@ -0,0 +1,81 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>B15F: cmake-build-debug/CMakeFiles Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">B15F
</div>
<div id="projectbrief">Board 15 Famulus Edition</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_95e29a8b8ee7c54052c171a88bb95675.html">cmake-build-debug</a></li><li class="navelem"><a class="el" href="dir_f89abcb304c928c7d889aa5625570de5.html">CMakeFiles</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">CMakeFiles Directory Reference</div> </div>
</div><!--header-->
<div class="contents">
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View file

@ -70,10 +70,14 @@ $(function() {
<div class="title">dot.cpp</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#include &quot;dot.h&quot;</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;Dot::Dot(uint16_t x, uint16_t y, uint8_t curve) : x(x), y(y), curve(curve)</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;{</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; <span class="keywordflow">if</span>(curve &gt;= 64)</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; <span class="keywordflow">throw</span> std::range_error(<span class="stringliteral">&quot;Kurvenindex muss im Bereich [0, 63] liegen&quot;</span>);</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;}</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;uint16_t Dot::getX()<span class="keyword"> const</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <span class="keywordflow">return</span> x;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;}</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;uint16_t Dot::getY()<span class="keyword"> const</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordflow">return</span> y;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;}</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;uint8_t Dot::getCurve(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> curve;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;}</div></div><!-- fragment --></div><!-- contents -->
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#include &quot;dot.h&quot;</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; </div><div class="line"><a name="l00003"></a><span class="lineno"><a class="line" href="classDot.html#ad975f119c0627a928790b3cd5ca6da05"> 3</a></span>&#160;<a class="code" href="classDot.html#ad975f119c0627a928790b3cd5ca6da05">Dot::Dot</a>(uint16_t x, uint16_t y, uint8_t curve) : x(x), y(y), curve(curve)</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;{</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; <span class="keywordflow">if</span>(curve &gt;= 64)</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; <span class="keywordflow">throw</span> std::range_error(<span class="stringliteral">&quot;Kurvenindex muss im Bereich [0, 63] liegen&quot;</span>);</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;}</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160; </div><div class="line"><a name="l00009"></a><span class="lineno"><a class="line" href="classDot.html#a029f0cc99c474122b77a708a317e7f77"> 9</a></span>&#160;uint16_t <a class="code" href="classDot.html#a029f0cc99c474122b77a708a317e7f77">Dot::getX</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <span class="keywordflow">return</span> x;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;}</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div><div class="line"><a name="l00014"></a><span class="lineno"><a class="line" href="classDot.html#a8fcb987e6308d8184d1a2c8692227e58"> 14</a></span>&#160;uint16_t <a class="code" href="classDot.html#a8fcb987e6308d8184d1a2c8692227e58">Dot::getY</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; <span class="keywordflow">return</span> y;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;}</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="classDot.html#ad0ae7dc1a9be3d8d985affc089b34396"> 19</a></span>&#160;uint8_t <a class="code" href="classDot.html#ad0ae7dc1a9be3d8d985affc089b34396">Dot::getCurve</a>(<span class="keywordtype">void</span>)<span class="keyword"> const</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keywordflow">return</span> curve;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;}</div></div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassDot_html_a029f0cc99c474122b77a708a317e7f77"><div class="ttname"><a href="classDot.html#a029f0cc99c474122b77a708a317e7f77">Dot::getX</a></div><div class="ttdeci">uint16_t getX(void) const</div><div class="ttdef"><b>Definition:</b> <a href="dot_8cpp_source.html#l00009">dot.cpp:9</a></div></div>
<div class="ttc" id="aclassDot_html_a8fcb987e6308d8184d1a2c8692227e58"><div class="ttname"><a href="classDot.html#a8fcb987e6308d8184d1a2c8692227e58">Dot::getY</a></div><div class="ttdeci">uint16_t getY(void) const</div><div class="ttdef"><b>Definition:</b> <a href="dot_8cpp_source.html#l00014">dot.cpp:14</a></div></div>
<div class="ttc" id="aclassDot_html_ad0ae7dc1a9be3d8d985affc089b34396"><div class="ttname"><a href="classDot.html#ad0ae7dc1a9be3d8d985affc089b34396">Dot::getCurve</a></div><div class="ttdeci">uint8_t getCurve(void) const</div><div class="ttdef"><b>Definition:</b> <a href="dot_8cpp_source.html#l00019">dot.cpp:19</a></div></div>
<div class="ttc" id="aclassDot_html_ad975f119c0627a928790b3cd5ca6da05"><div class="ttname"><a href="classDot.html#ad975f119c0627a928790b3cd5ca6da05">Dot::Dot</a></div><div class="ttdeci">Dot(uint16_t x, uint16_t y, uint8_t curve)</div><div class="ttdef"><b>Definition:</b> <a href="dot_8cpp_source.html#l00003">dot.cpp:3</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -70,11 +70,15 @@ $(function() {
<div class="title">dot.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef DOT_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define DOT_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &lt;stdexcept&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div><div class="line"><a name="l00007"></a><span class="lineno"><a class="line" href="classDot.html"> 7</a></span>&#160;<span class="keyword">class </span><a class="code" href="classDot.html">Dot</a></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;{</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160; <a class="code" href="classDot.html">Dot</a>(uint16_t x, uint16_t y, uint8_t curve);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; uint16_t getX(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; uint16_t getY(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; uint8_t getCurve(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; uint16_t x, y;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; uint8_t curve;</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;};</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#endif // DOT_H</span></div></div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassDot_html"><div class="ttname"><a href="classDot.html">Dot</a></div><div class="ttdef"><b>Definition:</b> <a href="dot_8h_source.html#l00007">dot.h:7</a></div></div>
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef DOT_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define DOT_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &lt;cstdint&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &lt;stdexcept&gt;</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160; </div><div class="line"><a name="l00012"></a><span class="lineno"><a class="line" href="classDot.html"> 12</a></span>&#160;<span class="keyword">class </span><a class="code" href="classDot.html">Dot</a></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;{</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; <a class="code" href="classDot.html#ad975f119c0627a928790b3cd5ca6da05">Dot</a>(uint16_t x, uint16_t y, uint8_t curve);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; uint16_t <a class="code" href="classDot.html#a029f0cc99c474122b77a708a317e7f77">getX</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; uint16_t <a class="code" href="classDot.html#a8fcb987e6308d8184d1a2c8692227e58">getY</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; uint8_t <a class="code" href="classDot.html#ad0ae7dc1a9be3d8d985affc089b34396">getCurve</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; uint16_t x, y;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; uint8_t curve;</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;};</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="preprocessor">#endif // DOT_H</span></div></div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassDot_html_a029f0cc99c474122b77a708a317e7f77"><div class="ttname"><a href="classDot.html#a029f0cc99c474122b77a708a317e7f77">Dot::getX</a></div><div class="ttdeci">uint16_t getX(void) const</div><div class="ttdef"><b>Definition:</b> <a href="dot_8cpp_source.html#l00009">dot.cpp:9</a></div></div>
<div class="ttc" id="aclassDot_html"><div class="ttname"><a href="classDot.html">Dot</a></div><div class="ttdef"><b>Definition:</b> <a href="dot_8h_source.html#l00012">dot.h:12</a></div></div>
<div class="ttc" id="aclassDot_html_a8fcb987e6308d8184d1a2c8692227e58"><div class="ttname"><a href="classDot.html#a8fcb987e6308d8184d1a2c8692227e58">Dot::getY</a></div><div class="ttdeci">uint16_t getY(void) const</div><div class="ttdef"><b>Definition:</b> <a href="dot_8cpp_source.html#l00014">dot.cpp:14</a></div></div>
<div class="ttc" id="aclassDot_html_ad0ae7dc1a9be3d8d985affc089b34396"><div class="ttname"><a href="classDot.html#ad0ae7dc1a9be3d8d985affc089b34396">Dot::getCurve</a></div><div class="ttdeci">uint8_t getCurve(void) const</div><div class="ttdef"><b>Definition:</b> <a href="dot_8cpp_source.html#l00019">dot.cpp:19</a></div></div>
<div class="ttc" id="aclassDot_html_ad975f119c0627a928790b3cd5ca6da05"><div class="ttname"><a href="classDot.html#ad975f119c0627a928790b3cd5ca6da05">Dot::Dot</a></div><div class="ttdeci">Dot(uint16_t x, uint16_t y, uint8_t curve)</div><div class="ttdef"><b>Definition:</b> <a href="dot_8cpp_source.html#l00003">dot.cpp:3</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -70,11 +70,11 @@ $(function() {
<div class="title">driverexception.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef DRIVEREXCEPTION_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define DRIVEREXCEPTION_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &lt;exception&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// SOURCE: https://stackoverflow.com/a/8152888</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; </div><div class="line"><a name="l00008"></a><span class="lineno"><a class="line" href="classDriverException.html"> 8</a></span>&#160;<span class="keyword">class </span><a class="code" href="classDriverException.html">DriverException</a>: <span class="keyword">public</span> std::exception</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;{</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classDriverException.html">DriverException</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* message) : msg_(message)</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160; {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; }</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classDriverException.html">DriverException</a>(<span class="keyword">const</span> std::string&amp; message) : msg_(message)</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; {</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; }</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classDriverException.html">DriverException</a>() <span class="keywordflow">throw</span> ()</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; }</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span> ()</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keywordflow">return</span> msg_.c_str();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; std::string msg_;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;};</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#endif // DRIVEREXCEPTION_H</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div></div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassDriverException_html"><div class="ttname"><a href="classDriverException.html">DriverException</a></div><div class="ttdef"><b>Definition:</b> <a href="driverexception_8h_source.html#l00008">driverexception.h:8</a></div></div>
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef DRIVEREXCEPTION_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define DRIVEREXCEPTION_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &lt;exception&gt;</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160; </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">// SOURCE: https://stackoverflow.com/a/8152888</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; </div><div class="line"><a name="l00010"></a><span class="lineno"><a class="line" href="classDriverException.html"> 10</a></span>&#160;<span class="keyword">class </span><a class="code" href="classDriverException.html">DriverException</a>: <span class="keyword">public</span> std::exception</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;{</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classDriverException.html">DriverException</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* message) : msg_(message)</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160; {</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160; }</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160; <span class="keyword">explicit</span> <a class="code" href="classDriverException.html">DriverException</a>(<span class="keyword">const</span> std::string&amp; message) : msg_(message)</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; {</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160; }</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160; </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160; <span class="keyword">virtual</span> ~<a class="code" href="classDriverException.html">DriverException</a>() <span class="keywordflow">throw</span> ()</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160; {</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160; }</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160; <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* what() <span class="keyword">const</span> <span class="keywordflow">throw</span> ()</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keywordflow">return</span> msg_.c_str();</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; }</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">protected</span>:</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; std::string msg_;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;};</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="preprocessor">#endif // DRIVEREXCEPTION_H</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div></div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassDriverException_html"><div class="ttname"><a href="classDriverException.html">DriverException</a></div><div class="ttdef"><b>Definition:</b> <a href="driverexception_8h_source.html#l00010">driverexception.h:10</a></div></div>
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:14 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -67,39 +67,49 @@ $(function() {
</div><!--header-->
<div class="contents">
<div class="textblock">Here is a list of all documented files with brief descriptions:</div><div class="directory">
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_587c94d866dbb2f408f78cf41f9b2f8d.html" target="_self">drv</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="b15f_8cpp_source.html"><span class="icondoc"></span></a><b>b15f.cpp</b></td><td class="desc"></td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="b15f_8h_source.html"><span class="icondoc"></span></a><b>b15f.h</b></td><td class="desc"></td></tr>
<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dot_8cpp_source.html"><span class="icondoc"></span></a><b>dot.cpp</b></td><td class="desc"></td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dot_8h_source.html"><span class="icondoc"></span></a><b>dot.h</b></td><td class="desc"></td></tr>
<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="driverexception_8h_source.html"><span class="icondoc"></span></a><b>driverexception.h</b></td><td class="desc"></td></tr>
<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="plottyfile_8cpp_source.html"><span class="icondoc"></span></a><b>plottyfile.cpp</b></td><td class="desc"></td></tr>
<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="plottyfile_8h_source.html"><span class="icondoc"></span></a><b>plottyfile.h</b></td><td class="desc"></td></tr>
<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="timeoutexception_8h_source.html"><span class="icondoc"></span></a><b>timeoutexception.h</b></td><td class="desc"></td></tr>
<tr id="row_0_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="usart_8cpp_source.html"><span class="icondoc"></span></a><b>usart.cpp</b></td><td class="desc"></td></tr>
<tr id="row_0_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="usart_8h_source.html"><span class="icondoc"></span></a><b>usart.h</b></td><td class="desc"></td></tr>
<tr id="row_0_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="usartexception_8h_source.html"><span class="icondoc"></span></a><b>usartexception.h</b></td><td class="desc"></td></tr>
<tr id="row_1_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span id="img_1_" class="iconfopen" onclick="toggleFolder('1_')">&#160;</span><a class="el" href="dir_1788f8309b1a812dcb800a185471cf6c.html" target="_self">ui</a></td><td class="desc"></td></tr>
<tr id="row_1_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="ui_8cpp_source.html"><span class="icondoc"></span></a><b>ui.cpp</b></td><td class="desc"></td></tr>
<tr id="row_1_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="ui_8h_source.html"><span class="icondoc"></span></a><b>ui.h</b></td><td class="desc"></td></tr>
<tr id="row_1_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view_8cpp_source.html"><span class="icondoc"></span></a><b>view.cpp</b></td><td class="desc"></td></tr>
<tr id="row_1_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view_8h_source.html"><span class="icondoc"></span></a><b>view.h</b></td><td class="desc"></td></tr>
<tr id="row_1_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__info_8cpp_source.html"><span class="icondoc"></span></a><b>view_info.cpp</b></td><td class="desc"></td></tr>
<tr id="row_1_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__info_8h_source.html"><span class="icondoc"></span></a><b>view_info.h</b></td><td class="desc"></td></tr>
<tr id="row_1_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__monitor_8cpp_source.html"><span class="icondoc"></span></a><b>view_monitor.cpp</b></td><td class="desc"></td></tr>
<tr id="row_1_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__monitor_8h_source.html"><span class="icondoc"></span></a><b>view_monitor.h</b></td><td class="desc"></td></tr>
<tr id="row_1_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__promt_8cpp_source.html"><span class="icondoc"></span></a><b>view_promt.cpp</b></td><td class="desc"></td></tr>
<tr id="row_1_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__promt_8h_source.html"><span class="icondoc"></span></a><b>view_promt.h</b></td><td class="desc"></td></tr>
<tr id="row_1_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__selection_8cpp_source.html"><span class="icondoc"></span></a><b>view_selection.cpp</b></td><td class="desc"></td></tr>
<tr id="row_1_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__selection_8h_source.html"><span class="icondoc"></span></a><b>view_selection.h</b></td><td class="desc"></td></tr>
<tr id="row_2_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="cli_8cpp_source.html"><span class="icondoc"></span></a><b>cli.cpp</b></td><td class="desc"></td></tr>
<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span><span onclick="javascript:toggleLevel(5);">5</span>]</div><table class="directory">
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_95e29a8b8ee7c54052c171a88bb95675.html" target="_self">cmake-build-debug</a></td><td class="desc"></td></tr>
<tr id="row_0_0_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span id="img_0_0_" class="iconfopen" onclick="toggleFolder('0_0_')">&#160;</span><a class="el" href="dir_f89abcb304c928c7d889aa5625570de5.html" target="_self">CMakeFiles</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_')">&#9660;</span><span id="img_0_0_0_" class="iconfopen" onclick="toggleFolder('0_0_0_')">&#160;</span><a class="el" href="dir_3d3c8ff3ebf9841b39117ac899f41936.html" target="_self">3.14.3</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_0_0_" class="arrow" onclick="toggleFolder('0_0_0_0_')">&#9660;</span><span id="img_0_0_0_0_" class="iconfopen" onclick="toggleFolder('0_0_0_0_')">&#160;</span><a class="el" href="dir_19f2f1b99f19c12fa55b8d312cf373ed.html" target="_self">CompilerIdC</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_0_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="CMakeCCompilerId_8c_source.html"><span class="icondoc"></span></a><b>CMakeCCompilerId.c</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span id="arr_0_0_0_1_" class="arrow" onclick="toggleFolder('0_0_0_1_')">&#9660;</span><span id="img_0_0_0_1_" class="iconfopen" onclick="toggleFolder('0_0_0_1_')">&#160;</span><a class="el" href="dir_90e361ec3542f3dd076ea3ad19547437.html" target="_self">CompilerIdCXX</a></td><td class="desc"></td></tr>
<tr id="row_0_0_0_1_0_" class="even"><td class="entry"><span style="width:80px;display:inline-block;">&#160;</span><a href="CMakeCXXCompilerId_8cpp_source.html"><span class="icondoc"></span></a><b>CMakeCXXCompilerId.cpp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="feature__tests_8c_source.html"><span class="icondoc"></span></a><b>feature_tests.c</b></td><td class="desc"></td></tr>
<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="feature__tests_8cxx_source.html"><span class="icondoc"></span></a><b>feature_tests.cxx</b></td><td class="desc"></td></tr>
<tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><span id="img_1_" class="iconfopen" onclick="toggleFolder('1_')">&#160;</span><a class="el" href="dir_587c94d866dbb2f408f78cf41f9b2f8d.html" target="_self">drv</a></td><td class="desc"></td></tr>
<tr id="row_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="b15f_8cpp_source.html"><span class="icondoc"></span></a><b>b15f.cpp</b></td><td class="desc"></td></tr>
<tr id="row_1_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="b15f_8h_source.html"><span class="icondoc"></span></a><b>b15f.h</b></td><td class="desc"></td></tr>
<tr id="row_1_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="backup_8cpp_source.html"><span class="icondoc"></span></a><b>backup.cpp</b></td><td class="desc"></td></tr>
<tr id="row_1_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dot_8cpp_source.html"><span class="icondoc"></span></a><b>dot.cpp</b></td><td class="desc"></td></tr>
<tr id="row_1_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="dot_8h_source.html"><span class="icondoc"></span></a><b>dot.h</b></td><td class="desc"></td></tr>
<tr id="row_1_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="driverexception_8h_source.html"><span class="icondoc"></span></a><b>driverexception.h</b></td><td class="desc"></td></tr>
<tr id="row_1_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="plottyfile_8cpp_source.html"><span class="icondoc"></span></a><b>plottyfile.cpp</b></td><td class="desc"></td></tr>
<tr id="row_1_7_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="plottyfile_8h_source.html"><span class="icondoc"></span></a><b>plottyfile.h</b></td><td class="desc"></td></tr>
<tr id="row_1_8_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="timeoutexception_8h_source.html"><span class="icondoc"></span></a><b>timeoutexception.h</b></td><td class="desc"></td></tr>
<tr id="row_1_9_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="usart_8cpp_source.html"><span class="icondoc"></span></a><b>usart.cpp</b></td><td class="desc"></td></tr>
<tr id="row_1_10_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="usart_8h_source.html"><span class="icondoc"></span></a><b>usart.h</b></td><td class="desc"></td></tr>
<tr id="row_1_11_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="usartexception_8h_source.html"><span class="icondoc"></span></a><b>usartexception.h</b></td><td class="desc"></td></tr>
<tr id="row_2_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><span id="img_2_" class="iconfopen" onclick="toggleFolder('2_')">&#160;</span><a class="el" href="dir_1788f8309b1a812dcb800a185471cf6c.html" target="_self">ui</a></td><td class="desc"></td></tr>
<tr id="row_2_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="ui_8cpp_source.html"><span class="icondoc"></span></a><b>ui.cpp</b></td><td class="desc"></td></tr>
<tr id="row_2_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="ui_8h_source.html"><span class="icondoc"></span></a><b>ui.h</b></td><td class="desc"></td></tr>
<tr id="row_2_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view_8cpp_source.html"><span class="icondoc"></span></a><b>view.cpp</b></td><td class="desc"></td></tr>
<tr id="row_2_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view_8h_source.html"><span class="icondoc"></span></a><b>view.h</b></td><td class="desc"></td></tr>
<tr id="row_2_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__info_8cpp_source.html"><span class="icondoc"></span></a><b>view_info.cpp</b></td><td class="desc"></td></tr>
<tr id="row_2_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__info_8h_source.html"><span class="icondoc"></span></a><b>view_info.h</b></td><td class="desc"></td></tr>
<tr id="row_2_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__monitor_8cpp_source.html"><span class="icondoc"></span></a><b>view_monitor.cpp</b></td><td class="desc"></td></tr>
<tr id="row_2_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__monitor_8h_source.html"><span class="icondoc"></span></a><b>view_monitor.h</b></td><td class="desc"></td></tr>
<tr id="row_2_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__promt_8cpp_source.html"><span class="icondoc"></span></a><b>view_promt.cpp</b></td><td class="desc"></td></tr>
<tr id="row_2_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__promt_8h_source.html"><span class="icondoc"></span></a><b>view_promt.h</b></td><td class="desc"></td></tr>
<tr id="row_2_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__selection_8cpp_source.html"><span class="icondoc"></span></a><b>view_selection.cpp</b></td><td class="desc"></td></tr>
<tr id="row_2_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a href="view__selection_8h_source.html"><span class="icondoc"></span></a><b>view_selection.h</b></td><td class="desc"></td></tr>
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a href="cli_8cpp_source.html"><span class="icondoc"></span></a><b>cli.cpp</b></td><td class="desc"></td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -71,6 +71,9 @@ $(function() {
<li>activateSelfTestMode()
: <a class="el" href="classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1">B15F</a>
</li>
<li>addDot()
: <a class="el" href="classPlottyFile.html#ae091e6eaaca16302f17572ac7dec6f7c">PlottyFile</a>
</li>
<li>analogRead()
: <a class="el" href="classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627">B15F</a>
</li>
@ -78,10 +81,17 @@ $(function() {
: <a class="el" href="classB15F.html#ab82a324426c3063318c6cafb3089ae02">B15F</a>
</li>
<li>analogWrite0()
: <a class="el" href="classB15F.html#a5c5583d591afdd3f9501856c6b0ba3e3">B15F</a>
: <a class="el" href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3">B15F</a>
</li>
<li>analogWrite1()
: <a class="el" href="classB15F.html#a63d67795879cdc0b035c9c970e7d6fc3">B15F</a>
: <a class="el" href="classB15F.html#a7f1becceac744f5cd2ad529748fd836f">B15F</a>
</li>
</ul>
<h3><a id="index_b"></a>- b -</h3><ul>
<li>BAUDRATE
: <a class="el" href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87">B15F</a>
</li>
</ul>
@ -121,6 +131,12 @@ $(function() {
<li>discard()
: <a class="el" href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5">B15F</a>
</li>
<li>Dot()
: <a class="el" href="classDot.html#ad975f119c0627a928790b3cd5ca6da05">Dot</a>
</li>
<li>drop()
: <a class="el" href="classUSART.html#a038d00c0b3d8c0c13c3e7eae5dad7813">USART</a>
</li>
</ul>
@ -145,12 +161,74 @@ $(function() {
<li>getBoardInfo()
: <a class="el" href="classB15F.html#a4f01677e73d6d172a2c1cae9427a591b">B15F</a>
</li>
<li>getCurve()
: <a class="el" href="classDot.html#ad0ae7dc1a9be3d8d985affc089b34396">Dot</a>
</li>
<li>getDescPara()
: <a class="el" href="classPlottyFile.html#a536967daae3b382a5d6575f55450e198">PlottyFile</a>
</li>
<li>getDescX()
: <a class="el" href="classPlottyFile.html#a9cf7baa569be308c2cf6e07cadded09d">PlottyFile</a>
</li>
<li>getDescY()
: <a class="el" href="classPlottyFile.html#ab4a847fd71a804182f211233e194df45">PlottyFile</a>
</li>
<li>getFunctionType()
: <a class="el" href="classPlottyFile.html#a88bb7d8350ed5fbc7a40e8d903c94bdb">PlottyFile</a>
</li>
<li>getInstance()
: <a class="el" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F</a>
</li>
<li>getParaFirstCurve()
: <a class="el" href="classPlottyFile.html#a40828c93d66fe80166c4f603d5bdfa48">PlottyFile</a>
</li>
<li>getParaStepWidth()
: <a class="el" href="classPlottyFile.html#a9da23f2bb8e6eb1837fc992ffd4057db">PlottyFile</a>
</li>
<li>getQuadrant()
: <a class="el" href="classPlottyFile.html#a54e94e80061a27614f2d4d63697d3376">PlottyFile</a>
</li>
<li>getRefX()
: <a class="el" href="classPlottyFile.html#a7dd84b9f0826f3220fc6b5a4f1ce9890">PlottyFile</a>
</li>
<li>getRefY()
: <a class="el" href="classPlottyFile.html#ae6650c61a3b1a610ce716253418bd7f2">PlottyFile</a>
</li>
<li>getRegister()
: <a class="el" href="classB15F.html#a9bd47da39928af6f51075bdc3fe73ddc">B15F</a>
</li>
<li>getTimeout()
: <a class="el" href="classUSART.html#a19cf777956a038878fc2d2b58c3d2b41">USART</a>
</li>
<li>getUnitPara()
: <a class="el" href="classPlottyFile.html#abcda4139adf8c5ab8a93b13b84ac097c">PlottyFile</a>
</li>
<li>getUnitX()
: <a class="el" href="classPlottyFile.html#af952ac5e2c40896acaf6a86063874fe3">PlottyFile</a>
</li>
<li>getUnitY()
: <a class="el" href="classPlottyFile.html#a746b96036872dbece204e9739f3413b6">PlottyFile</a>
</li>
<li>getX()
: <a class="el" href="classDot.html#a029f0cc99c474122b77a708a317e7f77">Dot</a>
</li>
<li>getY()
: <a class="el" href="classDot.html#a8fcb987e6308d8184d1a2c8692227e58">Dot</a>
</li>
</ul>
<h3><a id="index_m"></a>- m -</h3><ul>
<li>msg
: <a class="el" href="classTimeoutException.html#aa625fc0fae48a67737a98eafb91c9624">TimeoutException</a>
, <a class="el" href="classUSARTException.html#a14c80df95f216d221aa97cffbcd8dd79">USARTException</a>
</li>
<li>MSG_FAIL
: <a class="el" href="classB15F.html#a77d1ecf24b406c9204665d3b09c36f1e">B15F</a>
</li>
<li>MSG_OK
: <a class="el" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">B15F</a>
</li>
</ul>
@ -162,25 +240,34 @@ $(function() {
<h3><a id="index_p"></a>- p -</h3><ul>
<li>printStatistics()
: <a class="el" href="classUSART.html#a33559bb8f0eda33a489d47b9c9227b59">USART</a>
<li>PRE
: <a class="el" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">B15F</a>
</li>
<li>pwmSetFrequency()
: <a class="el" href="classB15F.html#ac6f6532bb9550a0632c28b98c157d0a1">B15F</a>
</li>
<li>pwmSetValue()
: <a class="el" href="classB15F.html#af9aad3c0db5d5a8b37219d713e1977ee">B15F</a>
</li>
</ul>
<h3><a id="index_r"></a>- r -</h3><ul>
<li>readByte()
: <a class="el" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">USART</a>
</li>
<li>readDipSwitch()
: <a class="el" href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a">B15F</a>
</li>
<li>readInt()
: <a class="el" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">USART</a>
<li>receive()
: <a class="el" href="classUSART.html#a0fdc238203852f00bd750127602b2a6a">USART</a>
</li>
<li>reconnect()
: <a class="el" href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7">B15F</a>
</li>
<li>RECONNECT_TIMEOUT
: <a class="el" href="classB15F.html#a040951746fbfd632e12bd1ad14578816">B15F</a>
</li>
<li>RECONNECT_TRIES
: <a class="el" href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc">B15F</a>
</li>
</ul>
@ -191,9 +278,51 @@ $(function() {
<li>setBaudrate()
: <a class="el" href="classUSART.html#aac63918a8b97ae63ee607cfa39e6d88d">USART</a>
</li>
<li>setDescPara()
: <a class="el" href="classPlottyFile.html#a431904143c3c1164a2e8b8cfec3c77ab">PlottyFile</a>
</li>
<li>setDescX()
: <a class="el" href="classPlottyFile.html#aa0449c290265d55d6223b19cf0a88b0a">PlottyFile</a>
</li>
<li>setDescY()
: <a class="el" href="classPlottyFile.html#a38a3a4dfc76bc70523727584bf01d590">PlottyFile</a>
</li>
<li>setFunctionType()
: <a class="el" href="classPlottyFile.html#a4e5ab1ebb012a5cc1a3d6458a4cd512f">PlottyFile</a>
</li>
<li>setParaFirstCurve()
: <a class="el" href="classPlottyFile.html#aa676414793becb975506f48d6e949dd0">PlottyFile</a>
</li>
<li>setParaStepWidth()
: <a class="el" href="classPlottyFile.html#a6caebd31e04e2e7081cc007047350355">PlottyFile</a>
</li>
<li>setQuadrant()
: <a class="el" href="classPlottyFile.html#a1953ee0d9a87b7353c16139584e9c2ae">PlottyFile</a>
</li>
<li>setRefX()
: <a class="el" href="classPlottyFile.html#a80c2c2e97a454566f9c1f2c51e1d7f3e">PlottyFile</a>
</li>
<li>setRefY()
: <a class="el" href="classPlottyFile.html#a3a371228ddcc007e97eebe7cc04dffc2">PlottyFile</a>
</li>
<li>setRegister()
: <a class="el" href="classB15F.html#ab446ecffab28d4515dfade79a8efc93d">B15F</a>
</li>
<li>setTimeout()
: <a class="el" href="classUSART.html#ad7fe866cebe920784d2b17602824c7ff">USART</a>
</li>
<li>setUnitPara()
: <a class="el" href="classPlottyFile.html#abbac84109a1e0958a4ca5c270fac0986">PlottyFile</a>
</li>
<li>setUnitX()
: <a class="el" href="classPlottyFile.html#ab8d35a841ca9c325fca671cf34e03527">PlottyFile</a>
</li>
<li>setUnitY()
: <a class="el" href="classPlottyFile.html#abb18c814f435926f741f7ceb310f3059">PlottyFile</a>
</li>
<li>startPlotty()
: <a class="el" href="classPlottyFile.html#a08a115ef10458cadfe76077d623313df">PlottyFile</a>
</li>
</ul>
@ -204,21 +333,54 @@ $(function() {
<li>testIntConv()
: <a class="el" href="classB15F.html#a7b8a0e2a9156f7dcb05d097f23666a78">B15F</a>
</li>
<li>TimeoutException()
: <a class="el" href="classTimeoutException.html#aa45912234da11ffc9dd3594a1bbc0218">TimeoutException</a>
</li>
<li>transmit()
: <a class="el" href="classUSART.html#a41b19dd58f307015b73e154048cd74ca">USART</a>
</li>
</ul>
<h3><a id="index_u"></a>- u -</h3><ul>
<li>USART()
: <a class="el" href="classUSART.html#a5daed20dc595c43d87c4c28bb08a7449">USART</a>
</li>
<li>USARTException()
: <a class="el" href="classUSARTException.html#a3c359db129825703b91392d5128cf93d">USARTException</a>
</li>
</ul>
<h3><a id="index_w"></a>- w -</h3><ul>
<li>writeByte()
: <a class="el" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">USART</a>
<li>WDT_TIMEOUT
: <a class="el" href="classB15F.html#a158d13bc84aed6430cdede1396384e06">B15F</a>
</li>
<li>writeInt()
: <a class="el" href="classUSART.html#a78b30d9aa863f38745e982860392599a">USART</a>
<li>what()
: <a class="el" href="classTimeoutException.html#a97eaf01fc39ddb94b060020b42fefd6e">TimeoutException</a>
, <a class="el" href="classUSARTException.html#a2af5e3c00cd0585c7427c2e0420a8f15">USARTException</a>
</li>
<li>writeToFile()
: <a class="el" href="classPlottyFile.html#a82c348e7fade2edcbc907e7c2bc2e305">PlottyFile</a>
</li>
</ul>
<h3><a id="index__7E"></a>- ~ -</h3><ul>
<li>~TimeoutException()
: <a class="el" href="classTimeoutException.html#a2f686b262d2ccffa0090fda9b44ab540">TimeoutException</a>
</li>
<li>~USART()
: <a class="el" href="classUSART.html#a0c8eb1a939ca00921e22f6cbcc7bb749">USART</a>
</li>
<li>~USARTException()
: <a class="el" href="classUSARTException.html#a0e008b3cb4974859e6bc8c8f8eb480be">USARTException</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -71,6 +71,9 @@ $(function() {
<li>activateSelfTestMode()
: <a class="el" href="classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1">B15F</a>
</li>
<li>addDot()
: <a class="el" href="classPlottyFile.html#ae091e6eaaca16302f17572ac7dec6f7c">PlottyFile</a>
</li>
<li>analogRead()
: <a class="el" href="classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627">B15F</a>
</li>
@ -78,10 +81,10 @@ $(function() {
: <a class="el" href="classB15F.html#ab82a324426c3063318c6cafb3089ae02">B15F</a>
</li>
<li>analogWrite0()
: <a class="el" href="classB15F.html#a5c5583d591afdd3f9501856c6b0ba3e3">B15F</a>
: <a class="el" href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3">B15F</a>
</li>
<li>analogWrite1()
: <a class="el" href="classB15F.html#a63d67795879cdc0b035c9c970e7d6fc3">B15F</a>
: <a class="el" href="classB15F.html#a7f1becceac744f5cd2ad529748fd836f">B15F</a>
</li>
</ul>
@ -121,6 +124,12 @@ $(function() {
<li>discard()
: <a class="el" href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5">B15F</a>
</li>
<li>Dot()
: <a class="el" href="classDot.html#ad975f119c0627a928790b3cd5ca6da05">Dot</a>
</li>
<li>drop()
: <a class="el" href="classUSART.html#a038d00c0b3d8c0c13c3e7eae5dad7813">USART</a>
</li>
</ul>
@ -145,12 +154,60 @@ $(function() {
<li>getBoardInfo()
: <a class="el" href="classB15F.html#a4f01677e73d6d172a2c1cae9427a591b">B15F</a>
</li>
<li>getCurve()
: <a class="el" href="classDot.html#ad0ae7dc1a9be3d8d985affc089b34396">Dot</a>
</li>
<li>getDescPara()
: <a class="el" href="classPlottyFile.html#a536967daae3b382a5d6575f55450e198">PlottyFile</a>
</li>
<li>getDescX()
: <a class="el" href="classPlottyFile.html#a9cf7baa569be308c2cf6e07cadded09d">PlottyFile</a>
</li>
<li>getDescY()
: <a class="el" href="classPlottyFile.html#ab4a847fd71a804182f211233e194df45">PlottyFile</a>
</li>
<li>getFunctionType()
: <a class="el" href="classPlottyFile.html#a88bb7d8350ed5fbc7a40e8d903c94bdb">PlottyFile</a>
</li>
<li>getInstance()
: <a class="el" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F</a>
</li>
<li>getParaFirstCurve()
: <a class="el" href="classPlottyFile.html#a40828c93d66fe80166c4f603d5bdfa48">PlottyFile</a>
</li>
<li>getParaStepWidth()
: <a class="el" href="classPlottyFile.html#a9da23f2bb8e6eb1837fc992ffd4057db">PlottyFile</a>
</li>
<li>getQuadrant()
: <a class="el" href="classPlottyFile.html#a54e94e80061a27614f2d4d63697d3376">PlottyFile</a>
</li>
<li>getRefX()
: <a class="el" href="classPlottyFile.html#a7dd84b9f0826f3220fc6b5a4f1ce9890">PlottyFile</a>
</li>
<li>getRefY()
: <a class="el" href="classPlottyFile.html#ae6650c61a3b1a610ce716253418bd7f2">PlottyFile</a>
</li>
<li>getRegister()
: <a class="el" href="classB15F.html#a9bd47da39928af6f51075bdc3fe73ddc">B15F</a>
</li>
<li>getTimeout()
: <a class="el" href="classUSART.html#a19cf777956a038878fc2d2b58c3d2b41">USART</a>
</li>
<li>getUnitPara()
: <a class="el" href="classPlottyFile.html#abcda4139adf8c5ab8a93b13b84ac097c">PlottyFile</a>
</li>
<li>getUnitX()
: <a class="el" href="classPlottyFile.html#af952ac5e2c40896acaf6a86063874fe3">PlottyFile</a>
</li>
<li>getUnitY()
: <a class="el" href="classPlottyFile.html#a746b96036872dbece204e9739f3413b6">PlottyFile</a>
</li>
<li>getX()
: <a class="el" href="classDot.html#a029f0cc99c474122b77a708a317e7f77">Dot</a>
</li>
<li>getY()
: <a class="el" href="classDot.html#a8fcb987e6308d8184d1a2c8692227e58">Dot</a>
</li>
</ul>
@ -162,21 +219,21 @@ $(function() {
<h3><a id="index_p"></a>- p -</h3><ul>
<li>printStatistics()
: <a class="el" href="classUSART.html#a33559bb8f0eda33a489d47b9c9227b59">USART</a>
<li>pwmSetFrequency()
: <a class="el" href="classB15F.html#ac6f6532bb9550a0632c28b98c157d0a1">B15F</a>
</li>
<li>pwmSetValue()
: <a class="el" href="classB15F.html#af9aad3c0db5d5a8b37219d713e1977ee">B15F</a>
</li>
</ul>
<h3><a id="index_r"></a>- r -</h3><ul>
<li>readByte()
: <a class="el" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">USART</a>
</li>
<li>readDipSwitch()
: <a class="el" href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a">B15F</a>
</li>
<li>readInt()
: <a class="el" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">USART</a>
<li>receive()
: <a class="el" href="classUSART.html#a0fdc238203852f00bd750127602b2a6a">USART</a>
</li>
<li>reconnect()
: <a class="el" href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7">B15F</a>
@ -191,9 +248,51 @@ $(function() {
<li>setBaudrate()
: <a class="el" href="classUSART.html#aac63918a8b97ae63ee607cfa39e6d88d">USART</a>
</li>
<li>setDescPara()
: <a class="el" href="classPlottyFile.html#a431904143c3c1164a2e8b8cfec3c77ab">PlottyFile</a>
</li>
<li>setDescX()
: <a class="el" href="classPlottyFile.html#aa0449c290265d55d6223b19cf0a88b0a">PlottyFile</a>
</li>
<li>setDescY()
: <a class="el" href="classPlottyFile.html#a38a3a4dfc76bc70523727584bf01d590">PlottyFile</a>
</li>
<li>setFunctionType()
: <a class="el" href="classPlottyFile.html#a4e5ab1ebb012a5cc1a3d6458a4cd512f">PlottyFile</a>
</li>
<li>setParaFirstCurve()
: <a class="el" href="classPlottyFile.html#aa676414793becb975506f48d6e949dd0">PlottyFile</a>
</li>
<li>setParaStepWidth()
: <a class="el" href="classPlottyFile.html#a6caebd31e04e2e7081cc007047350355">PlottyFile</a>
</li>
<li>setQuadrant()
: <a class="el" href="classPlottyFile.html#a1953ee0d9a87b7353c16139584e9c2ae">PlottyFile</a>
</li>
<li>setRefX()
: <a class="el" href="classPlottyFile.html#a80c2c2e97a454566f9c1f2c51e1d7f3e">PlottyFile</a>
</li>
<li>setRefY()
: <a class="el" href="classPlottyFile.html#a3a371228ddcc007e97eebe7cc04dffc2">PlottyFile</a>
</li>
<li>setRegister()
: <a class="el" href="classB15F.html#ab446ecffab28d4515dfade79a8efc93d">B15F</a>
</li>
<li>setTimeout()
: <a class="el" href="classUSART.html#ad7fe866cebe920784d2b17602824c7ff">USART</a>
</li>
<li>setUnitPara()
: <a class="el" href="classPlottyFile.html#abbac84109a1e0958a4ca5c270fac0986">PlottyFile</a>
</li>
<li>setUnitX()
: <a class="el" href="classPlottyFile.html#ab8d35a841ca9c325fca671cf34e03527">PlottyFile</a>
</li>
<li>setUnitY()
: <a class="el" href="classPlottyFile.html#abb18c814f435926f741f7ceb310f3059">PlottyFile</a>
</li>
<li>startPlotty()
: <a class="el" href="classPlottyFile.html#a08a115ef10458cadfe76077d623313df">PlottyFile</a>
</li>
</ul>
@ -204,21 +303,51 @@ $(function() {
<li>testIntConv()
: <a class="el" href="classB15F.html#a7b8a0e2a9156f7dcb05d097f23666a78">B15F</a>
</li>
<li>TimeoutException()
: <a class="el" href="classTimeoutException.html#aa45912234da11ffc9dd3594a1bbc0218">TimeoutException</a>
</li>
<li>transmit()
: <a class="el" href="classUSART.html#a41b19dd58f307015b73e154048cd74ca">USART</a>
</li>
</ul>
<h3><a id="index_u"></a>- u -</h3><ul>
<li>USART()
: <a class="el" href="classUSART.html#a5daed20dc595c43d87c4c28bb08a7449">USART</a>
</li>
<li>USARTException()
: <a class="el" href="classUSARTException.html#a3c359db129825703b91392d5128cf93d">USARTException</a>
</li>
</ul>
<h3><a id="index_w"></a>- w -</h3><ul>
<li>writeByte()
: <a class="el" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">USART</a>
<li>what()
: <a class="el" href="classTimeoutException.html#a97eaf01fc39ddb94b060020b42fefd6e">TimeoutException</a>
, <a class="el" href="classUSARTException.html#a2af5e3c00cd0585c7427c2e0420a8f15">USARTException</a>
</li>
<li>writeInt()
: <a class="el" href="classUSART.html#a78b30d9aa863f38745e982860392599a">USART</a>
<li>writeToFile()
: <a class="el" href="classPlottyFile.html#a82c348e7fade2edcbc907e7c2bc2e305">PlottyFile</a>
</li>
</ul>
<h3><a id="index__7E"></a>- ~ -</h3><ul>
<li>~TimeoutException()
: <a class="el" href="classTimeoutException.html#a2f686b262d2ccffa0090fda9b44ab540">TimeoutException</a>
</li>
<li>~USART()
: <a class="el" href="classUSART.html#a0c8eb1a939ca00921e22f6cbcc7bb749">USART</a>
</li>
<li>~USARTException()
: <a class="el" href="classUSARTException.html#a0e008b3cb4974859e6bc8c8f8eb480be">USARTException</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -0,0 +1,100 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>B15F: Class Members - Variables</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">B15F
</div>
<div id="projectbrief">Board 15 Famulus Edition</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.16 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="contents">
&#160;<ul>
<li>BAUDRATE
: <a class="el" href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87">B15F</a>
</li>
<li>msg
: <a class="el" href="classTimeoutException.html#aa625fc0fae48a67737a98eafb91c9624">TimeoutException</a>
, <a class="el" href="classUSARTException.html#a14c80df95f216d221aa97cffbcd8dd79">USARTException</a>
</li>
<li>MSG_FAIL
: <a class="el" href="classB15F.html#a77d1ecf24b406c9204665d3b09c36f1e">B15F</a>
</li>
<li>MSG_OK
: <a class="el" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">B15F</a>
</li>
<li>PRE
: <a class="el" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">B15F</a>
</li>
<li>RECONNECT_TIMEOUT
: <a class="el" href="classB15F.html#a040951746fbfd632e12bd1ad14578816">B15F</a>
</li>
<li>RECONNECT_TRIES
: <a class="el" href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc">B15F</a>
</li>
<li>WDT_TIMEOUT
: <a class="el" href="classB15F.html#a158d13bc84aed6430cdede1396384e06">B15F</a>
</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>
</body>
</html>

View file

@ -86,7 +86,7 @@ $(function() {
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>B15F: Einführung</title>
<title>B15F: B15F Benutzerhandbuch</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
@ -63,16 +63,90 @@ $(function() {
<div class="PageDoc"><div class="header">
<div class="headertitle">
<div class="title">Einführung </div> </div>
<div class="title"><a class="el" href="classB15F.html">B15F</a> Benutzerhandbuch </div> </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Die wichtigste Klasse für die Steuerung des Board 15 ist <a href="classB15F.html">B15F</a>. <br />
Dort befindet sich auch eine Übersicht der verfügbaren Befehle. </p>
<div class="textblock"><p><em>Hinweis</em>: Terminal-Befehle sind <b>fett</b> gedruckt</p>
<h1><a class="anchor" id="autotoc_md1"></a>
Installation</h1>
<h2><a class="anchor" id="autotoc_md2"></a>
1. Abhängigkeiten installieren</h2>
<p>(a) <b>sudo apt-get update</b> <br />
(b) <b>sudo apt-get install git avr-libc avrdude libncurses5-dev g++</b> <br />
</p>
<h2><a class="anchor" id="autotoc_md3"></a>
2. Das Repository klonen</h2>
<p>(a) <b>cd /home/famulus/</b> <br />
(b) <b>git clone "https://github.com/devfix/b15f.git"</b> <br />
</p>
<h2><a class="anchor" id="autotoc_md4"></a>
3. Die Firmware installieren</h2>
<p>(a) <b>cd "/home/famulus/b15f/firmware"</b> <br />
(b) Passen Sie in der Datei <em>Makefile</em> die Option "MCU = ..." an die MCU des vorliegenden Boards an <br />
(<em>atmega1284</em> und <em>atmega1284p</em> sind nicht identisch!) <br />
(c) <b>make</b> <br />
Wenn udev richtig konfiguriert wurde: <br />
(d I) <b>make upload</b> <br />
Sonst: <br />
(d II) <b>sudo make upload</b> <br />
</p>
<h2><a class="anchor" id="autotoc_md5"></a>
4. Die Steuersoftware (Bibliothek &amp; CLI) installieren</h2>
<p>(a) <b>cd "/home/famulus/b15f/control/src"</b> <br />
(b) <b>make</b> <br />
(Die Warnungen durch doxygen können ignoriert werden.)</p>
<p>(c) <b>sudo make install</b> <br />
</p>
<h1><a class="anchor" id="autotoc_md6"></a>
Aktualisierung</h1>
<p>(a) <b>cd /home/famulus/b15f/</b> <br />
(b) <b>git pull &ndash;prune</b> <br />
(c) <b>cd "/home/famulus/b15f/firmware"</b> <br />
(d) <b>make clean</b> <br />
(e) <b>cd "/home/famulus/b15f/control/src"</b> <br />
(f) <b>make clean</b> <br />
(g) Installation ab Schritt 3 wiederholen</p>
<h1><a class="anchor" id="autotoc_md7"></a>
Das CommandLineInterface (CLI) benutzen</h1>
<p>(a) Öffnen Sie ein Terminal und maximieren Sie das Fenster <br />
(b) Start des CLI erfolgt durch <b>b15fcli</b> <br />
(c) Die Navigation erfolgt durch &lt;Tab&gt;, die Pfeiltasten und &lt;Enter&gt; oder die Maus <br />
(d) Mit &lt;Strg + c&gt; kann das Programm sofort verlassen werden</p>
<h1><a class="anchor" id="autotoc_md8"></a>
Eigene Programme mit B15F schreiben</h1>
<h2><a class="anchor" id="autotoc_md9"></a>
Grundsätzliches</h2>
<p>Die wichtigste Klasse für die Steuerung des Board 15 ist <a href="https://devfix.github.io/b15f/html/classB15F.html">B15F</a>. <br />
Dort befindet sich auch eine Übersicht der verfügbaren Befehle. <br />
</p>
<h2><a class="anchor" id="autotoc_md10"></a>
Beispiele</h2>
<p>In dem Verzeichnis <a href="https://github.com/devfix/b15f/tree/master/control/examples">b15f/control/examples</a> sind einige Beispiele für die Verwendung einzelner <a class="el" href="classB15F.html">B15F</a> Funktionen. <br />
Zu jedem Beispiel gehört eine <em>main.cpp</em> mit dem Quellcode und eine <em>Makefile</em>-Datei. <br />
Das Beispiel kann mit <b>make</b> kompiliert und mit **./main.elf** gestartet werden.</p>
<h2><a class="anchor" id="autotoc_md11"></a>
Den B15F Treiber verwenden</h2>
<p>Benötigt wird der B15F-Header: <br />
<code>#include &lt;b15f/b15f.h&gt;</code> <br />
und der Header für die plottyfile-Generierung, falls mit Kennlinien gearbeitet werden soll: <br />
<code>#include &lt;b15f/plottyfile.h&gt;</code></p>
<p>Für die Interaktion wird eine Referenz auf die aktuelle Treiberinstanz gespeichert: <br />
<code><a class="el" href="classB15F.html">B15F</a>&amp; drv = <a class="el" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance()</a>;</code> <br />
Falls noch keine existiert, wird automatisch eine erzeugt und Verbindung zum Board hergestellt. <br />
Ab jetzt können auf dem Object <code>drv</code> verschiedene Methoden angewand werden, siehe <a href="https://devfix.github.io/b15f/html/classB15F.html">B15F</a>. <br />
</p>
<h2><a class="anchor" id="autotoc_md12"></a>
Kennlinien mit plottyfile generieren</h2>
<p>Die Beschreibung zu Plottyfile befindet sich <a href="https://devfix.github.io/b15f/html/classPlottyFile.html">hier</a>. <br />
Nach dem Include von plottyfile kann ein neues Objekt erzeugt und konfiguriert werden: <br />
</p><div class="fragment"><div class="line"> {C++}</div><div class="line">PlottyFile pf; </div><div class="line">pf.setUnitX(&quot;V&quot;); </div><div class="line">pf.setUnitY(&quot;V&quot;); </div><div class="line">pf.setUnitPara(&quot;V&quot;); </div><div class="line">pf.setDescX(&quot;U_{OUT}&quot;); </div><div class="line">pf.setDescY(&quot;U_{IN}&quot;); </div><div class="line">pf.setDescPara(&quot;&quot;); </div><div class="line">pf.setRefX(5); </div><div class="line">pf.setRefY(5); </div><div class="line">pf.setParaFirstCurve(0); </div><div class="line">pf.setParaStepWidth(0);</div></div><!-- fragment --><p> Messpunkte können anschließend hinzugefügt werden. <br />
Dabei gehören Punkte mit dem gleichen Index für <code>curve</code> (<em>uint8_t</em>) zur selben Kurve und erhalten durch Plotty automatisch die gleiche Farbe. <br />
</p><div class="fragment"><div class="line"> {C++}</div><div class="line">pf.addDot(Dot(x, y, curve));</div></div><!-- fragment --><p> <code>x</code> und <code>y</code> sind <em>uint16_t</em>, also keine Gleitkommazahlen. </p>
</div></div><!-- PageDoc -->
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
Generated on Fri Jun 7 2019 11:03:15 for B15F by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.16
</small></address>

View file

@ -29,17 +29,21 @@ var menudata={children:[
{text:"Class Members",url:"functions.html",children:[
{text:"All",url:"functions.html",children:[
{text:"a",url:"functions.html#index_a"},
{text:"b",url:"functions.html#index_b"},
{text:"c",url:"functions.html#index_c"},
{text:"d",url:"functions.html#index_d"},
{text:"e",url:"functions.html#index_e"},
{text:"f",url:"functions.html#index_f"},
{text:"g",url:"functions.html#index_g"},
{text:"m",url:"functions.html#index_m"},
{text:"o",url:"functions.html#index_o"},
{text:"p",url:"functions.html#index_p"},
{text:"r",url:"functions.html#index_r"},
{text:"s",url:"functions.html#index_s"},
{text:"t",url:"functions.html#index_t"},
{text:"w",url:"functions.html#index_w"}]},
{text:"u",url:"functions.html#index_u"},
{text:"w",url:"functions.html#index_w"},
{text:"~",url:"functions.html#index__7E"}]},
{text:"Functions",url:"functions_func.html",children:[
{text:"a",url:"functions_func.html#index_a"},
{text:"c",url:"functions_func.html#index_c"},
@ -52,6 +56,9 @@ var menudata={children:[
{text:"r",url:"functions_func.html#index_r"},
{text:"s",url:"functions_func.html#index_s"},
{text:"t",url:"functions_func.html#index_t"},
{text:"w",url:"functions_func.html#index_w"}]}]}]},
{text:"u",url:"functions_func.html#index_u"},
{text:"w",url:"functions_func.html#index_w"},
{text:"~",url:"functions_func.html#index__7E"}]},
{text:"Variables",url:"functions_vars.html"}]}]},
{text:"Files",url:"files.html",children:[
{text:"File List",url:"files.html"}]}]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -2,8 +2,9 @@ var searchData=
[
['abort',['abort',['../classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e',1,'B15F::abort(std::string msg)'],['../classB15F.html#ac962a6a49bddd0e261a8c7d3aded23f8',1,'B15F::abort(std::exception &amp;ex)']]],
['activateselftestmode',['activateSelfTestMode',['../classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1',1,'B15F']]],
['adddot',['addDot',['../classPlottyFile.html#ae091e6eaaca16302f17572ac7dec6f7c',1,'PlottyFile::addDot(Dot &amp;dot)'],['../classPlottyFile.html#a80e4b45219b4e9571992edfc28a28568',1,'PlottyFile::addDot(Dot dot)']]],
['analogread',['analogRead',['../classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627',1,'B15F']]],
['analogsequence',['analogSequence',['../classB15F.html#ab82a324426c3063318c6cafb3089ae02',1,'B15F']]],
['analogwrite0',['analogWrite0',['../classB15F.html#a5c5583d591afdd3f9501856c6b0ba3e3',1,'B15F']]],
['analogwrite1',['analogWrite1',['../classB15F.html#a63d67795879cdc0b035c9c970e7d6fc3',1,'B15F']]]
['analogwrite0',['analogWrite0',['../classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3',1,'B15F']]],
['analogwrite1',['analogWrite1',['../classB15F.html#a7f1becceac744f5cd2ad529748fd836f',1,'B15F']]]
];

View file

@ -1,4 +1,6 @@
var searchData=
[
['b15f',['B15F',['../classB15F.html',1,'']]]
['b15f',['B15F',['../classB15F.html',1,'']]],
['baudrate',['BAUDRATE',['../classB15F.html#a7d548d6861cfc69753161bf9cda14f87',1,'B15F']]],
['b15f_20benutzerhandbuch',['B15F Benutzerhandbuch',['../index.html',1,'']]]
];

View file

@ -0,0 +1,30 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head><title></title>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen 1.8.16"/>
<link rel="stylesheet" type="text/css" href="search.css"/>
<script type="text/javascript" src="all_10.js"></script>
<script type="text/javascript" src="search.js"></script>
</head>
<body class="SRPage">
<div id="SRIndex">
<div class="SRStatus" id="Loading">Loading...</div>
<div id="SRResults"></div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
createResults();
/* @license-end */
--></script>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
<script type="text/javascript"><!--
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
document.getElementById("Loading").style.display="none";
document.getElementById("NoMatches").style.display="none";
var searchResults = new SearchResults("searchResults");
searchResults.Search();
/* @license-end */
--></script>
</div>
</body>
</html>

View file

@ -0,0 +1,6 @@
var searchData=
[
['_7etimeoutexception',['~TimeoutException',['../classTimeoutException.html#a2f686b262d2ccffa0090fda9b44ab540',1,'TimeoutException']]],
['_7eusart',['~USART',['../classUSART.html#a0c8eb1a939ca00921e22f6cbcc7bb749',1,'USART']]],
['_7eusartexception',['~USARTException',['../classUSARTException.html#a0e008b3cb4974859e6bc8c8f8eb480be',1,'USARTException']]]
];

View file

@ -7,6 +7,7 @@ var searchData=
['digitalwrite0',['digitalWrite0',['../classB15F.html#a13797edea1c50278988373acbd110064',1,'B15F']]],
['digitalwrite1',['digitalWrite1',['../classB15F.html#aa225e7fc813849634063e071ef25db1b',1,'B15F']]],
['discard',['discard',['../classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5',1,'B15F']]],
['dot',['Dot',['../classDot.html',1,'']]],
['driverexception',['DriverException',['../classDriverException.html',1,'']]]
['dot',['Dot',['../classDot.html',1,'Dot'],['../classDot.html#ad975f119c0627a928790b3cd5ca6da05',1,'Dot::Dot()']]],
['driverexception',['DriverException',['../classDriverException.html',1,'']]],
['drop',['drop',['../classUSART.html#a038d00c0b3d8c0c13c3e7eae5dad7813',1,'USART']]]
];

View file

@ -1,5 +1,4 @@
var searchData=
[
['exec',['exec',['../classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a',1,'B15F']]],
['einführung',['Einführung',['../index.html',1,'']]]
['exec',['exec',['../classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a',1,'B15F']]]
];

View file

@ -2,6 +2,22 @@ var searchData=
[
['getbaudrate',['getBaudrate',['../classUSART.html#a4918672d8069df205378a528b1892db3',1,'USART']]],
['getboardinfo',['getBoardInfo',['../classB15F.html#a4f01677e73d6d172a2c1cae9427a591b',1,'B15F']]],
['getcurve',['getCurve',['../classDot.html#ad0ae7dc1a9be3d8d985affc089b34396',1,'Dot']]],
['getdescpara',['getDescPara',['../classPlottyFile.html#a536967daae3b382a5d6575f55450e198',1,'PlottyFile']]],
['getdescx',['getDescX',['../classPlottyFile.html#a9cf7baa569be308c2cf6e07cadded09d',1,'PlottyFile']]],
['getdescy',['getDescY',['../classPlottyFile.html#ab4a847fd71a804182f211233e194df45',1,'PlottyFile']]],
['getfunctiontype',['getFunctionType',['../classPlottyFile.html#a88bb7d8350ed5fbc7a40e8d903c94bdb',1,'PlottyFile']]],
['getinstance',['getInstance',['../classB15F.html#a8b4533d232c55ef2aa967e39e2d23380',1,'B15F']]],
['gettimeout',['getTimeout',['../classUSART.html#a19cf777956a038878fc2d2b58c3d2b41',1,'USART']]]
['getparafirstcurve',['getParaFirstCurve',['../classPlottyFile.html#a40828c93d66fe80166c4f603d5bdfa48',1,'PlottyFile']]],
['getparastepwidth',['getParaStepWidth',['../classPlottyFile.html#a9da23f2bb8e6eb1837fc992ffd4057db',1,'PlottyFile']]],
['getquadrant',['getQuadrant',['../classPlottyFile.html#a54e94e80061a27614f2d4d63697d3376',1,'PlottyFile']]],
['getrefx',['getRefX',['../classPlottyFile.html#a7dd84b9f0826f3220fc6b5a4f1ce9890',1,'PlottyFile']]],
['getrefy',['getRefY',['../classPlottyFile.html#ae6650c61a3b1a610ce716253418bd7f2',1,'PlottyFile']]],
['getregister',['getRegister',['../classB15F.html#a9bd47da39928af6f51075bdc3fe73ddc',1,'B15F']]],
['gettimeout',['getTimeout',['../classUSART.html#a19cf777956a038878fc2d2b58c3d2b41',1,'USART']]],
['getunitpara',['getUnitPara',['../classPlottyFile.html#abcda4139adf8c5ab8a93b13b84ac097c',1,'PlottyFile']]],
['getunitx',['getUnitX',['../classPlottyFile.html#af952ac5e2c40896acaf6a86063874fe3',1,'PlottyFile']]],
['getunity',['getUnitY',['../classPlottyFile.html#a746b96036872dbece204e9739f3413b6',1,'PlottyFile']]],
['getx',['getX',['../classDot.html#a029f0cc99c474122b77a708a317e7f77',1,'Dot']]],
['gety',['getY',['../classDot.html#a8fcb987e6308d8184d1a2c8692227e58',1,'Dot']]]
];

View file

@ -1,4 +1,6 @@
var searchData=
[
['opendevice',['openDevice',['../classUSART.html#a5f7e2abda2ec4a68a5fdb8ee2f8a940a',1,'USART']]]
['msg',['msg',['../classTimeoutException.html#aa625fc0fae48a67737a98eafb91c9624',1,'TimeoutException::msg()'],['../classUSARTException.html#a14c80df95f216d221aa97cffbcd8dd79',1,'USARTException::msg()']]],
['msg_5ffail',['MSG_FAIL',['../classB15F.html#a77d1ecf24b406c9204665d3b09c36f1e',1,'B15F']]],
['msg_5fok',['MSG_OK',['../classB15F.html#ab01299858f74a6cec598688562e0ad02',1,'B15F']]]
];

Some files were not shown because too many files have changed in this diff Show more