Serial Wombat Arduino Library
SerialWombat.h
Go to the documentation of this file.
1 #ifndef SERIAL_WOMBAT_H__
2 #define SERIAL_WOMBAT_H__
3 
4 /*
5 Copyright 2020-2021 Broadwell Consulting Inc.
6 
7 "Serial Wombat" is a registered trademark of Broadwell Consulting Inc. in
8 the United States. See SerialWombat.com for usage guidance.
9 
10 Permission is hereby granted, free of charge, to any person obtaining a
11  * copy of this software and associated documentation files (the "Software"),
12  * to deal in the Software without restriction, including without limitation
13  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
14  * and/or sell copies of the Software, and to permit persons to whom the
15  * Software is furnished to do so, subject to the following conditions:
16 
17 The above copyright notice and this permission notice shall be included in
18  * all copies or substantial portions of the Software.
19 
20 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
24  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
25  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
26  * OTHER DEALINGS IN THE SOFTWARE.
27 */
28 
29 #include <stdint.h>
30 #include "Stream.h"
31 #include "HardwareSerial.h" // Using "" rather than <> for compatibility with Visual C++ simulation project
32 #include "Wire.h"// Using "" rather than <> for compatibility with Visual C++ simulation project
33 #include "Arduino.h"
34 
35 
36 
40 typedef enum
41 {
42  SW_LOW = 0,
43  SW_HIGH = 1,
44  SW_INPUT = 2,
46 
47 
50 
71 // SW_DATA_SOURCE_PIN_20 = 20,
72 // SW_DATA_SOURCE_PIN_21 = 21,
73 // SW_DATA_SOURCE_PIN_22 = 22,
74 // SW_DATA_SOURCE_PIN_23 = 23,
75 // SW_DATA_SOURCE_PIN_24 = 24,
76 // SW_DATA_SOURCE_PIN_25 = 25,
77 // SW_DATA_SOURCE_PIN_26 = 26,
78 // SW_DATA_SOURCE_PIN_27 = 27,
79 // SW_DATA_SOURCE_PIN_28 = 28,
80 // SW_DATA_SOURCE_PIN_29 = 29,
81 // SW_DATA_SOURCE_PIN_30 = 30,
82 // SW_DATA_SOURCE_PIN_31 = 31,
83 // SW_DATA_SOURCE_PIN_32 = 32,
84 // SW_DATA_SOURCE_PIN_33 = 33,
85 // SW_DATA_SOURCE_PIN_34 = 34,
86 // SW_DATA_SOURCE_PIN_35 = 35,
87 // SW_DATA_SOURCE_PIN_36 = 36,
88 // SW_DATA_SOURCE_PIN_37 = 37,
89 // SW_DATA_SOURCE_PIN_38 = 38,
90 // SW_DATA_SOURCE_PIN_39 = 39,
91 // SW_DATA_SOURCE_PIN_40 = 40,
92 // SW_DATA_SOURCE_PIN_41 = 41,
93 // SW_DATA_SOURCE_PIN_42 = 42,
94 // SW_DATA_SOURCE_PIN_43 = 43,
95 // SW_DATA_SOURCE_PIN_44 = 44,
96 // SW_DATA_SOURCE_PIN_45 = 45,
97 // SW_DATA_SOURCE_PIN_46 = 46,
98 // SW_DATA_SOURCE_PIN_47 = 47,
99 // SW_DATA_SOURCE_PIN_48 = 48,
100 // SW_DATA_SOURCE_PIN_49 = 49,
101 // SW_DATA_SOURCE_PIN_50 = 50,
102 // SW_DATA_SOURCE_PIN_51 = 51,
103 // SW_DATA_SOURCE_PIN_52 = 52,
104 // SW_DATA_SOURCE_PIN_53 = 53,
105 // SW_DATA_SOURCE_PIN_54 = 54,
106 // SW_DATA_SOURCE_PIN_55 = 55,
107 // SW_DATA_SOURCE_PIN_56 = 56,
108 // SW_DATA_SOURCE_PIN_57 = 57,
109 // SW_DATA_SOURCE_PIN_58 = 58,
110 // SW_DATA_SOURCE_PIN_59 = 59,
111 // SW_DATA_SOURCE_PIN_60 = 60,
112 // SW_DATA_SOURCE_PIN_61 = 61,
113 // SW_DATA_SOURCE_PIN_62 = 62,
114 // SW_DATA_SOURCE_PIN_63 = 63,
122  SW_DATA_SOURCE_ERRORS = 72,
127  SW_DATA_SOURCE_LFSR = 78,
133  //NOT ANALOG SW_DATA_SOURCE_PIN_5_MV = 105,
134  //NOT ANALOG SW_DATA_SOURCE_PIN_6_MV = 106,
135  //NOT ANALOG SW_DATA_SOURCE_PIN_7_MV = 107,
136  //NOT ANALOG SW_DATA_SOURCE_PIN_8_MV = 108,
137  //NOT ANALOG SW_DATA_SOURCE_PIN_9_MV = 109,
138  //NOT ANALOG SW_DATA_SOURCE_PIN_10_MV = 110,
139  //NOT ANALOG SW_DATA_SOURCE_PIN_11_MV = 111,
140  //NOT ANALOG SW_DATA_SOURCE_PIN_12_MV = 112,
141  //NOT ANALOG SW_DATA_SOURCE_PIN_13_MV = 113,
142  //NOT ANALOG SW_DATA_SOURCE_PIN_14_MV = 114,
143  //NOT ANALOG SW_DATA_SOURCE_PIN_15_MV = 115,
150 // SW_DATA_SOURCE_2HZ_SIN = 166,
153 // SW_DATA_SOURCE_1HZ_SIN = 169,
156 // SW_DATA_SOURCE_2SEC_SIN = 172,
159 // SW_DATA_SOURCE_8SEC_SIN = 175,
162 // SW_DATA_SOURCE_65SEC_SIN = 178,
163 };
164 
165 #define ERROR_HOST_INCORRECT_NUMBER_BYTES_WRITTEN 0x10000
166 #define ERROR_HOST_DATA_TOO_LONG 0x10001
167 #define ERROR_HOST_NACK_ADDRESS 0x10002
168 #define ERROR_HOST_NACK_DATA 0x10003
169 #define ERROR_HOST_OTHER_I2C_ERROR 0x10004
170 
171 #define WOMBAT_MAXIMUM_PINS 20
172 
174 {
175  CMD_ECHO ='!',
176  CMD_READ_BUFFER_ASCII = 'G',
177  CMD_ASCII_SET_PIN ='P',
178  CMD_RESET = 'R',
179  CMD_SET_BUFFER_ASCII = 'S',
180  CMD_RESYNC = 'U',
181  CMD_VERSION = 'V',
182  CMD_SUPPLYVOLTAGE = 'v',
193  COMMAND_BINARY_CONFIGURE = 0x9F,
194  COMMAND_BINARY_READ_RAM = 0xA0,
197  COMMAND_BINARY_WRITE_RAM = 0xA3,
199  COMMAND_CALIBRATE_ANALOG = 0xA5,
200  COMMAND_ENABLE_2ND_UART = 0xA6,
202  COMMAND_UART0_TX_7BYTES = 0xB0,
203  COMMAND_UART0_RX_7BYTES = 0xB1,
204  COMMAND_UART1_TX_7BYTES = 0xB2,
205  COMMAND_UART1_RX_7BYTES = 0xB3,
206  CONFIGURE_PIN_MODE0 = 200,
207  CONFIGURE_PIN_MODE1 = 201,
208  CONFIGURE_PIN_MODE2 = 202,
209  CONFIGURE_PIN_MODE3 = 203,
210  CONFIGURE_PIN_MODE4 = 204,
211  CONFIGURE_PIN_MODE5 = 205,
212  CONFIGURE_PIN_MODE6 = 206,
213  CONFIGURE_PIN_MODE7 = 207,
214  CONFIGURE_PIN_MODE8 = 208,
215  CONFIGURE_PIN_MODE9 = 209,
216  CONFIGURE_PIN_MODE10 = 210,
223 
224 };
225 
226 
227 typedef enum {
255 
256 class SerialWombatChip;
257 
258 typedef void (*SerialWombatErrorHandler_t) (uint16_t errorNumber, SerialWombatChip* sw);
259 
266 {
267 public:
276  int16_t begin(HardwareSerial &serial);
288  int16_t begin(HardwareSerial& serial, bool reset);
289 
298  int16_t begin(TwoWire &wire, uint8_t i2cAddress);
299 
307  int16_t begin(uint8_t i2cAddress);
308 
320  int16_t begin(TwoWire& wire, uint8_t i2cAddress, bool reset);
322 
331  int sendPacket( uint8_t tx[], uint8_t rx[]);
332 
340  int sendPacket(uint8_t tx[]);
341 
349 
350  int sendPacketNoResponse(uint8_t tx[]);
351 
358  char* readVersion(void);
359 
367  uint16_t readPublicData(uint8_t pin);
368 
376  uint16_t readPublicData(SerialWombatDataSource dataSource);
377 
381  uint16_t writePublicData(uint8_t pin, uint16_t value);
382 
390  uint16_t readSupplyVoltage_mV(void);
391 
400  int16_t readTemperature_100thsDegC(void);
401 
402 
407  void hardwareReset();
408 
418  void pinMode(uint8_t pin, uint8_t mode);
419 
427  void pinMode(uint8_t pin, uint8_t mode, bool pullDown, bool openDrain);
428 
435  void digitalWrite(uint8_t pin, uint8_t val);
436 
440  int digitalRead(uint8_t pin);
441 
449  int analogRead(uint8_t pin);
450 
460  void analogWrite(uint8_t pin, int val);
461 
462 
471  bool queryVersion();
472 
477  uint32_t readFramesExecuted();
478 
484 
485  uint16_t readOverflowFrames();
486 
494  void jumpToBoot();
495 
514  uint8_t readRamAddress(uint16_t address);
515 
533 
534  int16_t writeRamAddress(uint16_t address, uint8_t value);
535 
548 
549  uint32_t readFlashAddress(uint32_t address);
550 
559  void sleep();
560 
562  void wake();
563 
565  bool isSW18();
566 
568  int16_t eraseFlashPage(uint32_t address);
570  int16_t writeFlashRow(uint32_t address);
571 
576  uint16_t _supplyVoltagemV = 0;
577 
579  uint8_t model[4] = { 0 };
580 
582  uint8_t fwVersion[4] = { 0 };
583 
587  uint8_t uniqueIdentifier[16];
588 
592 
598  uint16_t deviceRevision;
600  uint16_t errorCount = 0;
601 
603  bool inBoot = false;
604 
612  int16_t setThroughputPin(uint8_t pin);
613 
619  int writeUserBuffer(uint16_t index, uint8_t* buffer, uint16_t count);
620 
626  int writeUserBuffer(uint16_t index, char* s);
627 
633  int writeUserBuffer(uint16_t index, const char s[]);
634 
640 
641  int readUserBuffer(uint16_t index, uint8_t* buffer, uint16_t count);
642 
648  int16_t enable2ndCommandInterface(bool enabled);
649 
650 
651 
658 
664  static uint8_t find(bool keepTrying = false);
665 
667  int16_t lastErrorCode = 0;
668 
673  int16_t readLastErrorCommand(uint8_t* cmd);
674 
678 
680  uint8_t address = 0;
681 private:
682 
683 
684  char version[8] = { 0 };
685  HardwareSerial * Serial = NULL;
686  TwoWire* i2cInterface = NULL;
687  uint8_t _pinmode[WOMBAT_MAXIMUM_PINS]={}; // Includes Pullup
688  bool _pullDown[WOMBAT_MAXIMUM_PINS]={};
689  bool _openDrain[WOMBAT_MAXIMUM_PINS]={};
690  bool _highLow[WOMBAT_MAXIMUM_PINS] = {};
691  bool _asleep = false;
692  void configureDigitalPin(uint8_t pin, uint8_t highLow);
693  uint32_t sendReadyTime = 0;
694  int16_t initialize();
695  void readUniqueIdentifier();
696  void readDeviceIdentifier();
697  uint16_t returnErrorCode(uint8_t* rx);
698  SerialWombatErrorHandler_t errorHandler = NULL;
699 };
700 
702 class SerialWombat : public SerialWombatChip {};
704 #define SW_LE16(_a) (uint8_t)((_a) & 0xFF), (uint8_t)((_a) >>8)
705 
707 #define SW_LE32(_a) (uint8_t)((_a) & 0xFF), (uint8_t)((_a) >>8) , (uint8_t)((_a) >>16), (uint8_t)((_a) >>24)
708 
709 
720 {
721 public:
724  SerialWombatPin(SerialWombatChip& serialWombatChip);
725 
729  SerialWombatPin(SerialWombatChip& serialWombatChip, uint8_t pin);
730 
735  uint16_t readPublicData()
736  {
737  return _sw.readPublicData(_pin);
738  };
739 
748  void pinMode(uint8_t mode);
749 
756  void pinMode(uint8_t mode, bool pullDown, bool openDrain);
757 
764  void digitalWrite(uint8_t val);
765 
771  int digitalRead();
772 
773 
776  uint16_t writePublicData(uint16_t value)
777  { return _sw.writePublicData(_pin, value); }
778 
781  uint8_t pin() {return _pin;}
782 
785  uint8_t swPinModeNumber() { return _pinMode; }
786 
787 
788 protected:
789  uint8_t _pin = 255;
791  uint8_t _pinMode = 0;
792 
793 };
794 
795 
801 void SerialWombatSerialErrorHandlerBrief(uint16_t error, SerialWombatChip* sw);
803 
804 #include "SerialWombatErrors.h"
805 #include "SerialWombatQueue.h"
809 #include "SerialWombat18CapTouch.h"
810 #include "SerialWombatAnalogInput.h"
817 #include "SerialWombatPulseTimer.h"
818 #include "SerialWombatPWM.h"
819 #include "SerialWombatQuadEnc.h"
821 #include "SerialWombatServo.h"
822 #include "SerialWombatTM1637.h"
823 #include "SerialWombatUART.h"
825 #include "SerialWombatWatchdog.h"
826 #include "SerialWombatWS2812.h"
828 
829 #endif
SerialWombatPulseOnChange.h
SerialWombatDataSource::SW_DATA_SOURCE_1HZ_SAW
@ SW_DATA_SOURCE_1HZ_SAW
(168) Sawtooth wave that goes from 0 to 65535 to 0 every 1024 frames
SerialWombatCommands::CONFIGURE_PIN_MODE10
@ CONFIGURE_PIN_MODE10
(210)
SerialWombatCommands::CMD_READ_BUFFER_ASCII
@ CMD_READ_BUFFER_ASCII
('G')
SerialWombatChip
Class for a Serial Wombat chip. Each Serial Wombat chip on a project should have its own instance.
Definition: SerialWombat.h:265
SerialWombatChip::begin
int16_t begin(HardwareSerial &serial)
initialize a Serial Wombat chip to use a Serial Interface.
Definition: SerialWombat.cpp:40
PIN_MODE_ANALOGINPUT
@ PIN_MODE_ANALOGINPUT
(2)
Definition: SerialWombat.h:230
SerialWombatCommands::COMMAND_READ_LAST_ERROR_PACKET
@ COMMAND_READ_LAST_ERROR_PACKET
(0xA7)
SerialWombatCommands::COMMAND_ENABLE_2ND_UART
@ COMMAND_ENABLE_2ND_UART
(0xA6)
SerialWombatChip::jumpToBoot
void jumpToBoot()
Jump to Bootloader and wait for a UART download of new firmware.
Definition: SerialWombat.cpp:501
SerialWombatQuadEnc.h
SerialWombatCommands::CMD_VERSION
@ CMD_VERSION
('V')
SerialWombatDataSource::SW_DATA_SOURCE_PIN_8
@ SW_DATA_SOURCE_PIN_8
(8) 16 bit public data provided by Pin 8
SerialWombatWatchdog.h
PIN_MODE_PULSE_ON_CHANGE
@ PIN_MODE_PULSE_ON_CHANGE
(25)
Definition: SerialWombat.h:249
PIN_MODE_SW18AB_CAPTOUCH
@ PIN_MODE_SW18AB_CAPTOUCH
(22)
Definition: SerialWombat.h:246
PIN_MODE_UART1_RX_TX
@ PIN_MODE_UART1_RX_TX
(23)
Definition: SerialWombat.h:247
SerialWombatCommands::COMMAND_BINARY_QUEUE_INFORMATION
@ COMMAND_BINARY_QUEUE_INFORMATION
(0x94)
SerialWombatWS2812.h
PIN_MODE_DEBOUNCE
@ PIN_MODE_DEBOUNCE
(10)
Definition: SerialWombat.h:236
SerialWombatDataSource::SW_DATA_SOURCE_1024mvCounts
@ SW_DATA_SOURCE_1024mvCounts
(66) The number of ADC counts that result from a 1.024V reading
SerialWombatCommands::CONFIGURE_PIN_MODE0
@ CONFIGURE_PIN_MODE0
(200)
SerialWombatErrorHandler_t
void(* SerialWombatErrorHandler_t)(uint16_t errorNumber, SerialWombatChip *sw)
Definition: SerialWombat.h:258
SerialWombatCommands::COMMAND_UART0_RX_7BYTES
@ COMMAND_UART0_RX_7BYTES
(0xB1)
SerialWombatChip::lastErrorCode
int16_t lastErrorCode
The last error code returned as part of a protocol error message expressed as a positive integer.
Definition: SerialWombat.h:667
SerialWombatDataSource::SW_DATA_SOURCE_PIN_9
@ SW_DATA_SOURCE_PIN_9
(9) 16 bit public data provided by Pin 9
SerialWombatChip::digitalRead
int digitalRead(uint8_t pin)
Reads the state of a Pin.
Definition: SerialWombat.cpp:433
SerialWombatChip::sendPacketNoResponse
int sendPacketNoResponse(uint8_t tx[])
Send an 8 byte packet to the Serial Wombat chip, don't wait for a response.
Definition: SerialWombat.cpp:277
SerialWombatPinMode_t
SerialWombatPinMode_t
Definition: SerialWombat.h:227
SerialWombatAnalogInput.h
SerialWombatChip::analogRead
int analogRead(uint8_t pin)
Configures pin as analog input and does an immediate A/D conversion.
Definition: SerialWombat.cpp:445
SerialWombatPin::SerialWombatPin
SerialWombatPin(SerialWombatChip &serialWombatChip)
Instantiates a Serial Wombat Pin.
Definition: SerialWombat.cpp:828
SerialWombatPin::swPinModeNumber
uint8_t swPinModeNumber()
Returns the Mode number. Used primarily by derived classes to populate packet data.
Definition: SerialWombat.h:785
SerialWombatAbstractButton.h
SerialWombatDataSource::SW_DATA_SOURCE_LFSR
@ SW_DATA_SOURCE_LFSR
(78) A Linear Feedback Shift Register that produces a Pseudo random sequence of 16 bit values
SerialWombatDataSource::SW_DATA_SOURCE_PIN_15
@ SW_DATA_SOURCE_PIN_15
(15) 16 bit public data provided by Pin 15
SerialWombatPin::_sw
SerialWombatChip & _sw
Definition: SerialWombat.h:790
SerialWombatDataSource::SW_DATA_SOURCE_PIN_16_MV
@ SW_DATA_SOURCE_PIN_16_MV
(116) Pin 16 public output expressed in mV (for analog modes only)
SerialWombatCommands::CONFIGURE_PIN_MODE7
@ CONFIGURE_PIN_MODE7
(207)
SerialWombatChip::analogWrite
void analogWrite(uint8_t pin, int val)
Set a pin to PWM output.
Definition: SerialWombat.cpp:453
PIN_MODE_WATCHDOG
@ PIN_MODE_WATCHDOG
(7)
Definition: SerialWombat.h:234
PIN_MODE_CONTROLLED
@ PIN_MODE_CONTROLLED
(1)
Definition: SerialWombat.h:229
PIN_MODE_SW_UART
@ PIN_MODE_SW_UART
(13)
Definition: SerialWombat.h:239
SerialWombatChip::queryVersion
bool queryVersion()
Send a version request to the Serial Wombat chip.
Definition: SerialWombat.cpp:465
SerialWombatChip::setThroughputPin
int16_t setThroughputPin(uint8_t pin)
Set a pin to be a throughput monitoring pin.
Definition: SerialWombat.cpp:564
SerialWombatPin::writePublicData
uint16_t writePublicData(uint16_t value)
Write a 16 bit value to this pin.
Definition: SerialWombat.h:776
SerialWombatPin::pinMode
void pinMode(uint8_t mode)
Set pin to INPUT or OUTPUT.
Definition: SerialWombat.cpp:833
SerialWombatLiquidCrystal.h
SerialWombatChip::readSupplyVoltage_mV
uint16_t readSupplyVoltage_mV(void)
Measure the Serial Wombat chip's Supply voltage.
Definition: SerialWombat.cpp:364
SerialWombatCommands::CONFIGURE_PIN_MODE3
@ CONFIGURE_PIN_MODE3
(203)
SerialWombatChip::inBoot
bool inBoot
Set to true if boot mode is indicated by a version query.
Definition: SerialWombat.h:603
SerialWombatChip::_supplyVoltagemV
uint16_t _supplyVoltagemV
Definition: SerialWombat.h:576
SerialWombat18CapTouch.h
PIN_MODE_RESISTANCEINPUT
@ PIN_MODE_RESISTANCEINPUT
(24)
Definition: SerialWombat.h:248
SerialWombatChip::readFramesExecuted
uint32_t readFramesExecuted()
Get the number of 1mS frames that have been executed since Serial Wombat chip reset.
Definition: SerialWombat.cpp:487
SerialWombatDataSource::SW_DATA_SOURCE_2SEC_SAW
@ SW_DATA_SOURCE_2SEC_SAW
(171)Sawtooth wave that goes from 0 to 65535 to 0 every 2048 frames
SerialWombatDataSource::SW_DATA_SOURCE_VBG_COUNTS_VS_VREF
@ SW_DATA_SOURCE_VBG_COUNTS_VS_VREF
(76) A/D conversion of VBG against VRef . Used for mfg calibration
PIN_MODE_TM1637
@ PIN_MODE_TM1637
(11)
Definition: SerialWombat.h:237
SerialWombatChip::wake
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:536
SerialWombatDataSource::SW_DATA_SOURCE_PIN_17_MV
@ SW_DATA_SOURCE_PIN_17_MV
(117) Pin 17 public output expressed in mV (for analog modes only)
PIN_MODE_PWM
@ PIN_MODE_PWM
(16)
Definition: SerialWombat.h:242
SerialWombatDataSource::SW_DATA_SOURCE_2HZ_SAW
@ SW_DATA_SOURCE_2HZ_SAW
(165) Sawtooth wave that goes from 0 to 65535 to 0 every 512 frames
SerialWombatCommands::COMMAND_BINARY_WRITE_RAM
@ COMMAND_BINARY_WRITE_RAM
(0xA3)
SerialWombatServo.h
SerialWombatCommands::COMMAND_BINARY_WRITE_USER_BUFFER
@ COMMAND_BINARY_WRITE_USER_BUFFER
(0x84)
SerialWombatProtectedOutput.h
SerialWombatCommands::CONFIGURE_PIN_MODE8
@ CONFIGURE_PIN_MODE8
(208)
SerialWombatCommands::COMMAND_UART1_TX_7BYTES
@ COMMAND_UART1_TX_7BYTES
(0xB2)
SerialWombatDataSource::SW_DATA_SOURCE_PIN_4_MV
@ SW_DATA_SOURCE_PIN_4_MV
(104) Pin 4 public output expressed in mV (for analog modes only)
PIN_MODE_SERVO
@ PIN_MODE_SERVO
(3)
Definition: SerialWombat.h:231
SerialWombatDataSource::SW_DATA_SOURCE_SYSTEM_UTILIZATION
@ SW_DATA_SOURCE_SYSTEM_UTILIZATION
(74) A number between 0 and 65535 that scales to the average length of pin processing frames between ...
SerialWombatCommands::COMMAND_BINARY_QUEUE_READ_BYTES
@ COMMAND_BINARY_QUEUE_READ_BYTES
(0x93)
SerialWombatPWM.h
SerialWombatCommands::CONFIGURE_PIN_MODE4
@ CONFIGURE_PIN_MODE4
(204)
SerialWombatSerialErrorHandlerBrief
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:888
SerialWombatChip::SerialWombatChip
SerialWombatChip()
Definition: SerialWombat.cpp:29
SerialWombatDataSource::SW_DATA_SOURCE_65SEC_SAW
@ SW_DATA_SOURCE_65SEC_SAW
(177 )Sawtooth wave that goes from 0 to 65535 to 0 every 65536 frames
SerialWombatQueue.h
SerialWombatChip::hardwareReset
void hardwareReset()
Send a reset command to the Serial Wombat chip.
Definition: SerialWombat.cpp:403
PIN_MODE_PULSETIMER
@ PIN_MODE_PULSETIMER
(18)
Definition: SerialWombat.h:244
SerialWombatChip::uniqueIdentifierLength
uint8_t uniqueIdentifierLength
Definition: SerialWombat.h:591
SerialWombatPin::digitalRead
int digitalRead()
Reads the state of the Pin.
Definition: SerialWombat.cpp:856
SerialWombatChip::eraseFlashPage
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:547
SerialWombatChip::readLastErrorCommand
int16_t readLastErrorCommand(uint8_t *cmd)
Returns the last Serial Wombat command that produced a protocol error.
Definition: SerialWombat.cpp:861
SW_HIGH
@ SW_HIGH
Definition: SerialWombat.h:43
SerialWombatTM1637.h
SerialWombatDataSource::SW_DATA_SOURCE_PIN_2
@ SW_DATA_SOURCE_PIN_2
(2) 16 bit public data provided by Pin 2
SerialWombatChip::find
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:571
SerialWombatDataSource::SW_DATA_SOURCE_FRAMES_RUN_LSW
@ SW_DATA_SOURCE_FRAMES_RUN_LSW
(67) The number of frames run since reset, least significant 16 bits
SerialWombatAbstractProcessedInput.h
SerialWombatDataSource::SW_DATA_SOURCE_DROPPED_FRAMES
@ 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...
SerialWombatCommands::COMMAND_BINARY_WRITE_USER_BUFFER_CONTINUE
@ COMMAND_BINARY_WRITE_USER_BUFFER_CONTINUE
(0x85)
SerialWombatDataSource::SW_DATA_SOURCE_VCC_mVOLTS
@ SW_DATA_SOURCE_VCC_mVOLTS
(75) The system source voltage in mV
SerialWombatChip::digitalWrite
void digitalWrite(uint8_t pin, uint8_t val)
Set an output pin High or Low.
Definition: SerialWombat.cpp:427
SerialWombatDataSource::SW_DATA_SOURCE_TEMPERATURE
@ SW_DATA_SOURCE_TEMPERATURE
(70)The internal core temperature expressed in 100ths deg C
SerialWombatCommands::CMD_SET_BUFFER_ASCII
@ CMD_SET_BUFFER_ASCII
('S')
SerialWombatDataSource::SW_DATA_SOURCE_PIN_14
@ SW_DATA_SOURCE_PIN_14
(14) 16 bit public data provided by Pin 14
PIN_MODE_MATRIX_KEYPAD
@ PIN_MODE_MATRIX_KEYPAD
(15)
Definition: SerialWombat.h:241
SerialWombatDataSource::SW_DATA_SOURCE_PIN_0_MV
@ SW_DATA_SOURCE_PIN_0_MV
(100) Pin 0 public output expressed in mV (for analog modes only)
SerialWombatChip::readUserBuffer
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:610
SerialWombatChip::readOverflowFrames
uint16_t readOverflowFrames()
Get the number of times an overflow Frame has occured.
Definition: SerialWombat.cpp:496
SerialWombatCommands::CONFIGURE_PIN_MODE9
@ CONFIGURE_PIN_MODE9
(209)
SerialWombatChip::deviceIdentifier
uint16_t deviceIdentifier
Definition: SerialWombat.h:595
SerialWombatDataSource::SW_DATA_SOURCE_8SEC_SAW
@ SW_DATA_SOURCE_8SEC_SAW
(174)Sawtooth wave that goes from 0 to 65535 to 0 every 8192 frames
SerialWombatCommands
SerialWombatCommands
Definition: SerialWombat.h:173
SerialWombatChip::readPublicData
uint16_t readPublicData(uint8_t pin)
Read the 16 Bit public data associated with a Serial Wombat Pin Mode.
Definition: SerialWombat.cpp:691
SerialWombatUART.h
SerialWombatPin
Describes a Serial Wombat Pin. Is base class for other pin modes.
Definition: SerialWombat.h:719
SerialWombatDataSource::SW_DATA_SOURCE_PIN_0
@ SW_DATA_SOURCE_PIN_0
(0) 16 bit public data provided by Pin 0
SerialWombatChip::readFlashAddress
uint32_t readFlashAddress(uint32_t address)
Read Address from Flash based on 32 bit address.
Definition: SerialWombat.cpp:521
SerialWombatChip::readTemperature_100thsDegC
int16_t readTemperature_100thsDegC(void)
Measure the Serial Wombat chip's internal temperature.
Definition: SerialWombat.cpp:386
SerialWombatChip::uniqueIdentifier
uint8_t uniqueIdentifier[16]
Definition: SerialWombat.h:587
WOMBAT_MAXIMUM_PINS
#define WOMBAT_MAXIMUM_PINS
Definition: SerialWombat.h:171
SerialWombatCommands::CONFIGURE_CHANNEL_MODE_HW_3
@ CONFIGURE_CHANNEL_MODE_HW_3
(223)
SerialWombatChip::pinMode
void pinMode(uint8_t pin, uint8_t mode)
Set a pin to INPUT or OUTPUT.
Definition: SerialWombat.cpp:410
SerialWombatChip::writeFlashRow
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:556
SerialWombatChip::errorCount
uint16_t errorCount
Incremented every time a communication or command error is detected.
Definition: SerialWombat.h:600
SerialWombatChip::readRamAddress
uint8_t readRamAddress(uint16_t address)
Read Address from RAM based on 16 bit address.
Definition: SerialWombat.cpp:507
SerialWombatPin::_pinMode
uint8_t _pinMode
Definition: SerialWombat.h:791
SerialWombatDataSource::SW_DATA_SOURCE_PIN_3
@ SW_DATA_SOURCE_PIN_3
(3) 16 bit public data provided by Pin 3
SerialWombatChip::writeRamAddress
int16_t writeRamAddress(uint16_t address, uint8_t value)
Write byte to Address in RAM based on 16 bit address.
Definition: SerialWombat.cpp:515
SerialWombatCommands::COMMAND_BINARY_READ_FLASH
@ COMMAND_BINARY_READ_FLASH
(0xA1)
SerialWombatCommands::CMD_ASCII_SET_PIN
@ CMD_ASCII_SET_PIN
('P')
SerialWombatDataSource::SW_DATA_SOURCE_PACKETS_RECEIVED
@ SW_DATA_SOURCE_PACKETS_RECEIVED
(71) The nubmer of incoming command packets that have been processed since reset (rolls over at 65535...
SerialWombatCommands::CONFIGURE_CHANNEL_MODE_HW_2
@ CONFIGURE_CHANNEL_MODE_HW_2
(222)
SerialWombatChip::sendPacket
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:173
SerialWombatCommands::CONFIGURE_PIN_MODE_HW_0
@ CONFIGURE_PIN_MODE_HW_0
(220)
PIN_MODE_WS2812
@ PIN_MODE_WS2812
(12)
Definition: SerialWombat.h:238
PIN_MODE_UNKNOWN
@ PIN_MODE_UNKNOWN
(0xFF)
Definition: SerialWombat.h:253
SerialWombatCommands::COMMAND_CALIBRATE_ANALOG
@ COMMAND_CALIBRATE_ANALOG
(0xA5)
SerialWombatDataSource::SW_DATA_SOURCE_PIN_10
@ SW_DATA_SOURCE_PIN_10
(10) 16 bit public data provided by Pin 10
SerialWombatCommands::COMMAND_BINARY_WRITE_FLASH
@ COMMAND_BINARY_WRITE_FLASH
(0xA4)
SerialWombatChip::deviceRevision
uint16_t deviceRevision
Definition: SerialWombat.h:598
SerialWombatPin::readPublicData
uint16_t readPublicData()
Read the 16 Bit public data associated with this pin.
Definition: SerialWombat.h:735
SerialWombatDataSource::SW_DATA_SOURCE_PIN_16
@ SW_DATA_SOURCE_PIN_16
(16) 16 bit public data provided by Pin 16
SerialWombatDataSource::SW_DATA_SOURCE_PIN_1
@ SW_DATA_SOURCE_PIN_1
(1) 16 bit public data provided by Pin 1
SerialWombatDataSource::SW_DATA_SOURCE_2SEC_SQUARE
@ SW_DATA_SOURCE_2SEC_SQUARE
(170)Square wave that alternates between 0 and 65535 every 1024 frames
SerialWombatChip::sleep
void sleep()
Shuts down most functions of the Serial Wombat chip reducing power consumption.
Definition: SerialWombat.cpp:529
SerialWombatChip::writePublicData
uint16_t writePublicData(uint8_t pin, uint16_t value)
Write a 16 bit value to a Serial Wombat pin Mode.
Definition: SerialWombat.cpp:699
SerialWombatErrors.h
SerialWombatDataSource::SW_DATA_SOURCE_FRAMES_RUN_MSW
@ SW_DATA_SOURCE_FRAMES_RUN_MSW
(68) The number of frames run since reset, most significant 16 bits
SerialWombatUltrasonicDistanceSensor.h
SerialWombatChip::writeUserBuffer
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:707
SerialWombatDataSource::SW_DATA_SOURCE_PIN_3_MV
@ SW_DATA_SOURCE_PIN_3_MV
(103) Pin 3 public output expressed in mV (for analog modes only)
SerialWombatPinState_t
SerialWombatPinState_t
Definition: SerialWombat.h:40
SerialWombatCommands::CONFIGURE_PIN_OUTPUTSCALE
@ CONFIGURE_PIN_OUTPUTSCALE
(210)
SerialWombatCommands::COMMAND_BINARY_CONFIGURE
@ COMMAND_BINARY_CONFIGURE
(0x9F)
SerialWombatChip::fwVersion
uint8_t fwVersion[4]
Contains the last firmware Version retreived by queryVersion() as a zero-terminated string.
Definition: SerialWombat.h:582
SW_INPUT
@ SW_INPUT
Definition: SerialWombat.h:44
SerialWombatChip::~SerialWombatChip
~SerialWombatChip()
Definition: SerialWombat.cpp:35
SerialWombatPin::pin
uint8_t pin()
Returns the current SW pin number. Used primarily for virtual calls by derived classes.
Definition: SerialWombat.h:781
SerialWombatDataSource::SW_DATA_SOURCE_INCREMENTING_NUMBER
@ SW_DATA_SOURCE_INCREMENTING_NUMBER
(65) An number that increments each time it is accessed.
SerialWombat
This class name is depricated. Do not use for new development. Use SerialWombatChip instead.
Definition: SerialWombat.h:702
SerialWombatCommands::CONFIGURE_CHANNEL_MODE_HW_1
@ CONFIGURE_CHANNEL_MODE_HW_1
(221)
SW_LOW
@ SW_LOW
Definition: SerialWombat.h:42
PIN_MODE_THROUGHPUT_CONSUMER
@ PIN_MODE_THROUGHPUT_CONSUMER
(4)
Definition: SerialWombat.h:232
SerialWombatMatrixKeypad.h
SerialWombatCommands::CMD_RESYNC
@ CMD_RESYNC
('U')
SerialWombatDataSource::SW_DATA_SOURCE_PIN_18
@ SW_DATA_SOURCE_PIN_18
(18) 16 bit public data provided by Pin 18
SerialWombatDataSource::SW_DATA_SOURCE_PIN_4
@ SW_DATA_SOURCE_PIN_4
(4) 16 bit public data provided by Pin 4
SerialWombatDataSource
SerialWombatDataSource
A list of Serial Wombat public data sources.
Definition: SerialWombat.h:49
PIN_MODE_INPUT_PROCESSOR
@ PIN_MODE_INPUT_PROCESSOR
(14)
Definition: SerialWombat.h:240
SerialWombatCommands::COMMAND_UART1_RX_7BYTES
@ COMMAND_UART1_RX_7BYTES
(0xB3)
SerialWombatDataSource::SW_DATA_SOURCE_PIN_13
@ SW_DATA_SOURCE_PIN_13
(13) 16 bit public data provided by Pin 13
SerialWombatPin::_pin
uint8_t _pin
Definition: SerialWombat.h:789
SerialWombatCommands::COMMAND_BINARY_READ_USER_BUFFER
@ COMMAND_BINARY_READ_USER_BUFFER
(0x83)
SerialWombatChip::enable2ndCommandInterface
int16_t enable2ndCommandInterface(bool enabled)
Enable UART command interface in addition to I2C (SW18AB Only)
Definition: SerialWombat.cpp:804
SerialWombatProcessedInputPin.h
SerialWombatDataSource::SW_DATA_SOURCE_PIN_1_MV
@ SW_DATA_SOURCE_PIN_1_MV
(101) Pin 1 public output expressed in mV (for analog modes only)
SerialWombatDataSource::SW_DATA_SOURCE_PIN_17
@ SW_DATA_SOURCE_PIN_17
(17) 16 bit public data provided by Pin 17
SerialWombatDataSource::SW_DATA_SOURCE_PIN_19_MV
@ SW_DATA_SOURCE_PIN_19_MV
(119) Pin 19 public output expressed in mV (for analog modes only)
PIN_MODE_QUADRATUREENCODER
@ PIN_MODE_QUADRATUREENCODER
(5)
Definition: SerialWombat.h:233
SerialWombatThroughputConsumer.h
SerialWombatCommands::CONFIGURE_PIN_MODE2
@ CONFIGURE_PIN_MODE2
(202)
SerialWombatCommands::CMD_RESET
@ CMD_RESET
('R')
SerialWombatDebouncedInput.h
PIN_MODE_FRAME_TIMER
@ PIN_MODE_FRAME_TIMER
(21)
Definition: SerialWombat.h:245
SerialWombatCommands::CONFIGURE_PIN_INPUTPROCESS
@ CONFIGURE_PIN_INPUTPROCESS
(211)
PIN_MODE_LIQUIDCRYSTAL
@ PIN_MODE_LIQUIDCRYSTAL
(28)
Definition: SerialWombat.h:252
SerialWombatCommands::COMMAND_BINARY_READ_PIN_BUFFFER
@ COMMAND_BINARY_READ_PIN_BUFFFER
(0x81)
SerialWombatAbstractScaledOutput.h
PIN_MODE_PROTECTED_OUTPUT
@ PIN_MODE_PROTECTED_OUTPUT
(8)
Definition: SerialWombat.h:235
SerialWombatChip::readVersion
char * readVersion(void)
Request version string (combined model and firmware) and return pointer to it.
Definition: SerialWombat.cpp:347
SerialWombatChip::model
uint8_t model[4]
Contains the last model retreived by queryVersion() as a zero-terminated string.
Definition: SerialWombat.h:579
SerialWombatDataSource::SW_DATA_SOURCE_ERRORS
@ SW_DATA_SOURCE_ERRORS
(72)The number of incoming packets that have caused errors since reset (rolls over at 65535)
SerialWombatPin::digitalWrite
void digitalWrite(uint8_t val)
Set output pin High or Low.
Definition: SerialWombat.cpp:843
SerialWombatDataSource::SW_DATA_SOURCE_65SEC_SQUARE
@ SW_DATA_SOURCE_65SEC_SQUARE
(176) Square wave that alternates between 0 and 65535 every 32768 frames
SerialWombatDataSource::SW_DATA_SOURCE_PIN_7
@ SW_DATA_SOURCE_PIN_7
(7) 16 bit public data provided by Pin 7
SerialWombatChip::registerErrorHandler
void registerErrorHandler(SerialWombatErrorHandler_t handler)
Registers an error handler that is called by the SerialWombatChip sendPacket() command when a protoco...
Definition: SerialWombat.cpp:638
SerialWombatDataSource::SW_DATA_SOURCE_2HZ_SQUARE
@ SW_DATA_SOURCE_2HZ_SQUARE
(164) Square wave that alternates between 0 and 65535 every 256 frames
SerialWombatChip::isSW18
bool isSW18()
Returns true if the instance received a model number corresponding to the Serial Wombat 18 series of ...
Definition: SerialWombat.cpp:542
SerialWombatDataSource::SW_DATA_SOURCE_PIN_5
@ SW_DATA_SOURCE_PIN_5
(5) 16 bit public data provided by Pin 5
SerialWombatCommands::CONFIGURE_PIN_MODE5
@ CONFIGURE_PIN_MODE5
(205)
PIN_MODE_ULTRASONIC_DISTANCE
@ PIN_MODE_ULTRASONIC_DISTANCE
(27)
Definition: SerialWombat.h:251
PIN_MODE_DIGITALIO
@ PIN_MODE_DIGITALIO
(0)
Definition: SerialWombat.h:228
SerialWombatDataSource::SW_DATA_SOURCE_PIN_19
@ SW_DATA_SOURCE_PIN_19
(19) 16 bit public data provided by Pin 19
SerialWombatDataSource::SW_DATA_SOURCE_8SEC_SQUARE
@ SW_DATA_SOURCE_8SEC_SQUARE
(173)Square wave that alternates between 0 and 65535 every 4096 frames
SerialWombatCommands::CMD_SUPPLYVOLTAGE
@ CMD_SUPPLYVOLTAGE
('v')
SerialWombatCommands::CONFIGURE_PIN_MODE1
@ CONFIGURE_PIN_MODE1
(201)
SerialWombatCommands::COMMAND_BINARY_READ_RAM
@ COMMAND_BINARY_READ_RAM
(0xA0)
SerialWombatCommands::CONFIGURE_PIN_MODE6
@ CONFIGURE_PIN_MODE6
(206)
SerialWombatDataSource::SW_DATA_SOURCE_PIN_6
@ SW_DATA_SOURCE_PIN_6
(6) 16 bit public data provided by Pin 6
SerialWombatSerialErrorHandlerVerbose
void SerialWombatSerialErrorHandlerVerbose(uint16_t error, SerialWombatChip *sw)
SerialWombatCommands::CMD_ECHO
@ CMD_ECHO
('!')
SerialWombatCommands::COMMAND_BINARY_QUEUE_ADD_7BYTES
@ COMMAND_BINARY_QUEUE_ADD_7BYTES
(0x92)
SerialWombatDataSource::SW_DATA_SOURCE_PIN_12
@ SW_DATA_SOURCE_PIN_12
(12) 16 bit public data provided by Pin 12
SerialWombatDataSource::SW_DATA_SOURCE_PIN_2_MV
@ SW_DATA_SOURCE_PIN_2_MV
(102) Pin 2 public output expressed in mV (for analog modes only)
SerialWombatCommands::COMMAND_BINARY_SET_PIN_BUFFFER
@ COMMAND_BINARY_SET_PIN_BUFFFER
(0x82)
PIN_MODE_UART_RX_TX
@ PIN_MODE_UART_RX_TX
(17)
Definition: SerialWombat.h:243
SerialWombatDataSource::SW_DATA_SOURCE_1HZ_SQUARE
@ SW_DATA_SOURCE_1HZ_SQUARE
(167) Square wave that alternates between 0 and 65535 every 512 frames
SerialWombatDataSource::SW_DATA_SOURCE_PIN_18_MV
@ SW_DATA_SOURCE_PIN_18_MV
(118) Pin 18 public output expressed in mV (for analog modes only)
PIN_MODE_HS_SERVO
@ PIN_MODE_HS_SERVO
(26)
Definition: SerialWombat.h:250
SerialWombatPulseTimer.h
SerialWombatResistanceInput.h
SerialWombatCommands::COMMAND_BINARY_QUEUE_INITIALIZE
@ COMMAND_BINARY_QUEUE_INITIALIZE
(0x90)
SerialWombatChip::address
uint8_t address
The I2C address of the SerialWombatChip instance.
Definition: SerialWombat.h:680
SerialWombatCommands::COMMAND_BINARY_READ_EEPROM
@ COMMAND_BINARY_READ_EEPROM
(0xA2)
SerialWombatCommands::COMMAND_UART0_TX_7BYTES
@ COMMAND_UART0_TX_7BYTES
(0xB0)
SerialWombatDataSource::SW_DATA_SOURCE_OVERRUN_FRAMES
@ SW_DATA_SOURCE_OVERRUN_FRAMES
(69) The number of frames that ran more than 1mS
SerialWombatCommands::COMMAND_BINARY_QUEUE_ADD_BYTES
@ COMMAND_BINARY_QUEUE_ADD_BYTES
(0x91)
SerialWombatDataSource::SW_DATA_SOURCE_PIN_11
@ SW_DATA_SOURCE_PIN_11
(11) 16 bit public data provided by Pin 11