94 SerialWombatPinState_t activeState=
SW_LOW, uint16_t publicDataTimeoutPeriod_mS = 1000, uint16_t publicDataTimeoutValue = 0xFFFF,
bool useAddressFilter =
false, uint16_t addressFilterValue = 0x1234)
98 int16_t returnValue = 0;
102 useRepeat ? (uint8_t)1 : (uint8_t)0,
103 (uint8_t)activeState,
104 (uint8_t)(addressFilterValue & 0xFF), (uint8_t)((addressFilterValue >> 8) & 0xFF), };
105 returnValue =
_sw.sendPacket(tx);
112 uint8_t tx[] { 201,
_pin,
_pinMode, (uint8_t)(publicDataTimeoutPeriod_mS & 0xFF), (uint8_t)((publicDataTimeoutPeriod_mS >> 8) & 0xFF),
113 (uint8_t)(publicDataTimeoutValue & 0xFF), (uint8_t)((publicDataTimeoutValue >> 8) & 0xFF), useAddressFilter ? (uint8_t)1 : (uint8_t)0
116 returnValue =
_sw.sendPacket(tx);
123 uint8_t tx[] { 205,
_pin,
_pinMode, (uint8_t)dataOutput,
124 0x55,0x55,0x55,0x55};
126 returnValue =
_sw.sendPacket(tx);
141 uint8_t tx[8] = { 201,
_pin,
_pinMode, 0,0x55,0x55,0x55,0x55 };
143 _sw.sendPacket(tx, rx);
153 uint8_t tx[8] = { 202,
_pin,
_pinMode, 1,0x55,0x55,0x55,0x55 };
155 if (
_sw.sendPacket(tx, rx) < 0)
180 uint8_t tx[8] = { 203,
_pin,
_pinMode,0x55,0x55,0x55,0x55,0x55 };
182 _sw.sendPacket(tx, rx);
215 size_t write(
const uint8_t* buffer,
size_t size)
243 int bytesAvailable = 0;
244 uint32_t timeoutMillis = millis() +
timeout;
245 while (length > 0 && timeoutMillis > millis())
254 uint8_t tx[8] = { 202,
_pin,
_pinMode, (uint8_t)bytecount,0x55,0x55,0x55,0x55 };
256 _sw.sendPacket(tx, rx);
257 bytesAvailable = rx[3];
259 if (bytesAvailable == 0)
265 timeoutMillis = millis() +
timeout;
267 uint8_t bytesReturned = bytecount;
268 if (rx[3] < bytecount)
270 bytesReturned = rx[3];
272 for (
int i = 0; i < bytesReturned; ++i)
274 buffer[index] = rx[i + 4];
316 uint8_t tx[8] = { 204,
_pin,
_pinMode, 0x55,0x55,0x55,0x55,0x55 };
318 _sw.sendPacket(tx, rx);
319 uint16_t returnVal = rx[4];
330 uint8_t tx[8] = { 204,
_pin,
_pinMode, 0x55,0x55,0x55,0x55,0x55 };
332 _sw.sendPacket(tx, rx);
333 uint16_t returnVal = rx[6];
Class for a Serial Wombat chip. Each Serial Wombat chip on a project should have its own instance.
void setTimeout(long timeout_mS)
implemented to fulfill Stream requirement.
int peek()
Query the SerialWombatIRRx queue for the next avaialble byte, but don't remove it from the queue.
SerialWombatIRRx & operator=(SerialWombatIRRx &irrx)
used to allow reference copy. Not for user use.
int available()
Returns the number of bytes available in the SerialWombatIRRx queue.
size_t readBytes(char *buffer, size_t length)
Reads a specified number of bytes from the SerialWombatIRRx queue queue.
@ COMMAND
The last 8 bit command received (address filtered if enabled)
@ ADDRESS
the last 16 bit address received. Not Address filtered
@ DATACOUNT
The number of data that have been queued (Affected by address filtering and repeat settings)
void flush()
Discard all bytes from the SerialWombatIRRx queue.
size_t write(const uint8_t *buffer, size_t size)
Write bytes to the SerialWombatIRRx queue (Does nothing)
uint16_t readDataCount()
Returns the total number of queued commands (rolls over at 65535)
int16_t begin(uint8_t pin, SerialWombatIRRx::publicDataOutput dataOutput=SerialWombatIRRx::publicDataOutput::DATACOUNT, uint8_t irMode=0, bool useRepeat=true, SerialWombatPinState_t activeState=SW_LOW, uint16_t publicDataTimeoutPeriod_mS=1000, uint16_t publicDataTimeoutValue=0xFFFF, bool useAddressFilter=false, uint16_t addressFilterValue=0x1234)
Initalize the SerialWombatIRRx.
SerialWombatIRRx(SerialWombatChip &serialWombatChip)
Constructor for the SerialWombatIRRx class.
int read()
Reads a byte from the SerialWombatIRRx queue.
uint16_t readAddress()
Returns the address of the last received IR command.
int availableForWrite()
Number of bytes avaialble to write to SerialWombatIRRx queue. Returns 0.
size_t write(uint8_t data)
Write a byte to the SerialWombatIRRx queue (Does Nothing)
SerialWombatPin(SerialWombatChip &serialWombatChip)
Instantiates a Serial Wombat Pin.
uint8_t pin()
Returns the current SW pin number. Used primarily for virtual calls by derived classes.