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 #include "usart.h"
18 #include "driverexception.h"
19 #include "timeoutexception.h"
20 
21 typedef std::function<void(std::exception&)> errorhandler_t;
22 
23 
26 class B15F
27 {
28 private:
29  // privater Konstruktor
30  B15F(void);
31 public:
32 
33  /*************************************
34  * Grundfunktionen des B15F Treibers *
35  *************************************/
36 
41  void reconnect(void);
42 
47  void discard(void);
48 
53  bool testConnection(void);
54 
59  bool testIntConv(void);
60 
65  std::vector<std::string> getBoardInfo(void);
66 
71  void delay_ms(uint16_t ms);
72 
77  void delay_us(uint16_t us);
78 
83  static B15F& getInstance(void);
84 
89  static std::string exec(std::string cmd);
90 
95  static void abort(std::string msg);
96 
101  static void abort(std::exception& ex);
102 
107  static void setAbortHandler(errorhandler_t func);
108 
109  /*************************************/
110 
111 
112 
113  /*************************
114  * Steuerbefehle für B15 *
115  *************************/
116 
122  bool activateSelfTestMode(void);
123 
129  bool digitalWrite0(uint8_t);
130 
136  bool digitalWrite1(uint8_t);
137 
143  uint8_t digitalRead0(void);
144 
150  uint8_t digitalRead1(void);
151 
157  uint8_t readDipSwitch(void);
158 
164  bool analogWrite0(uint16_t port);
165 
171  bool analogWrite1(uint16_t port);
172 
178  uint16_t analogRead(uint8_t channel);
179 
195  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);
196 
204  uint8_t pwmSetFrequency(uint32_t freq);
205 
211  bool pwmSetValue(uint8_t value);
212 
220  bool setRegister(uint8_t adr, uint8_t val);
221 
227  uint8_t getRegister(uint8_t adr);
228 
229  /*************************/
230 
231 
232  // CONSTANTS
233  const std::string PRE = "[B15F] ";
234  constexpr static uint8_t MSG_OK = 0xFF;
235  constexpr static uint8_t MSG_FAIL = 0xFE;
236  constexpr static uint16_t RECONNECT_TIMEOUT = 64;
237  constexpr static uint16_t WDT_TIMEOUT = 15;
238  constexpr static uint8_t RECONNECT_TRIES = 3;
239  constexpr static uint32_t BAUDRATE = 57600;
240 
241 private:
242 
247  void init(void);
248 
249  USART usart;
250  static B15F* instance;
251  static errorhandler_t errorhandler;
252 
253  // REQUESTS
254  constexpr static uint8_t RQ_DISC = 0;
255  constexpr static uint8_t RQ_TEST = 1;
256  constexpr static uint8_t RQ_INFO = 2;
257  constexpr static uint8_t RQ_INT = 3;
258  constexpr static uint8_t RQ_ST = 4;
259  constexpr static uint8_t RQ_BA0 = 5;
260  constexpr static uint8_t RQ_BA1 = 6;
261  constexpr static uint8_t RQ_BE0 = 7;
262  constexpr static uint8_t RQ_BE1 = 8;
263  constexpr static uint8_t RQ_DSW = 9;
264  constexpr static uint8_t RQ_AA0 = 10;
265  constexpr static uint8_t RQ_AA1 = 11;
266  constexpr static uint8_t RQ_ADC = 12;
267  constexpr static uint8_t RQ_ADC_DAC_STROKE = 13;
268  constexpr static uint8_t RQ_PWM_SET_FREQ = 14;
269  constexpr static uint8_t RQ_PWM_SET_VALUE = 15;
270  constexpr static uint8_t RQ_SET_REG = 16;
271  constexpr static uint8_t RQ_GET_REG = 17;
272 };
273 
274 #endif // B15F_H
B15F::exec
static std::string exec(std::string cmd)
Definition: b15f.cpp:439
B15F::MSG_FAIL
constexpr static uint8_t MSG_FAIL
Value to reject a received command.
Definition: b15f.h:233
B15F::getRegister
uint8_t getRegister(uint8_t adr)
Definition: b15f.cpp:402
B15F::delay_us
void delay_us(uint16_t us)
Definition: b15f.cpp:425
B15F::digitalRead0
uint8_t digitalRead0(void)
Definition: b15f.cpp:208
B15F::pwmSetFrequency
uint8_t pwmSetFrequency(uint32_t freq)
Definition: b15f.cpp:347
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:303
B15F::testConnection
bool testConnection(void)
Definition: b15f.cpp:95
B15F::readDipSwitch
uint8_t readDipSwitch(void)
Definition: b15f.cpp:236
B15F::delay_ms
void delay_ms(uint16_t ms)
Definition: b15f.cpp:420
B15F::setRegister
bool setRegister(uint8_t adr, uint8_t val)
Definition: b15f.cpp:384
B15F::getInstance
static B15F & getInstance(void)
Definition: b15f.cpp:430
B15F
Definition: b15f.h:26
B15F::abort
static void abort(std::string msg)
Definition: b15f.cpp:455
USART
Definition: usart.h:13
B15F::analogRead
uint16_t analogRead(uint8_t channel)
Definition: b15f.cpp:280
B15F::digitalWrite0
bool digitalWrite0(uint8_t)
Definition: b15f.cpp:180
B15F::PRE
const std::string PRE
B15F stdout prefix.
Definition: b15f.h:231
B15F::activateSelfTestMode
bool activateSelfTestMode(void)
Definition: b15f.cpp:167
B15F::getBoardInfo
std::vector< std::string > getBoardInfo(void)
Definition: b15f.cpp:134
B15F::RECONNECT_TIMEOUT
constexpr static uint16_t RECONNECT_TIMEOUT
Time in ms after which a reconnect attempt aborts.
Definition: b15f.h:234
B15F::analogWrite1
bool analogWrite1(uint16_t port)
Definition: b15f.cpp:265
B15F::digitalWrite1
bool digitalWrite1(uint8_t)
Definition: b15f.cpp:194
B15F::pwmSetValue
bool pwmSetValue(uint8_t value)
Definition: b15f.cpp:367
B15F::discard
void discard(void)
Definition: b15f.cpp:72
B15F::MSG_OK
constexpr static uint8_t MSG_OK
Value to acknowledge a received command.
Definition: b15f.h:232
B15F::digitalRead1
uint8_t digitalRead1(void)
Definition: b15f.cpp:222
B15F::WDT_TIMEOUT
constexpr static uint16_t WDT_TIMEOUT
Time in ms after which the watch dog timer resets the MCU.
Definition: b15f.h:235
B15F::reconnect
void reconnect(void)
Definition: b15f.cpp:57
B15F::BAUDRATE
constexpr static uint32_t BAUDRATE
USART baudrate for communication with the MCU.
Definition: b15f.h:237
B15F::setAbortHandler
static void setAbortHandler(errorhandler_t func)
Definition: b15f.cpp:473
B15F::analogWrite0
bool analogWrite0(uint16_t port)
Definition: b15f.cpp:250
B15F::RECONNECT_TRIES
constexpr static uint8_t RECONNECT_TRIES
Maximum count of reconnect attempts after which the driver stops.
Definition: b15f.h:236
B15F::testIntConv
bool testIntConv(void)
Definition: b15f.cpp:114