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 
24 class B15F
25 {
26 private:
27  // privater Konstruktor
28  B15F(void);
29 public:
30 
31  /*************************************
32  * Grundfunktionen des B15F Treibers *
33  *************************************/
34 
39  void init(void);
40 
45  void reconnect(void);
46 
51  void discard(void);
52 
57  bool testConnection(void);
58 
63  bool testIntConv(void);
64 
69  std::vector<std::string> getBoardInfo(void);
70 
75  void delay_ms(uint16_t ms);
76 
81  void delay_us(uint16_t us);
82 
87  static B15F& getInstance(void);
88 
93  static std::string exec(std::string cmd);
94 
99  static void abort(std::string msg);
100 
105  static void abort(std::exception& ex);
106 
111  static void setAbortHandler(errorhandler_t func);
112 
113  /*************************************/
114 
115 
116 
117  /*************************
118  * Steuerbefehle für B15 *
119  *************************/
120 
126  bool activateSelfTestMode(void);
127 
133  bool digitalWrite0(uint8_t);
134 
140  bool digitalWrite1(uint8_t);
141 
147  uint8_t digitalRead0(void);
148 
154  uint8_t digitalRead1(void);
155 
161  uint8_t readDipSwitch(void);
162 
168  bool analogWrite0(uint16_t);
169 
175  bool analogWrite1(uint16_t);
176 
182  uint16_t analogRead(uint8_t channel);
183 
200  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);
201 
202  /*************************/
203 
204 
205  // CONSTANTS
206  const std::string PRE = "[B15F] ";
207  constexpr static uint8_t MSG_OK = 0xFF;
208  constexpr static uint8_t MSG_FAIL = 0xFE;
209  constexpr static uint16_t RECONNECT_TIMEOUT = 64; // ms
210  constexpr static uint16_t WDT_TIMEOUT = 15; // ms
211  constexpr static uint8_t RECONNECT_TRIES = 3;
212  constexpr static uint32_t BAUDRATE = 57600;
213 
214 private:
215 
216  USART usart;
217  static B15F* instance;
218  static errorhandler_t errorhandler;
219 
220  // REQUESTS
221  constexpr static uint8_t RQ_DISC = 0;
222  constexpr static uint8_t RQ_TEST = 1;
223  constexpr static uint8_t RQ_INFO = 2;
224  constexpr static uint8_t RQ_INT = 3;
225  constexpr static uint8_t RQ_ST = 4;
226  constexpr static uint8_t RQ_BA0 = 5;
227  constexpr static uint8_t RQ_BA1 = 6;
228  constexpr static uint8_t RQ_BE0 = 7;
229  constexpr static uint8_t RQ_BE1 = 8;
230  constexpr static uint8_t RQ_DSW = 9;
231  constexpr static uint8_t RQ_AA0 = 10;
232  constexpr static uint8_t RQ_AA1 = 11;
233  constexpr static uint8_t RQ_ADC = 12;
234  constexpr static uint8_t RQ_ADC_DAC_STROKE = 13;
235 };
236 
237 #endif // B15F_H
B15F::exec
static std::string exec(std::string cmd)
Definition: b15f.cpp:309
B15F::delay_us
void delay_us(uint16_t us)
Definition: b15f.cpp:295
B15F::digitalRead0
uint8_t digitalRead0(void)
Definition: b15f.cpp:172
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)
Komplexe Analoge Sequenz DAC 0 wird auf den Startwert gesetzt und dann schrittweise um Delta inkremen...
Definition: b15f.cpp:241
B15F::testConnection
bool testConnection(void)
Definition: b15f.cpp:90
B15F::readDipSwitch
uint8_t readDipSwitch(void)
Definition: b15f.cpp:190
B15F::delay_ms
void delay_ms(uint16_t ms)
Definition: b15f.cpp:290
B15F::analogWrite1
bool analogWrite1(uint16_t)
Definition: b15f.cpp:209
B15F::getInstance
static B15F & getInstance(void)
Definition: b15f.cpp:300
B15F
Definition: b15f.h:24
B15F::abort
static void abort(std::string msg)
Definition: b15f.cpp:322
USART
Definition: usart.h:16
B15F::analogRead
uint16_t analogRead(uint8_t channel)
Definition: b15f.cpp:219
B15F::digitalWrite0
bool digitalWrite0(uint8_t)
Definition: b15f.cpp:152
B15F::activateSelfTestMode
bool activateSelfTestMode(void)
Definition: b15f.cpp:144
B15F::getBoardInfo
std::vector< std::string > getBoardInfo(void)
Definition: b15f.cpp:118
B15F::digitalWrite1
bool digitalWrite1(uint8_t)
Definition: b15f.cpp:162
B15F::init
void init(void)
Definition: b15f.cpp:11
B15F::discard
void discard(void)
Definition: b15f.cpp:72
B15F::analogWrite0
bool analogWrite0(uint16_t)
Definition: b15f.cpp:199
B15F::digitalRead1
uint8_t digitalRead1(void)
Definition: b15f.cpp:181
B15F::reconnect
void reconnect(void)
Definition: b15f.cpp:57
B15F::setAbortHandler
static void setAbortHandler(errorhandler_t func)
Definition: b15f.cpp:339
B15F::testIntConv
bool testIntConv(void)
Definition: b15f.cpp:105