TS-E+ базовая библиотека.
libTSE+
 Указатель Классы Функции Переменные
board.h
1 /*
2  * board.h
3  *
4  * Created on: Apr 12, 2015
5  * Author: nick
6  */
7 
8 #ifndef BOARD_H_
9 #define BOARD_H_
10 
11 #include <stdint.h>
12 #include <stdlib.h>
13 #include <avr/io.h>
14 #include <avr/pgmspace.h>
15 #include "net.h"
16 
20 typedef struct {
21  uint32_t t32Mhz,t2Mhz;
23 
24 
28 class OUT {
29 private:
30  PORT_t *_port;
31  uint8_t _pin;
32  bool _on;
33 public:
34  OUT(PORT_t *port, const uint8_t pin): _port(port),_pin(pin) {
35  _port->OUTCLR = _pin;
36  _port->DIRSET = _pin;
37  _on = false;
38  }
39  void on() { _on = (_port->OUTSET = _pin); }
40  void off() { _on = !(_port->OUTCLR = _pin); }
41  void toggle() { _on ? off() : on(); }
42  bool isOn() { return _on; }
43 };
44 
48 class IN {
49 private:
50  PORT_t *_port;
51  uint8_t _pin;
52  bool _gc;
53 public:
59  IN(PORT_t *port, const uint8_t pin, bool gc = true);
60  bool isOn() {
61  return _gc ? !(_port->IN & _pin) : (_port->IN & _pin);
62  }
63 };
64 
68 #define GREEN 1
69 #define YELLOW 0
70 
74 #define nCS1(value) { \
75  if(value) PORTD.OUTCLR = PIN3_bm; else PORTD.OUTSET = PIN3_bm; \
76 }
77 
80 #define nCS2(value) { \
81  if(value) PORTD.OUTCLR = PIN2_bm; else PORTD.OUTSET = PIN2_bm; \
82 }
83 
84 
85 class SPI;
86 class Board;
87 
91 class USARTHandler {
92 public:
93  virtual void onCharReceived(const char ) = 0;
94  virtual ~USARTHandler() { }
95 };
99 class USART {
100 private:
101  USARTHandler *_handler;
102 public:
103  USART();
104  static const char * CLRSCR;
105  static const char * CRLF;
109  void setHandler(USARTHandler * handler) { _handler = handler; }
113  USART& speed(const uint32_t);
114  USART& operator << (const char);
115  USART& operator << (const char *);
116  USART& operator >> (char &);
120  void ISRHandler();
121 };
122 
126 class FlashRAM {
127 public:
128  FlashRAM() {};
129  static const size_t BLOCK_SIZE;
130 
133  virtual uint32_t size() = 0;
137  virtual void init() = 0;
138  virtual size_t read(const uint32_t address, void * buffer, size_t size) =0;
139  virtual size_t write(const uint32_t address, const void * buffer, size_t size) = 0;
143  virtual bool erase() = 0;
147  virtual uint16_t id() = 0;
151  virtual bool eraseBlock(const uint32_t address) = 0;
152  virtual ~FlashRAM() { };
156  virtual void shutdown() = 0;
157 
158 };
159 
160 
164 class SPI {
165 private:
166  SPI_t *_port;
167 public:
168  SPI();
169  SPI &operator >> (uint8_t &);
170  SPI &operator << (const uint8_t);
171  const uint8_t get() {
172  uint8_t b;
173  *this >> b;
174  return b;
175  }
176  SPI &read(void *buffer,size_t size) {
177  uint8_t *p = (uint8_t *)buffer;
178  for(size_t i=0;i<size;i++)
179  *this >> p[i];
180  return *this;
181  }
182  SPI &write(const void *buffer, size_t size) {
183  uint8_t *p = (uint8_t *)buffer;
184  for(size_t i=0;i<size;i++)
185  *this << p[i];
186  return *this;
187  }
188 };
189 
190 
194 class Board {
195 private:
196  OUT _yellow, _green;
197  bool _perfomance;
198  IN _button;
199 public:
200  Board();
205  OUT *led(const uint8_t which);
209  const uint32_t getTicksCount();
214  void setHiPerfomance(bool is32);
219  return _button.isOn();
220  }
224  size_t getFreeMem();
228  void reboot();
229 };
230 
231 extern class USART *USART;
232 extern class SPI *SPI;
233 extern FlashRAM *FLASH;
234 extern Board *System;
235 extern PerfomanceTime perfomanceStats;
236 
237 #endif /* BOARD_H_ */
Definition: board.h:20
virtual void shutdown()=0
Definition: board.h:126
Definition: board.h:28
virtual bool erase()=0
bool isButtonPressed()
Definition: board.h:218
void ISRHandler()
Definition: board.h:194
virtual uint32_t size()=0
OUT * led(const uint8_t which)
Definition: board.h:164
virtual void init()=0
Definition: board.h:91
void setHandler(USARTHandler *handler)
Definition: board.h:109
Definition: board.h:99
void reboot()
IN(PORT_t *port, const uint8_t pin, bool gc=true)
USART & speed(const uint32_t)
Definition: board.h:48
virtual uint16_t id()=0
size_t getFreeMem()
static const size_t BLOCK_SIZE
размер минимально стираемого блока
Definition: board.h:128
virtual bool eraseBlock(const uint32_t address)=0
void setHiPerfomance(bool is32)
const uint32_t getTicksCount()