 |
Serial Wombat Arduino Library
|
Go to the documentation of this file. 1 #ifndef SERIAL_WOMBAT_H__
2 #define SERIAL_WOMBAT_H__
31 #include "HardwareSerial.h"
167 #define ERROR_HOST_INCORRECT_NUMBER_BYTES_WRITTEN 0x10000
168 #define ERROR_HOST_DATA_TOO_LONG 0x10001
169 #define ERROR_HOST_NACK_ADDRESS 0x10002
170 #define ERROR_HOST_NACK_DATA 0x10003
171 #define ERROR_HOST_OTHER_I2C_ERROR 0x10004
173 #define WOMBAT_MAXIMUM_PINS 20
278 int16_t
begin(HardwareSerial &serial);
290 int16_t
begin(HardwareSerial& serial,
bool reset);
300 int16_t
begin(TwoWire &wire, uint8_t i2cAddress);
309 int16_t
begin(uint8_t i2cAddress);
322 int16_t
begin(TwoWire& wire, uint8_t i2cAddress,
bool reset);
420 void pinMode(uint8_t pin, uint8_t mode);
429 void pinMode(uint8_t pin, uint8_t mode,
bool pullDown,
bool openDrain);
643 int readUserBuffer(uint16_t index, uint8_t* buffer, uint16_t count);
666 static uint8_t
find(
bool keepTrying =
false);
684 int16_t
echo(uint8_t data[], uint8_t count = 7);
685 int16_t
echo(
char* data);
692 char version[8] = { 0 };
693 HardwareSerial * Serial = NULL;
694 TwoWire* i2cInterface = NULL;
699 bool _asleep =
false;
700 void configureDigitalPin(uint8_t pin, uint8_t highLow);
701 uint32_t sendReadyTime = 0;
702 int16_t initialize();
703 void readUniqueIdentifier();
704 void readDeviceIdentifier();
705 uint16_t returnErrorCode(uint8_t* rx);
712 #define SW_LE16(_a) (uint8_t)((_a) & 0xFF), (uint8_t)((_a) >>8)
715 #define SW_LE32(_a) (uint8_t)((_a) & 0xFF), (uint8_t)((_a) >>8) , (uint8_t)((_a) >>16), (uint8_t)((_a) >>24)
764 void pinMode(uint8_t mode,
bool pullDown,
bool openDrain);
@ SW_DATA_SOURCE_1HZ_SAW
(168) Sawtooth wave that goes from 0 to 65535 to 0 every 1024 frames
@ CONFIGURE_PIN_MODE10
(210)
@ CMD_READ_BUFFER_ASCII
('G')
Class for a Serial Wombat chip. Each Serial Wombat chip on a project should have its own instance.
Definition: SerialWombat.h:267
int16_t begin(HardwareSerial &serial)
initialize a Serial Wombat chip to use a Serial Interface.
Definition: SerialWombat.cpp:41
@ PIN_MODE_ANALOGINPUT
(2)
Definition: SerialWombat.h:232
@ COMMAND_READ_LAST_ERROR_PACKET
(0xA7)
@ COMMAND_ENABLE_2ND_UART
(0xA6)
void jumpToBoot()
Jump to Bootloader and wait for a UART download of new firmware.
Definition: SerialWombat.cpp:502
@ SW_DATA_SOURCE_PIN_8
(8) 16 bit public data provided by Pin 8
@ PIN_MODE_PULSE_ON_CHANGE
(25)
Definition: SerialWombat.h:251
@ PIN_MODE_SW18AB_CAPTOUCH
(22)
Definition: SerialWombat.h:248
@ PIN_MODE_UART1_RX_TX
(23)
Definition: SerialWombat.h:249
@ COMMAND_BINARY_QUEUE_INFORMATION
(0x94)
@ PIN_MODE_DEBOUNCE
(10)
Definition: SerialWombat.h:238
@ SW_DATA_SOURCE_1024mvCounts
(66) The number of ADC counts that result from a 1.024V reading
@ CONFIGURE_PIN_MODE0
(200)
void(* SerialWombatErrorHandler_t)(uint16_t errorNumber, SerialWombatChip *sw)
Definition: SerialWombat.h:260
@ COMMAND_UART0_RX_7BYTES
(0xB1)
int16_t lastErrorCode
The last error code returned as part of a protocol error message expressed as a positive integer.
Definition: SerialWombat.h:669
@ SW_DATA_SOURCE_PIN_9
(9) 16 bit public data provided by Pin 9
int digitalRead(uint8_t pin)
Reads the state of a Pin.
Definition: SerialWombat.cpp:434
int sendPacketNoResponse(uint8_t tx[])
Send an 8 byte packet to the Serial Wombat chip, don't wait for a response.
Definition: SerialWombat.cpp:278
SerialWombatPinMode_t
Definition: SerialWombat.h:229
int analogRead(uint8_t pin)
Configures pin as analog input and does an immediate A/D conversion.
Definition: SerialWombat.cpp:446
SerialWombatPin(SerialWombatChip &serialWombatChip)
Instantiates a Serial Wombat Pin.
Definition: SerialWombat.cpp:895
uint8_t swPinModeNumber()
Returns the Mode number. Used primarily by derived classes to populate packet data.
Definition: SerialWombat.h:793
@ SW_DATA_SOURCE_LFSR
(78) A Linear Feedback Shift Register that produces a Pseudo random sequence of 16 bit values
@ SW_DATA_SOURCE_PIN_15
(15) 16 bit public data provided by Pin 15
SerialWombatChip & _sw
Definition: SerialWombat.h:798
@ SW_DATA_SOURCE_PIN_16_MV
(116) Pin 16 public output expressed in mV (for analog modes only)
@ CONFIGURE_PIN_MODE7
(207)
void analogWrite(uint8_t pin, int val)
Set a pin to PWM output.
Definition: SerialWombat.cpp:454
@ PIN_MODE_WATCHDOG
(7)
Definition: SerialWombat.h:236
@ PIN_MODE_CONTROLLED
(1)
Definition: SerialWombat.h:231
@ PIN_MODE_SW_UART
(13)
Definition: SerialWombat.h:241
bool queryVersion()
Send a version request to the Serial Wombat chip.
Definition: SerialWombat.cpp:466
int16_t setThroughputPin(uint8_t pin)
Set a pin to be a throughput monitoring pin.
Definition: SerialWombat.cpp:565
uint16_t writePublicData(uint16_t value)
Write a 16 bit value to this pin.
Definition: SerialWombat.h:784
void pinMode(uint8_t mode)
Set pin to INPUT or OUTPUT.
Definition: SerialWombat.cpp:900
uint16_t readSupplyVoltage_mV(void)
Measure the Serial Wombat chip's Supply voltage.
Definition: SerialWombat.cpp:365
@ CONFIGURE_PIN_MODE3
(203)
bool inBoot
Set to true if boot mode is indicated by a version query.
Definition: SerialWombat.h:605
uint16_t _supplyVoltagemV
Definition: SerialWombat.h:578
@ PIN_MODE_RESISTANCEINPUT
(24)
Definition: SerialWombat.h:250
uint32_t readFramesExecuted()
Get the number of 1mS frames that have been executed since Serial Wombat chip reset.
Definition: SerialWombat.cpp:488
@ SW_DATA_SOURCE_2SEC_SAW
(171)Sawtooth wave that goes from 0 to 65535 to 0 every 2048 frames
@ SW_DATA_SOURCE_VBG_COUNTS_VS_VREF
(76) A/D conversion of VBG against VRef . Used for mfg calibration
@ PIN_MODE_TM1637
(11)
Definition: SerialWombat.h:239
void wake()
Called to send a dummy packet to the Serial Wombat chip to wake it from sleep and ready it for other ...
Definition: SerialWombat.cpp:537
@ SW_DATA_SOURCE_PIN_17_MV
(117) Pin 17 public output expressed in mV (for analog modes only)
@ PIN_MODE_PWM
(16)
Definition: SerialWombat.h:244
@ SW_DATA_SOURCE_2HZ_SAW
(165) Sawtooth wave that goes from 0 to 65535 to 0 every 512 frames
@ COMMAND_BINARY_WRITE_RAM
(0xA3)
@ COMMAND_BINARY_WRITE_USER_BUFFER
(0x84)
@ CONFIGURE_PIN_MODE8
(208)
@ COMMAND_UART1_TX_7BYTES
(0xB2)
@ SW_DATA_SOURCE_PIN_4_MV
(104) Pin 4 public output expressed in mV (for analog modes only)
@ PIN_MODE_SERVO
(3)
Definition: SerialWombat.h:233
@ SW_DATA_SOURCE_SYSTEM_UTILIZATION
(74) A number between 0 and 65535 that scales to the average length of pin processing frames between ...
@ COMMAND_BINARY_QUEUE_READ_BYTES
(0x93)
@ CONFIGURE_PIN_MODE4
(204)
void SerialWombatSerialErrorHandlerBrief(uint16_t error, SerialWombatChip *sw)
a sample error handler that can be registered with registerErrorHandler to report protocol errors on ...
Definition: SerialWombat.cpp:955
SerialWombatChip()
Definition: SerialWombat.cpp:30
@ SW_DATA_SOURCE_65SEC_SAW
(177 )Sawtooth wave that goes from 0 to 65535 to 0 every 65536 frames
void hardwareReset()
Send a reset command to the Serial Wombat chip.
Definition: SerialWombat.cpp:404
@ PIN_MODE_PULSETIMER
(18)
Definition: SerialWombat.h:246
uint8_t uniqueIdentifierLength
Definition: SerialWombat.h:593
int digitalRead()
Reads the state of the Pin.
Definition: SerialWombat.cpp:923
int16_t eraseFlashPage(uint32_t address)
Erases a page in flash. Intended for use with the Bootloader, not by end users outside of bootloading...
Definition: SerialWombat.cpp:548
int16_t readLastErrorCommand(uint8_t *cmd)
Returns the last Serial Wombat command that produced a protocol error.
Definition: SerialWombat.cpp:928
@ SW_DATA_SOURCE_NONE
(255 ) Used to mean "No Source Selected"
@ SW_HIGH
Definition: SerialWombat.h:43
@ SW_DATA_SOURCE_PIN_2
(2) 16 bit public data provided by Pin 2
static uint8_t find(bool keepTrying=false)
Search the I2C Bus addresses 0x68 to 0x6F for I2C devices, and test to see if they respond to Serial ...
Definition: SerialWombat.cpp:572
@ SW_DATA_SOURCE_FRAMES_RUN_LSW
(67) The number of frames run since reset, least significant 16 bits
@ SW_DATA_SOURCE_DROPPED_FRAMES
(73) The number of times since reset that a frame ran so far behind that it crossed two subsequent 1m...
@ COMMAND_BINARY_WRITE_USER_BUFFER_CONTINUE
(0x85)
@ SW_DATA_SOURCE_VCC_mVOLTS
(75) The system source voltage in mV
void digitalWrite(uint8_t pin, uint8_t val)
Set an output pin High or Low.
Definition: SerialWombat.cpp:428
@ SW_DATA_SOURCE_TEMPERATURE
(70)The internal core temperature expressed in 100ths deg C
@ CMD_SET_BUFFER_ASCII
('S')
@ SW_DATA_SOURCE_PIN_14
(14) 16 bit public data provided by Pin 14
@ PIN_MODE_MATRIX_KEYPAD
(15)
Definition: SerialWombat.h:243
@ SW_DATA_SOURCE_PIN_0_MV
(100) Pin 0 public output expressed in mV (for analog modes only)
int readUserBuffer(uint16_t index, uint8_t *buffer, uint16_t count)
Read bytes from the User Memory Buffer in the Serial Wombat chip.
Definition: SerialWombat.cpp:611
uint16_t readOverflowFrames()
Get the number of times an overflow Frame has occured.
Definition: SerialWombat.cpp:497
@ CONFIGURE_PIN_MODE9
(209)
uint16_t deviceIdentifier
Definition: SerialWombat.h:597
@ SW_DATA_SOURCE_8SEC_SAW
(174)Sawtooth wave that goes from 0 to 65535 to 0 every 8192 frames
SerialWombatCommands
Definition: SerialWombat.h:175
uint16_t readPublicData(uint8_t pin)
Read the 16 Bit public data associated with a Serial Wombat Pin Mode.
Definition: SerialWombat.cpp:692
Describes a Serial Wombat Pin. Is base class for other pin modes.
Definition: SerialWombat.h:727
@ SW_DATA_SOURCE_PIN_0
(0) 16 bit public data provided by Pin 0
uint32_t readFlashAddress(uint32_t address)
Read Address from Flash based on 32 bit address.
Definition: SerialWombat.cpp:522
int16_t readTemperature_100thsDegC(void)
Measure the Serial Wombat chip's internal temperature.
Definition: SerialWombat.cpp:387
uint8_t uniqueIdentifier[16]
Definition: SerialWombat.h:589
#define WOMBAT_MAXIMUM_PINS
Definition: SerialWombat.h:173
@ CONFIGURE_CHANNEL_MODE_HW_3
(223)
void pinMode(uint8_t pin, uint8_t mode)
Set a pin to INPUT or OUTPUT.
Definition: SerialWombat.cpp:411
int16_t writeFlashRow(uint32_t address)
Writes a row in flash. Intended for use with the Bootloader, not by end users outside of bootloading ...
Definition: SerialWombat.cpp:557
uint16_t errorCount
Incremented every time a communication or command error is detected.
Definition: SerialWombat.h:602
uint8_t readRamAddress(uint16_t address)
Read Address from RAM based on 16 bit address.
Definition: SerialWombat.cpp:508
uint8_t _pinMode
Definition: SerialWombat.h:799
uint32_t readBirthday()
Definition: SerialWombat.cpp:852
@ SW_DATA_SOURCE_PIN_3
(3) 16 bit public data provided by Pin 3
int16_t writeRamAddress(uint16_t address, uint8_t value)
Write byte to Address in RAM based on 16 bit address.
Definition: SerialWombat.cpp:516
@ COMMAND_BINARY_READ_FLASH
(0xA1)
@ SW_DATA_SOURCE_PACKETS_RECEIVED
(71) The nubmer of incoming command packets that have been processed since reset (rolls over at 65535...
@ CONFIGURE_CHANNEL_MODE_HW_2
(222)
int sendPacket(uint8_t tx[], uint8_t rx[])
Send an 8 byte packet to the Serial Wombat chip and wait for 8 bytes back.
Definition: SerialWombat.cpp:174
@ CONFIGURE_PIN_MODE_HW_0
(220)
@ PIN_MODE_WS2812
(12)
Definition: SerialWombat.h:240
@ PIN_MODE_UNKNOWN
(0xFF)
Definition: SerialWombat.h:255
@ COMMAND_CALIBRATE_ANALOG
(0xA5)
@ SW_DATA_SOURCE_PIN_10
(10) 16 bit public data provided by Pin 10
@ COMMAND_BINARY_WRITE_FLASH
(0xA4)
uint16_t deviceRevision
Definition: SerialWombat.h:600
uint16_t readPublicData()
Read the 16 Bit public data associated with this pin.
Definition: SerialWombat.h:743
@ SW_DATA_SOURCE_PIN_16
(16) 16 bit public data provided by Pin 16
@ SW_DATA_SOURCE_PIN_1
(1) 16 bit public data provided by Pin 1
@ SW_DATA_SOURCE_2SEC_SQUARE
(170)Square wave that alternates between 0 and 65535 every 1024 frames
void sleep()
Shuts down most functions of the Serial Wombat chip reducing power consumption.
Definition: SerialWombat.cpp:530
uint16_t writePublicData(uint8_t pin, uint16_t value)
Write a 16 bit value to a Serial Wombat pin Mode.
Definition: SerialWombat.cpp:700
@ SW_DATA_SOURCE_FRAMES_RUN_MSW
(68) The number of frames run since reset, most significant 16 bits
int writeUserBuffer(uint16_t index, uint8_t *buffer, uint16_t count)
Write bytes to the User Memory Buffer in the Serial Wombat chip.
Definition: SerialWombat.cpp:708
@ SW_DATA_SOURCE_PIN_3_MV
(103) Pin 3 public output expressed in mV (for analog modes only)
SerialWombatPinState_t
Definition: SerialWombat.h:40
@ CONFIGURE_PIN_OUTPUTSCALE
(210)
@ COMMAND_BINARY_CONFIGURE
(0x9F)
uint8_t fwVersion[4]
Contains the last firmware Version retreived by queryVersion() as a zero-terminated string.
Definition: SerialWombat.h:584
@ SW_INPUT
Definition: SerialWombat.h:44
~SerialWombatChip()
Definition: SerialWombat.cpp:36
uint8_t pin()
Returns the current SW pin number. Used primarily for virtual calls by derived classes.
Definition: SerialWombat.h:789
@ SW_DATA_SOURCE_INCREMENTING_NUMBER
(65) An number that increments each time it is accessed.
This class name is depricated. Do not use for new development. Use SerialWombatChip instead.
Definition: SerialWombat.h:710
@ CONFIGURE_CHANNEL_MODE_HW_1
(221)
@ SW_LOW
Definition: SerialWombat.h:42
@ PIN_MODE_THROUGHPUT_CONSUMER
(4)
Definition: SerialWombat.h:234
@ SW_DATA_SOURCE_PIN_18
(18) 16 bit public data provided by Pin 18
@ SW_DATA_SOURCE_PIN_4
(4) 16 bit public data provided by Pin 4
SerialWombatDataSource
A list of Serial Wombat public data sources.
Definition: SerialWombat.h:49
@ PIN_MODE_INPUT_PROCESSOR
(14)
Definition: SerialWombat.h:242
@ COMMAND_UART1_RX_7BYTES
(0xB3)
int16_t echo(uint8_t data[], uint8_t count=7)
Definition: SerialWombat.cpp:831
@ SW_DATA_SOURCE_PIN_13
(13) 16 bit public data provided by Pin 13
uint8_t _pin
Definition: SerialWombat.h:797
@ COMMAND_BINARY_READ_USER_BUFFER
(0x83)
int16_t enable2ndCommandInterface(bool enabled)
Enable UART command interface in addition to I2C (SW18AB Only)
Definition: SerialWombat.cpp:807
@ SW_DATA_SOURCE_PIN_1_MV
(101) Pin 1 public output expressed in mV (for analog modes only)
@ SW_DATA_SOURCE_PIN_17
(17) 16 bit public data provided by Pin 17
@ SW_DATA_SOURCE_PIN_19_MV
(119) Pin 19 public output expressed in mV (for analog modes only)
@ PIN_MODE_QUADRATUREENCODER
(5)
Definition: SerialWombat.h:235
@ CONFIGURE_PIN_MODE2
(202)
@ PIN_MODE_FRAME_TIMER
(21)
Definition: SerialWombat.h:247
@ CONFIGURE_PIN_INPUTPROCESS
(211)
@ PIN_MODE_LIQUIDCRYSTAL
(28)
Definition: SerialWombat.h:254
@ COMMAND_BINARY_READ_PIN_BUFFFER
(0x81)
@ PIN_MODE_PROTECTED_OUTPUT
(8)
Definition: SerialWombat.h:237
char * readVersion(void)
Request version string (combined model and firmware) and return pointer to it.
Definition: SerialWombat.cpp:348
uint8_t model[4]
Contains the last model retreived by queryVersion() as a zero-terminated string.
Definition: SerialWombat.h:581
@ SW_DATA_SOURCE_ERRORS
(72)The number of incoming packets that have caused errors since reset (rolls over at 65535)
void digitalWrite(uint8_t val)
Set output pin High or Low.
Definition: SerialWombat.cpp:910
@ SW_DATA_SOURCE_65SEC_SQUARE
(176) Square wave that alternates between 0 and 65535 every 32768 frames
@ SW_DATA_SOURCE_0x55
(85) 0x55 is a reserved value for resyncing. Returns 0x55 0x55
@ SW_DATA_SOURCE_PIN_7
(7) 16 bit public data provided by Pin 7
void registerErrorHandler(SerialWombatErrorHandler_t handler)
Registers an error handler that is called by the SerialWombatChip sendPacket() command when a protoco...
Definition: SerialWombat.cpp:639
@ SW_DATA_SOURCE_2HZ_SQUARE
(164) Square wave that alternates between 0 and 65535 every 256 frames
bool isSW18()
Returns true if the instance received a model number corresponding to the Serial Wombat 18 series of ...
Definition: SerialWombat.cpp:543
@ SW_DATA_SOURCE_PIN_5
(5) 16 bit public data provided by Pin 5
@ CONFIGURE_PIN_MODE5
(205)
@ PIN_MODE_ULTRASONIC_DISTANCE
(27)
Definition: SerialWombat.h:253
@ PIN_MODE_DIGITALIO
(0)
Definition: SerialWombat.h:230
@ SW_DATA_SOURCE_PIN_19
(19) 16 bit public data provided by Pin 19
@ SW_DATA_SOURCE_8SEC_SQUARE
(173)Square wave that alternates between 0 and 65535 every 4096 frames
int16_t readBrand(char *data)
Definition: SerialWombat.cpp:868
@ CONFIGURE_PIN_MODE1
(201)
@ COMMAND_BINARY_READ_RAM
(0xA0)
@ CONFIGURE_PIN_MODE6
(206)
@ SW_DATA_SOURCE_PIN_6
(6) 16 bit public data provided by Pin 6
void SerialWombatSerialErrorHandlerVerbose(uint16_t error, SerialWombatChip *sw)
@ COMMAND_BINARY_QUEUE_ADD_7BYTES
(0x92)
@ SW_DATA_SOURCE_PIN_12
(12) 16 bit public data provided by Pin 12
@ SW_DATA_SOURCE_PIN_2_MV
(102) Pin 2 public output expressed in mV (for analog modes only)
@ COMMAND_BINARY_SET_PIN_BUFFFER
(0x82)
@ PIN_MODE_UART_RX_TX
(17)
Definition: SerialWombat.h:245
@ SW_DATA_SOURCE_1HZ_SQUARE
(167) Square wave that alternates between 0 and 65535 every 512 frames
@ SW_DATA_SOURCE_PIN_18_MV
(118) Pin 18 public output expressed in mV (for analog modes only)
@ PIN_MODE_HS_SERVO
(26)
Definition: SerialWombat.h:252
@ COMMAND_BINARY_QUEUE_INITIALIZE
(0x90)
uint8_t address
The I2C address of the SerialWombatChip instance.
Definition: SerialWombat.h:682
@ COMMAND_BINARY_READ_EEPROM
(0xA2)
@ COMMAND_UART0_TX_7BYTES
(0xB0)
@ SW_DATA_SOURCE_OVERRUN_FRAMES
(69) The number of frames that ran more than 1mS
@ COMMAND_BINARY_QUEUE_ADD_BYTES
(0x91)
@ SW_DATA_SOURCE_PIN_11
(11) 16 bit public data provided by Pin 11