37void delay100ms(
void) __attribute__((weak));
38extern void delay100ms(
void);
41#if defined(ARDUINO_ARCH_AVR)
42#include <util/delay.h>
44static int8_t _rfTxPort = -1;
45static int8_t _rfTxBit = -1;
60#define RF_TX_PIN_INIT(rfTxPin) { \
61 _rfTxPort = digitalPinToPort(rfTxPin); \
62 _rfTxBit = digitalPinToBitMask(rfTxPin); \
63 *portModeRegister(_rfTxPort) |= _rfTxBit; \
70#define RF_TX_PIN_DISABLE() { \
71 if ((_rfTxPort >= 0) && (_rfTxBit >= 0)) { \
72 *portModeRegister(_rfTxPort) &= ~_rfTxBit; \
81#define IS_RF_TX_PIN_INITIALIZED() ((_rfTxPort >= 0) && (_rfTxBit >= 0))
87#define RF_TX_PIN_HIGH() { *portOutputRegister(_rfTxPort) |= _rfTxBit; }
93#define RF_TX_PIN_LOW() { *portOutputRegister(_rfTxPort) &= ~_rfTxBit; }
99#define RF_TX_DELAY_US(us) _delay_us(us)
105#define RF_TX_DELAY_MS(ms) _delay_ms(ms)
107#elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
108static int8_t _rfTxPin = -1;
116#define RF_TX_PIN_INIT(rfTxPin) { \
118 pinMode(_rfTxPin, OUTPUT); \
125#define RF_TX_PIN_DISABLE() { \
126 if (_rfTxPin >= 0) { \
127 pinMode(_rfTxPin, INPUT); \
136#define IS_RF_TX_PIN_INITIALIZED() (_rfTxPin >= 0)
142#define RF_TX_PIN_HIGH() { digitalWrite(_rfTxPin, HIGH); }
148#define RF_TX_PIN_LOW() { digitalWrite(_rfTxPin, LOW); }
154#define RF_TX_DELAY_US(us) delayMicroseconds(us)
160#define RF_TX_DELAY_MS(ms) delay(ms)
162#error "May work, but not tested on this target"
175 RF_TX_DELAY_US(T_SYNC_US);
177 RF_TX_DELAY_US(T_SYNC_US);
187 RF_TX_DELAY_US(T_BIT_US);
189 RF_TX_DELAY_US(T_BIT_US);
199 RF_TX_DELAY_US(T_BIT_US);
201 RF_TX_DELAY_US(T_BIT_US);
207static void txDisable()
216static void txPreamble()
219 for (uint8_t i = 0; i < 12; i++) {
222 RF_TX_DELAY_US(T_PREAMBLE_SPACE_US);
226static void txData(uint32_t data)
229 for (uint8_t i = 0; i < 32; i++) {
230 if (data & (1UL << i)) {
251 RF_TX_PIN_INIT(rfTxPin);
273 if (!IS_RF_TX_PIN_INITIALIZED()) {
uint32_t OregonTHN128_DataToRaw(OregonTHN128Data_t *data)
Convert data structure to 32-bit raw data.
void OregonTHN128_TxRawData(uint32_t rawData)
Transmit data.
void OregonTHN128_Transmit(OregonTHN128Data_t *data)
Transmit Transmit data.
void OregonTHN128_TxBegin(uint8_t rfTxPin)
Transmit begin.
void OregonTHN128_TxEnd(void)
Disable transmit.
Oregon THN128 433MHz temperature transmit library for Arduino.