-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRadio.cpp
More file actions
60 lines (52 loc) · 1.23 KB
/
Copy pathRadio.cpp
File metadata and controls
60 lines (52 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
Radio.cpp
Created by Alan T. Grier, 23 September 2019.
*/
#include "Radio.h"
// Wrapper around RadioHead Driver
Radio::Radio(int address, RH_RF69 &driver, int reset_pin) : _driver(driver)
{
_address = address;
_reset_pin = reset_pin;
}
// Wrapper around RadioHead init method. Must be called AFTER Serial.begin()
void Radio::init(float frequency)
{
Serial.flush();
pinMode(_reset_pin, OUTPUT);
digitalWrite(_reset_pin, LOW);
digitalWrite(_reset_pin, HIGH);
delay(10);
digitalWrite(_reset_pin, LOW);
delay(10);
_driver.init();
_driver.setThisAddress(_address);
_driver.setHeaderFrom(_address);
_driver.setFrequency(frequency);
_driver.setTxPower(20, true);
}
// Send message of length to address
bool Radio::send(char *message, uint8_t to)
{
_driver.setHeaderTo(to);
return _driver.send((uint8_t *)message, strlen(message) + 1);
}
// Receive message of length from address
bool Radio::receive(char *message, uint8_t *from, uint8_t *len)
{
if (available())
{
if (_driver.recv((uint8_t *)message, len))
{
if (from)
*from = _driver.headerFrom();
return true;
}
return false;
}
}
// Check if messages are available
bool Radio::available()
{
return _driver.available();
}