From 2e88b9c9806ba44b0ec58449e2c91cba9ebb60b9 Mon Sep 17 00:00:00 2001 From: Tristan Krause <tristan.krause@stud.htwk-leipzig.de> Date: Wed, 29 May 2019 10:13:36 +0200 Subject: [PATCH] remote set and get register by address --- control/examples/register/Makefile | 30 + control/examples/register/main.cpp | 35 + control/src/drv/b15f.cpp | 40 + control/src/drv/b15f.h | 24 +- docs/atmegaiom1284p.h | 1219 +++++++++++++++++ docs/html/annotated.html | 2 +- docs/html/b15f_8cpp_source.html | 28 +- docs/html/b15f_8h_source.html | 32 +- docs/html/classB15F-members.html | 24 +- docs/html/classB15F.html | 95 +- docs/html/classDot-members.html | 2 +- docs/html/classDot.html | 2 +- docs/html/classDriverException-members.html | 2 +- docs/html/classDriverException.html | 2 +- docs/html/classPlottyFile-members.html | 2 +- docs/html/classPlottyFile.html | 2 +- docs/html/classTimeoutException-members.html | 2 +- docs/html/classTimeoutException.html | 2 +- docs/html/classUSART-members.html | 2 +- docs/html/classUSART.html | 2 +- docs/html/classUSARTException-members.html | 2 +- docs/html/classUSARTException.html | 2 +- docs/html/classView-members.html | 2 +- docs/html/classView.html | 2 +- docs/html/classViewInfo-members.html | 2 +- docs/html/classViewInfo.html | 2 +- docs/html/classViewMonitor-members.html | 2 +- docs/html/classViewMonitor.html | 2 +- docs/html/classViewPromt-members.html | 2 +- docs/html/classViewPromt.html | 2 +- docs/html/classViewSelection-members.html | 2 +- docs/html/classViewSelection.html | 2 +- docs/html/classes.html | 2 +- docs/html/cli_8cpp_source.html | 6 +- .../dir_1788f8309b1a812dcb800a185471cf6c.html | 2 +- .../dir_587c94d866dbb2f408f78cf41f9b2f8d.html | 2 +- docs/html/dot_8cpp_source.html | 2 +- docs/html/dot_8h_source.html | 2 +- docs/html/driverexception_8h_source.html | 2 +- docs/html/files.html | 2 +- docs/html/functions.html | 8 +- docs/html/functions_func.html | 8 +- docs/html/functions_vars.html | 2 +- docs/html/hierarchy.html | 2 +- docs/html/index.html | 2 +- docs/html/plottyfile_8cpp_source.html | 2 +- docs/html/plottyfile_8h_source.html | 2 +- docs/html/search/all_6.js | 1 + docs/html/search/all_b.js | 1 + docs/html/search/functions_5.js | 1 + docs/html/search/functions_9.js | 1 + docs/html/timeoutexception_8h_source.html | 2 +- docs/html/ui_8cpp_source.html | 8 +- docs/html/ui_8h_source.html | 2 +- docs/html/usart_8cpp_source.html | 2 +- docs/html/usart_8h_source.html | 2 +- docs/html/usartexception_8h_source.html | 2 +- docs/html/view_8cpp_source.html | 4 +- docs/html/view_8h_source.html | 2 +- docs/html/view__info_8cpp_source.html | 2 +- docs/html/view__info_8h_source.html | 2 +- docs/html/view__monitor_8cpp_source.html | 8 +- docs/html/view__monitor_8h_source.html | 2 +- docs/html/view__promt_8cpp_source.html | 2 +- docs/html/view__promt_8h_source.html | 2 +- docs/html/view__selection_8cpp_source.html | 2 +- docs/html/view__selection_8h_source.html | 2 +- firmware/requests.cpp | 29 + firmware/requests.h | 14 +- 69 files changed, 1595 insertions(+), 117 deletions(-) create mode 100644 control/examples/register/Makefile create mode 100644 control/examples/register/main.cpp create mode 100644 docs/atmegaiom1284p.h diff --git a/control/examples/register/Makefile b/control/examples/register/Makefile new file mode 100644 index 0000000..8000d6e --- /dev/null +++ b/control/examples/register/Makefile @@ -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 $@ diff --git a/control/examples/register/main.cpp b/control/examples/register/main.cpp new file mode 100644 index 0000000..27a15ba --- /dev/null +++ b/control/examples/register/main.cpp @@ -0,0 +1,35 @@ +#include <iostream> +#include <cmath> +#include <b15f/b15f.h> +#include <b15f/plottyfile.h> + +const char PLOT_FILE[] = "plot.bin"; + +constexpr uint8_t SFR_OFFSET = 0x20; +constexpr uint8_t SFR_DDRB = 0x04; +constexpr uint8_t SFR_WDTCSR = 0x60; +constexpr uint8_t SFR_PORTB = 0x05; + +/* + * Dieses Beispiel erzeugt einen 300ms langen Impuls an PB0. + * + */ +int main() +{ + uint8_t DDRB, PORTB; + B15F& drv = B15F::getInstance(); + + DDRB = drv.getRegister(SFR_DDRB + SFR_OFFSET); + DDRB |= (1<<0); + drv.setRegister(SFR_DDRB + SFR_OFFSET, DDRB); + + PORTB = drv.getRegister(SFR_PORTB + SFR_OFFSET); + PORTB |= (1<<0); + drv.setRegister(SFR_PORTB + SFR_OFFSET, PORTB); + + drv.delay_ms(300); + + PORTB = drv.getRegister(SFR_PORTB + SFR_OFFSET); + PORTB &= ~(1<<0); + drv.setRegister(SFR_PORTB + SFR_OFFSET, PORTB); +} diff --git a/control/src/drv/b15f.cpp b/control/src/drv/b15f.cpp index 56cb2ed..0c1f736 100644 --- a/control/src/drv/b15f.cpp +++ b/control/src/drv/b15f.cpp @@ -330,6 +330,46 @@ bool B15F::pwmSetValue(uint8_t value) return aw == MSG_OK; } +bool B15F::setRegister(uint8_t adr, uint8_t val) +{ + usart.clearInputBuffer(); + + uint8_t rq[] = + { + RQ_SET_REG, + adr, + val + }; + + int n_sent = usart.write_timeout(&rq[0], 0, sizeof(rq), 1000); + if(n_sent != sizeof(rq)) + abort("Sent failed"); + + uint8_t byte = usart.readByte(); + delay_us(10); + return byte == val; +} + +uint8_t B15F::getRegister(uint8_t adr) +{ + usart.clearInputBuffer(); + + uint8_t rq[] = + { + RQ_GET_REG, + adr + }; + + int n_sent = usart.write_timeout(&rq[0], 0, sizeof(rq), 1000); + if(n_sent != sizeof(rq)) + abort("Sent failed"); + + uint8_t aw = usart.readByte(); + delay_us(10); + return aw; +} + + void B15F::delay_ms(uint16_t ms) { std::this_thread::sleep_for(std::chrono::milliseconds(ms)); diff --git a/control/src/drv/b15f.h b/control/src/drv/b15f.h index 1b011ea..bedca64 100644 --- a/control/src/drv/b15f.h +++ b/control/src/drv/b15f.h @@ -210,6 +210,22 @@ public: */ 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(uint8_t adr, uint8_t val); + + /** + * Liefert den Wert eines MCU Registers. + * \param adr Speicheradresse des Registers + * \throws DriverException + */ + uint8_t getRegister(uint8_t adr); + /*************************/ @@ -248,9 +264,11 @@ private: 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_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 diff --git a/docs/atmegaiom1284p.h b/docs/atmegaiom1284p.h new file mode 100644 index 0000000..905029d --- /dev/null +++ b/docs/atmegaiom1284p.h @@ -0,0 +1,1219 @@ +/* Copyright (c) 2007 Atmel Corporation + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + * Neither the name of the copyright holders nor the names of + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ + +/* $Id: iom1284p.h 2225 2011-03-02 16:27:26Z arcanum $ */ + +/* avr/iom1284p.h - definitions for ATmega1284P. */ + +/* This file should only be included from <avr/io.h>, never directly. */ + +#ifndef _AVR_IO_H_ +# error "Include <avr/io.h> instead of this file." +#endif + +#ifndef _AVR_IOXXX_H_ +# define _AVR_IOXXX_H_ "iom1284p.h" +#else +# error "Attempt to include more than one <avr/ioXXX.h> file." +#endif + + +#ifndef _AVR_IOM1284P_H_ +#define _AVR_IOM1284P_H_ 1 + + +/* Registers and associated bit numbers */ + +#define PINA _SFR_IO8(0x00) +#define PINA0 0 +#define PINA1 1 +#define PINA2 2 +#define PINA3 3 +#define PINA4 4 +#define PINA5 5 +#define PINA6 6 +#define PINA7 7 + +#define DDRA _SFR_IO8(0x01) +#define DDA0 0 +#define DDA1 1 +#define DDA2 2 +#define DDA3 3 +#define DDA4 4 +#define DDA5 5 +#define DDA6 6 +#define DDA7 7 + +#define PORTA _SFR_IO8(0x02) +#define PORTA0 0 +#define PORTA1 1 +#define PORTA2 2 +#define PORTA3 3 +#define PORTA4 4 +#define PORTA5 5 +#define PORTA6 6 +#define PORTA7 7 + +#define PINB _SFR_IO8(0x03) +#define PINB0 0 +#define PINB1 1 +#define PINB2 2 +#define PINB3 3 +#define PINB4 4 +#define PINB5 5 +#define PINB6 6 +#define PINB7 7 + +#define DDRB _SFR_IO8(0x04) +#define DDB0 0 +#define DDB1 1 +#define DDB2 2 +#define DDB3 3 +#define DDB4 4 +#define DDB5 5 +#define DDB6 6 +#define DDB7 7 + +#define PORTB _SFR_IO8(0x05) +#define PORTB0 0 +#define PORTB1 1 +#define PORTB2 2 +#define PORTB3 3 +#define PORTB4 4 +#define PORTB5 5 +#define PORTB6 6 +#define PORTB7 7 + +#define PINC _SFR_IO8(0x06) +#define PINC0 0 +#define PINC1 1 +#define PINC2 2 +#define PINC3 3 +#define PINC4 4 +#define PINC5 5 +#define PINC6 6 +#define PINC7 7 + +#define DDRC _SFR_IO8(0x07) +#define DDC0 0 +#define DDC1 1 +#define DDC2 2 +#define DDC3 3 +#define DDC4 4 +#define DDC5 5 +#define DDC6 6 +#define DDC7 7 + +#define PORTC _SFR_IO8(0x08) +#define PORTC0 0 +#define PORTC1 1 +#define PORTC2 2 +#define PORTC3 3 +#define PORTC4 4 +#define PORTC5 5 +#define PORTC6 6 +#define PORTC7 7 + +#define PIND _SFR_IO8(0x09) +#define PIND0 0 +#define PIND1 1 +#define PIND2 2 +#define PIND3 3 +#define PIND4 4 +#define PIND5 5 +#define PIND6 6 +#define PIND7 7 + +#define DDRD _SFR_IO8(0x0A) +#define DDD0 0 +#define DDD1 1 +#define DDD2 2 +#define DDD3 3 +#define DDD4 4 +#define DDD5 5 +#define DDD6 6 +#define DDD7 7 + +#define PORTD _SFR_IO8(0x0B) +#define PORTD0 0 +#define PORTD1 1 +#define PORTD2 2 +#define PORTD3 3 +#define PORTD4 4 +#define PORTD5 5 +#define PORTD6 6 +#define PORTD7 7 + +#define TIFR0 _SFR_IO8(0x15) +#define TOV0 0 +#define OCF0A 1 +#define OCF0B 2 + +#define TIFR1 _SFR_IO8(0x16) +#define TOV1 0 +#define OCF1A 1 +#define OCF1B 2 +#define ICF1 5 + +#define TIFR2 _SFR_IO8(0x17) +#define TOV2 0 +#define OCF2A 1 +#define OCF2B 2 + +#define TIFR3 _SFR_IO8(0x18) +#define TOV3 0 +#define OCF3A 1 +#define OCF3B 2 +#define ICF3 5 + +#define PCIFR _SFR_IO8(0x1B) +#define PCIF0 0 +#define PCIF1 1 +#define PCIF2 2 +#define PCIF3 3 + +#define EIFR _SFR_IO8(0x1C) +#define INTF0 0 +#define INTF1 1 +#define INTF2 2 + +#define EIMSK _SFR_IO8(0x1D) +#define INT0 0 +#define INT1 1 +#define INT2 2 + +#define GPIOR0 _SFR_IO8(0x1E) +#define GPIOR00 0 +#define GPIOR01 1 +#define GPIOR02 2 +#define GPIOR03 3 +#define GPIOR04 4 +#define GPIOR05 5 +#define GPIOR06 6 +#define GPIOR07 7 + +#define EECR _SFR_IO8(0x1F) +#define EERE 0 +#define EEPE 1 +#define EEMPE 2 +#define EERIE 3 +#define EEPM0 4 +#define EEPM1 5 + +#define EEDR _SFR_IO8(0x20) +#define EEDR0 0 +#define EEDR1 1 +#define EEDR2 2 +#define EEDR3 3 +#define EEDR4 4 +#define EEDR5 5 +#define EEDR6 6 +#define EEDR7 7 + +#define EEAR _SFR_IO16(0x21) + +#define EEARL _SFR_IO8(0x21) +#define EEAR0 0 +#define EEAR1 1 +#define EEAR2 2 +#define EEAR3 3 +#define EEAR4 4 +#define EEAR5 5 +#define EEAR6 6 +#define EEAR7 7 + +#define EEARH _SFR_IO8(0x22) +#define EEAR8 0 +#define EEAR9 1 +#define EEAR10 2 +#define EEAR11 3 + +#define GTCCR _SFR_IO8(0x23) +#define PSRSYNC 0 +#define PSRASY 1 +#define TSM 7 + +#define TCCR0A _SFR_IO8(0x24) +#define WGM00 0 +#define WGM01 1 +#define COM0B0 4 +#define COM0B1 5 +#define COM0A0 6 +#define COM0A1 7 + +#define TCCR0B _SFR_IO8(0x25) +#define CS00 0 +#define CS01 1 +#define CS02 2 +#define WGM02 3 +#define FOC0B 6 +#define FOC0A 7 + +#define TCNT0 _SFR_IO8(0x26) +#define TCNT0_0 0 +#define TCNT0_1 1 +#define TCNT0_2 2 +#define TCNT0_3 3 +#define TCNT0_4 4 +#define TCNT0_5 5 +#define TCNT0_6 6 +#define TCNT0_7 7 + +#define OCR0A _SFR_IO8(0x27) +#define OCR0A_0 0 +#define OCR0A_1 1 +#define OCR0A_2 2 +#define OCR0A_3 3 +#define OCR0A_4 4 +#define OCR0A_5 5 +#define OCR0A_6 6 +#define OCR0A_7 7 + +#define OCR0B _SFR_IO8(0x28) +#define OCR0B_0 0 +#define OCR0B_1 1 +#define OCR0B_2 2 +#define OCR0B_3 3 +#define OCR0B_4 4 +#define OCR0B_5 5 +#define OCR0B_6 6 +#define OCR0B_7 7 + +#define GPIOR1 _SFR_IO8(0x2A) +#define GPIOR10 0 +#define GPIOR11 1 +#define GPIOR12 2 +#define GPIOR13 3 +#define GPIOR14 4 +#define GPIOR15 5 +#define GPIOR16 6 +#define GPIOR17 7 + +#define GPIOR2 _SFR_IO8(0x2B) +#define GPIOR20 0 +#define GPIOR21 1 +#define GPIOR22 2 +#define GPIOR23 3 +#define GPIOR24 4 +#define GPIOR25 5 +#define GPIOR26 6 +#define GPIOR27 7 + +#define SPCR _SFR_IO8(0x2C) +#define SPR0 0 +#define SPR1 1 +#define CPHA 2 +#define CPOL 3 +#define MSTR 4 +#define DORD 5 +#define SPE 6 +#define SPIE 7 + +#define SPSR _SFR_IO8(0x2D) +#define SPI2X 0 +#define WCOL 6 +#define SPIF 7 + +#define SPDR _SFR_IO8(0x2E) +#define SPDR0 0 +#define SPDR1 1 +#define SPDR2 2 +#define SPDR3 3 +#define SPDR4 4 +#define SPDR5 5 +#define SPDR6 6 +#define SPDR7 7 + +#define ACSR _SFR_IO8(0x30) +#define ACIS0 0 +#define ACIS1 1 +#define ACIC 2 +#define ACIE 3 +#define ACI 4 +#define ACO 5 +#define ACBG 6 +#define ACD 7 + +#define OCDR _SFR_IO8(0x31) +#define OCDR0 0 +#define OCDR1 1 +#define OCDR2 2 +#define OCDR3 3 +#define OCDR4 4 +#define OCDR5 5 +#define OCDR6 6 +#define OCDR7 7 + +#define SMCR _SFR_IO8(0x33) +#define SE 0 +#define SM0 1 +#define SM1 2 +#define SM2 3 + +#define MCUSR _SFR_IO8(0x34) +#define PORF 0 +#define EXTRF 1 +#define BORF 2 +#define WDRF 3 +#define JTRF 4 + +#define MCUCR _SFR_IO8(0x35) +#define IVCE 0 +#define IVSEL 1 +#define PUD 4 +#define BODSE 5 +#define BODS 6 +#define JTD 7 + +#define SPMCSR _SFR_IO8(0x37) +#define SPMEN 0 +#define PGERS 1 +#define PGWRT 2 +#define BLBSET 3 +#define RWWSRE 4 +#define SIGRD 5 +#define RWWSB 6 +#define SPMIE 7 + +#define RAMPZ _SFR_IO8(0x3B) +#define RAMPZ0 0 + +#define WDTCSR _SFR_MEM8(0x60) +#define WDP0 0 +#define WDP1 1 +#define WDP2 2 +#define WDE 3 +#define WDCE 4 +#define WDP3 5 +#define WDIE 6 +#define WDIF 7 + +#define CLKPR _SFR_MEM8(0x61) +#define CLKPS0 0 +#define CLKPS1 1 +#define CLKPS2 2 +#define CLKPS3 3 +#define CLKPCE 7 + +#define PRR0 _SFR_MEM8(0x64) +#define PRADC 0 +#define PRUSART0 1 +#define PRSPI 2 +#define PRTIM1 3 +#define PRUSART1 4 +#define PRTIM0 5 +#define PRTIM2 6 +#define PRTWI 7 + +#define __AVR_HAVE_PRR0 ((1<<PRADC)|(1<<PRSPI)|(1<<PRTIM1)|(1<<PRUSART0)|(1<<PRUSART1)|(1<<PRTIM0)|(1<<PRTIM2)|(1<<PRTWI)) +#define __AVR_HAVE_PRR0_PRADC +#define __AVR_HAVE_PRR0_PRSPI +#define __AVR_HAVE_PRR0_PRTIM1 +#define __AVR_HAVE_PRR0_PRUSART0 +#define __AVR_HAVE_PRR0_PRUSART1 +#define __AVR_HAVE_PRR0_PRTIM0 +#define __AVR_HAVE_PRR0_PRTIM2 +#define __AVR_HAVE_PRR0_PRTWI + +#define PRR1 _SFR_MEM8(0x65) +#define PRTIM3 0 + +#define __AVR_HAVE_PRR1 (1<<PRTIM3) +#define __AVR_HAVE_PRR1_PRTIM3 + +#define OSCCAL _SFR_MEM8(0x66) +#define CAL0 0 +#define CAL1 1 +#define CAL2 2 +#define CAL3 3 +#define CAL4 4 +#define CAL5 5 +#define CAL6 6 +#define CAL7 7 + +#define PCICR _SFR_MEM8(0x68) +#define PCIE0 0 +#define PCIE1 1 +#define PCIE2 2 +#define PCIE3 3 + +#define EICRA _SFR_MEM8(0x69) +#define ISC00 0 +#define ISC01 1 +#define ISC10 2 +#define ISC11 3 +#define ISC20 4 +#define ISC21 5 + +#define PCMSK0 _SFR_MEM8(0x6B) +#define PCINT0 0 +#define PCINT1 1 +#define PCINT2 2 +#define PCINT3 3 +#define PCINT4 4 +#define PCINT5 5 +#define PCINT6 6 +#define PCINT7 7 + +#define PCMSK1 _SFR_MEM8(0x6C) +#define PCINT8 0 +#define PCINT9 1 +#define PCINT10 2 +#define PCINT11 3 +#define PCINT12 4 +#define PCINT13 5 +#define PCINT14 6 +#define PCINT15 7 + +#define PCMSK2 _SFR_MEM8(0x6D) +#define PCINT16 0 +#define PCINT17 1 +#define PCINT18 2 +#define PCINT19 3 +#define PCINT20 4 +#define PCINT21 5 +#define PCINT22 6 +#define PCINT23 7 + +#define TIMSK0 _SFR_MEM8(0x6E) +#define TOIE0 0 +#define OCIE0A 1 +#define OCIE0B 2 + +#define TIMSK1 _SFR_MEM8(0x6F) +#define TOIE1 0 +#define OCIE1A 1 +#define OCIE1B 2 +#define ICIE1 5 + +#define TIMSK2 _SFR_MEM8(0x70) +#define TOIE2 0 +#define OCIE2A 1 +#define OCIE2B 2 + +#define TIMSK3 _SFR_MEM8(0x71) +#define TOIE3 0 +#define OCIE3A 1 +#define OCIE3B 2 +#define ICIE3 5 + +#define PCMSK3 _SFR_MEM8(0x73) +#define PCINT24 0 +#define PCINT25 1 +#define PCINT26 2 +#define PCINT27 3 +#define PCINT28 4 +#define PCINT29 5 +#define PCINT30 6 +#define PCINT31 7 + +#ifndef __ASSEMBLER__ +#define ADC _SFR_MEM16(0x78) +#endif +#define ADCW _SFR_MEM16(0x78) + +#define ADCL _SFR_MEM8(0x78) +#define ADCL0 0 +#define ADCL1 1 +#define ADCL2 2 +#define ADCL3 3 +#define ADCL4 4 +#define ADCL5 5 +#define ADCL6 6 +#define ADCL7 7 + +#define ADCH _SFR_MEM8(0x79) +#define ADCH0 0 +#define ADCH1 1 +#define ADCH2 2 +#define ADCH3 3 +#define ADCH4 4 +#define ADCH5 5 +#define ADCH6 6 +#define ADCH7 7 + +#define ADCSRA _SFR_MEM8(0x7A) +#define ADPS0 0 +#define ADPS1 1 +#define ADPS2 2 +#define ADIE 3 +#define ADIF 4 +#define ADATE 5 +#define ADSC 6 +#define ADEN 7 + +#define ADCSRB _SFR_MEM8(0x7B) +#define ADTS0 0 +#define ADTS1 1 +#define ADTS2 2 +#define ACME 6 + +#define ADMUX _SFR_MEM8(0x7C) +#define MUX0 0 +#define MUX1 1 +#define MUX2 2 +#define MUX3 3 +#define MUX4 4 +#define ADLAR 5 +#define REFS0 6 +#define REFS1 7 + +#define DIDR0 _SFR_MEM8(0x7E) +#define ADC0D 0 +#define ADC1D 1 +#define ADC2D 2 +#define ADC3D 3 +#define ADC4D 4 +#define ADC5D 5 +#define ADC6D 6 +#define ADC7D 7 + +#define DIDR1 _SFR_MEM8(0x7F) +#define AIN0D 0 +#define AIN1D 1 + +#define TCCR1A _SFR_MEM8(0x80) +#define WGM10 0 +#define WGM11 1 +#define COM1B0 4 +#define COM1B1 5 +#define COM1A0 6 +#define COM1A1 7 + +#define TCCR1B _SFR_MEM8(0x81) +#define CS10 0 +#define CS11 1 +#define CS12 2 +#define WGM12 3 +#define WGM13 4 +#define ICES1 6 +#define ICNC1 7 + +#define TCCR1C _SFR_MEM8(0x82) +#define FOC1B 6 +#define FOC1A 7 + +#define TCNT1 _SFR_MEM16(0x84) + +#define TCNT1L _SFR_MEM8(0x84) +#define TCNT1L0 0 +#define TCNT1L1 1 +#define TCNT1L2 2 +#define TCNT1L3 3 +#define TCNT1L4 4 +#define TCNT1L5 5 +#define TCNT1L6 6 +#define TCNT1L7 7 + +#define TCNT1H _SFR_MEM8(0x85) +#define TCNT1H0 0 +#define TCNT1H1 1 +#define TCNT1H2 2 +#define TCNT1H3 3 +#define TCNT1H4 4 +#define TCNT1H5 5 +#define TCNT1H6 6 +#define TCNT1H7 7 + +#define ICR1 _SFR_MEM16(0x86) + +#define ICR1L _SFR_MEM8(0x86) +#define ICR1L0 0 +#define ICR1L1 1 +#define ICR1L2 2 +#define ICR1L3 3 +#define ICR1L4 4 +#define ICR1L5 5 +#define ICR1L6 6 +#define ICR1L7 7 + +#define ICR1H _SFR_MEM8(0x87) +#define ICR1H0 0 +#define ICR1H1 1 +#define ICR1H2 2 +#define ICR1H3 3 +#define ICR1H4 4 +#define ICR1H5 5 +#define ICR1H6 6 +#define ICR1H7 7 + +#define OCR1A _SFR_MEM16(0x88) + +#define OCR1AL _SFR_MEM8(0x88) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1AH _SFR_MEM8(0x89) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define OCR1B _SFR_MEM16(0x8A) + +#define OCR1BL _SFR_MEM8(0x8A) +#define OCR1AL0 0 +#define OCR1AL1 1 +#define OCR1AL2 2 +#define OCR1AL3 3 +#define OCR1AL4 4 +#define OCR1AL5 5 +#define OCR1AL6 6 +#define OCR1AL7 7 + +#define OCR1BH _SFR_MEM8(0x8B) +#define OCR1AH0 0 +#define OCR1AH1 1 +#define OCR1AH2 2 +#define OCR1AH3 3 +#define OCR1AH4 4 +#define OCR1AH5 5 +#define OCR1AH6 6 +#define OCR1AH7 7 + +#define TCCR3A _SFR_MEM8(0x90) +#define WGM30 0 +#define WGM31 1 +#define COM3B0 4 +#define COM3B1 5 +#define COM3A0 6 +#define COM3A1 7 + +#define TCCR3B _SFR_MEM8(0x91) +#define CS30 0 +#define CS31 1 +#define CS32 2 +#define WGM32 3 +#define WGM33 4 +#define ICES3 6 +#define ICNC3 7 + +#define TCCR3C _SFR_MEM8(0x92) +#define FOC3B 6 +#define FOC3A 7 + +#define TCNT3 _SFR_MEM16(0x94) + +#define TCNT3L _SFR_MEM8(0x94) +#define TCNT3L0 0 +#define TCNT3L1 1 +#define TCNT3L2 2 +#define TCNT3L3 3 +#define TCNT3L4 4 +#define TCNT3L5 5 +#define TCNT3L6 6 +#define TCNT3L7 7 + +#define TCNT3H _SFR_MEM8(0x95) +#define TCNT3H0 0 +#define TCNT3H1 1 +#define TCNT3H2 2 +#define TCNT3H3 3 +#define TCNT3H4 4 +#define TCNT3H5 5 +#define TCNT3H6 6 +#define TCNT3H7 7 + +#define ICR3 _SFR_MEM16(0x96) + +#define ICR3L _SFR_MEM8(0x96) +#define ICR3L0 0 +#define ICR3L1 1 +#define ICR3L2 2 +#define ICR3L3 3 +#define ICR3L4 4 +#define ICR3L5 5 +#define ICR3L6 6 +#define ICR3L7 7 + +#define ICR3H _SFR_MEM8(0x97) +#define ICR3H0 0 +#define ICR3H1 1 +#define ICR3H2 2 +#define ICR3H3 3 +#define ICR3H4 4 +#define ICR3H5 5 +#define ICR3H6 6 +#define ICR3H7 7 + +#define OCR3A _SFR_MEM16(0x98) + +#define OCR3AL _SFR_MEM8(0x98) +#define OCR3AL0 0 +#define OCR3AL1 1 +#define OCR3AL2 2 +#define OCR3AL3 3 +#define OCR3AL4 4 +#define OCR3AL5 5 +#define OCR3AL6 6 +#define OCR3AL7 7 + +#define OCR3AH _SFR_MEM8(0x99) +#define OCR3AH0 0 +#define OCR3AH1 1 +#define OCR3AH2 2 +#define OCR3AH3 3 +#define OCR3AH4 4 +#define OCR3AH5 5 +#define OCR3AH6 6 +#define OCR3AH7 7 + +#define OCR3B _SFR_MEM16(0x9A) + +#define OCR3BL _SFR_MEM8(0x9A) +#define OCR3AL0 0 +#define OCR3AL1 1 +#define OCR3AL2 2 +#define OCR3AL3 3 +#define OCR3AL4 4 +#define OCR3AL5 5 +#define OCR3AL6 6 +#define OCR3AL7 7 + +#define OCR3BH _SFR_MEM8(0x9B) +#define OCR3AH0 0 +#define OCR3AH1 1 +#define OCR3AH2 2 +#define OCR3AH3 3 +#define OCR3AH4 4 +#define OCR3AH5 5 +#define OCR3AH6 6 +#define OCR3AH7 7 + +#define TCCR2A _SFR_MEM8(0xB0) +#define WGM20 0 +#define WGM21 1 +#define COM2B0 4 +#define COM2B1 5 +#define COM2A0 6 +#define COM2A1 7 + +#define TCCR2B _SFR_MEM8(0xB1) +#define CS20 0 +#define CS21 1 +#define CS22 2 +#define WGM22 3 +#define FOC2B 6 +#define FOC2A 7 + +#define TCNT2 _SFR_MEM8(0xB2) +#define TCNT2_0 0 +#define TCNT2_1 1 +#define TCNT2_2 2 +#define TCNT2_3 3 +#define TCNT2_4 4 +#define TCNT2_5 5 +#define TCNT2_6 6 +#define TCNT2_7 7 + +#define OCR2A _SFR_MEM8(0xB3) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define OCR2B _SFR_MEM8(0xB4) +#define OCR2_0 0 +#define OCR2_1 1 +#define OCR2_2 2 +#define OCR2_3 3 +#define OCR2_4 4 +#define OCR2_5 5 +#define OCR2_6 6 +#define OCR2_7 7 + +#define ASSR _SFR_MEM8(0xB6) +#define TCR2BUB 0 +#define TCR2AUB 1 +#define OCR2BUB 2 +#define OCR2AUB 3 +#define TCN2UB 4 +#define AS2 5 +#define EXCLK 6 + +#define TWBR _SFR_MEM8(0xB8) +#define TWBR0 0 +#define TWBR1 1 +#define TWBR2 2 +#define TWBR3 3 +#define TWBR4 4 +#define TWBR5 5 +#define TWBR6 6 +#define TWBR7 7 + +#define TWSR _SFR_MEM8(0xB9) +#define TWPS0 0 +#define TWPS1 1 +#define TWS3 3 +#define TWS4 4 +#define TWS5 5 +#define TWS6 6 +#define TWS7 7 + +#define TWAR _SFR_MEM8(0xBA) +#define TWGCE 0 +#define TWA0 1 +#define TWA1 2 +#define TWA2 3 +#define TWA3 4 +#define TWA4 5 +#define TWA5 6 +#define TWA6 7 + +#define TWDR _SFR_MEM8(0xBB) +#define TWD0 0 +#define TWD1 1 +#define TWD2 2 +#define TWD3 3 +#define TWD4 4 +#define TWD5 5 +#define TWD6 6 +#define TWD7 7 + +#define TWCR _SFR_MEM8(0xBC) +#define TWIE 0 +#define TWEN 2 +#define TWWC 3 +#define TWSTO 4 +#define TWSTA 5 +#define TWEA 6 +#define TWINT 7 + +#define TWAMR _SFR_MEM8(0xBD) +#define TWAM0 1 +#define TWAM1 2 +#define TWAM2 3 +#define TWAM3 4 +#define TWAM4 5 +#define TWAM5 6 +#define TWAM6 7 + +#define UCSR0A _SFR_MEM8(0xC0) +#define MPCM0 0 +#define U2X0 1 +#define UPE0 2 +#define DOR0 3 +#define FE0 4 +#define UDRE0 5 +#define TXC0 6 +#define RXC0 7 + +#define UCSR0B _SFR_MEM8(0xC1) +#define TXB80 0 +#define RXB80 1 +#define UCSZ02 2 +#define TXEN0 3 +#define RXEN0 4 +#define UDRIE0 5 +#define TXCIE0 6 +#define RXCIE0 7 + +#define UCSR0C _SFR_MEM8(0xC2) +#define UCPOL0 0 +#define UCSZ00 1 +#define UCSZ01 2 +#define USBS0 3 +#define UPM00 4 +#define UPM01 5 +#define UMSEL00 6 +#define UMSEL01 7 + +#define UBRR0 _SFR_MEM16(0xC4) + +#define UBRR0L _SFR_MEM8(0xC4) +#define UBRR0_0 0 +#define UBRR0_1 1 +#define UBRR0_2 2 +#define UBRR0_3 3 +#define UBRR0_4 4 +#define UBRR0_5 5 +#define UBRR0_6 6 +#define UBRR0_7 7 + +#define UBRR0H _SFR_MEM8(0xC5) +#define UBRR0_8 0 +#define UBRR0_9 1 +#define UBRR0_10 2 +#define UBRR0_11 3 + +#define UDR0 _SFR_MEM8(0xC6) +#define UDR0_0 0 +#define UDR0_1 1 +#define UDR0_2 2 +#define UDR0_3 3 +#define UDR0_4 4 +#define UDR0_5 5 +#define UDR0_6 6 +#define UDR0_7 7 + +#define UCSR1A _SFR_MEM8(0xC8) +#define MPCM1 0 +#define U2X1 1 +#define UPE1 2 +#define DOR1 3 +#define FE1 4 +#define UDRE1 5 +#define TXC1 6 +#define RXC1 7 + +#define UCSR1B _SFR_MEM8(0xC9) +#define TXB81 0 +#define RXB81 1 +#define UCSZ12 2 +#define TXEN1 3 +#define RXEN1 4 +#define UDRIE1 5 +#define TXCIE1 6 +#define RXCIE1 7 + +#define UCSR1C _SFR_MEM8(0xCA) +#define UCPOL1 0 +#define UCSZ10 1 +#define UCSZ11 2 +#define USBS1 3 +#define UPM10 4 +#define UPM11 5 +#define UMSEL10 6 +#define UMSEL11 7 + +#define UBRR1 _SFR_MEM16(0xCC) + +#define UBRR1L _SFR_MEM8(0xCC) +#define UBRR1_0 0 +#define UBRR1_1 1 +#define UBRR1_2 2 +#define UBRR1_3 3 +#define UBRR1_4 4 +#define UBRR1_5 5 +#define UBRR1_6 6 +#define UBRR1_7 7 + +#define UBRR1H _SFR_MEM8(0xCD) +#define UBRR1_8 0 +#define UBRR1_9 1 +#define UBRR1_10 2 +#define UBRR1_11 3 + +#define UDR1 _SFR_MEM8(0xCE) +#define UDR1_0 0 +#define UDR1_1 1 +#define UDR1_2 2 +#define UDR1_3 3 +#define UDR1_4 4 +#define UDR1_5 5 +#define UDR1_6 6 +#define UDR1_7 7 + + +/* Interrupt Vectors */ +/* Interrupt Vector 0 is the reset vector. */ + +#define INT0_vect_num 1 +#define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */ + +#define INT1_vect_num 2 +#define INT1_vect _VECTOR(2) /* External Interrupt Request 1 */ + +#define INT2_vect_num 3 +#define INT2_vect _VECTOR(3) /* External Interrupt Request 2 */ + +#define PCINT0_vect_num 4 +#define PCINT0_vect _VECTOR(4) /* Pin Change Interrupt Request 0 */ + +#define PCINT1_vect_num 5 +#define PCINT1_vect _VECTOR(5) /* Pin Change Interrupt Request 1 */ + +#define PCINT2_vect_num 6 +#define PCINT2_vect _VECTOR(6) /* Pin Change Interrupt Request 2 */ + +#define PCINT3_vect_num 7 +#define PCINT3_vect _VECTOR(7) /* Pin Change Interrupt Request 3 */ + +#define WDT_vect_num 8 +#define WDT_vect _VECTOR(8) /* Watchdog Time-out Interrupt */ + +#define TIMER2_COMPA_vect_num 9 +#define TIMER2_COMPA_vect _VECTOR(9) /* Timer/Counter2 Compare Match A */ + +#define TIMER2_COMPB_vect_num 10 +#define TIMER2_COMPB_vect _VECTOR(10) /* Timer/Counter2 Compare Match B */ + +#define TIMER2_OVF_vect_num 11 +#define TIMER2_OVF_vect _VECTOR(11) /* Timer/Counter2 Overflow */ + +#define TIMER1_CAPT_vect_num 12 +#define TIMER1_CAPT_vect _VECTOR(12) /* Timer/Counter1 Capture Event */ + +#define TIMER1_COMPA_vect_num 13 +#define TIMER1_COMPA_vect _VECTOR(13) /* Timer/Counter1 Compare Match A */ + +#define TIMER1_COMPB_vect_num 14 +#define TIMER1_COMPB_vect _VECTOR(14) /* Timer/Counter1 Compare Match B */ + +#define TIMER1_OVF_vect_num 15 +#define TIMER1_OVF_vect _VECTOR(15) /* Timer/Counter1 Overflow */ + +#define TIMER0_COMPA_vect_num 16 +#define TIMER0_COMPA_vect _VECTOR(16) /* Timer/Counter0 Compare Match A */ + +#define TIMER0_COMPB_vect_num 17 +#define TIMER0_COMPB_vect _VECTOR(17) /* Timer/Counter0 Compare Match B */ + +#define TIMER0_OVF_vect_num 18 +#define TIMER0_OVF_vect _VECTOR(18) /* Timer/Counter0 Overflow */ + +#define SPI_STC_vect_num 19 +#define SPI_STC_vect _VECTOR(19) /* SPI Serial Transfer Complete */ + +#define USART0_RX_vect_num 20 +#define USART0_RX_vect _VECTOR(20) /* USART0, Rx Complete */ + +#define USART0_UDRE_vect_num 21 +#define USART0_UDRE_vect _VECTOR(21) /* USART0 Data register Empty */ + +#define USART0_TX_vect_num 22 +#define USART0_TX_vect _VECTOR(22) /* USART0, Tx Complete */ + +#define ANALOG_COMP_vect_num 23 +#define ANALOG_COMP_vect _VECTOR(23) /* Analog Comparator */ + +#define ADC_vect_num 24 +#define ADC_vect _VECTOR(24) /* ADC Conversion Complete */ + +#define EE_READY_vect_num 25 +#define EE_READY_vect _VECTOR(25) /* EEPROM Ready */ + +#define TWI_vect_num 26 +#define TWI_vect _VECTOR(26) /* 2-wire Serial Interface */ + +#define SPM_READY_vect_num 27 +#define SPM_READY_vect _VECTOR(27) /* Store Program Memory Read */ + +#define USART1_RX_vect_num 28 +#define USART1_RX_vect _VECTOR(28) /* USART1 RX complete */ + +#define USART1_UDRE_vect_num 29 +#define USART1_UDRE_vect _VECTOR(29) /* USART1 Data Register Empty */ + +#define USART1_TX_vect_num 30 +#define USART1_TX_vect _VECTOR(30) /* USART1 TX complete */ + +#define TIMER3_CAPT_vect_num 31 +#define TIMER3_CAPT_vect _VECTOR(31) /* Timer/Counter3 Capture Event */ + +#define TIMER3_COMPA_vect_num 32 +#define TIMER3_COMPA_vect _VECTOR(32) /* Timer/Counter3 Compare Match A */ + +#define TIMER3_COMPB_vect_num 33 +#define TIMER3_COMPB_vect _VECTOR(33) /* Timer/Counter3 Compare Match B */ + +#define TIMER3_OVF_vect_num 34 +#define TIMER3_OVF_vect _VECTOR(34) /* Timer/Counter3 Overflow */ + +#define _VECTORS_SIZE (35 * 4) + + +/* Constants */ +#define SPM_PAGESIZE 256 +#define RAMSTART (0x100) +#define RAMEND 0x40FF /* Last On-Chip SRAM Location */ +#define XRAMSIZE 0 +#define XRAMEND RAMEND +#define E2END 0xFFF +#define E2PAGESIZE 8 +#define FLASHEND 0x1FFFF + + +/* Fuses */ +#define FUSE_MEMORY_SIZE 3 + +/* Low Fuse Byte */ +#define FUSE_CKSEL0 (unsigned char)~_BV(0) /* Select Clock Source */ +#define FUSE_CKSEL1 (unsigned char)~_BV(1) /* Select Clock Source */ +#define FUSE_CKSEL2 (unsigned char)~_BV(2) /* Select Clock Source */ +#define FUSE_CKSEL3 (unsigned char)~_BV(3) /* Select Clock Source */ +#define FUSE_SUT0 (unsigned char)~_BV(4) /* Select start-up time */ +#define FUSE_SUT1 (unsigned char)~_BV(5) /* Select start-up time */ +#define FUSE_CKOUT (unsigned char)~_BV(6) /* Clock output */ +#define FUSE_CKDIV8 (unsigned char)~_BV(7) /* Divide clock by 8 */ +#define LFUSE_DEFAULT (FUSE_CKSEL0 & FUSE_CKSEL2 & FUSE_CKSEL3 & FUSE_SUT0 & FUSE_SUT1 & FUSE_CKDIV8) + +/* High Fuse Byte */ +#define FUSE_BOOTRST (unsigned char)~_BV(0) /* Select Reset Vector */ +#define FUSE_BOOTSZ0 (unsigned char)~_BV(1) /* Select Boot Size */ +#define FUSE_BOOTSZ1 (unsigned char)~_BV(2) /* Select Boot Size */ +#define FUSE_EESAVE (unsigned char)~_BV(3) /* EEPROM memory is preserved through chip erase */ +#define FUSE_WDTON (unsigned char)~_BV(4) /* Watchdog timer always on */ +#define FUSE_SPIEN (unsigned char)~_BV(5) /* Enable Serial programming and Data Downloading */ +#define FUSE_JTAGEN (unsigned char)~_BV(6) /* Enable JTAG */ +#define FUSE_OCDEN (unsigned char)~_BV(7) /* Enable OCD */ +#define HFUSE_DEFAULT (FUSE_BOOTSZ0 & FUSE_SPIEN & FUSE_JTAGEN) + +/* Extended Fuse Byte */ +#define FUSE_BODLEVEL0 (unsigned char)~_BV(0) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL1 (unsigned char)~_BV(1) /* Brown-out Detector trigger level */ +#define FUSE_BODLEVEL2 (unsigned char)~_BV(2) /* Brown-out Detector trigger level */ +#define EFUSE_DEFAULT (0xFF) + + +/* Lock Bits */ +#define __LOCK_BITS_EXIST +#define __BOOT_LOCK_BITS_0_EXIST +#define __BOOT_LOCK_BITS_1_EXIST + + +/* Signature */ +#define SIGNATURE_0 0x1E +#define SIGNATURE_1 0x97 +#define SIGNATURE_2 0x05 + +#define SLEEP_MODE_IDLE (0x00<<1) +#define SLEEP_MODE_ADC (0x01<<1) +#define SLEEP_MODE_PWR_DOWN (0x02<<1) +#define SLEEP_MODE_PWR_SAVE (0x03<<1) +#define SLEEP_MODE_STANDBY (0x06<<1) +#define SLEEP_MODE_EXT_STANDBY (0x07<<1) + +#endif /* _AVR_IOM1284P_H_ */ diff --git a/docs/html/annotated.html b/docs/html/annotated.html index 709b184..bbbef16 100644 --- a/docs/html/annotated.html +++ b/docs/html/annotated.html @@ -85,7 +85,7 @@ $(function() { </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/b15f_8cpp_source.html b/docs/html/b15f_8cpp_source.html index dd5733f..a76179c 100644 --- a/docs/html/b15f_8cpp_source.html +++ b/docs/html/b15f_8cpp_source.html @@ -70,48 +70,50 @@ $(function() { <div class="title">b15f.cpp</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#include "b15f.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <a class="code" href="classB15F.html">B15F</a>* B15F::instance = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> errorhandler_t B15F::errorhandler = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> B15F::B15F()</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> {</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  init();</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> }</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="keywordtype">void</span> B15F::init()</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  std::string device = <a class="code" href="classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a">exec</a>(<span class="stringliteral">"bash -c 'ls /dev/ttyUSB*'"</span>);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keywordflow">while</span>(device.find(<span class="charliteral">' '</span>) != std::string::npos || device.find(<span class="charliteral">'\n'</span>) != std::string::npos || device.find(<span class="charliteral">'\t'</span>) != std::string::npos)</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  device.pop_back();</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordflow">if</span>(device.length() == 0)</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Adapter nicht gefunden"</span>);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  std::cout << <a class="code" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">PRE</a> << <span class="stringliteral">"Verwende Adapter: "</span> << device << std::endl;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  std::cout << <a class="code" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">PRE</a> << <span class="stringliteral">"Stelle Verbindung mit Adapter her... "</span> << std::flush;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  usart.<a class="code" href="classUSART.html#aac63918a8b97ae63ee607cfa39e6d88d">setBaudrate</a>(<a class="code" href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87">BAUDRATE</a>);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  usart.<a class="code" href="classUSART.html#a5f7e2abda2ec4a68a5fdb8ee2f8a940a">openDevice</a>(device);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  std::cout << <span class="stringliteral">"OK"</span> << std::endl;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  std::cout << <a class="code" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">PRE</a> << <span class="stringliteral">"Teste Verbindung... "</span> << std::flush;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  uint8_t tries = 3;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">while</span>(tries--)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// verwerfe Daten, die µC noch hat</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">//discard();</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>(!<a class="code" href="classB15F.html#af01983594f2af98ab2b1e514aa036a5d">testConnection</a>())</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span>(!<a class="code" href="classB15F.html#a7b8a0e2a9156f7dcb05d097f23666a78">testIntConv</a>())</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span>(tries == 0)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Verbindungstest fehlgeschlagen. Neueste Version im Einsatz?"</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::cout << <span class="stringliteral">"OK"</span> << std::endl;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Gib board info aus</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::vector<std::string> info = <a class="code" href="classB15F.html#a4f01677e73d6d172a2c1cae9427a591b">getBoardInfo</a>();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  std::cout << <a class="code" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">PRE</a> << <span class="stringliteral">"AVR Firmware Version: "</span> << info[0] << <span class="stringliteral">" um "</span> << info[1] << <span class="stringliteral">" Uhr ("</span> << info[2] << <span class="stringliteral">")"</span> << std::endl;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7"> 57</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7">B15F::reconnect</a>()</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  uint8_t tries = <a class="code" href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc">RECONNECT_TRIES</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">while</span>(tries--)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">delay_ms</a>(<a class="code" href="classB15F.html#a040951746fbfd632e12bd1ad14578816">RECONNECT_TIMEOUT</a>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5">discard</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span>(<a class="code" href="classB15F.html#af01983594f2af98ab2b1e514aa036a5d">testConnection</a>())</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Verbindung kann nicht repariert werden"</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5"> 72</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5">B15F::discard</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">try</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  usart.<a class="code" href="classUSART.html#a756d268a8762c316f91ca3238972b0c1">clearOutputBuffer</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">for</span>(uint8_t i = 0; i < 16; i++)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_DISC); <span class="comment">// sende discard Befehl (verwerfe input)</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">delay_ms</a>(4);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">catch</span>(std::exception& ex)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(ex);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classB15F.html#af01983594f2af98ab2b1e514aa036a5d"> 90</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#af01983594f2af98ab2b1e514aa036a5d">B15F::testConnection</a>()</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// erzeuge zufälliges Byte</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  srand(time(NULL));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  uint8_t dummy = rand() % 256;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_TEST);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(dummy);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  uint8_t mirror = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a> && mirror == dummy;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classB15F.html#a7b8a0e2a9156f7dcb05d097f23666a78"> 105</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a7b8a0e2a9156f7dcb05d097f23666a78">B15F::testIntConv</a>()</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  srand(time(NULL));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  uint16_t dummy = rand() % (0xFFFF / 3);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_INT);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  usart.<a class="code" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a>(dummy);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  uint16_t aw = usart.<a class="code" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> aw == dummy * 3;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classB15F.html#a4f01677e73d6d172a2c1cae9427a591b"> 118</a></span> std::vector<std::string> <a class="code" href="classB15F.html#a4f01677e73d6d172a2c1cae9427a591b">B15F::getBoardInfo</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  std::vector<std::string> info;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_INFO);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  uint8_t n = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">while</span>(n--)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  uint8_t len = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  std::string str;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">while</span>(len--)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  str += static_cast<char>(usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  info.push_back(str);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(aw != <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Board Info fehlerhalft: code "</span> + std::to_string((<span class="keywordtype">int</span>) aw));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> info;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1"> 145</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1">B15F::activateSelfTestMode</a>()</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_ST);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classB15F.html#a13797edea1c50278988373acbd110064"> 153</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a13797edea1c50278988373acbd110064">B15F::digitalWrite0</a>(uint8_t port)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_BA0);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(port);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classB15F.html#aa225e7fc813849634063e071ef25db1b"> 163</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#aa225e7fc813849634063e071ef25db1b">B15F::digitalWrite1</a>(uint8_t port)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_BA1);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(port);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  </div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classB15F.html#ae0df6d423deeb2fd610968bd1c72060e"> 173</a></span> uint8_t <a class="code" href="classB15F.html#ae0df6d423deeb2fd610968bd1c72060e">B15F::digitalRead0</a>()</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_BE0);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  uint8_t <span class="keywordtype">byte</span> = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> byte;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classB15F.html#afc76b612dd4faeee0ac02a66b65af5f2"> 182</a></span> uint8_t <a class="code" href="classB15F.html#afc76b612dd4faeee0ac02a66b65af5f2">B15F::digitalRead1</a>()</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_BE1);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  uint8_t <span class="keywordtype">byte</span> = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> byte;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  </div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a"> 191</a></span> uint8_t <a class="code" href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a">B15F::readDipSwitch</a>()</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_DSW);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  uint8_t <span class="keywordtype">byte</span> = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">return</span> byte;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3"> 200</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3">B15F::analogWrite0</a>(uint16_t value)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_AA0);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  usart.<a class="code" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a>(value);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  </div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classB15F.html#a7f1becceac744f5cd2ad529748fd836f"> 210</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a7f1becceac744f5cd2ad529748fd836f">B15F::analogWrite1</a>(uint16_t value)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_AA1);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  usart.<a class="code" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a>(value);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  </div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627"> 220</a></span> uint16_t <a class="code" href="classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627">B15F::analogRead</a>(uint8_t channel)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span>(channel > 7)</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Bad ADC channel: "</span> + std::to_string(channel));</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  uint8_t rq[] =</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  RQ_ADC,</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  channel</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  };</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordtype">int</span> n_sent = usart.write_timeout(&rq[0], 0, <span class="keyword">sizeof</span>(rq), 1000);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span>(n_sent != <span class="keyword">sizeof</span>(rq))</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Sent failed"</span>);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  uint16_t adc = usart.<a class="code" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span>(adc > 1023)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Bad ADC data detected (1)"</span>);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">return</span> adc;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  </div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classB15F.html#ab82a324426c3063318c6cafb3089ae02"> 243</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#ab82a324426c3063318c6cafb3089ae02">B15F::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)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">// check pointers</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  buffer_a += offset_a;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  buffer_b += offset_b;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_ADC_DAC_STROKE);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(channel_a);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(channel_b);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  usart.<a class="code" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a>(start);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  usart.<a class="code" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a>(static_cast<uint16_t>(delta));</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  usart.<a class="code" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a>(count);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">for</span>(uint16_t i = 0; i < count; i++)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span>(buffer_a)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  buffer_a[i] = usart.<a class="code" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a>();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span>(buffer_a[i] > 1023) <span class="comment">// check for broken usart connection</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Bad ADC data detected (2)"</span>);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  usart.<a class="code" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a>();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">if</span>(buffer_b)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  buffer_b[i] = usart.<a class="code" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a>();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span>(buffer_b[i] > 1023) <span class="comment">// check for broken usart connection</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Bad ADC data detected (3)"</span>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  usart.<a class="code" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a>();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">if</span>(aw != <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Sequenz unterbrochen"</span>);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  </div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  </div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classB15F.html#ac6f6532bb9550a0632c28b98c157d0a1"> 292</a></span> uint8_t <a class="code" href="classB15F.html#ac6f6532bb9550a0632c28b98c157d0a1">B15F::pwmSetFrequency</a>(uint32_t freq)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  uint8_t rq[] =</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  RQ_PWM_SET_FREQ,</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  static_cast<uint8_t>((freq >> 0) & 0xFF),</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  static_cast<uint8_t>((freq >> 8) & 0xFF),</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  static_cast<uint8_t>((freq >> 16) & 0xFF),</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  static_cast<uint8_t>((freq >> 24) & 0xFF)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  };</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordtype">int</span> n_sent = usart.write_timeout(&rq[0], 0, <span class="keyword">sizeof</span>(rq), 1000);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span>(n_sent != <span class="keyword">sizeof</span>(rq))</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Sent failed"</span>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  uint8_t <span class="keywordtype">byte</span> = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> byte;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  </div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classB15F.html#af9aad3c0db5d5a8b37219d713e1977ee"> 314</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#af9aad3c0db5d5a8b37219d713e1977ee">B15F::pwmSetValue</a>(uint8_t value)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  uint8_t rq[] =</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  RQ_PWM_SET_VALUE,</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  value</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  };</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordtype">int</span> n_sent = usart.write_timeout(&rq[0], 0, <span class="keyword">sizeof</span>(rq), 1000);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">if</span>(n_sent != <span class="keyword">sizeof</span>(rq))</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Sent failed"</span>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  </div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416"> 333</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">B15F::delay_ms</a>(uint16_t ms)</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  std::this_thread::sleep_for(std::chrono::milliseconds(ms));</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span> }</div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  </div><div class="line"><a name="l00338"></a><span class="lineno"><a class="line" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f"> 338</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">B15F::delay_us</a>(uint16_t us)</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span> {</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  std::this_thread::sleep_for(std::chrono::microseconds(us));</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span> }</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  </div><div class="line"><a name="l00343"></a><span class="lineno"><a class="line" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380"> 343</a></span> <a class="code" href="classB15F.html">B15F</a>& <a class="code" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span> {</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">if</span>(!instance)</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  instance = <span class="keyword">new</span> <a class="code" href="classB15F.html">B15F</a>();</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">return</span> *instance;</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span> }</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  </div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="comment">// https://stackoverflow.com/a/478960</span></div><div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a"> 352</a></span> std::string <a class="code" href="classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a">B15F::exec</a>(std::string cmd)</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span> {</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  std::array<char, 128> buffer;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  std::string result;</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd.c_str(), <span class="stringliteral">"r"</span>), pclose);</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="keywordflow">if</span> (!pipe)</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"popen() failed!"</span>);</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  }</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  <span class="keywordflow">while</span> (fgets(buffer.data(), buffer.size(), pipe.get()) != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  {</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  result += buffer.data();</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  }</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span> }</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  </div><div class="line"><a name="l00368"></a><span class="lineno"><a class="line" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e"> 368</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">B15F::abort</a>(std::string msg)</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span> {</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <a class="code" href="classDriverException.html">DriverException</a> ex(msg);</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(ex);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span> }</div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="classB15F.html#ac962a6a49bddd0e261a8c7d3aded23f8"> 373</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">B15F::abort</a>(std::exception& ex)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="keywordflow">if</span>(errorhandler)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  errorhandler(ex);</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  {</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  std::cerr << <span class="stringliteral">"NOTICE: B15F::errorhandler not set"</span> << std::endl;</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  std::cout << ex.what() << std::endl;</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keywordflow">throw</span> <a class="code" href="classDriverException.html">DriverException</a>(ex.what());</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span> }</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  </div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9"> 385</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9">B15F::setAbortHandler</a>(errorhandler_t func)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span> {</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  errorhandler = func;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span> }</div></div><!-- fragment --></div><!-- contents --> -<div class="ttc" id="aclassB15F_html_a1a7ac52984ed7ecac008a3e4060eee3a"><div class="ttname"><a href="classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a">B15F::exec</a></div><div class="ttdeci">static std::string exec(std::string cmd)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00352">b15f.cpp:352</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#include "b15f.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <a class="code" href="classB15F.html">B15F</a>* B15F::instance = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> errorhandler_t B15F::errorhandler = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  </div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> B15F::B15F()</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> {</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  init();</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> }</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  </div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="keywordtype">void</span> B15F::init()</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> {</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  std::string device = <a class="code" href="classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a">exec</a>(<span class="stringliteral">"bash -c 'ls /dev/ttyUSB*'"</span>);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  <span class="keywordflow">while</span>(device.find(<span class="charliteral">' '</span>) != std::string::npos || device.find(<span class="charliteral">'\n'</span>) != std::string::npos || device.find(<span class="charliteral">'\t'</span>) != std::string::npos)</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  device.pop_back();</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordflow">if</span>(device.length() == 0)</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Adapter nicht gefunden"</span>);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  std::cout << <a class="code" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">PRE</a> << <span class="stringliteral">"Verwende Adapter: "</span> << device << std::endl;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  std::cout << <a class="code" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">PRE</a> << <span class="stringliteral">"Stelle Verbindung mit Adapter her... "</span> << std::flush;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  usart.<a class="code" href="classUSART.html#aac63918a8b97ae63ee607cfa39e6d88d">setBaudrate</a>(<a class="code" href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87">BAUDRATE</a>);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  usart.<a class="code" href="classUSART.html#a5f7e2abda2ec4a68a5fdb8ee2f8a940a">openDevice</a>(device);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  std::cout << <span class="stringliteral">"OK"</span> << std::endl;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  std::cout << <a class="code" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">PRE</a> << <span class="stringliteral">"Teste Verbindung... "</span> << std::flush;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  uint8_t tries = 3;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">while</span>(tries--)</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// verwerfe Daten, die µC noch hat</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="comment">//discard();</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>(!<a class="code" href="classB15F.html#af01983594f2af98ab2b1e514aa036a5d">testConnection</a>())</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">if</span>(!<a class="code" href="classB15F.html#a7b8a0e2a9156f7dcb05d097f23666a78">testIntConv</a>())</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span>(tries == 0)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Verbindungstest fehlgeschlagen. Neueste Version im Einsatz?"</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  std::cout << <span class="stringliteral">"OK"</span> << std::endl;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  </div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="comment">// Gib board info aus</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  std::vector<std::string> info = <a class="code" href="classB15F.html#a4f01677e73d6d172a2c1cae9427a591b">getBoardInfo</a>();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  std::cout << <a class="code" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">PRE</a> << <span class="stringliteral">"AVR Firmware Version: "</span> << info[0] << <span class="stringliteral">" um "</span> << info[1] << <span class="stringliteral">" Uhr ("</span> << info[2] << <span class="stringliteral">")"</span> << std::endl;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  </div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7"> 57</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7">B15F::reconnect</a>()</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> {</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  uint8_t tries = <a class="code" href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc">RECONNECT_TRIES</a>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">while</span>(tries--)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  {</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <a class="code" href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">delay_ms</a>(<a class="code" href="classB15F.html#a040951746fbfd632e12bd1ad14578816">RECONNECT_TIMEOUT</a>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <a class="code" href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5">discard</a>();</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span>(<a class="code" href="classB15F.html#af01983594f2af98ab2b1e514aa036a5d">testConnection</a>())</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">return</span>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  }</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Verbindung kann nicht repariert werden"</span>);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  </div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5"> 72</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5">B15F::discard</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> {</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">try</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  {</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  usart.<a class="code" href="classUSART.html#a756d268a8762c316f91ca3238972b0c1">clearOutputBuffer</a>();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordflow">for</span>(uint8_t i = 0; i < 16; i++)</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_DISC); <span class="comment">// sende discard Befehl (verwerfe input)</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <a class="code" href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">delay_ms</a>(4);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">catch</span>(std::exception& ex)</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  {</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(ex);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  }</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> }</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  </div><div class="line"><a name="l00090"></a><span class="lineno"><a class="line" href="classB15F.html#af01983594f2af98ab2b1e514aa036a5d"> 90</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#af01983594f2af98ab2b1e514aa036a5d">B15F::testConnection</a>()</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> {</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  <span class="comment">// erzeuge zufälliges Byte</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  srand(time(NULL));</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  uint8_t dummy = rand() % 256;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_TEST);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(dummy);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  uint8_t mirror = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a> && mirror == dummy;</div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classB15F.html#a7b8a0e2a9156f7dcb05d097f23666a78"> 105</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a7b8a0e2a9156f7dcb05d097f23666a78">B15F::testIntConv</a>()</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> {</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  srand(time(NULL));</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  uint16_t dummy = rand() % (0xFFFF / 3);</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_INT);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  usart.<a class="code" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a>(dummy);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  uint16_t aw = usart.<a class="code" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a>();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> aw == dummy * 3;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> }</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  </div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div><div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classB15F.html#a4f01677e73d6d172a2c1cae9427a591b"> 118</a></span> std::vector<std::string> <a class="code" href="classB15F.html#a4f01677e73d6d172a2c1cae9427a591b">B15F::getBoardInfo</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  std::vector<std::string> info;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_INFO);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  </div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  uint8_t n = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">while</span>(n--)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  uint8_t len = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  std::string str;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">while</span>(len--)</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  str += static_cast<char>(usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>());</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  </div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  info.push_back(str);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span>(aw != <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>)</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Board Info fehlerhalft: code "</span> + std::to_string((<span class="keywordtype">int</span>) aw));</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  </div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">return</span> info;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span> }</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1"> 145</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1">B15F::activateSelfTestMode</a>()</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span> {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_ST);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  </div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>;</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span> }</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  </div><div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classB15F.html#a13797edea1c50278988373acbd110064"> 153</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a13797edea1c50278988373acbd110064">B15F::digitalWrite0</a>(uint8_t port)</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span> {</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_BA0);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(port);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  </div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>;</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span> }</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="classB15F.html#aa225e7fc813849634063e071ef25db1b"> 163</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#aa225e7fc813849634063e071ef25db1b">B15F::digitalWrite1</a>(uint8_t port)</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span> {</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_BA1);</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(port);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  </div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span> }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  </div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="classB15F.html#ae0df6d423deeb2fd610968bd1c72060e"> 173</a></span> uint8_t <a class="code" href="classB15F.html#ae0df6d423deeb2fd610968bd1c72060e">B15F::digitalRead0</a>()</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span> {</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_BE0);</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  uint8_t <span class="keywordtype">byte</span> = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> byte;</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span> }</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  </div><div class="line"><a name="l00182"></a><span class="lineno"><a class="line" href="classB15F.html#afc76b612dd4faeee0ac02a66b65af5f2"> 182</a></span> uint8_t <a class="code" href="classB15F.html#afc76b612dd4faeee0ac02a66b65af5f2">B15F::digitalRead1</a>()</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span> {</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_BE1);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  uint8_t <span class="keywordtype">byte</span> = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">return</span> byte;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  </div><div class="line"><a name="l00191"></a><span class="lineno"><a class="line" href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a"> 191</a></span> uint8_t <a class="code" href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a">B15F::readDipSwitch</a>()</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> {</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_DSW);</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  uint8_t <span class="keywordtype">byte</span> = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">return</span> byte;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span> }</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  </div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3"> 200</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3">B15F::analogWrite0</a>(uint16_t value)</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span> {</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_AA0);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  usart.<a class="code" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a>(value);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  </div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>;</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span> }</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  </div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="classB15F.html#a7f1becceac744f5cd2ad529748fd836f"> 210</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a7f1becceac744f5cd2ad529748fd836f">B15F::analogWrite1</a>(uint16_t value)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span> {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_AA1);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  usart.<a class="code" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a>(value);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>;</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span> }</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  </div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627"> 220</a></span> uint16_t <a class="code" href="classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627">B15F::analogRead</a>(uint8_t channel)</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span> {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="keywordflow">if</span>(channel > 7)</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Bad ADC channel: "</span> + std::to_string(channel));</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  </div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  uint8_t rq[] =</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  {</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  RQ_ADC,</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  channel</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  };</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="keywordtype">int</span> n_sent = usart.write_timeout(&rq[0], 0, <span class="keyword">sizeof</span>(rq), 1000);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">if</span>(n_sent != <span class="keyword">sizeof</span>(rq))</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Sent failed"</span>);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  </div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  uint16_t adc = usart.<a class="code" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a>();</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span>(adc > 1023)</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Bad ADC data detected (1)"</span>);</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="keywordflow">return</span> adc;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  </div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="classB15F.html#ab82a324426c3063318c6cafb3089ae02"> 243</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#ab82a324426c3063318c6cafb3089ae02">B15F::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)</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span> {</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="comment">// check pointers</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  buffer_a += offset_a;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  buffer_b += offset_b;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(RQ_ADC_DAC_STROKE);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(channel_a);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  usart.<a class="code" href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">writeByte</a>(channel_b);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  usart.<a class="code" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a>(start);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  usart.<a class="code" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a>(static_cast<uint16_t>(delta));</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  usart.<a class="code" href="classUSART.html#a78b30d9aa863f38745e982860392599a">writeInt</a>(count);</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  </div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="keywordflow">for</span>(uint16_t i = 0; i < count; i++)</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  {</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">if</span>(buffer_a)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  {</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  buffer_a[i] = usart.<a class="code" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a>();</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  </div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="keywordflow">if</span>(buffer_a[i] > 1023) <span class="comment">// check for broken usart connection</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Bad ADC data detected (2)"</span>);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  {</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  usart.<a class="code" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a>();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  }</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  </div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="keywordflow">if</span>(buffer_b)</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  {</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  buffer_b[i] = usart.<a class="code" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a>();</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  </div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="keywordflow">if</span>(buffer_b[i] > 1023) <span class="comment">// check for broken usart connection</span></div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Bad ADC data detected (3)"</span>);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  }</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  usart.<a class="code" href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">readInt</a>();</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  }</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  </div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordflow">if</span>(aw != <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>)</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Sequenz unterbrochen"</span>);</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  </div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span> }</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  </div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="classB15F.html#ac6f6532bb9550a0632c28b98c157d0a1"> 292</a></span> uint8_t <a class="code" href="classB15F.html#ac6f6532bb9550a0632c28b98c157d0a1">B15F::pwmSetFrequency</a>(uint32_t freq)</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span> {</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  </div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  uint8_t rq[] =</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  {</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  RQ_PWM_SET_FREQ,</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  static_cast<uint8_t>((freq >> 0) & 0xFF),</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  static_cast<uint8_t>((freq >> 8) & 0xFF),</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  static_cast<uint8_t>((freq >> 16) & 0xFF),</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  static_cast<uint8_t>((freq >> 24) & 0xFF)</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  };</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  </div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordtype">int</span> n_sent = usart.write_timeout(&rq[0], 0, <span class="keyword">sizeof</span>(rq), 1000);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordflow">if</span>(n_sent != <span class="keyword">sizeof</span>(rq))</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Sent failed"</span>);</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  </div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  uint8_t <span class="keywordtype">byte</span> = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="keywordflow">return</span> byte;</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span> }</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  </div><div class="line"><a name="l00314"></a><span class="lineno"><a class="line" href="classB15F.html#af9aad3c0db5d5a8b37219d713e1977ee"> 314</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#af9aad3c0db5d5a8b37219d713e1977ee">B15F::pwmSetValue</a>(uint8_t value)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span> {</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  </div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  uint8_t rq[] =</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  {</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  RQ_PWM_SET_VALUE,</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  value</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  };</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  </div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="keywordtype">int</span> n_sent = usart.write_timeout(&rq[0], 0, <span class="keyword">sizeof</span>(rq), 1000);</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="keywordflow">if</span>(n_sent != <span class="keyword">sizeof</span>(rq))</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Sent failed"</span>);</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  </div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="keywordflow">return</span> aw == <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a>;</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span> }</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  </div><div class="line"><a name="l00333"></a><span class="lineno"><a class="line" href="classB15F.html#a2735424cf98bd0e2892b5a9b6eb24582"> 333</a></span> <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a2735424cf98bd0e2892b5a9b6eb24582">B15F::setRegister</a>(uint8_t adr, uint8_t val)</div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span> {</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  </div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  uint8_t rq[] =</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  {</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  RQ_SET_REG,</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  adr,</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  val</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  };</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  </div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordtype">int</span> n_sent = usart.write_timeout(&rq[0], 0, <span class="keyword">sizeof</span>(rq), 1000);</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="keywordflow">if</span>(n_sent != <span class="keyword">sizeof</span>(rq))</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Sent failed"</span>);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  </div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  uint8_t <span class="keywordtype">byte</span> = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="keywordflow">return</span> <span class="keywordtype">byte</span> == val;</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span> }</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  </div><div class="line"><a name="l00353"></a><span class="lineno"><a class="line" href="classB15F.html#a43b477a9e2e5b1b2142958fa5e1a78b3"> 353</a></span> uint8_t <a class="code" href="classB15F.html#a43b477a9e2e5b1b2142958fa5e1a78b3">B15F::getRegister</a>(uint8_t adr)</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span> {</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  usart.<a class="code" href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">clearInputBuffer</a>();</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  </div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  uint8_t rq[] =</div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  {</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  RQ_GET_REG,</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  adr</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  };</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  </div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  <span class="keywordtype">int</span> n_sent = usart.write_timeout(&rq[0], 0, <span class="keyword">sizeof</span>(rq), 1000);</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>  <span class="keywordflow">if</span>(n_sent != <span class="keyword">sizeof</span>(rq))</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(<span class="stringliteral">"Sent failed"</span>);</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>  </div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  uint8_t aw = usart.<a class="code" href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">readByte</a>();</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(10);</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="keywordflow">return</span> aw;</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span> }</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  </div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  </div><div class="line"><a name="l00373"></a><span class="lineno"><a class="line" href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416"> 373</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">B15F::delay_ms</a>(uint16_t ms)</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span> {</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  std::this_thread::sleep_for(std::chrono::milliseconds(ms));</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span> }</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  </div><div class="line"><a name="l00378"></a><span class="lineno"><a class="line" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f"> 378</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">B15F::delay_us</a>(uint16_t us)</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span> {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  std::this_thread::sleep_for(std::chrono::microseconds(us));</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span> }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  </div><div class="line"><a name="l00383"></a><span class="lineno"><a class="line" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380"> 383</a></span> <a class="code" href="classB15F.html">B15F</a>& <a class="code" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a>(<span class="keywordtype">void</span>)</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span> {</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  <span class="keywordflow">if</span>(!instance)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  instance = <span class="keyword">new</span> <a class="code" href="classB15F.html">B15F</a>();</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  </div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  <span class="keywordflow">return</span> *instance;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span> }</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  </div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="comment">// https://stackoverflow.com/a/478960</span></div><div class="line"><a name="l00392"></a><span class="lineno"><a class="line" href="classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a"> 392</a></span> std::string <a class="code" href="classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a">B15F::exec</a>(std::string cmd)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span> {</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  std::array<char, 128> buffer;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  std::string result;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd.c_str(), <span class="stringliteral">"r"</span>), pclose);</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="keywordflow">if</span> (!pipe)</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  {</div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"popen() failed!"</span>);</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  }</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="keywordflow">while</span> (fgets(buffer.data(), buffer.size(), pipe.get()) != <span class="keyword">nullptr</span>)</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  {</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  result += buffer.data();</div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  }</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="keywordflow">return</span> result;</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span> }</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  </div><div class="line"><a name="l00408"></a><span class="lineno"><a class="line" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e"> 408</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">B15F::abort</a>(std::string msg)</div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span> {</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <a class="code" href="classDriverException.html">DriverException</a> ex(msg);</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(ex);</div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span> }</div><div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="classB15F.html#ac962a6a49bddd0e261a8c7d3aded23f8"> 413</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">B15F::abort</a>(std::exception& ex)</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span> {</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keywordflow">if</span>(errorhandler)</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  errorhandler(ex);</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  {</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  std::cerr << <span class="stringliteral">"NOTICE: B15F::errorhandler not set"</span> << std::endl;</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  std::cout << ex.what() << std::endl;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordflow">throw</span> <a class="code" href="classDriverException.html">DriverException</a>(ex.what());</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  }</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span> }</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  </div><div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9"> 425</a></span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9">B15F::setAbortHandler</a>(errorhandler_t func)</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span> {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  errorhandler = func;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span> }</div></div><!-- fragment --></div><!-- contents --> +<div class="ttc" id="aclassB15F_html_a1a7ac52984ed7ecac008a3e4060eee3a"><div class="ttname"><a href="classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a">B15F::exec</a></div><div class="ttdeci">static std::string exec(std::string cmd)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00392">b15f.cpp:392</a></div></div> +<div class="ttc" id="aclassB15F_html_a43b477a9e2e5b1b2142958fa5e1a78b3"><div class="ttname"><a href="classB15F.html#a43b477a9e2e5b1b2142958fa5e1a78b3">B15F::getRegister</a></div><div class="ttdeci">uint8_t getRegister(uint8_t adr)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00353">b15f.cpp:353</a></div></div> <div class="ttc" id="aclassUSART_html_a8f54b98b26bfe084359a5604bda82562"><div class="ttname"><a href="classUSART.html#a8f54b98b26bfe084359a5604bda82562">USART::readByte</a></div><div class="ttdeci">uint8_t readByte(void)</div><div class="ttdef"><b>Definition:</b> <a href="usart_8cpp_source.html#l00216">usart.cpp:216</a></div></div> -<div class="ttc" id="aclassB15F_html_adcaac8ae8db3c28eccb499fbd720361f"><div class="ttname"><a href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">B15F::delay_us</a></div><div class="ttdeci">void delay_us(uint16_t us)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00338">b15f.cpp:338</a></div></div> +<div class="ttc" id="aclassB15F_html_adcaac8ae8db3c28eccb499fbd720361f"><div class="ttname"><a href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">B15F::delay_us</a></div><div class="ttdeci">void delay_us(uint16_t us)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00378">b15f.cpp:378</a></div></div> <div class="ttc" id="aclassB15F_html_ae0df6d423deeb2fd610968bd1c72060e"><div class="ttname"><a href="classB15F.html#ae0df6d423deeb2fd610968bd1c72060e">B15F::digitalRead0</a></div><div class="ttdeci">uint8_t digitalRead0(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00173">b15f.cpp:173</a></div></div> <div class="ttc" id="aclassB15F_html_ac6f6532bb9550a0632c28b98c157d0a1"><div class="ttname"><a href="classB15F.html#ac6f6532bb9550a0632c28b98c157d0a1">B15F::pwmSetFrequency</a></div><div class="ttdeci">uint8_t pwmSetFrequency(uint32_t freq)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00292">b15f.cpp:292</a></div></div> <div class="ttc" id="aclassB15F_html_ab82a324426c3063318c6cafb3089ae02"><div class="ttname"><a href="classB15F.html#ab82a324426c3063318c6cafb3089ae02">B15F::analogSequence</a></div><div class="ttdeci">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)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00243">b15f.cpp:243</a></div></div> <div class="ttc" id="aclassB15F_html_af01983594f2af98ab2b1e514aa036a5d"><div class="ttname"><a href="classB15F.html#af01983594f2af98ab2b1e514aa036a5d">B15F::testConnection</a></div><div class="ttdeci">bool testConnection(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00090">b15f.cpp:90</a></div></div> <div class="ttc" id="aclassB15F_html_a6f858f21ea81d491b5031b3644a2239a"><div class="ttname"><a href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a">B15F::readDipSwitch</a></div><div class="ttdeci">uint8_t readDipSwitch(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00191">b15f.cpp:191</a></div></div> -<div class="ttc" id="aclassB15F_html_aaffce20afb9f06bc4b7556c70ce76416"><div class="ttname"><a href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">B15F::delay_ms</a></div><div class="ttdeci">void delay_ms(uint16_t ms)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00333">b15f.cpp:333</a></div></div> -<div class="ttc" id="aclassB15F_html_a8b4533d232c55ef2aa967e39e2d23380"><div class="ttname"><a href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a></div><div class="ttdeci">static B15F & getInstance(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00343">b15f.cpp:343</a></div></div> +<div class="ttc" id="aclassB15F_html_aaffce20afb9f06bc4b7556c70ce76416"><div class="ttname"><a href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">B15F::delay_ms</a></div><div class="ttdeci">void delay_ms(uint16_t ms)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00373">b15f.cpp:373</a></div></div> +<div class="ttc" id="aclassB15F_html_a2735424cf98bd0e2892b5a9b6eb24582"><div class="ttname"><a href="classB15F.html#a2735424cf98bd0e2892b5a9b6eb24582">B15F::setRegister</a></div><div class="ttdeci">bool setRegister(uint8_t adr, uint8_t val)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00333">b15f.cpp:333</a></div></div> +<div class="ttc" id="aclassB15F_html_a8b4533d232c55ef2aa967e39e2d23380"><div class="ttname"><a href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a></div><div class="ttdeci">static B15F & getInstance(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00383">b15f.cpp:383</a></div></div> <div class="ttc" id="aclassB15F_html"><div class="ttname"><a href="classB15F.html">B15F</a></div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00026">b15f.h:26</a></div></div> -<div class="ttc" id="aclassB15F_html_a3f09a418f9e3be5d1d750e4515c96f1e"><div class="ttname"><a href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">B15F::abort</a></div><div class="ttdeci">static void abort(std::string msg)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00368">b15f.cpp:368</a></div></div> +<div class="ttc" id="aclassB15F_html_a3f09a418f9e3be5d1d750e4515c96f1e"><div class="ttname"><a href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">B15F::abort</a></div><div class="ttdeci">static void abort(std::string msg)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00408">b15f.cpp:408</a></div></div> <div class="ttc" id="aclassUSART_html_a28a2b4c5ed66b2c3a81196f76884f156"><div class="ttname"><a href="classUSART.html#a28a2b4c5ed66b2c3a81196f76884f156">USART::clearInputBuffer</a></div><div class="ttdeci">void clearInputBuffer(void)</div><div class="ttdef"><b>Definition:</b> <a href="usart_8cpp_source.html#l00039">usart.cpp:39</a></div></div> <div class="ttc" id="aclassUSART_html_a756d268a8762c316f91ca3238972b0c1"><div class="ttname"><a href="classUSART.html#a756d268a8762c316f91ca3238972b0c1">USART::clearOutputBuffer</a></div><div class="ttdeci">void clearOutputBuffer(void)</div><div class="ttdef"><b>Definition:</b> <a href="usart_8cpp_source.html#l00046">usart.cpp:46</a></div></div> <div class="ttc" id="aclassB15F_html_ae0bd1f69751e2dc3c462db9213fc4627"><div class="ttname"><a href="classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627">B15F::analogRead</a></div><div class="ttdeci">uint16_t analogRead(uint8_t channel)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00220">b15f.cpp:220</a></div></div> <div class="ttc" id="aclassB15F_html_a13797edea1c50278988373acbd110064"><div class="ttname"><a href="classB15F.html#a13797edea1c50278988373acbd110064">B15F::digitalWrite0</a></div><div class="ttdeci">bool digitalWrite0(uint8_t)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00153">b15f.cpp:153</a></div></div> -<div class="ttc" id="aclassB15F_html_a3b0fc1f85954b2d9c145af4a3af5b1ec"><div class="ttname"><a href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">B15F::PRE</a></div><div class="ttdeci">const std::string PRE</div><div class="ttdoc">B15F stdout prefix.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00215">b15f.h:215</a></div></div> +<div class="ttc" id="aclassB15F_html_a3b0fc1f85954b2d9c145af4a3af5b1ec"><div class="ttname"><a href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">B15F::PRE</a></div><div class="ttdeci">const std::string PRE</div><div class="ttdoc">B15F stdout prefix.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00231">b15f.h:231</a></div></div> <div class="ttc" id="aclassUSART_html_aac63918a8b97ae63ee607cfa39e6d88d"><div class="ttname"><a href="classUSART.html#aac63918a8b97ae63ee607cfa39e6d88d">USART::setBaudrate</a></div><div class="ttdeci">void setBaudrate(uint32_t baudrate)</div><div class="ttdef"><b>Definition:</b> <a href="usart_8cpp_source.html#l00322">usart.cpp:322</a></div></div> <div class="ttc" id="aclassB15F_html_ad9bf80ee2485fb5aac9926c6ef0731f1"><div class="ttname"><a href="classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1">B15F::activateSelfTestMode</a></div><div class="ttdeci">bool activateSelfTestMode(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00145">b15f.cpp:145</a></div></div> <div class="ttc" id="aclassB15F_html_a4f01677e73d6d172a2c1cae9427a591b"><div class="ttname"><a href="classB15F.html#a4f01677e73d6d172a2c1cae9427a591b">B15F::getBoardInfo</a></div><div class="ttdeci">std::vector< std::string > getBoardInfo(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00118">b15f.cpp:118</a></div></div> -<div class="ttc" id="aclassB15F_html_a040951746fbfd632e12bd1ad14578816"><div class="ttname"><a href="classB15F.html#a040951746fbfd632e12bd1ad14578816">B15F::RECONNECT_TIMEOUT</a></div><div class="ttdeci">constexpr static uint16_t RECONNECT_TIMEOUT</div><div class="ttdoc">Time in ms after which a reconnect attempt aborts.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00218">b15f.h:218</a></div></div> +<div class="ttc" id="aclassB15F_html_a040951746fbfd632e12bd1ad14578816"><div class="ttname"><a href="classB15F.html#a040951746fbfd632e12bd1ad14578816">B15F::RECONNECT_TIMEOUT</a></div><div class="ttdeci">constexpr static uint16_t RECONNECT_TIMEOUT</div><div class="ttdoc">Time in ms after which a reconnect attempt aborts.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00234">b15f.h:234</a></div></div> <div class="ttc" id="aclassB15F_html_a7f1becceac744f5cd2ad529748fd836f"><div class="ttname"><a href="classB15F.html#a7f1becceac744f5cd2ad529748fd836f">B15F::analogWrite1</a></div><div class="ttdeci">bool analogWrite1(uint16_t port)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00210">b15f.cpp:210</a></div></div> <div class="ttc" id="aclassUSART_html_a60eadbe9956bab8144ee96d89eacd9f5"><div class="ttname"><a href="classUSART.html#a60eadbe9956bab8144ee96d89eacd9f5">USART::writeByte</a></div><div class="ttdeci">void writeByte(uint8_t b)</div><div class="ttdef"><b>Definition:</b> <a href="usart_8cpp_source.html#l00067">usart.cpp:67</a></div></div> <div class="ttc" id="aclassB15F_html_aa225e7fc813849634063e071ef25db1b"><div class="ttname"><a href="classB15F.html#aa225e7fc813849634063e071ef25db1b">B15F::digitalWrite1</a></div><div class="ttdeci">bool digitalWrite1(uint8_t)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00163">b15f.cpp:163</a></div></div> <div class="ttc" id="aclassB15F_html_af9aad3c0db5d5a8b37219d713e1977ee"><div class="ttname"><a href="classB15F.html#af9aad3c0db5d5a8b37219d713e1977ee">B15F::pwmSetValue</a></div><div class="ttdeci">bool pwmSetValue(uint8_t value)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00314">b15f.cpp:314</a></div></div> <div class="ttc" id="aclassB15F_html_ae4740cd473f40a1a4121dfa66b25e1d5"><div class="ttname"><a href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5">B15F::discard</a></div><div class="ttdeci">void discard(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00072">b15f.cpp:72</a></div></div> -<div class="ttc" id="aclassB15F_html_ab01299858f74a6cec598688562e0ad02"><div class="ttname"><a href="classB15F.html#ab01299858f74a6cec598688562e0ad02">B15F::MSG_OK</a></div><div class="ttdeci">constexpr static uint8_t MSG_OK</div><div class="ttdoc">Value to acknowledge a received command.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00216">b15f.h:216</a></div></div> +<div class="ttc" id="aclassB15F_html_ab01299858f74a6cec598688562e0ad02"><div class="ttname"><a href="classB15F.html#ab01299858f74a6cec598688562e0ad02">B15F::MSG_OK</a></div><div class="ttdeci">constexpr static uint8_t MSG_OK</div><div class="ttdoc">Value to acknowledge a received command.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00232">b15f.h:232</a></div></div> <div class="ttc" id="aclassUSART_html_a5f7e2abda2ec4a68a5fdb8ee2f8a940a"><div class="ttname"><a href="classUSART.html#a5f7e2abda2ec4a68a5fdb8ee2f8a940a">USART::openDevice</a></div><div class="ttdeci">void openDevice(std::string device)</div><div class="ttdef"><b>Definition:</b> <a href="usart_8cpp_source.html#l00003">usart.cpp:3</a></div></div> <div class="ttc" id="aclassUSART_html_a1534c229db71a375e556cf1e7d0b8119"><div class="ttname"><a href="classUSART.html#a1534c229db71a375e556cf1e7d0b8119">USART::readInt</a></div><div class="ttdeci">uint16_t readInt(void)</div><div class="ttdef"><b>Definition:</b> <a href="usart_8cpp_source.html#l00235">usart.cpp:235</a></div></div> <div class="ttc" id="aclassB15F_html_afc76b612dd4faeee0ac02a66b65af5f2"><div class="ttname"><a href="classB15F.html#afc76b612dd4faeee0ac02a66b65af5f2">B15F::digitalRead1</a></div><div class="ttdeci">uint8_t digitalRead1(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00182">b15f.cpp:182</a></div></div> <div class="ttc" id="aclassB15F_html_a52557b375443c180a044e7d4e80a1ae7"><div class="ttname"><a href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7">B15F::reconnect</a></div><div class="ttdeci">void reconnect(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00057">b15f.cpp:57</a></div></div> -<div class="ttc" id="aclassB15F_html_a7d548d6861cfc69753161bf9cda14f87"><div class="ttname"><a href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87">B15F::BAUDRATE</a></div><div class="ttdeci">constexpr static uint32_t BAUDRATE</div><div class="ttdoc">USART baudrate for communication with the MCU.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00221">b15f.h:221</a></div></div> -<div class="ttc" id="aclassB15F_html_a55b0cd1ea582bda53d6979442640f8e9"><div class="ttname"><a href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9">B15F::setAbortHandler</a></div><div class="ttdeci">static void setAbortHandler(errorhandler_t func)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00385">b15f.cpp:385</a></div></div> +<div class="ttc" id="aclassB15F_html_a7d548d6861cfc69753161bf9cda14f87"><div class="ttname"><a href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87">B15F::BAUDRATE</a></div><div class="ttdeci">constexpr static uint32_t BAUDRATE</div><div class="ttdoc">USART baudrate for communication with the MCU.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00237">b15f.h:237</a></div></div> +<div class="ttc" id="aclassB15F_html_a55b0cd1ea582bda53d6979442640f8e9"><div class="ttname"><a href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9">B15F::setAbortHandler</a></div><div class="ttdeci">static void setAbortHandler(errorhandler_t func)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00425">b15f.cpp:425</a></div></div> <div class="ttc" id="aclassB15F_html_afc55fd590c7fa5c942d100cb60c4b0d3"><div class="ttname"><a href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3">B15F::analogWrite0</a></div><div class="ttdeci">bool analogWrite0(uint16_t port)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00200">b15f.cpp:200</a></div></div> -<div class="ttc" id="aclassB15F_html_a6c4895bdbcd71ff6743becf97985c2dc"><div class="ttname"><a href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc">B15F::RECONNECT_TRIES</a></div><div class="ttdeci">constexpr static uint8_t RECONNECT_TRIES</div><div class="ttdoc">Maximum count of reconnect attempts after which the driver stops.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00220">b15f.h:220</a></div></div> +<div class="ttc" id="aclassB15F_html_a6c4895bdbcd71ff6743becf97985c2dc"><div class="ttname"><a href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc">B15F::RECONNECT_TRIES</a></div><div class="ttdeci">constexpr static uint8_t RECONNECT_TRIES</div><div class="ttdoc">Maximum count of reconnect attempts after which the driver stops.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00236">b15f.h:236</a></div></div> <div class="ttc" id="aclassUSART_html_a78b30d9aa863f38745e982860392599a"><div class="ttname"><a href="classUSART.html#a78b30d9aa863f38745e982860392599a">USART::writeInt</a></div><div class="ttdeci">void writeInt(uint16_t d)</div><div class="ttdef"><b>Definition:</b> <a href="usart_8cpp_source.html#l00081">usart.cpp:81</a></div></div> <div class="ttc" id="aclassB15F_html_a7b8a0e2a9156f7dcb05d097f23666a78"><div class="ttname"><a href="classB15F.html#a7b8a0e2a9156f7dcb05d097f23666a78">B15F::testIntConv</a></div><div class="ttdeci">bool testIntConv(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00105">b15f.cpp:105</a></div></div> <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 on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/b15f_8h_source.html b/docs/html/b15f_8h_source.html index 346c23c..1bad799 100644 --- a/docs/html/b15f_8h_source.html +++ b/docs/html/b15f_8h_source.html @@ -70,42 +70,44 @@ $(function() { <div class="title">b15f.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#ifndef B15F_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define B15F_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>  </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <bits/stdc++.h></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <fstream></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include <cstdlib></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include <chrono></span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <cstdint></span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include <fcntl.h></span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include <sys/ioctl.h></span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <termios.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "usart.h"</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "driverexception.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "timeoutexception.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">typedef</span> std::function<void(std::exception&)> errorhandler_t;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classB15F.html"> 26</a></span> <span class="keyword">class </span><a class="code" href="classB15F.html">B15F</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="comment">// privater Konstruktor</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="classB15F.html">B15F</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> /*************************************</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> * Grundfunktionen des B15F Treibers *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> *************************************/</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7">reconnect</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span> <a class="code" href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5">discard</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#af01983594f2af98ab2b1e514aa036a5d">testConnection</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a7b8a0e2a9156f7dcb05d097f23666a78">testIntConv</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector<std::string> <a class="code" href="classB15F.html#a4f01677e73d6d172a2c1cae9427a591b">getBoardInfo</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">void</span> <a class="code" href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">delay_ms</a>(uint16_t ms);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">void</span> <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(uint16_t us);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">static</span> <a class="code" href="classB15F.html">B15F</a>& <a class="code" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">getInstance</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">static</span> std::string <a class="code" href="classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a">exec</a>(std::string cmd);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(std::string msg);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(std::exception& ex);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9">setAbortHandler</a>(errorhandler_t func);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment"> /*************************************/</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment"> /*************************</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment"> * Steuerbefehle für B15 *</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment"> *************************/</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1">activateSelfTestMode</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a13797edea1c50278988373acbd110064">digitalWrite0</a>(uint8_t);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#aa225e7fc813849634063e071ef25db1b">digitalWrite1</a>(uint8_t);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  uint8_t <a class="code" href="classB15F.html#ae0df6d423deeb2fd610968bd1c72060e">digitalRead0</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  uint8_t <a class="code" href="classB15F.html#afc76b612dd4faeee0ac02a66b65af5f2">digitalRead1</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  uint8_t <a class="code" href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a">readDipSwitch</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3">analogWrite0</a>(uint16_t port);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a7f1becceac744f5cd2ad529748fd836f">analogWrite1</a>(uint16_t port);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  uint16_t <a class="code" href="classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627">analogRead</a>(uint8_t channel);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordtype">void</span> <a class="code" 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);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  uint8_t <a class="code" href="classB15F.html#ac6f6532bb9550a0632c28b98c157d0a1">pwmSetFrequency</a>(uint32_t freq);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#af9aad3c0db5d5a8b37219d713e1977ee">pwmSetValue</a>(uint8_t value);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  </div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment"> /*************************/</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  </div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec"> 215</a></span>  </div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="classB15F.html#ab01299858f74a6cec598688562e0ad02"> 216</a></span>  <span class="comment">// CONSTANTS</span></div><div class="line"><a name="l00217"></a><span class="lineno"><a class="line" href="classB15F.html#a77d1ecf24b406c9204665d3b09c36f1e"> 217</a></span>  <span class="keyword">const</span> std::string <a class="code" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">PRE</a> = <span class="stringliteral">"[B15F] "</span>; </div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="classB15F.html#a040951746fbfd632e12bd1ad14578816"> 218</a></span>  constexpr <span class="keyword">static</span> uint8_t <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a> = 0xFF; </div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="classB15F.html#a158d13bc84aed6430cdede1396384e06"> 219</a></span>  constexpr <span class="keyword">static</span> uint8_t <a class="code" href="classB15F.html#a77d1ecf24b406c9204665d3b09c36f1e">MSG_FAIL</a> = 0xFE; </div><div class="line"><a name="l00220"></a><span class="lineno"><a class="line" href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc"> 220</a></span>  constexpr <span class="keyword">static</span> uint16_t <a class="code" href="classB15F.html#a040951746fbfd632e12bd1ad14578816">RECONNECT_TIMEOUT</a> = 64; </div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87"> 221</a></span>  constexpr <span class="keyword">static</span> uint16_t <a class="code" href="classB15F.html#a158d13bc84aed6430cdede1396384e06">WDT_TIMEOUT</a> = 15; </div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  constexpr <span class="keyword">static</span> uint8_t <a class="code" href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc">RECONNECT_TRIES</a> = 3; </div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  constexpr <span class="keyword">static</span> uint32_t <a class="code" href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87">BAUDRATE</a> = 57600; </div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  </div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="keywordtype">void</span> init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="classUSART.html">USART</a> usart;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="keyword">static</span> <a class="code" href="classB15F.html">B15F</a>* instance;</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="keyword">static</span> errorhandler_t errorhandler;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  </div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="comment">// REQUESTS</span></div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  constexpr <span class="keyword">static</span> uint8_t RQ_DISC = 0;</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  constexpr <span class="keyword">static</span> uint8_t RQ_TEST = 1;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  constexpr <span class="keyword">static</span> uint8_t RQ_INFO = 2;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  constexpr <span class="keyword">static</span> uint8_t RQ_INT = 3;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  constexpr <span class="keyword">static</span> uint8_t RQ_ST = 4;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  constexpr <span class="keyword">static</span> uint8_t RQ_BA0 = 5;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  constexpr <span class="keyword">static</span> uint8_t RQ_BA1 = 6;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  constexpr <span class="keyword">static</span> uint8_t RQ_BE0 = 7;</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  constexpr <span class="keyword">static</span> uint8_t RQ_BE1 = 8;</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  constexpr <span class="keyword">static</span> uint8_t RQ_DSW = 9;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  constexpr <span class="keyword">static</span> uint8_t RQ_AA0 = 10;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  constexpr <span class="keyword">static</span> uint8_t RQ_AA1 = 11;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  constexpr <span class="keyword">static</span> uint8_t RQ_ADC = 12;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  constexpr <span class="keyword">static</span> uint8_t RQ_ADC_DAC_STROKE = 13;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  constexpr <span class="keyword">static</span> uint8_t RQ_PWM_SET_FREQ = 14;</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  constexpr <span class="keyword">static</span> uint8_t RQ_PWM_SET_VALUE = 15;</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span> };</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  </div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="preprocessor">#endif // B15F_H</span></div></div><!-- fragment --></div><!-- contents --> -<div class="ttc" id="aclassB15F_html_a1a7ac52984ed7ecac008a3e4060eee3a"><div class="ttname"><a href="classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a">B15F::exec</a></div><div class="ttdeci">static std::string exec(std::string cmd)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00352">b15f.cpp:352</a></div></div> -<div class="ttc" id="aclassB15F_html_a77d1ecf24b406c9204665d3b09c36f1e"><div class="ttname"><a href="classB15F.html#a77d1ecf24b406c9204665d3b09c36f1e">B15F::MSG_FAIL</a></div><div class="ttdeci">constexpr static uint8_t MSG_FAIL</div><div class="ttdoc">Value to reject a received command.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00217">b15f.h:217</a></div></div> -<div class="ttc" id="aclassB15F_html_adcaac8ae8db3c28eccb499fbd720361f"><div class="ttname"><a href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">B15F::delay_us</a></div><div class="ttdeci">void delay_us(uint16_t us)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00338">b15f.cpp:338</a></div></div> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#ifndef B15F_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define B15F_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>  </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <bits/stdc++.h></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <fstream></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include <cstdlib></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include <chrono></span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <cstdint></span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include <fcntl.h></span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include <sys/ioctl.h></span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include <termios.h></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "usart.h"</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "driverexception.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "timeoutexception.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">typedef</span> std::function<void(std::exception&)> errorhandler_t;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  </div><div class="line"><a name="l00026"></a><span class="lineno"><a class="line" href="classB15F.html"> 26</a></span> <span class="keyword">class </span><a class="code" href="classB15F.html">B15F</a></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="comment">// privater Konstruktor</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <a class="code" href="classB15F.html">B15F</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> /*************************************</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> * Grundfunktionen des B15F Treibers *</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> *************************************/</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7">reconnect</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">void</span> <a class="code" href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5">discard</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#af01983594f2af98ab2b1e514aa036a5d">testConnection</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a7b8a0e2a9156f7dcb05d097f23666a78">testIntConv</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  std::vector<std::string> <a class="code" href="classB15F.html#a4f01677e73d6d172a2c1cae9427a591b">getBoardInfo</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordtype">void</span> <a class="code" href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">delay_ms</a>(uint16_t ms);</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  </div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">void</span> <a class="code" href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">delay_us</a>(uint16_t us);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keyword">static</span> <a class="code" href="classB15F.html">B15F</a>& <a class="code" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">getInstance</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keyword">static</span> std::string <a class="code" href="classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a">exec</a>(std::string cmd);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(std::string msg);</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  </div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">abort</a>(std::exception& ex);</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9">setAbortHandler</a>(errorhandler_t func);</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  </div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment"> /*************************************/</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  </div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment"> /*************************</span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment"> * Steuerbefehle für B15 *</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment"> *************************/</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  </div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1">activateSelfTestMode</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a13797edea1c50278988373acbd110064">digitalWrite0</a>(uint8_t);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  </div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#aa225e7fc813849634063e071ef25db1b">digitalWrite1</a>(uint8_t);</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  </div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  uint8_t <a class="code" href="classB15F.html#ae0df6d423deeb2fd610968bd1c72060e">digitalRead0</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  </div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  uint8_t <a class="code" href="classB15F.html#afc76b612dd4faeee0ac02a66b65af5f2">digitalRead1</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  uint8_t <a class="code" href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a">readDipSwitch</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  </div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3">analogWrite0</a>(uint16_t port);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  </div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a7f1becceac744f5cd2ad529748fd836f">analogWrite1</a>(uint16_t port);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  </div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  uint16_t <a class="code" href="classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627">analogRead</a>(uint8_t channel);</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  </div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordtype">void</span> <a class="code" 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);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  </div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  uint8_t <a class="code" href="classB15F.html#ac6f6532bb9550a0632c28b98c157d0a1">pwmSetFrequency</a>(uint32_t freq);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  </div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#af9aad3c0db5d5a8b37219d713e1977ee">pwmSetValue</a>(uint8_t value);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  </div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordtype">bool</span> <a class="code" href="classB15F.html#a2735424cf98bd0e2892b5a9b6eb24582">setRegister</a>(uint8_t adr, uint8_t val);</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  </div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  uint8_t <a class="code" href="classB15F.html#a43b477a9e2e5b1b2142958fa5e1a78b3">getRegister</a>(uint8_t adr);</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  </div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment"> /*************************/</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  </div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec"> 231</a></span>  </div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="classB15F.html#ab01299858f74a6cec598688562e0ad02"> 232</a></span>  <span class="comment">// CONSTANTS</span></div><div class="line"><a name="l00233"></a><span class="lineno"><a class="line" href="classB15F.html#a77d1ecf24b406c9204665d3b09c36f1e"> 233</a></span>  <span class="keyword">const</span> std::string <a class="code" href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">PRE</a> = <span class="stringliteral">"[B15F] "</span>; </div><div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classB15F.html#a040951746fbfd632e12bd1ad14578816"> 234</a></span>  constexpr <span class="keyword">static</span> uint8_t <a class="code" href="classB15F.html#ab01299858f74a6cec598688562e0ad02">MSG_OK</a> = 0xFF; </div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="classB15F.html#a158d13bc84aed6430cdede1396384e06"> 235</a></span>  constexpr <span class="keyword">static</span> uint8_t <a class="code" href="classB15F.html#a77d1ecf24b406c9204665d3b09c36f1e">MSG_FAIL</a> = 0xFE; </div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc"> 236</a></span>  constexpr <span class="keyword">static</span> uint16_t <a class="code" href="classB15F.html#a040951746fbfd632e12bd1ad14578816">RECONNECT_TIMEOUT</a> = 64; </div><div class="line"><a name="l00237"></a><span class="lineno"><a class="line" href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87"> 237</a></span>  constexpr <span class="keyword">static</span> uint16_t <a class="code" href="classB15F.html#a158d13bc84aed6430cdede1396384e06">WDT_TIMEOUT</a> = 15; </div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  constexpr <span class="keyword">static</span> uint8_t <a class="code" href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc">RECONNECT_TRIES</a> = 3; </div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  constexpr <span class="keyword">static</span> uint32_t <a class="code" href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87">BAUDRATE</a> = 57600; </div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  </div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordtype">void</span> init(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  </div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <a class="code" href="classUSART.html">USART</a> usart;</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keyword">static</span> <a class="code" href="classB15F.html">B15F</a>* instance;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="keyword">static</span> errorhandler_t errorhandler;</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  </div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">// REQUESTS</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  constexpr <span class="keyword">static</span> uint8_t RQ_DISC = 0;</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  constexpr <span class="keyword">static</span> uint8_t RQ_TEST = 1;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  constexpr <span class="keyword">static</span> uint8_t RQ_INFO = 2;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  constexpr <span class="keyword">static</span> uint8_t RQ_INT = 3;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  constexpr <span class="keyword">static</span> uint8_t RQ_ST = 4;</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  constexpr <span class="keyword">static</span> uint8_t RQ_BA0 = 5;</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  constexpr <span class="keyword">static</span> uint8_t RQ_BA1 = 6;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  constexpr <span class="keyword">static</span> uint8_t RQ_BE0 = 7;</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  constexpr <span class="keyword">static</span> uint8_t RQ_BE1 = 8;</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  constexpr <span class="keyword">static</span> uint8_t RQ_DSW = 9;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  constexpr <span class="keyword">static</span> uint8_t RQ_AA0 = 10;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  constexpr <span class="keyword">static</span> uint8_t RQ_AA1 = 11;</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  constexpr <span class="keyword">static</span> uint8_t RQ_ADC = 12;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  constexpr <span class="keyword">static</span> uint8_t RQ_ADC_DAC_STROKE = 13;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  constexpr <span class="keyword">static</span> uint8_t RQ_PWM_SET_FREQ = 14;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  constexpr <span class="keyword">static</span> uint8_t RQ_PWM_SET_VALUE = 15;</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  constexpr <span class="keyword">static</span> uint8_t RQ_SET_REG = 16;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  constexpr <span class="keyword">static</span> uint8_t RQ_GET_REG = 17;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> };</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  </div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span> <span class="preprocessor">#endif // B15F_H</span></div></div><!-- fragment --></div><!-- contents --> +<div class="ttc" id="aclassB15F_html_a1a7ac52984ed7ecac008a3e4060eee3a"><div class="ttname"><a href="classB15F.html#a1a7ac52984ed7ecac008a3e4060eee3a">B15F::exec</a></div><div class="ttdeci">static std::string exec(std::string cmd)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00392">b15f.cpp:392</a></div></div> +<div class="ttc" id="aclassB15F_html_a77d1ecf24b406c9204665d3b09c36f1e"><div class="ttname"><a href="classB15F.html#a77d1ecf24b406c9204665d3b09c36f1e">B15F::MSG_FAIL</a></div><div class="ttdeci">constexpr static uint8_t MSG_FAIL</div><div class="ttdoc">Value to reject a received command.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00233">b15f.h:233</a></div></div> +<div class="ttc" id="aclassB15F_html_a43b477a9e2e5b1b2142958fa5e1a78b3"><div class="ttname"><a href="classB15F.html#a43b477a9e2e5b1b2142958fa5e1a78b3">B15F::getRegister</a></div><div class="ttdeci">uint8_t getRegister(uint8_t adr)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00353">b15f.cpp:353</a></div></div> +<div class="ttc" id="aclassB15F_html_adcaac8ae8db3c28eccb499fbd720361f"><div class="ttname"><a href="classB15F.html#adcaac8ae8db3c28eccb499fbd720361f">B15F::delay_us</a></div><div class="ttdeci">void delay_us(uint16_t us)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00378">b15f.cpp:378</a></div></div> <div class="ttc" id="aclassB15F_html_ae0df6d423deeb2fd610968bd1c72060e"><div class="ttname"><a href="classB15F.html#ae0df6d423deeb2fd610968bd1c72060e">B15F::digitalRead0</a></div><div class="ttdeci">uint8_t digitalRead0(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00173">b15f.cpp:173</a></div></div> <div class="ttc" id="aclassB15F_html_ac6f6532bb9550a0632c28b98c157d0a1"><div class="ttname"><a href="classB15F.html#ac6f6532bb9550a0632c28b98c157d0a1">B15F::pwmSetFrequency</a></div><div class="ttdeci">uint8_t pwmSetFrequency(uint32_t freq)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00292">b15f.cpp:292</a></div></div> <div class="ttc" id="aclassB15F_html_ab82a324426c3063318c6cafb3089ae02"><div class="ttname"><a href="classB15F.html#ab82a324426c3063318c6cafb3089ae02">B15F::analogSequence</a></div><div class="ttdeci">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)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00243">b15f.cpp:243</a></div></div> <div class="ttc" id="aclassB15F_html_af01983594f2af98ab2b1e514aa036a5d"><div class="ttname"><a href="classB15F.html#af01983594f2af98ab2b1e514aa036a5d">B15F::testConnection</a></div><div class="ttdeci">bool testConnection(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00090">b15f.cpp:90</a></div></div> <div class="ttc" id="aclassB15F_html_a6f858f21ea81d491b5031b3644a2239a"><div class="ttname"><a href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a">B15F::readDipSwitch</a></div><div class="ttdeci">uint8_t readDipSwitch(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00191">b15f.cpp:191</a></div></div> -<div class="ttc" id="aclassB15F_html_aaffce20afb9f06bc4b7556c70ce76416"><div class="ttname"><a href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">B15F::delay_ms</a></div><div class="ttdeci">void delay_ms(uint16_t ms)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00333">b15f.cpp:333</a></div></div> -<div class="ttc" id="aclassB15F_html_a8b4533d232c55ef2aa967e39e2d23380"><div class="ttname"><a href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a></div><div class="ttdeci">static B15F & getInstance(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00343">b15f.cpp:343</a></div></div> +<div class="ttc" id="aclassB15F_html_aaffce20afb9f06bc4b7556c70ce76416"><div class="ttname"><a href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">B15F::delay_ms</a></div><div class="ttdeci">void delay_ms(uint16_t ms)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00373">b15f.cpp:373</a></div></div> +<div class="ttc" id="aclassB15F_html_a2735424cf98bd0e2892b5a9b6eb24582"><div class="ttname"><a href="classB15F.html#a2735424cf98bd0e2892b5a9b6eb24582">B15F::setRegister</a></div><div class="ttdeci">bool setRegister(uint8_t adr, uint8_t val)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00333">b15f.cpp:333</a></div></div> +<div class="ttc" id="aclassB15F_html_a8b4533d232c55ef2aa967e39e2d23380"><div class="ttname"><a href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a></div><div class="ttdeci">static B15F & getInstance(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00383">b15f.cpp:383</a></div></div> <div class="ttc" id="aclassB15F_html"><div class="ttname"><a href="classB15F.html">B15F</a></div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00026">b15f.h:26</a></div></div> -<div class="ttc" id="aclassB15F_html_a3f09a418f9e3be5d1d750e4515c96f1e"><div class="ttname"><a href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">B15F::abort</a></div><div class="ttdeci">static void abort(std::string msg)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00368">b15f.cpp:368</a></div></div> +<div class="ttc" id="aclassB15F_html_a3f09a418f9e3be5d1d750e4515c96f1e"><div class="ttname"><a href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">B15F::abort</a></div><div class="ttdeci">static void abort(std::string msg)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00408">b15f.cpp:408</a></div></div> <div class="ttc" id="aclassUSART_html"><div class="ttname"><a href="classUSART.html">USART</a></div><div class="ttdef"><b>Definition:</b> <a href="usart_8h_source.html#l00018">usart.h:18</a></div></div> <div class="ttc" id="aclassB15F_html_ae0bd1f69751e2dc3c462db9213fc4627"><div class="ttname"><a href="classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627">B15F::analogRead</a></div><div class="ttdeci">uint16_t analogRead(uint8_t channel)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00220">b15f.cpp:220</a></div></div> <div class="ttc" id="aclassB15F_html_a13797edea1c50278988373acbd110064"><div class="ttname"><a href="classB15F.html#a13797edea1c50278988373acbd110064">B15F::digitalWrite0</a></div><div class="ttdeci">bool digitalWrite0(uint8_t)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00153">b15f.cpp:153</a></div></div> -<div class="ttc" id="aclassB15F_html_a3b0fc1f85954b2d9c145af4a3af5b1ec"><div class="ttname"><a href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">B15F::PRE</a></div><div class="ttdeci">const std::string PRE</div><div class="ttdoc">B15F stdout prefix.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00215">b15f.h:215</a></div></div> +<div class="ttc" id="aclassB15F_html_a3b0fc1f85954b2d9c145af4a3af5b1ec"><div class="ttname"><a href="classB15F.html#a3b0fc1f85954b2d9c145af4a3af5b1ec">B15F::PRE</a></div><div class="ttdeci">const std::string PRE</div><div class="ttdoc">B15F stdout prefix.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00231">b15f.h:231</a></div></div> <div class="ttc" id="aclassB15F_html_ad9bf80ee2485fb5aac9926c6ef0731f1"><div class="ttname"><a href="classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1">B15F::activateSelfTestMode</a></div><div class="ttdeci">bool activateSelfTestMode(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00145">b15f.cpp:145</a></div></div> <div class="ttc" id="aclassB15F_html_a4f01677e73d6d172a2c1cae9427a591b"><div class="ttname"><a href="classB15F.html#a4f01677e73d6d172a2c1cae9427a591b">B15F::getBoardInfo</a></div><div class="ttdeci">std::vector< std::string > getBoardInfo(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00118">b15f.cpp:118</a></div></div> -<div class="ttc" id="aclassB15F_html_a040951746fbfd632e12bd1ad14578816"><div class="ttname"><a href="classB15F.html#a040951746fbfd632e12bd1ad14578816">B15F::RECONNECT_TIMEOUT</a></div><div class="ttdeci">constexpr static uint16_t RECONNECT_TIMEOUT</div><div class="ttdoc">Time in ms after which a reconnect attempt aborts.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00218">b15f.h:218</a></div></div> +<div class="ttc" id="aclassB15F_html_a040951746fbfd632e12bd1ad14578816"><div class="ttname"><a href="classB15F.html#a040951746fbfd632e12bd1ad14578816">B15F::RECONNECT_TIMEOUT</a></div><div class="ttdeci">constexpr static uint16_t RECONNECT_TIMEOUT</div><div class="ttdoc">Time in ms after which a reconnect attempt aborts.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00234">b15f.h:234</a></div></div> <div class="ttc" id="aclassB15F_html_a7f1becceac744f5cd2ad529748fd836f"><div class="ttname"><a href="classB15F.html#a7f1becceac744f5cd2ad529748fd836f">B15F::analogWrite1</a></div><div class="ttdeci">bool analogWrite1(uint16_t port)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00210">b15f.cpp:210</a></div></div> <div class="ttc" id="aclassB15F_html_aa225e7fc813849634063e071ef25db1b"><div class="ttname"><a href="classB15F.html#aa225e7fc813849634063e071ef25db1b">B15F::digitalWrite1</a></div><div class="ttdeci">bool digitalWrite1(uint8_t)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00163">b15f.cpp:163</a></div></div> <div class="ttc" id="aclassB15F_html_af9aad3c0db5d5a8b37219d713e1977ee"><div class="ttname"><a href="classB15F.html#af9aad3c0db5d5a8b37219d713e1977ee">B15F::pwmSetValue</a></div><div class="ttdeci">bool pwmSetValue(uint8_t value)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00314">b15f.cpp:314</a></div></div> <div class="ttc" id="aclassB15F_html_ae4740cd473f40a1a4121dfa66b25e1d5"><div class="ttname"><a href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5">B15F::discard</a></div><div class="ttdeci">void discard(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00072">b15f.cpp:72</a></div></div> -<div class="ttc" id="aclassB15F_html_ab01299858f74a6cec598688562e0ad02"><div class="ttname"><a href="classB15F.html#ab01299858f74a6cec598688562e0ad02">B15F::MSG_OK</a></div><div class="ttdeci">constexpr static uint8_t MSG_OK</div><div class="ttdoc">Value to acknowledge a received command.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00216">b15f.h:216</a></div></div> +<div class="ttc" id="aclassB15F_html_ab01299858f74a6cec598688562e0ad02"><div class="ttname"><a href="classB15F.html#ab01299858f74a6cec598688562e0ad02">B15F::MSG_OK</a></div><div class="ttdeci">constexpr static uint8_t MSG_OK</div><div class="ttdoc">Value to acknowledge a received command.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00232">b15f.h:232</a></div></div> <div class="ttc" id="aclassB15F_html_afc76b612dd4faeee0ac02a66b65af5f2"><div class="ttname"><a href="classB15F.html#afc76b612dd4faeee0ac02a66b65af5f2">B15F::digitalRead1</a></div><div class="ttdeci">uint8_t digitalRead1(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00182">b15f.cpp:182</a></div></div> -<div class="ttc" id="aclassB15F_html_a158d13bc84aed6430cdede1396384e06"><div class="ttname"><a href="classB15F.html#a158d13bc84aed6430cdede1396384e06">B15F::WDT_TIMEOUT</a></div><div class="ttdeci">constexpr static uint16_t WDT_TIMEOUT</div><div class="ttdoc">Time in ms after which the watch dog timer resets the MCU.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00219">b15f.h:219</a></div></div> +<div class="ttc" id="aclassB15F_html_a158d13bc84aed6430cdede1396384e06"><div class="ttname"><a href="classB15F.html#a158d13bc84aed6430cdede1396384e06">B15F::WDT_TIMEOUT</a></div><div class="ttdeci">constexpr static uint16_t WDT_TIMEOUT</div><div class="ttdoc">Time in ms after which the watch dog timer resets the MCU.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00235">b15f.h:235</a></div></div> <div class="ttc" id="aclassB15F_html_a52557b375443c180a044e7d4e80a1ae7"><div class="ttname"><a href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7">B15F::reconnect</a></div><div class="ttdeci">void reconnect(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00057">b15f.cpp:57</a></div></div> -<div class="ttc" id="aclassB15F_html_a7d548d6861cfc69753161bf9cda14f87"><div class="ttname"><a href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87">B15F::BAUDRATE</a></div><div class="ttdeci">constexpr static uint32_t BAUDRATE</div><div class="ttdoc">USART baudrate for communication with the MCU.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00221">b15f.h:221</a></div></div> -<div class="ttc" id="aclassB15F_html_a55b0cd1ea582bda53d6979442640f8e9"><div class="ttname"><a href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9">B15F::setAbortHandler</a></div><div class="ttdeci">static void setAbortHandler(errorhandler_t func)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00385">b15f.cpp:385</a></div></div> +<div class="ttc" id="aclassB15F_html_a7d548d6861cfc69753161bf9cda14f87"><div class="ttname"><a href="classB15F.html#a7d548d6861cfc69753161bf9cda14f87">B15F::BAUDRATE</a></div><div class="ttdeci">constexpr static uint32_t BAUDRATE</div><div class="ttdoc">USART baudrate for communication with the MCU.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00237">b15f.h:237</a></div></div> +<div class="ttc" id="aclassB15F_html_a55b0cd1ea582bda53d6979442640f8e9"><div class="ttname"><a href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9">B15F::setAbortHandler</a></div><div class="ttdeci">static void setAbortHandler(errorhandler_t func)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00425">b15f.cpp:425</a></div></div> <div class="ttc" id="aclassB15F_html_afc55fd590c7fa5c942d100cb60c4b0d3"><div class="ttname"><a href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3">B15F::analogWrite0</a></div><div class="ttdeci">bool analogWrite0(uint16_t port)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00200">b15f.cpp:200</a></div></div> -<div class="ttc" id="aclassB15F_html_a6c4895bdbcd71ff6743becf97985c2dc"><div class="ttname"><a href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc">B15F::RECONNECT_TRIES</a></div><div class="ttdeci">constexpr static uint8_t RECONNECT_TRIES</div><div class="ttdoc">Maximum count of reconnect attempts after which the driver stops.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00220">b15f.h:220</a></div></div> +<div class="ttc" id="aclassB15F_html_a6c4895bdbcd71ff6743becf97985c2dc"><div class="ttname"><a href="classB15F.html#a6c4895bdbcd71ff6743becf97985c2dc">B15F::RECONNECT_TRIES</a></div><div class="ttdeci">constexpr static uint8_t RECONNECT_TRIES</div><div class="ttdoc">Maximum count of reconnect attempts after which the driver stops.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00236">b15f.h:236</a></div></div> <div class="ttc" id="aclassB15F_html_a7b8a0e2a9156f7dcb05d097f23666a78"><div class="ttname"><a href="classB15F.html#a7b8a0e2a9156f7dcb05d097f23666a78">B15F::testIntConv</a></div><div class="ttdeci">bool testIntConv(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00105">b15f.cpp:105</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classB15F-members.html b/docs/html/classB15F-members.html index 119895f..e12f994 100644 --- a/docs/html/classB15F-members.html +++ b/docs/html/classB15F-members.html @@ -87,23 +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 class="even"><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><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 class="even"><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><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 class="even"><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><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><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 class="even"><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><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#a43b477a9e2e5b1b2142958fa5e1a78b3">getRegister</a>(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#a2735424cf98bd0e2892b5a9b6eb24582">setRegister</a>(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 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 on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classB15F.html b/docs/html/classB15F.html index f22425d..68e4f0d 100644 --- a/docs/html/classB15F.html +++ b/docs/html/classB15F.html @@ -115,6 +115,10 @@ Public Member Functions</h2></td></tr> <tr class="separator:ac6f6532bb9550a0632c28b98c157d0a1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af9aad3c0db5d5a8b37219d713e1977ee"><td class="memItemLeft" align="right" valign="top">bool </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"> </td></tr> +<tr class="memitem:a2735424cf98bd0e2892b5a9b6eb24582"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#a2735424cf98bd0e2892b5a9b6eb24582">setRegister</a> (uint8_t adr, uint8_t val)</td></tr> +<tr class="separator:a2735424cf98bd0e2892b5a9b6eb24582"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a43b477a9e2e5b1b2142958fa5e1a78b3"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="classB15F.html#a43b477a9e2e5b1b2142958fa5e1a78b3">getRegister</a> (uint8_t adr)</td></tr> +<tr class="separator:a43b477a9e2e5b1b2142958fa5e1a78b3"><td class="memSeparator" colspan="2"> </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> @@ -198,7 +202,7 @@ constexpr static uint32_t </td><td class="memItemRight" valign="bottom"><a </dd> </dl> -<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00373">373</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#l00413">413</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p> </div> </div> @@ -232,7 +236,7 @@ constexpr static uint32_t </td><td class="memItemRight" valign="bottom"><a </dd> </dl> -<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00368">368</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#l00408">408</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p> </div> </div> @@ -472,7 +476,7 @@ constexpr static uint32_t </td><td class="memItemRight" valign="bottom"><a </dd> </dl> -<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00333">333</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#l00373">373</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p> </div> </div> @@ -498,7 +502,7 @@ constexpr static uint32_t </td><td class="memItemRight" valign="bottom"><a </dd> </dl> -<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00338">338</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#l00378">378</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p> </div> </div> @@ -676,7 +680,7 @@ constexpr static uint32_t </td><td class="memItemRight" valign="bottom"><a </dd> </dl> -<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00352">352</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#l00392">392</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p> </div> </div> @@ -736,7 +740,39 @@ constexpr static uint32_t </td><td class="memItemRight" valign="bottom"><a </dd> </dl> -<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00343">343</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#l00383">383</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p> + +</div> +</div> +<a id="a43b477a9e2e5b1b2142958fa5e1a78b3"></a> +<h2 class="memtitle"><span class="permalink"><a href="#a43b477a9e2e5b1b2142958fa5e1a78b3">◆ </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">uint8_t </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#l00353">353</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p> </div> </div> @@ -888,7 +924,50 @@ constexpr static uint32_t </td><td class="memItemRight" valign="bottom"><a </dd> </dl> -<p class="definition">Definition at line <a class="el" href="b15f_8cpp_source.html#l00385">385</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#l00425">425</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p> + +</div> +</div> +<a id="a2735424cf98bd0e2892b5a9b6eb24582"></a> +<h2 class="memtitle"><span class="permalink"><a href="#a2735424cf98bd0e2892b5a9b6eb24582">◆ </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">uint8_t </td> + <td class="paramname"><em>adr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>val</em> </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#l00333">333</a> of file <a class="el" href="b15f_8cpp_source.html">b15f.cpp</a>.</p> </div> </div> @@ -951,7 +1030,7 @@ constexpr static uint32_t </td><td class="memItemRight" valign="bottom"><a </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classDot-members.html b/docs/html/classDot-members.html index fafd43d..eecb9f4 100644 --- a/docs/html/classDot-members.html +++ b/docs/html/classDot-members.html @@ -76,7 +76,7 @@ $(function() { </table></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classDot.html b/docs/html/classDot.html index b05a9bc..4a766ca 100644 --- a/docs/html/classDot.html +++ b/docs/html/classDot.html @@ -196,7 +196,7 @@ Public Member Functions</h2></td></tr> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classDriverException-members.html b/docs/html/classDriverException-members.html index 5f85cd6..a2ee492 100644 --- a/docs/html/classDriverException-members.html +++ b/docs/html/classDriverException-members.html @@ -77,7 +77,7 @@ $(function() { </table></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classDriverException.html b/docs/html/classDriverException.html index 95ed51e..ae8c97a 100644 --- a/docs/html/classDriverException.html +++ b/docs/html/classDriverException.html @@ -109,7 +109,7 @@ std::string </td><td class="memItemRight" valign="bottom"><b>msg_</b></td>< </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classPlottyFile-members.html b/docs/html/classPlottyFile-members.html index b38eece..131dda0 100644 --- a/docs/html/classPlottyFile-members.html +++ b/docs/html/classPlottyFile-members.html @@ -100,7 +100,7 @@ $(function() { </table></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classPlottyFile.html b/docs/html/classPlottyFile.html index de9db48..881cffc 100644 --- a/docs/html/classPlottyFile.html +++ b/docs/html/classPlottyFile.html @@ -811,7 +811,7 @@ Public Member Functions</h2></td></tr> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classTimeoutException-members.html b/docs/html/classTimeoutException-members.html index 8c3285a..2519544 100644 --- a/docs/html/classTimeoutException-members.html +++ b/docs/html/classTimeoutException-members.html @@ -78,7 +78,7 @@ $(function() { </table></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classTimeoutException.html b/docs/html/classTimeoutException.html index 6aa40b1..ce3c55b 100644 --- a/docs/html/classTimeoutException.html +++ b/docs/html/classTimeoutException.html @@ -112,7 +112,7 @@ int </td><td class="memItemRight" valign="bottom"><b>m_timeout</b></td></tr </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classUSART-members.html b/docs/html/classUSART-members.html index 8d603c6..aab4287 100644 --- a/docs/html/classUSART-members.html +++ b/docs/html/classUSART-members.html @@ -94,7 +94,7 @@ $(function() { </table></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classUSART.html b/docs/html/classUSART.html index aa16cc1..24d0a7e 100644 --- a/docs/html/classUSART.html +++ b/docs/html/classUSART.html @@ -531,7 +531,7 @@ constexpr static uint8_t </td><td class="memItemRight" valign="bottom"><b>B </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classUSARTException-members.html b/docs/html/classUSARTException-members.html index fb0f7cc..131e02f 100644 --- a/docs/html/classUSARTException-members.html +++ b/docs/html/classUSARTException-members.html @@ -77,7 +77,7 @@ $(function() { </table></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classUSARTException.html b/docs/html/classUSARTException.html index 96d050d..d85d089 100644 --- a/docs/html/classUSARTException.html +++ b/docs/html/classUSARTException.html @@ -109,7 +109,7 @@ std::string </td><td class="memItemRight" valign="bottom"><b>msg</b></td></ </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classView-members.html b/docs/html/classView-members.html index 0816e70..b4be838 100644 --- a/docs/html/classView-members.html +++ b/docs/html/classView-members.html @@ -89,7 +89,7 @@ $(function() { </table></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classView.html b/docs/html/classView.html index ba64d4a..d63c251 100644 --- a/docs/html/classView.html +++ b/docs/html/classView.html @@ -157,7 +157,7 @@ constexpr static int </td><td class="memItemRight" valign="bottom"><b>KEY_E </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classViewInfo-members.html b/docs/html/classViewInfo-members.html index 11fecf3..744892f 100644 --- a/docs/html/classViewInfo-members.html +++ b/docs/html/classViewInfo-members.html @@ -99,7 +99,7 @@ $(function() { </table></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classViewInfo.html b/docs/html/classViewInfo.html index 090a6da..ee1b6e0 100644 --- a/docs/html/classViewInfo.html +++ b/docs/html/classViewInfo.html @@ -185,7 +185,7 @@ static std::vector< std::string > </td><td class="memItemRight" valig </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classViewMonitor-members.html b/docs/html/classViewMonitor-members.html index f8b0248..017648b 100644 --- a/docs/html/classViewMonitor-members.html +++ b/docs/html/classViewMonitor-members.html @@ -103,7 +103,7 @@ $(function() { </table></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classViewMonitor.html b/docs/html/classViewMonitor.html index 7566433..ea10ac1 100644 --- a/docs/html/classViewMonitor.html +++ b/docs/html/classViewMonitor.html @@ -197,7 +197,7 @@ constexpr static int </td><td class="memItemRight" valign="bottom"><b>KEY_E </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classViewPromt-members.html b/docs/html/classViewPromt-members.html index 0620da4..da76ef6 100644 --- a/docs/html/classViewPromt-members.html +++ b/docs/html/classViewPromt-members.html @@ -105,7 +105,7 @@ $(function() { </table></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classViewPromt.html b/docs/html/classViewPromt.html index e4f148d..da8106e 100644 --- a/docs/html/classViewPromt.html +++ b/docs/html/classViewPromt.html @@ -205,7 +205,7 @@ static std::vector< std::string > </td><td class="memItemRight" valig </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classViewSelection-members.html b/docs/html/classViewSelection-members.html index 7eb9d49..ea0d8c3 100644 --- a/docs/html/classViewSelection-members.html +++ b/docs/html/classViewSelection-members.html @@ -94,7 +94,7 @@ $(function() { </table></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classViewSelection.html b/docs/html/classViewSelection.html index 3983a76..59de0b0 100644 --- a/docs/html/classViewSelection.html +++ b/docs/html/classViewSelection.html @@ -172,7 +172,7 @@ static std::vector< std::string > </td><td class="memItemRight" valig </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/classes.html b/docs/html/classes.html index 54bd780..18d3b60 100644 --- a/docs/html/classes.html +++ b/docs/html/classes.html @@ -105,7 +105,7 @@ $(function() { </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/cli_8cpp_source.html b/docs/html/cli_8cpp_source.html index 941591f..dcdc53f 100644 --- a/docs/html/cli_8cpp_source.html +++ b/docs/html/cli_8cpp_source.html @@ -68,11 +68,11 @@ $(function() { <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#define B15F_CLI_DEBUG</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="preprocessor">#include <stdio.h></span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <ncurses.h></span> <span class="comment">// sudo apt-get install libncurses5-dev</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include <string></span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include <signal.h></span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include <sys/ioctl.h></span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#include <unistd.h></span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="preprocessor">#include <signal.h></span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include <future></span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#include <thread></span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include <chrono></span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "drv/b15f.h"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "ui/ui.h"</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "ui/view_selection.h"</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "ui/view_info.h"</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "ui/view_monitor.h"</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "ui/view_promt.h"</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">volatile</span> <span class="keywordtype">int</span> win_changed_cooldown = 0;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">volatile</span> <span class="keywordtype">bool</span> t_refresh_active = <span class="keyword">false</span>;</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keywordtype">void</span> signal_handler(<span class="keywordtype">int</span> signal)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">if</span>(signal == SIGWINCH)</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  {</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  win_changed_cooldown = 10; <span class="comment">// 100ms</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">if</span> (!t_refresh_active)</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  {</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span>(t_refresh.joinable())</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  t_refresh.join();</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  t_refresh_active = <span class="keyword">true</span>;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  t_refresh = std::thread([]()</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">while</span>(win_changed_cooldown--)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  std::this_thread::sleep_for(std::chrono::milliseconds(10));</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  t_refresh_active = <span class="keyword">false</span>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  </div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span>(win_stack.size())</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  win_stack.back()->repaint();</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  });</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  }</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(signal == SIGINT)</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  cleanup();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  std::cout << <span class="stringliteral">"SIGINT - Abbruch."</span> << std::endl;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  exit(EXIT_FAILURE);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keywordtype">void</span> abort_handler(std::exception& ex)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <a class="code" href="classViewInfo.html">ViewInfo</a>* view = <span class="keyword">new</span> <a class="code" href="classViewInfo.html">ViewInfo</a>();</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  view->setTitle(<span class="stringliteral">"Fehler"</span>);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  std::string msg(ex.what());</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  msg += <span class="stringliteral">"\n\nBeende in 5 Sekunden."</span>;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  view->setText(msg.c_str());</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  view->setLabelClose(<span class="stringliteral">""</span>);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  view->repaint();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  </div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  std::this_thread::sleep_for(std::chrono::milliseconds(5000));</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  cleanup();</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  std::cerr << std::endl << <span class="stringliteral">"*** EXCEPTION ***"</span> << std::endl << ex.what() << std::endl;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  exit(EXIT_FAILURE);</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="keywordtype">void</span> init()</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="comment">// init b15 driver</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <a class="code" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a>();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="preprocessor">#ifndef B15F_CLI_DEBUG</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  std::cout << std::endl << <span class="stringliteral">"Starte in 3s ..."</span> << std::endl;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  sleep(3);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor">#endif</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9">B15F::setAbortHandler</a>(&abort_handler);</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  </div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="comment">// init all ncurses stuff</span></div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  initscr();</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  start_color();</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  curs_set(0); <span class="comment">// 0: invisible, 1: normal, 2: very visible</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  clear();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  noecho();</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  cbreak(); <span class="comment">// Line buffering disabled. pass on everything</span></div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  mousemask(ALL_MOUSE_EVENTS, NULL);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="comment">// connect signals to handler</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  signal(SIGWINCH, signal_handler);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  signal(SIGINT, signal_handler);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  </div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="comment">// set view context</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  View::setWinContext(newwin(25, 85, 0, 0));</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> }</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  </div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="keywordtype">int</span> main()</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> {</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  init();</div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  </div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordtype">int</span> exit_code = EXIT_SUCCESS;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  </div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  show_main(0);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  </div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  cleanup();</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  </div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="keywordflow">return</span> exit_code;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span> }</div></div><!-- fragment --></div><!-- contents --> <div class="ttc" id="aclassViewInfo_html"><div class="ttname"><a href="classViewInfo.html">ViewInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="view__info_8h_source.html#l00008">view_info.h:8</a></div></div> -<div class="ttc" id="aclassB15F_html_a8b4533d232c55ef2aa967e39e2d23380"><div class="ttname"><a href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a></div><div class="ttdeci">static B15F & getInstance(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00343">b15f.cpp:343</a></div></div> -<div class="ttc" id="aclassB15F_html_a55b0cd1ea582bda53d6979442640f8e9"><div class="ttname"><a href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9">B15F::setAbortHandler</a></div><div class="ttdeci">static void setAbortHandler(errorhandler_t func)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00385">b15f.cpp:385</a></div></div> +<div class="ttc" id="aclassB15F_html_a8b4533d232c55ef2aa967e39e2d23380"><div class="ttname"><a href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a></div><div class="ttdeci">static B15F & getInstance(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00383">b15f.cpp:383</a></div></div> +<div class="ttc" id="aclassB15F_html_a55b0cd1ea582bda53d6979442640f8e9"><div class="ttname"><a href="classB15F.html#a55b0cd1ea582bda53d6979442640f8e9">B15F::setAbortHandler</a></div><div class="ttdeci">static void setAbortHandler(errorhandler_t func)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00425">b15f.cpp:425</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/dir_1788f8309b1a812dcb800a185471cf6c.html b/docs/html/dir_1788f8309b1a812dcb800a185471cf6c.html index bd969af..e501dfc 100644 --- a/docs/html/dir_1788f8309b1a812dcb800a185471cf6c.html +++ b/docs/html/dir_1788f8309b1a812dcb800a185471cf6c.html @@ -73,7 +73,7 @@ $(function() { </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/dir_587c94d866dbb2f408f78cf41f9b2f8d.html b/docs/html/dir_587c94d866dbb2f408f78cf41f9b2f8d.html index 9d8eb0a..021c216 100644 --- a/docs/html/dir_587c94d866dbb2f408f78cf41f9b2f8d.html +++ b/docs/html/dir_587c94d866dbb2f408f78cf41f9b2f8d.html @@ -73,7 +73,7 @@ $(function() { </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/dot_8cpp_source.html b/docs/html/dot_8cpp_source.html index dd83450..6c6b61a 100644 --- a/docs/html/dot_8cpp_source.html +++ b/docs/html/dot_8cpp_source.html @@ -77,7 +77,7 @@ $(function() { <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 on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/dot_8h_source.html b/docs/html/dot_8h_source.html index 9c0bd19..773473b 100644 --- a/docs/html/dot_8h_source.html +++ b/docs/html/dot_8h_source.html @@ -78,7 +78,7 @@ $(function() { <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 on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/driverexception_8h_source.html b/docs/html/driverexception_8h_source.html index 015c2ad..b83ab80 100644 --- a/docs/html/driverexception_8h_source.html +++ b/docs/html/driverexception_8h_source.html @@ -74,7 +74,7 @@ $(function() { <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 on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/files.html b/docs/html/files.html index e880b89..4d38804 100644 --- a/docs/html/files.html +++ b/docs/html/files.html @@ -99,7 +99,7 @@ $(function() { </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/functions.html b/docs/html/functions.html index 26bae8d..ccd1c21 100644 --- a/docs/html/functions.html +++ b/docs/html/functions.html @@ -191,6 +191,9 @@ $(function() { <li>getRefY() : <a class="el" href="classPlottyFile.html#ae6650c61a3b1a610ce716253418bd7f2">PlottyFile</a> </li> +<li>getRegister() +: <a class="el" href="classB15F.html#a43b477a9e2e5b1b2142958fa5e1a78b3">B15F</a> +</li> <li>getTimeout() : <a class="el" href="classUSART.html#a19cf777956a038878fc2d2b58c3d2b41">USART</a> </li> @@ -301,6 +304,9 @@ $(function() { <li>setRefY() : <a class="el" href="classPlottyFile.html#a3a371228ddcc007e97eebe7cc04dffc2">PlottyFile</a> </li> +<li>setRegister() +: <a class="el" href="classB15F.html#a2735424cf98bd0e2892b5a9b6eb24582">B15F</a> +</li> <li>setTimeout() : <a class="el" href="classUSART.html#ad7fe866cebe920784d2b17602824c7ff">USART</a> </li> @@ -349,7 +355,7 @@ $(function() { </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html index 1c2fd52..89acf80 100644 --- a/docs/html/functions_func.html +++ b/docs/html/functions_func.html @@ -184,6 +184,9 @@ $(function() { <li>getRefY() : <a class="el" href="classPlottyFile.html#ae6650c61a3b1a610ce716253418bd7f2">PlottyFile</a> </li> +<li>getRegister() +: <a class="el" href="classB15F.html#a43b477a9e2e5b1b2142958fa5e1a78b3">B15F</a> +</li> <li>getTimeout() : <a class="el" href="classUSART.html#a19cf777956a038878fc2d2b58c3d2b41">USART</a> </li> @@ -275,6 +278,9 @@ $(function() { <li>setRefY() : <a class="el" href="classPlottyFile.html#a3a371228ddcc007e97eebe7cc04dffc2">PlottyFile</a> </li> +<li>setRegister() +: <a class="el" href="classB15F.html#a2735424cf98bd0e2892b5a9b6eb24582">B15F</a> +</li> <li>setTimeout() : <a class="el" href="classUSART.html#ad7fe866cebe920784d2b17602824c7ff">USART</a> </li> @@ -320,7 +326,7 @@ $(function() { </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html index 3172ad7..a041bb7 100644 --- a/docs/html/functions_vars.html +++ b/docs/html/functions_vars.html @@ -88,7 +88,7 @@ $(function() { </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/hierarchy.html b/docs/html/hierarchy.html index bf24851..506d51b 100644 --- a/docs/html/hierarchy.html +++ b/docs/html/hierarchy.html @@ -86,7 +86,7 @@ $(function() { </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/index.html b/docs/html/index.html index 50426bf..63f9619 100644 --- a/docs/html/index.html +++ b/docs/html/index.html @@ -72,7 +72,7 @@ Dort befindet sich auch eine Übersicht der verfügbaren Befehle. </p> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/plottyfile_8cpp_source.html b/docs/html/plottyfile_8cpp_source.html index abd1e0b..1427215 100644 --- a/docs/html/plottyfile_8cpp_source.html +++ b/docs/html/plottyfile_8cpp_source.html @@ -101,7 +101,7 @@ $(function() { <div class="ttc" id="aclassPlottyFile_html_af952ac5e2c40896acaf6a86063874fe3"><div class="ttname"><a href="classPlottyFile.html#af952ac5e2c40896acaf6a86063874fe3">PlottyFile::getUnitX</a></div><div class="ttdeci">std::string getUnitX(void) const</div><div class="ttdef"><b>Definition:</b> <a href="plottyfile_8cpp_source.html#l00105">plottyfile.cpp:105</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/plottyfile_8h_source.html b/docs/html/plottyfile_8h_source.html index dd26e80..1021496 100644 --- a/docs/html/plottyfile_8h_source.html +++ b/docs/html/plottyfile_8h_source.html @@ -102,7 +102,7 @@ $(function() { <div class="ttc" id="aclassPlottyFile_html_af952ac5e2c40896acaf6a86063874fe3"><div class="ttname"><a href="classPlottyFile.html#af952ac5e2c40896acaf6a86063874fe3">PlottyFile::getUnitX</a></div><div class="ttdeci">std::string getUnitX(void) const</div><div class="ttdef"><b>Definition:</b> <a href="plottyfile_8cpp_source.html#l00105">plottyfile.cpp:105</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js index c269a53..9518d98 100644 --- a/docs/html/search/all_6.js +++ b/docs/html/search/all_6.js @@ -13,6 +13,7 @@ var searchData= ['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#a43b477a9e2e5b1b2142958fa5e1a78b3',1,'B15F']]], ['gettimeout',['getTimeout',['../classUSART.html#a19cf777956a038878fc2d2b58c3d2b41',1,'USART']]], ['getunitpara',['getUnitPara',['../classPlottyFile.html#abcda4139adf8c5ab8a93b13b84ac097c',1,'PlottyFile']]], ['getunitx',['getUnitX',['../classPlottyFile.html#af952ac5e2c40896acaf6a86063874fe3',1,'PlottyFile']]], diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js index 588c06f..552513c 100644 --- a/docs/html/search/all_b.js +++ b/docs/html/search/all_b.js @@ -11,6 +11,7 @@ var searchData= ['setquadrant',['setQuadrant',['../classPlottyFile.html#a1953ee0d9a87b7353c16139584e9c2ae',1,'PlottyFile']]], ['setrefx',['setRefX',['../classPlottyFile.html#a80c2c2e97a454566f9c1f2c51e1d7f3e',1,'PlottyFile']]], ['setrefy',['setRefY',['../classPlottyFile.html#a3a371228ddcc007e97eebe7cc04dffc2',1,'PlottyFile']]], + ['setregister',['setRegister',['../classB15F.html#a2735424cf98bd0e2892b5a9b6eb24582',1,'B15F']]], ['settimeout',['setTimeout',['../classUSART.html#ad7fe866cebe920784d2b17602824c7ff',1,'USART']]], ['setunitpara',['setUnitPara',['../classPlottyFile.html#abbac84109a1e0958a4ca5c270fac0986',1,'PlottyFile']]], ['setunitx',['setUnitX',['../classPlottyFile.html#ab8d35a841ca9c325fca671cf34e03527',1,'PlottyFile']]], diff --git a/docs/html/search/functions_5.js b/docs/html/search/functions_5.js index c269a53..9518d98 100644 --- a/docs/html/search/functions_5.js +++ b/docs/html/search/functions_5.js @@ -13,6 +13,7 @@ var searchData= ['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#a43b477a9e2e5b1b2142958fa5e1a78b3',1,'B15F']]], ['gettimeout',['getTimeout',['../classUSART.html#a19cf777956a038878fc2d2b58c3d2b41',1,'USART']]], ['getunitpara',['getUnitPara',['../classPlottyFile.html#abcda4139adf8c5ab8a93b13b84ac097c',1,'PlottyFile']]], ['getunitx',['getUnitX',['../classPlottyFile.html#af952ac5e2c40896acaf6a86063874fe3',1,'PlottyFile']]], diff --git a/docs/html/search/functions_9.js b/docs/html/search/functions_9.js index 588c06f..552513c 100644 --- a/docs/html/search/functions_9.js +++ b/docs/html/search/functions_9.js @@ -11,6 +11,7 @@ var searchData= ['setquadrant',['setQuadrant',['../classPlottyFile.html#a1953ee0d9a87b7353c16139584e9c2ae',1,'PlottyFile']]], ['setrefx',['setRefX',['../classPlottyFile.html#a80c2c2e97a454566f9c1f2c51e1d7f3e',1,'PlottyFile']]], ['setrefy',['setRefY',['../classPlottyFile.html#a3a371228ddcc007e97eebe7cc04dffc2',1,'PlottyFile']]], + ['setregister',['setRegister',['../classB15F.html#a2735424cf98bd0e2892b5a9b6eb24582',1,'B15F']]], ['settimeout',['setTimeout',['../classUSART.html#ad7fe866cebe920784d2b17602824c7ff',1,'USART']]], ['setunitpara',['setUnitPara',['../classPlottyFile.html#abbac84109a1e0958a4ca5c270fac0986',1,'PlottyFile']]], ['setunitx',['setUnitX',['../classPlottyFile.html#ab8d35a841ca9c325fca671cf34e03527',1,'PlottyFile']]], diff --git a/docs/html/timeoutexception_8h_source.html b/docs/html/timeoutexception_8h_source.html index 9351c47..0bfd0e2 100644 --- a/docs/html/timeoutexception_8h_source.html +++ b/docs/html/timeoutexception_8h_source.html @@ -74,7 +74,7 @@ $(function() { <div class="ttc" id="aclassTimeoutException_html"><div class="ttname"><a href="classTimeoutException.html">TimeoutException</a></div><div class="ttdef"><b>Definition:</b> <a href="timeoutexception_8h_source.html#l00010">timeoutexception.h:10</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/ui_8cpp_source.html b/docs/html/ui_8cpp_source.html index 2012b32..b82ff5f 100644 --- a/docs/html/ui_8cpp_source.html +++ b/docs/html/ui_8cpp_source.html @@ -73,8 +73,8 @@ $(function() { <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#include "ui.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#include "../drv/b15f.h"</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>  </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> std::vector<View*> win_stack;</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> std::thread t_refresh;</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="keywordtype">void</span> show_main(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <a class="code" href="classViewSelection.html">ViewSelection</a>* view = <span class="keyword">new</span> <a class="code" href="classViewSelection.html">ViewSelection</a>();</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  view->setTitle(<span class="stringliteral">"B15F - Command Line Interface"</span>);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  view->addChoice(<span class="stringliteral">"[ Monitor - Eingaben beobachten ]"</span>, &show_monitor);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  view->addChoice(<span class="stringliteral">"[ Digitale Ausgabe BE0 ]"</span>, &show_digital_output0);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  view->addChoice(<span class="stringliteral">"[ Digitale Ausgabe BE1 ]"</span>, &show_digital_output1);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  view->addChoice(<span class="stringliteral">"[ Analoge Ausgabe AA0 ]"</span>, &show_analog_output0);</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  view->addChoice(<span class="stringliteral">"[ Analoge Ausgabe AA1 ]"</span>, &show_analog_output1);</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  view->addChoice(<span class="stringliteral">"[ Selbsttest des B15 ]"</span>, &show_selftest_info);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  view->addChoice(<span class="stringliteral">"[ Informationen ]"</span>, &show_info);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  view->addChoice(<span class="stringliteral">""</span>, <span class="keyword">nullptr</span>);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  view->addChoice(<span class="stringliteral">"[ Beenden ]"</span>, &finish);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  view->repaint();</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  win_stack.push_back(view);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  input(0);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> }</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  </div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keywordtype">void</span> input(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  call_t nextCall;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  <span class="keywordtype">int</span> key;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">do</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  key = wgetch(View::getWinContext());</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  win_stack.back()->repaint();</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  nextCall = win_stack.back()->keypress(key);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="keywordflow">if</span>(key == -1)</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  view_back(key);</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  </div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span>(nextCall)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  nextCall(key);</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">while</span>(win_stack.size());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> }</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="keywordtype">void</span> view_back(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordflow">if</span>(win_stack.size())</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keyword">delete</span> win_stack.back();</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  win_stack.pop_back();</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  }</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  <span class="keywordflow">if</span>(win_stack.size())</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  win_stack.back()->repaint();</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> }</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  </div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keywordtype">void</span> finish(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  cleanup();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  exit(EXIT_SUCCESS);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> }</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  </div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="keywordtype">void</span> cleanup()</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">if</span>(t_refresh.joinable())</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  t_refresh.join();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  clrtoeol();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  refresh();</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  endwin();</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> }</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  </div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="keywordtype">void</span> show_info(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> {</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <a class="code" href="classViewInfo.html">ViewInfo</a>* view = <span class="keyword">new</span> <a class="code" href="classViewInfo.html">ViewInfo</a>();</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  view->setTitle(<span class="stringliteral">"Info"</span>);</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  view->setText(<span class="stringliteral">"Informationen zu Board 15 Famulus Edition\nEs war einmal..."</span>);</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  view->setLabelClose(<span class="stringliteral">"[ Zurueck ]"</span>);</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  view->repaint();</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  </div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  win_stack.push_back(view);</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  input(0);</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> }</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  </div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="keywordtype">void</span> show_monitor(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <a class="code" href="classViewMonitor.html">ViewMonitor</a>* view = <span class="keyword">new</span> <a class="code" href="classViewMonitor.html">ViewMonitor</a>();</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  view->setTitle(<span class="stringliteral">"Monitor"</span>);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  view->setText(<span class="stringliteral">"\nErfasse Messwerte..."</span>);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  view->setLabelClose(<span class="stringliteral">"[ Zurueck ]"</span>);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  view->repaint();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  </div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  win_stack.push_back(view);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  input(0);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> }</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keywordtype">void</span> show_invalid_port_input(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <a class="code" href="classViewInfo.html">ViewInfo</a>* view = <span class="keyword">new</span> <a class="code" href="classViewInfo.html">ViewInfo</a>();</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  view->setTitle(<span class="stringliteral">"Falsche Eingabe"</span>);</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  view->setText(<span class="stringliteral">"Bitte geben Sie einen Wert aus dem Intervall [0, FF] an."</span>);</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  view->setLabelClose(<span class="stringliteral">"[ Schliessen ]"</span>);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  view->repaint();</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  win_stack.push_back(view);</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  input(0);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> }</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="keywordtype">void</span> show_invalid_dac_input(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> {</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="classViewInfo.html">ViewInfo</a>* view = <span class="keyword">new</span> <a class="code" href="classViewInfo.html">ViewInfo</a>();</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  view->setTitle(<span class="stringliteral">"Falsche Eingabe"</span>);</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  view->setText(<span class="stringliteral">"Bitte geben Sie einen Wert aus dem Intervall [0, 1023] an."</span>);</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  view->setLabelClose(<span class="stringliteral">"[ Schliessen ]"</span>);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  view->repaint();</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  win_stack.push_back(view);</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  input(0);</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span> }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  </div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="keywordtype">void</span> write_digital_output0(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> {</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">try</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordtype">int</span> d = std::stoi(static_cast<ViewPromt*>(win_stack.back())->getInput(), 0, 16);</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">if</span>(d > 255 || 0 > d)</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">"bad value"</span>);</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  uint8_t port = static_cast<uint8_t>(d);</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  </div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="classB15F.html">B15F</a>& drv = <a class="code" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a>();</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  drv.<a class="code" href="classB15F.html#a13797edea1c50278988373acbd110064">digitalWrite0</a>(port);</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  view_back(0);</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  }</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">catch</span>(std::invalid_argument& ex)</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  {</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  show_invalid_port_input(0);</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span> }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  </div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keywordtype">void</span> write_digital_output1(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span> {</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">try</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  {</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordtype">int</span> d = std::stoi(static_cast<ViewPromt*>(win_stack.back())->getInput(), 0, 16);</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>(d > 255 || 0 > d)</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">"bad value"</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  uint8_t port = static_cast<uint8_t>(d);</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  </div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="classB15F.html">B15F</a>& drv = <a class="code" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a>();</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  drv.<a class="code" href="classB15F.html#aa225e7fc813849634063e071ef25db1b">digitalWrite1</a>(port);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  view_back(0);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">catch</span>(std::invalid_argument& ex)</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  {</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  show_invalid_port_input(0);</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  }</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span> }</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="keywordtype">void</span> write_analog_output0(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span> {</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">try</span></div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  uint16_t port = std::stoi(static_cast<ViewPromt*>(win_stack.back())->getInput());</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span>(port > 1023)</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">"bad value"</span>);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  </div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <a class="code" href="classB15F.html">B15F</a>& drv = <a class="code" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a>();</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  drv.<a class="code" href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3">analogWrite0</a>(port);</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  view_back(0);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  }</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">catch</span>(std::invalid_argument& ex)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  {</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  show_invalid_dac_input(0);</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span> }</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  </div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="keywordtype">void</span> write_analog_output1(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span> {</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">try</span></div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  uint16_t port = std::stoi(static_cast<ViewPromt*>(win_stack.back())->getInput());</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="keywordflow">if</span>(port > 1023)</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">throw</span> std::invalid_argument(<span class="stringliteral">"bad value"</span>);</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  </div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="classB15F.html">B15F</a>& drv = <a class="code" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a>();</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  drv.<a class="code" href="classB15F.html#a7f1becceac744f5cd2ad529748fd836f">analogWrite1</a>(port);</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  view_back(0);</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">catch</span>(std::invalid_argument& ex)</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  {</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  show_invalid_dac_input(0);</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span> }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  </div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="keywordtype">void</span> show_digital_output0(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> {</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="classViewPromt.html">ViewPromt</a>* view = <span class="keyword">new</span> <a class="code" href="classViewPromt.html">ViewPromt</a>();</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  view->setTitle(<span class="stringliteral">"Digitale Ausgabe BE0"</span>);</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  view->setMessage(<span class="stringliteral">"\nAusgabe Port-Wert (hex): 0x"</span>);</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  view->setCancel(<span class="stringliteral">"[ Zurueck ]"</span>, <span class="keyword">true</span>);</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  view->setConfirm(<span class="stringliteral">"[ OK ]"</span>, &write_digital_output0);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  view->repaint();</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  </div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  win_stack.push_back(view);</div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  input(0);</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span> }</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  </div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="keywordtype">void</span> show_digital_output1(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="classViewPromt.html">ViewPromt</a>* view = <span class="keyword">new</span> <a class="code" href="classViewPromt.html">ViewPromt</a>();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  view->setTitle(<span class="stringliteral">"Digitale Ausgabe BE1"</span>);</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  view->setMessage(<span class="stringliteral">"\nAusgabe Port-Wert (hex): 0x"</span>);</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  view->setCancel(<span class="stringliteral">"[ Zurueck ]"</span>, <span class="keyword">true</span>);</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  view->setConfirm(<span class="stringliteral">"[ OK ]"</span>, &write_digital_output1);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  view->repaint();</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  </div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  win_stack.push_back(view);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  input(0);</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="keywordtype">void</span> show_analog_output0(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span> {</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <a class="code" href="classViewPromt.html">ViewPromt</a>* view = <span class="keyword">new</span> <a class="code" href="classViewPromt.html">ViewPromt</a>();</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  view->setTitle(<span class="stringliteral">"Analoge Ausgabe AA0"</span>);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  view->setMessage(<span class="stringliteral">"\nAusgabe 10-Bit-Wert (0...1023): "</span>);</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  view->setCancel(<span class="stringliteral">"[ Zurueck ]"</span>, <span class="keyword">true</span>);</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  view->setConfirm(<span class="stringliteral">"[ OK ]"</span>, &write_analog_output0);</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  view->repaint();</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  </div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  win_stack.push_back(view);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  input(0);</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span> }</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  </div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="keywordtype">void</span> show_analog_output1(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span> {</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="classViewPromt.html">ViewPromt</a>* view = <span class="keyword">new</span> <a class="code" href="classViewPromt.html">ViewPromt</a>();</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  view->setTitle(<span class="stringliteral">"Analoge Ausgabe AA1"</span>);</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  view->setMessage(<span class="stringliteral">"\nAusgabe 10-Bit-Wert (0...1023): "</span>);</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  view->setCancel(<span class="stringliteral">"[ Zurueck ]"</span>, <span class="keyword">true</span>);</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  view->setConfirm(<span class="stringliteral">"[ OK ]"</span>, &write_analog_output1);</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  view->repaint();</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  </div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  win_stack.push_back(view);</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  input(0);</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span> }</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  </div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="keywordtype">void</span> start_selftest(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span> {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="classB15F.html">B15F</a>& drv = <a class="code" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a>();</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  drv.<a class="code" href="classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1">activateSelfTestMode</a>();</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  </div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="classViewInfo.html">ViewInfo</a>* view = <span class="keyword">new</span> <a class="code" href="classViewInfo.html">ViewInfo</a>();</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  view->setTitle(<span class="stringliteral">"Selbsttest aktiv"</span>);</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  view->setText(<span class="stringliteral">"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"</span>);</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  view->setLabelClose(<span class="stringliteral">"[ Selbsttest Beenden ]"</span>);</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  view->setCall(&stop_selftest);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  view->repaint();</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  </div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  win_stack.push_back(view);</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  input(0);</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span> }</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  </div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="keywordtype">void</span> stop_selftest(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span> {</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="classB15F.html">B15F</a>& drv = <a class="code" href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a>();</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  drv.<a class="code" href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5">discard</a>();</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  drv.<a class="code" href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">delay_ms</a>(<a class="code" href="classB15F.html#a158d13bc84aed6430cdede1396384e06">B15F::WDT_TIMEOUT</a>);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  drv.<a class="code" href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7">reconnect</a>();</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  drv.<a class="code" href="classB15F.html#a13797edea1c50278988373acbd110064">digitalWrite0</a>(0);</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  drv.<a class="code" href="classB15F.html#aa225e7fc813849634063e071ef25db1b">digitalWrite1</a>(0);</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  </div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span> <span class="keywordtype">void</span> show_selftest_info(<span class="keywordtype">int</span>)</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> {</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <a class="code" href="classViewInfo.html">ViewInfo</a>* view = <span class="keyword">new</span> <a class="code" href="classViewInfo.html">ViewInfo</a>();</div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  view->setTitle(<span class="stringliteral">"Selbsttest"</span>);</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  view->setText(<span class="stringliteral">"Bitte entfernen Sie jetzt alle Draehte von den Anschlussklemmen und bestaetigen\nmit Enter."</span>);</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  view->setLabelClose(<span class="stringliteral">"[ Weiter ]"</span>);</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  view->setCall(&start_selftest);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  view->repaint();</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  </div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  win_stack.push_back(view);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  input(0);</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span> }</div></div><!-- fragment --></div><!-- contents --> <div class="ttc" id="aclassViewMonitor_html"><div class="ttname"><a href="classViewMonitor.html">ViewMonitor</a></div><div class="ttdef"><b>Definition:</b> <a href="view__monitor_8h_source.html#l00013">view_monitor.h:13</a></div></div> <div class="ttc" id="aclassViewInfo_html"><div class="ttname"><a href="classViewInfo.html">ViewInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="view__info_8h_source.html#l00008">view_info.h:8</a></div></div> -<div class="ttc" id="aclassB15F_html_aaffce20afb9f06bc4b7556c70ce76416"><div class="ttname"><a href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">B15F::delay_ms</a></div><div class="ttdeci">void delay_ms(uint16_t ms)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00333">b15f.cpp:333</a></div></div> -<div class="ttc" id="aclassB15F_html_a8b4533d232c55ef2aa967e39e2d23380"><div class="ttname"><a href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a></div><div class="ttdeci">static B15F & getInstance(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00343">b15f.cpp:343</a></div></div> +<div class="ttc" id="aclassB15F_html_aaffce20afb9f06bc4b7556c70ce76416"><div class="ttname"><a href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">B15F::delay_ms</a></div><div class="ttdeci">void delay_ms(uint16_t ms)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00373">b15f.cpp:373</a></div></div> +<div class="ttc" id="aclassB15F_html_a8b4533d232c55ef2aa967e39e2d23380"><div class="ttname"><a href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a></div><div class="ttdeci">static B15F & getInstance(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00383">b15f.cpp:383</a></div></div> <div class="ttc" id="aclassB15F_html"><div class="ttname"><a href="classB15F.html">B15F</a></div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00026">b15f.h:26</a></div></div> <div class="ttc" id="aclassB15F_html_a13797edea1c50278988373acbd110064"><div class="ttname"><a href="classB15F.html#a13797edea1c50278988373acbd110064">B15F::digitalWrite0</a></div><div class="ttdeci">bool digitalWrite0(uint8_t)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00153">b15f.cpp:153</a></div></div> <div class="ttc" id="aclassB15F_html_ad9bf80ee2485fb5aac9926c6ef0731f1"><div class="ttname"><a href="classB15F.html#ad9bf80ee2485fb5aac9926c6ef0731f1">B15F::activateSelfTestMode</a></div><div class="ttdeci">bool activateSelfTestMode(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00145">b15f.cpp:145</a></div></div> @@ -83,12 +83,12 @@ $(function() { <div class="ttc" id="aclassViewPromt_html"><div class="ttname"><a href="classViewPromt.html">ViewPromt</a></div><div class="ttdef"><b>Definition:</b> <a href="view__promt_8h_source.html#l00010">view_promt.h:10</a></div></div> <div class="ttc" id="aclassB15F_html_aa225e7fc813849634063e071ef25db1b"><div class="ttname"><a href="classB15F.html#aa225e7fc813849634063e071ef25db1b">B15F::digitalWrite1</a></div><div class="ttdeci">bool digitalWrite1(uint8_t)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00163">b15f.cpp:163</a></div></div> <div class="ttc" id="aclassB15F_html_ae4740cd473f40a1a4121dfa66b25e1d5"><div class="ttname"><a href="classB15F.html#ae4740cd473f40a1a4121dfa66b25e1d5">B15F::discard</a></div><div class="ttdeci">void discard(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00072">b15f.cpp:72</a></div></div> -<div class="ttc" id="aclassB15F_html_a158d13bc84aed6430cdede1396384e06"><div class="ttname"><a href="classB15F.html#a158d13bc84aed6430cdede1396384e06">B15F::WDT_TIMEOUT</a></div><div class="ttdeci">constexpr static uint16_t WDT_TIMEOUT</div><div class="ttdoc">Time in ms after which the watch dog timer resets the MCU.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00219">b15f.h:219</a></div></div> +<div class="ttc" id="aclassB15F_html_a158d13bc84aed6430cdede1396384e06"><div class="ttname"><a href="classB15F.html#a158d13bc84aed6430cdede1396384e06">B15F::WDT_TIMEOUT</a></div><div class="ttdeci">constexpr static uint16_t WDT_TIMEOUT</div><div class="ttdoc">Time in ms after which the watch dog timer resets the MCU.</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00235">b15f.h:235</a></div></div> <div class="ttc" id="aclassB15F_html_a52557b375443c180a044e7d4e80a1ae7"><div class="ttname"><a href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7">B15F::reconnect</a></div><div class="ttdeci">void reconnect(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00057">b15f.cpp:57</a></div></div> <div class="ttc" id="aclassB15F_html_afc55fd590c7fa5c942d100cb60c4b0d3"><div class="ttname"><a href="classB15F.html#afc55fd590c7fa5c942d100cb60c4b0d3">B15F::analogWrite0</a></div><div class="ttdeci">bool analogWrite0(uint16_t port)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00200">b15f.cpp:200</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/ui_8h_source.html b/docs/html/ui_8h_source.html index 545b5cb..e3da44c 100644 --- a/docs/html/ui_8h_source.html +++ b/docs/html/ui_8h_source.html @@ -73,7 +73,7 @@ $(function() { <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#ifndef UI_H</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define UI_H</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>  </div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "view_selection.h"</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "view_info.h"</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "view_monitor.h"</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "view_promt.h"</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="keywordtype">void</span> show_main(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="keywordtype">void</span> input(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="keywordtype">void</span> view_back(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keywordtype">void</span> finish(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="keywordtype">void</span> cleanup();</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keywordtype">void</span> show_info(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="keywordtype">void</span> show_monitor(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keywordtype">void</span> show_invalid_port_input(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="keywordtype">void</span> show_invalid_dac_input(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keywordtype">void</span> write_digital_output0(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="keywordtype">void</span> write_digital_output1(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="keywordtype">void</span> write_analog_output0(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keywordtype">void</span> write_analog_output1(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="keywordtype">void</span> show_digital_output0(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="keywordtype">void</span> show_digital_output1(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keywordtype">void</span> show_analog_output0(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keywordtype">void</span> show_analog_output1(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// selftest group</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="keywordtype">void</span> show_selftest_info(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keywordtype">void</span> start_selftest(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keywordtype">void</span> stop_selftest(<span class="keywordtype">int</span>);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  </div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">extern</span> std::vector<View*> win_stack;</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">extern</span> std::thread t_refresh;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="preprocessor">#endif // UI_H</span></div></div><!-- fragment --></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/usart_8cpp_source.html b/docs/html/usart_8cpp_source.html index 70b7d23..3c613ee 100644 --- a/docs/html/usart_8cpp_source.html +++ b/docs/html/usart_8cpp_source.html @@ -90,7 +90,7 @@ $(function() { <div class="ttc" id="aclassUSART_html_a78b30d9aa863f38745e982860392599a"><div class="ttname"><a href="classUSART.html#a78b30d9aa863f38745e982860392599a">USART::writeInt</a></div><div class="ttdeci">void writeInt(uint16_t d)</div><div class="ttdef"><b>Definition:</b> <a href="usart_8cpp_source.html#l00081">usart.cpp:81</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/usart_8h_source.html b/docs/html/usart_8h_source.html index 25eac7a..fb279ff 100644 --- a/docs/html/usart_8h_source.html +++ b/docs/html/usart_8h_source.html @@ -89,7 +89,7 @@ $(function() { <div class="ttc" id="aclassUSART_html_a78b30d9aa863f38745e982860392599a"><div class="ttname"><a href="classUSART.html#a78b30d9aa863f38745e982860392599a">USART::writeInt</a></div><div class="ttdeci">void writeInt(uint16_t d)</div><div class="ttdef"><b>Definition:</b> <a href="usart_8cpp_source.html#l00081">usart.cpp:81</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/usartexception_8h_source.html b/docs/html/usartexception_8h_source.html index d037b79..ce6e187 100644 --- a/docs/html/usartexception_8h_source.html +++ b/docs/html/usartexception_8h_source.html @@ -74,7 +74,7 @@ $(function() { <div class="ttc" id="aclassUSARTException_html"><div class="ttname"><a href="classUSARTException.html">USARTException</a></div><div class="ttdef"><b>Definition:</b> <a href="usartexception_8h_source.html#l00011">usartexception.h:11</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/view_8cpp_source.html b/docs/html/view_8cpp_source.html index 030d2a5..ce0f029 100644 --- a/docs/html/view_8cpp_source.html +++ b/docs/html/view_8cpp_source.html @@ -71,10 +71,10 @@ $(function() { </div><!--header--> <div class="contents"> <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#include "view.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> WINDOW* View::win = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>  </div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> View::View()</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> {</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  <span class="keywordflow">if</span>(!win)</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  {</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <a class="code" href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">B15F::abort</a>(<span class="stringliteral">"View::win not initialized, missing context"</span>);</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  }</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  getmaxyx(win, height, width); <span class="comment">// init width and height</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  keypad(win, TRUE);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> }</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> View::~View()</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> {</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> }</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="keywordtype">void</span> View::setWinContext(WINDOW* win)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> {</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  View::win = win;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> }</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> WINDOW* View::getWinContext()</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> {</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">return</span> win;</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> }</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// from: https://stackoverflow.com/a/37454181</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> std::vector<std::string> View::str_split(<span class="keyword">const</span> std::string& str, <span class="keyword">const</span> std::string delim)</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> {</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  std::vector<std::string> tokens;</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordtype">size_t</span> prev = 0, pos = 0;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">do</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  {</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  pos = str.find(delim, prev);</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">if</span> (pos == std::string::npos) pos = str.length();</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  std::string token = str.substr(prev, pos-prev);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">if</span> (!token.empty()) tokens.push_back(token);</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  prev = pos + delim.length();</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  }</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">while</span> (pos < str.length() && prev < str.length());</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordflow">return</span> tokens;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  </div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  </div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keywordtype">void</span> View::setTitle(std::string title)</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  this->title = title;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  </div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="keywordtype">void</span> View::repaint()</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> {</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="comment">// get screen size</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <span class="keyword">struct </span>winsize size;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">if</span> (ioctl(0, TIOCGWINSZ, (<span class="keywordtype">char</span> *) &size) < 0)</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"TIOCGWINSZ error"</span>);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  start_x = floor((size.ws_col - width) / 2.);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  start_y = floor((size.ws_row - height) / 2.);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  curs_set(0); <span class="comment">// hide cursor</span></div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  mvwin(win, start_y, start_x);</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  clear();</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  wclear(win);</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  </div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="comment">// generic draw</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  box(win, 0, 0);</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordtype">int</span> offset_x = (width - title.length()) / 2;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  mvwprintw(win, 1, offset_x, <span class="stringliteral">"%s"</span>, title.c_str());</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  </div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="comment">// specific draw</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  draw();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  </div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  refresh();</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  wrefresh(win);</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</div></div><!-- fragment --></div><!-- contents --> -<div class="ttc" id="aclassB15F_html_a3f09a418f9e3be5d1d750e4515c96f1e"><div class="ttname"><a href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">B15F::abort</a></div><div class="ttdeci">static void abort(std::string msg)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00368">b15f.cpp:368</a></div></div> +<div class="ttc" id="aclassB15F_html_a3f09a418f9e3be5d1d750e4515c96f1e"><div class="ttname"><a href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">B15F::abort</a></div><div class="ttdeci">static void abort(std::string msg)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00408">b15f.cpp:408</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/view_8h_source.html b/docs/html/view_8h_source.html index 8978a3e..34219aa 100644 --- a/docs/html/view_8h_source.html +++ b/docs/html/view_8h_source.html @@ -74,7 +74,7 @@ $(function() { <div class="ttc" id="aclassView_html"><div class="ttname"><a href="classView.html">View</a></div><div class="ttdef"><b>Definition:</b> <a href="view_8h_source.html#l00019">view.h:19</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/view__info_8cpp_source.html b/docs/html/view__info_8cpp_source.html index c9d1a98..fc91695 100644 --- a/docs/html/view__info_8cpp_source.html +++ b/docs/html/view__info_8cpp_source.html @@ -73,7 +73,7 @@ $(function() { <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#include "view_info.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> ViewInfo::ViewInfo()</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> {</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  calls.push_back(<span class="keyword">nullptr</span>);</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> }</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="keywordtype">void</span> ViewInfo::setText(std::string text)</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> {</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  this->text = text;</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> }</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="keywordtype">void</span> ViewInfo::setLabelClose(std::string label)</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> {</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  this->label_close = label;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> }</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keywordtype">void</span> ViewInfo::setCall(call_t call)</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  calls[0] = call;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> }</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keywordtype">void</span> ViewInfo::draw()</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordtype">int</span> li = 0;</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">for</span>(std::string line : str_split(text, <span class="stringliteral">"\n"</span>))</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  mvwprintw(win, text_offset_y + li++, text_offset_x, <span class="stringliteral">"%s"</span>, line.c_str());</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  close_offset_x = (width - label_close.length()) / 2;</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  close_offset_y = height - 2;</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  wattron(win, A_REVERSE);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  mvwprintw(win, close_offset_y, close_offset_x, <span class="stringliteral">"%s"</span>, label_close.c_str());</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  wattroff(win, A_REVERSE);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> call_t ViewInfo::keypress(<span class="keywordtype">int</span>& key)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="keywordflow">switch</span>(key)</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">case</span> KEY_MOUSE:</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="comment">// http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  MEVENT event;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <span class="keywordflow">if</span>(getmouse(&event) == OK && event.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED))</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  {</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">size_t</span> column = start_x + close_offset_x;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">size_t</span> row = start_y + close_offset_y;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">size_t</span> mouse_x = <span class="keyword">event</span>.x, mouse_y = <span class="keyword">event</span>.y;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span>(mouse_y == row && mouse_x >= column && mouse_x < column + label_close.length())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  key = -1; <span class="comment">// do return from view</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  }</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">case</span> KEY_ENT:</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  key = -1; <span class="comment">// do return from view</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">return</span> calls[0];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div></div><!-- fragment --></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/view__info_8h_source.html b/docs/html/view__info_8h_source.html index 4aaf34e..253009d 100644 --- a/docs/html/view__info_8h_source.html +++ b/docs/html/view__info_8h_source.html @@ -75,7 +75,7 @@ $(function() { <div class="ttc" id="aclassView_html"><div class="ttname"><a href="classView.html">View</a></div><div class="ttdef"><b>Definition:</b> <a href="view_8h_source.html#l00019">view.h:19</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/view__monitor_8cpp_source.html b/docs/html/view__monitor_8cpp_source.html index fa3a723..09f6315 100644 --- a/docs/html/view__monitor_8cpp_source.html +++ b/docs/html/view__monitor_8cpp_source.html @@ -74,17 +74,17 @@ $(function() { <div class="ttc" id="aclassViewMonitor_html"><div class="ttname"><a href="classViewMonitor.html">ViewMonitor</a></div><div class="ttdef"><b>Definition:</b> <a href="view__monitor_8h_source.html#l00013">view_monitor.h:13</a></div></div> <div class="ttc" id="aclassB15F_html_ae0df6d423deeb2fd610968bd1c72060e"><div class="ttname"><a href="classB15F.html#ae0df6d423deeb2fd610968bd1c72060e">B15F::digitalRead0</a></div><div class="ttdeci">uint8_t digitalRead0(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00173">b15f.cpp:173</a></div></div> <div class="ttc" id="aclassB15F_html_a6f858f21ea81d491b5031b3644a2239a"><div class="ttname"><a href="classB15F.html#a6f858f21ea81d491b5031b3644a2239a">B15F::readDipSwitch</a></div><div class="ttdeci">uint8_t readDipSwitch(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00191">b15f.cpp:191</a></div></div> -<div class="ttc" id="aclassB15F_html_aaffce20afb9f06bc4b7556c70ce76416"><div class="ttname"><a href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">B15F::delay_ms</a></div><div class="ttdeci">void delay_ms(uint16_t ms)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00333">b15f.cpp:333</a></div></div> -<div class="ttc" id="aclassB15F_html_a8b4533d232c55ef2aa967e39e2d23380"><div class="ttname"><a href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a></div><div class="ttdeci">static B15F & getInstance(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00343">b15f.cpp:343</a></div></div> +<div class="ttc" id="aclassB15F_html_aaffce20afb9f06bc4b7556c70ce76416"><div class="ttname"><a href="classB15F.html#aaffce20afb9f06bc4b7556c70ce76416">B15F::delay_ms</a></div><div class="ttdeci">void delay_ms(uint16_t ms)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00373">b15f.cpp:373</a></div></div> +<div class="ttc" id="aclassB15F_html_a8b4533d232c55ef2aa967e39e2d23380"><div class="ttname"><a href="classB15F.html#a8b4533d232c55ef2aa967e39e2d23380">B15F::getInstance</a></div><div class="ttdeci">static B15F & getInstance(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00383">b15f.cpp:383</a></div></div> <div class="ttc" id="aclassB15F_html"><div class="ttname"><a href="classB15F.html">B15F</a></div><div class="ttdef"><b>Definition:</b> <a href="b15f_8h_source.html#l00026">b15f.h:26</a></div></div> -<div class="ttc" id="aclassB15F_html_a3f09a418f9e3be5d1d750e4515c96f1e"><div class="ttname"><a href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">B15F::abort</a></div><div class="ttdeci">static void abort(std::string msg)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00368">b15f.cpp:368</a></div></div> +<div class="ttc" id="aclassB15F_html_a3f09a418f9e3be5d1d750e4515c96f1e"><div class="ttname"><a href="classB15F.html#a3f09a418f9e3be5d1d750e4515c96f1e">B15F::abort</a></div><div class="ttdeci">static void abort(std::string msg)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00408">b15f.cpp:408</a></div></div> <div class="ttc" id="aclassB15F_html_ae0bd1f69751e2dc3c462db9213fc4627"><div class="ttname"><a href="classB15F.html#ae0bd1f69751e2dc3c462db9213fc4627">B15F::analogRead</a></div><div class="ttdeci">uint16_t analogRead(uint8_t channel)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00220">b15f.cpp:220</a></div></div> <div class="ttc" id="aclassB15F_html_afc76b612dd4faeee0ac02a66b65af5f2"><div class="ttname"><a href="classB15F.html#afc76b612dd4faeee0ac02a66b65af5f2">B15F::digitalRead1</a></div><div class="ttdeci">uint8_t digitalRead1(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00182">b15f.cpp:182</a></div></div> <div class="ttc" id="aclassB15F_html_a52557b375443c180a044e7d4e80a1ae7"><div class="ttname"><a href="classB15F.html#a52557b375443c180a044e7d4e80a1ae7">B15F::reconnect</a></div><div class="ttdeci">void reconnect(void)</div><div class="ttdef"><b>Definition:</b> <a href="b15f_8cpp_source.html#l00057">b15f.cpp:57</a></div></div> <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 on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/view__monitor_8h_source.html b/docs/html/view__monitor_8h_source.html index c050394..b311d44 100644 --- a/docs/html/view__monitor_8h_source.html +++ b/docs/html/view__monitor_8h_source.html @@ -75,7 +75,7 @@ $(function() { <div class="ttc" id="aclassViewInfo_html"><div class="ttname"><a href="classViewInfo.html">ViewInfo</a></div><div class="ttdef"><b>Definition:</b> <a href="view__info_8h_source.html#l00008">view_info.h:8</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/view__promt_8cpp_source.html b/docs/html/view__promt_8cpp_source.html index 0e91d6e..cb9f31c 100644 --- a/docs/html/view__promt_8cpp_source.html +++ b/docs/html/view__promt_8cpp_source.html @@ -73,7 +73,7 @@ $(function() { <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#include "view_promt.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="keywordtype">void</span> ViewPromt::draw()</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> {</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  curs_set(1); <span class="comment">// show cursor</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  <span class="keywordtype">int</span> li = text_offset_y;</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="keywordtype">int</span> ci = 0;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  <span class="keywordflow">for</span>(std::string line : str_split(message + input, <span class="stringliteral">"\n"</span>))</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  {</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  mvwprintw(win, ++li, text_offset_x, <span class="stringliteral">"%s"</span>, line.c_str());</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  ci = line.length() + text_offset_x;</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  }</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>  </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  button_offset_x = (width - label_cancel.length() - sep.length() - label_confirm.length()) / 2;</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>  button_offset_y = height - text_offset_y;</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>  </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  <span class="keywordflow">if</span>(selection == 0)</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  {</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>  wattron(win, A_REVERSE);</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  mvwprintw(win, button_offset_y, button_offset_x, <span class="stringliteral">"%s"</span>, label_cancel.c_str());</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>  wattroff(win, A_REVERSE);</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  mvwprintw(win, button_offset_y, button_offset_x + label_cancel.length(), <span class="stringliteral">"%s"</span>, sep.c_str());</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  mvwprintw(win, button_offset_y, button_offset_x + label_cancel.length() + sep.length(), <span class="stringliteral">"%s"</span>, label_confirm.c_str());</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  }</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  {</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  mvwprintw(win, button_offset_y, button_offset_x, <span class="stringliteral">"%s"</span>, label_cancel.c_str());</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  mvwprintw(win, button_offset_y, button_offset_x + label_cancel.length(), <span class="stringliteral">"%s"</span>, sep.c_str());</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  wattron(win, A_REVERSE);</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  mvwprintw(win, button_offset_y, button_offset_x + label_cancel.length() + sep.length(), <span class="stringliteral">"%s"</span>, label_confirm.c_str());</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  wattroff(win, A_REVERSE);</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  }</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  wmove(win, li, ci);</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> }</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="keywordtype">void</span> ViewPromt::setMessage(std::string message)</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> {</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  this->message = message;</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> }</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  </div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="keywordtype">void</span> ViewPromt::setConfirm(std::string name, std::function<<span class="keywordtype">void</span>(<span class="keywordtype">int</span>)> call)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  label_confirm = name;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  call_confirm = call;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> }</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="keywordtype">void</span> ViewPromt::setCancel(std::string name, <span class="keywordtype">bool</span> cancelable)</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> {</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  label_cancel = name;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  this->cancelable = cancelable;</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> }</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> std::string ViewPromt::getInput()</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  <span class="keywordflow">return</span> input;</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> std::function<void(<span class="keywordtype">int</span>)> ViewPromt::keypress(<span class="keywordtype">int</span>& key)</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> {</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  std::function<void(<span class="keywordtype">int</span>)> ret = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">switch</span>(key)</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  {</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <span class="keywordflow">case</span> KEY_BACKSPACE:</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span>(input.length())</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  input.pop_back();</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">case</span> <span class="charliteral">'\t'</span>:</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  <span class="keywordflow">case</span> KEY_LEFT:</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">case</span> KEY_RIGHT:</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  selection = (selection + 1 ) % 2;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  <span class="keywordflow">case</span> KEY_MOUSE:</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="comment">// http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  MEVENT event;</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  <span class="keywordtype">bool</span> hit = <span class="keyword">false</span>;</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>(getmouse(&event) == OK && <span class="keyword">event</span>.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED))</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">size_t</span> column_start = start_x + button_offset_x;</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordtype">size_t</span> row_start = start_y + button_offset_y;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordtype">size_t</span> mouse_x = <span class="keyword">event</span>.x, mouse_y = <span class="keyword">event</span>.y;</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">if</span>(mouse_y == row_start)</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  {</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">if</span>(cancelable && mouse_x >= column_start && mouse_x < column_start + label_cancel.length())</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  {</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">if</span>(selection == 0 || event.bstate & BUTTON1_DOUBLE_CLICKED)</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  hit = <span class="keyword">true</span>;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  selection = 0;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  }</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span>(mouse_x >= column_start + label_cancel.length() + sep.length() && mouse_x < column_start + label_cancel.length() + sep.length() + label_confirm.length())</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  {</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  <span class="keywordflow">if</span>(selection == 1 || event.bstate & BUTTON1_DOUBLE_CLICKED)</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  hit = <span class="keyword">true</span>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  selection = 1;</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  }</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  }</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  }</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span>(!hit)</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  </div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="comment">// fall through to next case</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  [[fallthrough]];</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  }</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">case</span> KEY_ENT:</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(selection == 0) <span class="comment">// exit</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  key = -1; <span class="comment">// do return from view</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  ret = call_confirm;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  </div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">if</span>(key >= <span class="charliteral">' '</span> && key <= <span class="charliteral">'~'</span>)</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  input += (char) key;</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keywordflow">if</span>(key != KEY_ENT)</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  repaint();</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</div></div><!-- fragment --></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/view__promt_8h_source.html b/docs/html/view__promt_8h_source.html index 6acbb7b..3ffc2fc 100644 --- a/docs/html/view__promt_8h_source.html +++ b/docs/html/view__promt_8h_source.html @@ -75,7 +75,7 @@ $(function() { <div class="ttc" id="aclassViewPromt_html"><div class="ttname"><a href="classViewPromt.html">ViewPromt</a></div><div class="ttdef"><b>Definition:</b> <a href="view__promt_8h_source.html#l00010">view_promt.h:10</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/view__selection_8cpp_source.html b/docs/html/view__selection_8cpp_source.html index d78a6f9..324fa41 100644 --- a/docs/html/view__selection_8cpp_source.html +++ b/docs/html/view__selection_8cpp_source.html @@ -73,7 +73,7 @@ $(function() { <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#include "view_selection.h"</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>  </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="keywordtype">void</span> ViewSelection::draw()</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> {</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>  <span class="comment">//curs_set(0); // hide cursor</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i < choices.size(); i++)</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>  {</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>  <span class="keywordflow">if</span>(selection == i)</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>  wattron(win, A_REVERSE);</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>  mvwprintw(win, i + choice_offset_y, choice_offset_x, <span class="stringliteral">"%s"</span>, choices[i].c_str());</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>  <span class="keywordflow">if</span>(selection == i)</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>  wattroff(win, A_REVERSE);</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>  }</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> }</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>  </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keywordtype">void</span> ViewSelection::addChoice(std::string name, call_t call)</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>  choices.push_back(name);</div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>  calls.push_back(call);</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> }</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> call_t ViewSelection::keypress(<span class="keywordtype">int</span>& key)</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> {</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  call_t ret = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="keywordflow">switch</span>(key)</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  {</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  <span class="keywordflow">case</span> KEY_UP:</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>  <span class="keywordflow">do</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  selection = (selection - 1 + choices.size()) % choices.size();</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordflow">while</span>(!choices[selection].length() && choices.size());</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">case</span> <span class="charliteral">'\t'</span>:</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <span class="keywordflow">case</span> KEY_DOWN:</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  <span class="keywordflow">do</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  selection = (selection + 1) % choices.size();</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">while</span>(!choices[selection].length() && choices.size());</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  </div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <span class="keywordflow">case</span> KEY_MOUSE:</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="comment">// http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel10b.shtml</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  MEVENT event;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">bool</span> hit = <span class="keyword">false</span>;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span>(getmouse(&event) == OK && <span class="keyword">event</span>.bstate & (BUTTON1_CLICKED | BUTTON1_DOUBLE_CLICKED))</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  {</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  <span class="keywordtype">size_t</span> column_start = start_x + choice_offset_x;</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordtype">size_t</span> row_start = start_y + choice_offset_y;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <span class="keywordtype">size_t</span> mouse_x = <span class="keyword">event</span>.x, mouse_y = <span class="keyword">event</span>.y;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">for</span>(<span class="keywordtype">size_t</span> i = 0; i < choices.size(); i++)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <span class="keywordflow">if</span>(choices[i].length() && mouse_y == row_start + i && mouse_x >= column_start && mouse_x < column_start + choices[i].length())</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  {</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  <span class="keywordflow">if</span>(selection == i || event.bstate & BUTTON1_DOUBLE_CLICKED)</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>  hit = <span class="keyword">true</span>;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  selection = i;</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  }</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  }</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span>(!hit)</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="comment">// fall through to next case</span></div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  [[fallthrough]];</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  }</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">case</span> KEY_ENT:</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(selection == choices.size() - 1) <span class="comment">// exit</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  key = -1; <span class="comment">// do return from view</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  ret = calls[selection];</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">default</span>:</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  }</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  repaint();</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> }</div></div><!-- fragment --></div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/docs/html/view__selection_8h_source.html b/docs/html/view__selection_8h_source.html index 19bac8c..e284347 100644 --- a/docs/html/view__selection_8h_source.html +++ b/docs/html/view__selection_8h_source.html @@ -75,7 +75,7 @@ $(function() { <div class="ttc" id="aclassViewSelection_html"><div class="ttname"><a href="classViewSelection.html">ViewSelection</a></div><div class="ttdef"><b>Definition:</b> <a href="view__selection_8h_source.html#l00010">view_selection.h:10</a></div></div> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> -Generated on Tue May 28 2019 12:31:39 for B15F by  <a href="http://www.doxygen.org/index.html"> +Generated on Wed May 29 2019 09:52:09 for B15F by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.16 </small></address> diff --git a/firmware/requests.cpp b/firmware/requests.cpp index 55f5cf6..bd3c014 100644 --- a/firmware/requests.cpp +++ b/firmware/requests.cpp @@ -70,6 +70,14 @@ void handleRequest() case RQ_PWM_SET_VALUE: rqPwmSetValue(); break; + + case RQ_SET_REG: + rqSetRegister(); + break; + + case RQ_GET_REG: + rqGetRegister(); + break; default: break; @@ -244,3 +252,24 @@ void rqPwmSetValue() usart.writeByte(USART::MSG_OK); usart.flush(); } + +void rqSetRegister() +{ + usart.initTX(); + uint16_t reg = usart.readByte(); + uint16_t val = usart.readByte(); + + (*(volatile uint8_t *) reg) = val; + usart.writeByte((*(volatile uint8_t *) reg)); + usart.flush(); +} + +void rqGetRegister() +{ + usart.initTX(); + uint16_t reg = usart.readByte(); + + usart.writeByte((*(volatile uint8_t *) reg)); + usart.flush(); +} + diff --git a/firmware/requests.h b/firmware/requests.h index 418b003..336f8f5 100644 --- a/firmware/requests.h +++ b/firmware/requests.h @@ -20,9 +20,11 @@ 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_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; uint8_t const rq_len[] = { /* RQ_DISC */ 1, @@ -40,7 +42,9 @@ uint8_t const rq_len[] = { /* RQ_ADC */ 2, /* RQ_ADC_DAC_STROKE */ 9, /* RQ_PWM_SET_FREQ */ 5, - /* RQ_PWM_SET_VALUE */ 2 + /* RQ_PWM_SET_VALUE */ 2, + /* RQ_SET_REG */ 3, + /* RQ_GET_REG */ 2 }; /** @@ -65,5 +69,7 @@ void rqAnalogRead(void); void rqAdcDacStroke(void); void rqPwmSetFreq(void); void rqPwmSetValue(void); +void rqSetRegister(void); +void rqGetRegister(void); #endif // REQUESTS_H