B15F
Board 15 Famulus Edition
b15f.h
1 #ifndef B15F_H
2 #define B15F_H
3 
4 #include <iostream>
5 #include <bits/stdc++.h>
6 #include <string>
7 #include <fstream>
8 #include <cstdlib>
9 #include <chrono>
10 #include <cstdint>
11 #include <vector>
12 
13 #include <unistd.h>
14 #include <fcntl.h>
15 #include <sys/ioctl.h>
16 #include <termios.h>
17 
18 #include "requests.h"
19 #include "usart.h"
20 #include "driverexception.h"
21 #include "timeoutexception.h"
22 
23 // wichtig für die Register-Zugriffe
24 #define _AVR_IO_H_ 1 // Erzwinge die Inklusion
25 #include "/usr/lib/avr/include/avr/sfr_defs.h"
26 #include "/usr/lib/avr/include/avr/iom1284p.h"
27 
28 typedef std::function<void(std::exception&)> errorhandler_t;
29 
30 
33 class B15F
34 {
35 public:
36 
37  /*************************************
38  * Grundfunktionen des B15F Treibers *
39  *************************************/
40 
45  static B15F& getInstance(void);
46 
51  void reconnect(void);
52 
57  void discard(void);
58 
63  bool testConnection(void);
64 
69  bool testIntConv(void);
70 
75  std::vector<std::string> getBoardInfo(void);
76 
81  void delay_ms(uint16_t ms);
82 
87  void delay_us(uint16_t us);
88 
94  void reverse(uint8_t& b);
95 
100  static std::string exec(std::string cmd);
101 
106  static void abort(std::string msg);
107 
112  static void abort(std::exception& ex);
113 
118  static void setAbortHandler(errorhandler_t func);
119 
120  /*************************************/
121 
122 
123 
124  /*************************
125  * Steuerbefehle für B15 *
126  *************************/
127 
133  bool activateSelfTestMode(void);
134 
140  bool digitalWrite0(uint8_t);
141 
147  bool digitalWrite1(uint8_t);
148 
154  uint8_t digitalRead0(void);
155 
161  uint8_t digitalRead1(void);
162 
168  uint8_t readDipSwitch(void);
169 
175  bool analogWrite0(uint16_t port);
176 
182  bool analogWrite1(uint16_t port);
183 
189  uint16_t analogRead(uint8_t channel);
190 
206  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);
207 
216  uint8_t pwmSetFrequency(uint32_t freq);
217 
223  bool pwmSetValue(uint8_t value);
224 
234  bool setMem8(volatile uint16_t* adr, uint8_t val);
235 
243  uint8_t getMem8(volatile uint16_t* adr);
244 
254  bool setMem16(volatile uint16_t* adr, uint16_t val);
255 
263  uint16_t getMem16(volatile uint16_t* adr);
264 
274  bool setRegister(volatile uint8_t* adr, uint8_t val);
275 
283  uint8_t getRegister(volatile uint8_t* adr);
284 
285  /*************************/
286 
287 
288  // CONSTANTS
289  const std::string PRE = "[B15F] ";
290  constexpr static uint8_t MSG_OK = 0xFF;
291  constexpr static uint8_t MSG_FAIL = 0xFE;
292  constexpr static uint16_t RECONNECT_TIMEOUT = 64;
293  constexpr static uint16_t WDT_TIMEOUT = 15;
294  constexpr static uint8_t RECONNECT_TRIES = 3;
295  constexpr static uint32_t BAUDRATE = 57600;
296 
297 private:
298 
302  B15F(void);
303 
308  void init(void);
309 
310  USART usart;
311  static B15F* instance;
312  static errorhandler_t errorhandler;
313 };
314 
315 #endif // B15F_H
B15F::exec
static std::string exec(std::string cmd)
Definition: b15f.cpp:145
B15F::MSG_FAIL
constexpr static uint8_t MSG_FAIL
Value to reject a received command.
Definition: b15f.h:289
B15F::getMem16
uint16_t getMem16(volatile uint16_t *adr)
Definition: b15f.cpp:481
B15F::delay_us
void delay_us(uint16_t us)
Definition: b15f.cpp:132
B15F::digitalRead0
uint8_t digitalRead0(void)
Definition: b15f.cpp:232
B15F::pwmSetFrequency
uint8_t pwmSetFrequency(uint32_t freq)
Definition: b15f.cpp:387
B15F::analogSequence
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)
Definition: b15f.cpp:330
B15F::testConnection
bool testConnection(void)
Definition: b15f.cpp:56
B15F::readDipSwitch
uint8_t readDipSwitch(void)
Definition: b15f.cpp:260
B15F::getRegister
uint8_t getRegister(volatile uint8_t *adr)
Definition: b15f.cpp:504
B15F::delay_ms
void delay_ms(uint16_t ms)
Definition: b15f.cpp:127
B15F::getInstance
static B15F & getInstance(void)
Definition: b15f.cpp:10
B15F
Definition: b15f.h:33
B15F::abort
static void abort(std::string msg)
Definition: b15f.cpp:161
USART
Definition: usart.h:16
B15F::analogRead
uint16_t analogRead(uint8_t channel)
Definition: b15f.cpp:307
B15F::digitalWrite0
bool digitalWrite0(uint8_t)
Definition: b15f.cpp:204
B15F::PRE
const std::string PRE
B15F stdout prefix.
Definition: b15f.h:287
B15F::reverse
void reverse(uint8_t &b)
Definition: b15f.cpp:137
B15F::activateSelfTestMode
bool activateSelfTestMode(void)
Definition: b15f.cpp:191
B15F::getBoardInfo
std::vector< std::string > getBoardInfo(void)
Definition: b15f.cpp:95
B15F::RECONNECT_TIMEOUT
constexpr static uint16_t RECONNECT_TIMEOUT
Time in ms after which a reconnect attempt aborts.
Definition: b15f.h:290
B15F::analogWrite1
bool analogWrite1(uint16_t port)
Definition: b15f.cpp:292
B15F::setMem16
bool setMem16(volatile uint16_t *adr, uint16_t val)
Definition: b15f.cpp:461
B15F::digitalWrite1
bool digitalWrite1(uint8_t)
Definition: b15f.cpp:218
B15F::pwmSetValue
bool pwmSetValue(uint8_t value)
Definition: b15f.cpp:407
B15F::discard
void discard(void)
Definition: b15f.cpp:33
B15F::setRegister
bool setRegister(volatile uint8_t *adr, uint8_t val)
Definition: b15f.cpp:499
B15F::MSG_OK
constexpr static uint8_t MSG_OK
Value to acknowledge a received command.
Definition: b15f.h:288
B15F::digitalRead1
uint8_t digitalRead1(void)
Definition: b15f.cpp:246
B15F::setMem8
bool setMem8(volatile uint16_t *adr, uint8_t val)
Definition: b15f.cpp:424
B15F::WDT_TIMEOUT
constexpr static uint16_t WDT_TIMEOUT
Time in ms after which the watch dog timer resets the MCU.
Definition: b15f.h:291
B15F::reconnect
void reconnect(void)
Definition: b15f.cpp:18
B15F::BAUDRATE
constexpr static uint32_t BAUDRATE
USART baudrate for communication with the MCU.
Definition: b15f.h:293
B15F::setAbortHandler
static void setAbortHandler(errorhandler_t func)
Definition: b15f.cpp:179
B15F::getMem8
uint8_t getMem8(volatile uint16_t *adr)
Definition: b15f.cpp:443
B15F::analogWrite0
bool analogWrite0(uint16_t port)
Definition: b15f.cpp:277
B15F::RECONNECT_TRIES
constexpr static uint8_t RECONNECT_TRIES
Maximum count of reconnect attempts after which the driver stops.
Definition: b15f.h:292
B15F::testIntConv
bool testIntConv(void)
Definition: b15f.cpp:75