B15F
Board 15 Famulus Edition
|
5 #include <bits/stdc++.h> 15 #include <sys/ioctl.h> 18 #include "commit_hash.h" 21 #include "driverexception.h" 22 #include "timeoutexception.h" 25 #define _AVR_IO_H_ 1 // Erzwinge die Inklusion 26 #include "/usr/lib/avr/include/avr/sfr_defs.h" 27 #include "/usr/lib/avr/include/avr/iom1284p.h" 29 typedef std::function<void(std::exception&)> errorhandler_t;
32 #define assertCode(code, expectation) assertCodeFunc(code, expectation, &__FUNCTION__[0], &__FILE__[0], __LINE__) 33 #define assertRequestLength(rq, rq_num) assertRequestLengthFunc(rq, rq_num,& __FUNCTION__[0], &__FILE__[0], __LINE__) 105 static std::string
exec(std::string cmd);
111 static void abort(std::string msg);
117 static void abort(std::exception& ex);
211 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);
239 void setMem8(
volatile uint8_t* adr, uint8_t val);
247 uint8_t
getMem8(
volatile uint8_t* adr);
257 void setMem16(
volatile uint16_t* adr, uint16_t val);
265 uint16_t
getMem16(
volatile uint16_t* adr);
274 void setRegister(
volatile uint8_t* adr, uint8_t val);
312 const std::string
PRE =
"[B15F] ";
318 constexpr
static uint32_t
BAUDRATE = 57600;
338 template<
typename CodeType,
typename ExpectationType>
339 void assertCodeFunc(CodeType& code, ExpectationType expectation,
const char* func,
const char* file,
int line)
const 341 if(code != static_cast<CodeType>(expectation))
342 throw DriverException(
"Ungültige Antwort erhalten: " + std::to_string((
int) code) +
" (erwartet: " + std::to_string((
int) expectation) +
") in " + std::string(func) +
": " + std::string(file) +
"#" + std::to_string(line));
350 template<
size_t RequestLength>
351 void assertRequestLengthFunc(uint8_t (&)[RequestLength], uint8_t rq_num,
const char* func,
const char* file,
int line)
353 if(RequestLength != rq_len[rq_num])
354 throw DriverException(
"Ungültige Request Länge: " + std::to_string(RequestLength) +
" (erwartet: " + std::to_string(rq_len[rq_num]) +
") in " + std::string(func) +
": " + std::string(file) +
"#" + std::to_string(line));
358 static B15F* instance;
359 static errorhandler_t errorhandler;
void pwmSetValue(uint8_t value)
static std::string exec(std::string cmd)
constexpr static uint8_t MSG_FAIL
Value to reject a received command.
void analogWrite0(uint16_t port)
void setServoPosition(uint16_t pos)
void analogWrite1(uint16_t port)
uint16_t getMem16(volatile uint16_t *adr)
void delay_us(uint16_t us)
uint8_t digitalRead0(void)
uint8_t pwmSetFrequency(uint32_t freq)
void digitalWrite0(uint8_t)
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)
uint8_t readDipSwitch(void)
uint8_t getRegister(volatile uint8_t *adr)
uint8_t getMem8(volatile uint8_t *adr)
void delay_ms(uint16_t ms)
void testConnection(void)
static B15F & getInstance(void)
static void abort(std::string msg)
uint16_t * getInterruptCounterOffset(void)
void setMem16(volatile uint16_t *adr, uint16_t val)
uint16_t analogRead(uint8_t channel)
void activateSelfTestMode(void)
const std::string PRE
B15F stdout prefix.
std::vector< std::string > getBoardInfo(void)
constexpr static uint16_t RECONNECT_TIMEOUT
Time in ms after which a reconnect attempt aborts.
void setRegister(volatile uint8_t *adr, uint8_t val)
constexpr static uint8_t MSG_OK
Value to acknowledge a received command.
uint8_t digitalRead1(void)
constexpr static uint16_t WDT_TIMEOUT
Time in ms after which the watch dog timer resets the MCU.
constexpr static uint32_t BAUDRATE
USART baudrate for communication with the MCU.
static void setAbortHandler(errorhandler_t func)
void digitalWrite1(uint8_t)
void setServoEnabled(void)
constexpr static uint8_t RECONNECT_TRIES
Maximum count of reconnect attempts after which the driver stops.
void setMem8(volatile uint8_t *adr, uint8_t val)
void setServoDisabled(void)