MBee Arduino library
MBee.h
1 /* "Системы модули и компоненты" ("СМК"). 2020. Москва.
2 Библиотека MBee-Arduino.
3 Распространяется свободно. Надеемся, что программные продукты, созданные
4 с помощью данной библиотеки будут полезными, однако никакие гарантии, явные или
5 подразумеваемые не предоставляются.
6 
7 The MIT License(MIT)
8 
9 MBee-Arduino Library.
10 Copyright © 2020 Systems, modules and components. Moscow. Russia.
11 
12 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
13 documentation files(the "Software"), to deal in the Software without restriction, including without limitation
14 the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software,
15 and to permit persons to whom the Software is furnished to do so, subject to the following conditions :
16 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
18 WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE AUTHORS OR
19 COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
20 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 
22 Code adapted from XBee-Arduino library XBee.h. Copyright info below.
23 * @file XBee.h
24 * @author Andrew Rapp
25 * @license This project is released under the GNU License
26 * @copyright Copyright (c) 2009 Andrew Rapp. All rights reserved
27 * @date 2009
28 * @brief Interface to the wireless XBee modules
29 */
30 
31 #ifndef MBee_h
32 #define MBee_h
33 
34 #if defined(ARDUINO) && ARDUINO >= 100
35  #include "Arduino.h"
36 #else
37  #include "WProgram.h"
38 #endif
39 
40 #include <inttypes.h>
41 
42 //01.01.2011 0:00:00 //Начало эпохи для всех проектов "СМК".
43 #define SYSMC_BASE_YEAR 2011
44 #define SYSMC_BASE_DAY_OF_WEEK 6 //Тогда была суббота...
45 
46 //Кодирование рабочего диапазона.
47 #define FREQ_2400 0x00
48 #define FREQ_868 0x40
49 #define FREQ_433 0x80
50 #define FREQ_868_2400 0xC0
51 
52 //Кодирование вариантов модулей.
53 #define CC2530F256_CC2591 0x20
54 #define CC2530F256_NO_AMP 0x30
55 #define CC430F5137_NO_AMP 0x00
56 #define CC430F5137_CC1190 0x0C
57 #define CC430F5137_RF5838 0x1C
58 #define CC1310_NO_AMP 0x24
59 #define CC1350_NO_AMP 0x28
60 
61 //Кодирование ревизий модулей.
62 #define REV_0 0x00
63 #define REV_1 0x01
64 #define REV_2 0x02
65 #define REV_3 0x03
66 
67 //Идентификаторы модулей.
68 #define MODULE_MBee3_0 (FREQ_2400|CC2530F256_NO_AMP|REV_0)
69 #define MODULE_MBee3_1 (FREQ_2400|CC2530F256_NO_AMP|REV_1)
70 #define MODULE_MBee2_1 (FREQ_2400|CC2530F256_CC2591|REV_1)
71 #define MODULE_MBee_S1G_3_0_CC430_ext (FREQ_868|CC430F5137_NO_AMP|REV_0)
72 #define MODULE_EM_CC430F5137_900 (FREQ_868|CC430F5137_NO_AMP|REV_1)
73 #define MODULE_MBee_S1G_3_0_CC1110_ext (FREQ_868|CC1110F32_NO_AMP|REV_0)
74 #define MODULE_MBee_S1G_2_0_CC1110_ext (FREQ_868|CC1110F32_CC1190|REV_0)
75 #define MODULE_MBee_S1G_2_0_CC430_ext (FREQ_868|CC430F5137_CC1190|REV_0)
76 #define MODULE_MBP_SIG_1_0_CC430_ext (FREQ_868|CC430F5137_RF5838|REV_0)
77 #define MODULE_MBee_DUAL_3_3_CC1310 (FREQ_868|CC1310_NO_AMP|REV_3)
78 #define MODULE_MBee_DUAL_3_3_CC1350 (FREQ_868_2400|CC1350_NO_AMP|REV_3)
79 
80 //Компилятор C++11 имеет возможность оптимизации при использовании ключевого слова constexpr за счет исключения инициализационного кода для глобальных объектов. Для
81 //поддержки более старых версий компилятором это ключевое слово исключается.
82 #if __cplusplus >= 201103L
83  #define CONSTEXPR constexpr
84 #else
85  #define CONSTEXPR
86 #endif
87 
88 //Константа, возвращаемая методами классов, использующие обратный вызов (сallbacks-функции), если заданный тип API-фрейма не принят за фиксированное время.
89 #define MBEE_WAIT_TIMEOUT 0xFF
90 
114 class MBee
115 {
116 public:
130  virtual void readPacket() = 0;
131 
137  virtual bool readPacket(int timeout) = 0;
138 
144  virtual void readPacketUntilAvailable() = 0;
145 
151  virtual void send(void*) = 0;
152 
156  void begin(Stream &serial);
157 
161  void setSerial(Stream &serial);
162 
166  bool available();
167 
171  uint8_t read();
172 
176  void write(uint8_t val);
177  Stream* _serial;
178 };
179 
183 class MBee868 : public MBee
184 {
185 };
186 
190 class MBee2400 : public MBee
191 {
192 };
193 
198 {
199 public:
200  CONSTEXPR MBeeAddress()
201  {
202 
203  };
204 };
205 
209 class MBeeAddress16 : public MBeeAddress
210 {
211 public:
215  MBeeAddress16();
216 
220  MBeeAddress16(uint16_t addr);
221 
225  uint16_t getAddress();
226 
230  void setAddress(uint16_t addr);
231 private:
232  uint16_t _addr;
233 };
234 
235 //Подключение библиотек проектов.
236 #include "includes\SerialStar.h"
237 #include "includes\MB-ZigBee.h"
238 
239 #endif //MBee_h
240 
241 
virtual void readPacket()=0
Чтение всех байт, имеющихся в приемном буфере UART.
Основной интерфейс для связи с радиомодулями MBee всех серий.
Definition: MBee.h:114
Базовый класс для работы с модулями диапазона 2,4 ГГц.
Definition: MBee.h:190
Производный от MBeeAddress класс для 16-ти битного адреса модема.
Definition: MBee.h:209
uint8_t read()
Считывает 1 байт из входного буфера UART.
Definition: MBee.cpp:60
void write(uint8_t val)
Передает 1 байт по UART.
Definition: MBee.cpp:65
bool available()
Проверяет наличие принятых данных в буфере UART.
Definition: MBee.cpp:55
Базовый класс для работы с модулями диапазона 868 МГц.
Definition: MBee.h:183
virtual void readPacketUntilAvailable()=0
Ожидает приема пакета до тех пор, пока он не будет получен или не произойдет какая-либо ошибка...
void setSerial(Stream &serial)
Назначает последовательный порт.
Definition: MBee.cpp:50
virtual void send(void *)=0
Передача данных модулю или удаленному узлу.
Класс для представления адреса модема.
Definition: MBee.h:197
void begin(Stream &serial)
Инициализирует соединение с радиомодулем на заданном COM-порте.
Definition: MBee.cpp:45