SPDX-FileCopyrightText: 2020-2021 Brent Rubell for Adafruit Industries
SPDX-License-Identifier: MIT
Messages for describing hardware over the description topic
CreateDescriptionRequest identifies a device with Adafruit.io WipperSnapper.
| Field | Type | Label | Description | 
| machine_name | string | Identifies client's physical hardware  | 
                |
| mac_addr | int32 | Client's UID, last 3 bytes of MAC address  | 
                |
| usb_vid | int32 | Optional, USB Vendor ID  | 
                |
| usb_pid | int32 | Optional, USB Product ID  | 
                |
| version | CreateDescriptionRequest.Version | Deprecated. Client's library version.  | 
                |
| ver_major | int32 | Deprecated.  | 
                |
| ver_minor | int32 | Deprecated.  | 
                |
| ver_patch | int32 | Deprecated.  | 
                |
| ver_pre_release | string | Deprecated.  | 
                |
| ver_build | int32 | Deprecated.  | 
                |
| str_version | string | Library version, as a string  | 
                
| Name | Option | 
| version | true  | 
                
| ver_major | true  | 
                
| ver_minor | true  | 
                
| ver_patch | true  | 
                
| ver_pre_release | true  | 
                
| ver_build | true  | 
                
| Field | Type | Label | Description | 
| major | uint64 | Deprecated.  | 
                |
| minor | uint64 | Deprecated.  | 
                |
| micro | uint64 | Deprecated.  | 
                |
| label | string | Deprecated.  | 
                |
| ver_major | int32 | Deprecated.  | 
                |
| ver_minor | int32 | Deprecated.  | 
                |
| ver_patch | int32 | Deprecated.  | 
                |
| ver_pre_release | string | Deprecated.  | 
                |
| ver_build | int32 | Deprecated.  | 
                
| Name | Option | 
| major | true  | 
                
| minor | true  | 
                
| micro | true  | 
                
| label | true  | 
                
| ver_major | true  | 
                
| ver_minor | true  | 
                
| ver_patch | true  | 
                
| ver_pre_release | true  | 
                
| ver_build | true  | 
                
CreateDescriptionResponse represents a device's specifications.
| Field | Type | Label | Description | 
| response | CreateDescriptionResponse.Response | Specifies if the hardware definition exists on the server.  | 
                |
| total_gpio_pins | int32 | Specifies the number of GPIO pins on the client's physical hardware.  | 
                |
| total_analog_pins | int32 | Specifies the number of analog pins on the client's physical hardware.  | 
                |
| reference_voltage | float | Specifies the hardware's default reference voltage.  | 
                |
| total_i2c_ports | int32 | Specifies the number of hardware's I2C ports (i2cPorts[]).  | 
                
Request the board definition JSON from a device
MQTT Topic: `device/ID/description/get`
| Field | Type | Label | Description | 
| data | string | Deprecated. Request may be any UTF-8 string value  | 
                
| Name | Option | 
| data | true  | 
                
Response from Adafruit IO with the JSON board definition as a string
MQTT Topic: `device/ID/description/get`
| Field | Type | Label | Description | 
| board_definition | string | Deprecated. Response is JSON data encoded as a string  | 
                
| Name | Option | 
| board_definition | true  | 
                
RegistrationComplete Specifies if the device finished configuring
its components and is ready for configuration messages.
| Field | Type | Label | Description | 
| is_complete | bool | True if device successfully configured its components, False otherwise.  | 
                
Response. Specifies if the hardware definiton is within the database.
| Name | Number | Description | 
| RESPONSE_UNSPECIFIED | 0 | Invalid response from server  | 
              
| RESPONSE_OK | 1 | Board found within definition index  | 
              
| RESPONSE_BOARD_NOT_FOUND | 2 | Board not found in definition index  | 
              
Ds18x20DeInitRequest represents a request to de-initialize a DS18X20
Maxim temperature sensor, from the broker.
| Field | Type | Label | Description | 
| onewire_pin | string | The desired onewire bus to de-initialize a DS18x sensor on and release.  | 
                
Ds18x20DeviceEvent event represents data from **one** DS18X20 sensor.
| Field | Type | Label | Description | 
| onewire_pin | string | The desired pin to use as a OneWire bus.  | 
                |
| sensor_event | wippersnapper.i2c.v1.SensorEvent | repeated | The DS18X20's SensorEvent.  | 
                
Ds18x20InitRequest represents a request to initialize
a DS18X20 Maxim temperature sensor, from the broker.
NOTE: This API only supports ONE DS18X20 device PER OneWire bus.
| Field | Type | Label | Description | 
| onewire_pin | string | The desired pin to use as a OneWire bus.  | 
                |
| sensor_resolution | int32 | The desired sensor resolution (9, 10, 11, or 12 bits).  | 
                |
| i2c_device_properties | wippersnapper.i2c.v1.I2CDeviceSensorProperties | repeated | Properties for the DS18x20 sensor.  | 
                
ds18x20InitDs18x20InitResponseResponse represents a device's response
to a ds18x20InitRequest message.
| Field | Type | Label | Description | 
| is_initialized | bool | True if the 1-wire bus has been initialized successfully, False otherwise.  | 
                |
| onewire_pin | string | The pin being used as a OneWire bus.  | 
                
SPDX-FileCopyrightText: 2021 Brent Rubell for Adafruit Industries
SPDX-License-Identifier: MIT
I2CBusInitRequest represents a request to
initialize the I2C bus from the broker.
| Field | Type | Label | Description | 
| i2c_pin_scl | int32 | The desired I2C SCL pin.  | 
                |
| i2c_pin_sda | int32 | The desired I2C SDA pin.  | 
                |
| i2c_frequency | uint32 | The desired I2C SCL frequency, in Hz. Default is 100000Hz.  | 
                |
| i2c_port_number | int32 | The I2C port number.  | 
                
I2CBusInitResponse represents a response to I2CBusInitRequest
| Field | Type | Label | Description | 
| is_initialized | bool | Deprecated. True if the I2C port has been initialized successfully, False otherwise.  | 
                |
| bus_response | BusResponse | Whether the I2C bus initialized properly or failed. *  | 
                
| Name | Option | 
| is_initialized | true  | 
                
I2CBusScanRequest represents the parameters required to execute
a device's I2C scan.
| Field | Type | Label | Description | 
| i2c_port_number | int32 | The desired I2C port to scan.  | 
                |
| bus_init_request | I2CBusInitRequest | The I2C bus initialization request.  | 
                
I2CBusScanResponse represents a list of I2C addresses
found on the bus after I2CBusScanRequest has executed.
| Field | Type | Label | Description | 
| addresses_found | uint32 | repeated | The 7-bit addresses of the I2C devices found on the bus, empty if not found.  | 
                
| bus_response | BusResponse | The I2C bus' status. *  | 
                
I2CBusSetFrequency represents a request to change the
I2C clock speed to a desired frequency, in Hz.
| Field | Type | Label | Description | 
| frequency | uint32 | The desired I2C SCL frequency, in Hz.  | 
                |
| bus_id | int32 | An optional I2C bus identifier, if multiple exist.  | 
                
I2CDeviceDeinitRequest is a wrapper message containing
a deinitialization request for a specific i2c device.
| Field | Type | Label | Description | 
| i2c_port_number | int32 | The desired I2C port to de-initialize an I2C device on.  | 
                |
| i2c_device_address | uint32 | The 7-bit I2C address of the device on the bus.  | 
                
I2CDeviceDeinitResponse represents if an I2C device's
sensor(s) is/are successfully de-initialized.
| Field | Type | Label | Description | 
| is_success | bool | Deprecated. True if the deinitialization request succeeded, False otherwise.  | 
                |
| i2c_device_address | uint32 | The 7-bit I2C address of the device which was initialized.  | 
                |
| bus_response | BusResponse | The I2C bus' status. *  | 
                
| Name | Option | 
| is_success | true  | 
                
Each I2CDeviceEvent represents data from **one** I2C sensor.
NOTE: An I2CDeviceEvent can have multiple sensor events if
the I2C device contains > 1 sensor.
| Field | Type | Label | Description | 
| sensor_address | uint32 | The 7-bit I2C address of the I2C device.  | 
                |
| sensor_event | SensorEvent | repeated | A, optionally repeated, SensorEvent from a sensor.  | 
                
I2CDeviceInitRequest is a wrapper message for
an I2C device initialization request.
| Field | Type | Label | Description | 
| i2c_port_number | int32 | The desired I2C port to initialize an I2C device on.  | 
                |
| i2c_bus_init_req | I2CBusInitRequest | An I2C bus initialization request.  | 
                |
| i2c_device_address | uint32 | The 7-bit I2C address of the device on the bus.  | 
                |
| i2c_device_name | string | The I2C device's name, MUST MATCH the name on the JSON definition file on https://github.com/adafruit/Wippersnapper_Components.  | 
                |
| i2c_device_properties | I2CDeviceSensorProperties | repeated | Properties of each sensor on the I2C device.  | 
                
Represents a list of I2CDeviceInitRequest messages.
| Field | Type | Label | Description | 
| list | I2CDeviceInitRequest | repeated | 
  | 
                
I2CDeviceInitResponse contains the response from a
device after processing a I2CDeviceInitRequest message.
| Field | Type | Label | Description | 
| is_success | bool | Deprecated. !!DEPRECATED!! True if i2c device initialized successfully, false otherwise.  | 
                |
| i2c_device_address | uint32 | The 7-bit I2C address of the device on the bus.  | 
                |
| bus_response | BusResponse | The I2C bus' status. *  | 
                
| Name | Option | 
| is_success | true  | 
                
I2CDeviceSensorProperties contains
the properties of an I2C device's sensor such as
its type and period.
| Field | Type | Label | Description | 
| sensor_type | SensorType | 
  | 
                |
| sensor_period | uint32 | 
  | 
                
I2CDeviceUpdateRequest is a wrapper message which
contains a message to update a specific device's properties.
| Field | Type | Label | Description | 
| i2c_port_number | int32 | The desired I2C port.  | 
                |
| i2c_device_address | uint32 | The 7-bit I2C address of the device on the bus.  | 
                |
| i2c_device_name | string | The I2C device's name, MUST MATCH the name on the JSON file.  | 
                |
| i2c_device_properties | I2CDeviceSensorProperties | repeated | Properties for the I2C device's sensors.  | 
                
I2CDeviceUpdateResponse represents if an I2C device's
sensor(s) is/are successfully updated.
| Field | Type | Label | Description | 
| i2c_device_address | uint32 | The 7-bit I2C address of the device which was updated.  | 
                |
| is_success | bool | Deprecated. !!DEPRECATED!! True if the update request succeeded, False otherwise.  | 
                |
| bus_response | BusResponse | The I2C bus' status. *  | 
                
| Name | Option | 
| is_success | true  | 
                
SensorEvent is used to return the sensor's value and type.
| Field | Type | Label | Description | 
| type | SensorType | The sensor's type and corresponding SI unit  | 
                |
| value | float | The sensor's value  | 
                
BusResponse represents the state of the I2C bus, from a device.
| Name | Number | Description | 
| BUS_RESPONSE_UNSPECIFIED | 0 | Unspecified error occurred. *  | 
              
| BUS_RESPONSE_SUCCESS | 1 | I2C bus successfully initialized. *  | 
              
| BUS_RESPONSE_ERROR_HANG | 2 | I2C Bus hang, user should reset their board if this persists. *  | 
              
| BUS_RESPONSE_ERROR_PULLUPS | 3 | I2C bus failed to initialize - SDA or SCL needs a pull up. *  | 
              
| BUS_RESPONSE_ERROR_WIRING | 4 | I2C bus failed to communicate - Please check your wiring. *  | 
              
| BUS_RESPONSE_UNSUPPORTED_SENSOR | 5 | WipperSnapper firmware is outdated and does not include the sensor type - Please update your WipperSnapper firmware. *  | 
              
| BUS_RESPONSE_DEVICE_INIT_FAIL | 6 | I2C device failed to initialize. *  | 
              
| BUS_RESPONSE_DEVICE_DEINIT_FAIL | 7 | I2C device failed to de-initialize. *  | 
              
SensorType allows us determine what types of units the sensor uses, etc.
| Name | Number | Description | 
| SENSOR_TYPE_UNSPECIFIED | 0 | Sensor value type which is not defined by this list, "Raw Value: {value}".  | 
              
| SENSOR_TYPE_ACCELEROMETER | 1 | Acceleration, in meter per second per second, "{value}m/s/s".  | 
              
| SENSOR_TYPE_MAGNETIC_FIELD | 2 | Magnetic field strength, in micro-Tesla, "{value}µT".  | 
              
| SENSOR_TYPE_ORIENTATION | 3 | Orientation angle, in degrees, "{value}°".  | 
              
| SENSOR_TYPE_GYROSCOPE | 4 | Angular rate, in radians per second, "{value}rad/s".  | 
              
| SENSOR_TYPE_LIGHT | 5 | Light-level, non-unit-specific (For a unit-specific measurement, see: Lux), , "Raw Value: {value}".  | 
              
| SENSOR_TYPE_PRESSURE | 6 | Pressure, in hectopascal, , "{value}hPa".  | 
              
| SENSOR_TYPE_PROXIMITY | 8 | Distance from an object to a sensor, non-unit-specific, "Raw Value: {value}".  | 
              
| SENSOR_TYPE_GRAVITY | 9 | Metres per second squared, "{value}m/s^2".  | 
              
| SENSOR_TYPE_LINEAR_ACCELERATION | 10 | Acceleration not including gravity, in meter per second squared, "{value}m/s^2".  | 
              
| SENSOR_TYPE_ROTATION_VECTOR | 11 | An angle in radians, "{value} rad".  | 
              
| SENSOR_TYPE_RELATIVE_HUMIDITY | 12 | in percent (%), "{value}%".  | 
              
| SENSOR_TYPE_AMBIENT_TEMPERATURE | 13 | Temperature of the air around a sensor, in degrees Celsius, "{value}°C".  | 
              
| SENSOR_TYPE_OBJECT_TEMPERATURE | 14 | Temperature of the object a sensor is touching/pointed at, in degrees Celsius, "{value}°C".  | 
              
| SENSOR_TYPE_VOLTAGE | 15 | Volts, "{value}V".  | 
              
| SENSOR_TYPE_CURRENT | 16 | Milliamps, "{value}mA".  | 
              
| SENSOR_TYPE_COLOR | 17 | Values are in 0..1.0 RGB channel luminosity and 32-bit RGBA format. "Color: {value}".  | 
              
| SENSOR_TYPE_RAW | 18 | Sensor reads a value which is not defined by this list, "Raw Value: {value}".  | 
              
| SENSOR_TYPE_PM10_STD | 19 | Standard Particulate Matter 1.0, in ppm, "{value}ppm".  | 
              
| SENSOR_TYPE_PM25_STD | 20 | Standard Particulate Matter 2.5, in ppm, "{value}ppm".  | 
              
| SENSOR_TYPE_PM100_STD | 21 | Standard Particulate Matter 100, in ppm, "{value}ppm".  | 
              
| SENSOR_TYPE_PM10_ENV | 22 | Environmental Particulate Matter 1.0, in ppm, "{value}ppm".  | 
              
| SENSOR_TYPE_PM25_ENV | 23 | Environmental Particulate Matter 2.5, in ppm, "{value}ppm".  | 
              
| SENSOR_TYPE_PM100_ENV | 24 | Environmental Particulate Matter 100, in ppm, "{value}ppm".  | 
              
| SENSOR_TYPE_CO2 | 25 | Measured CO2, in ppm, "{value}ppm".  | 
              
| SENSOR_TYPE_GAS_RESISTANCE | 26 | Proportional to the amount of VOC particles in the air, in Ohms, "{value}Ω".  | 
              
| SENSOR_TYPE_ALTITUDE | 27 | Values are in meters (m), "${$v} m".  | 
              
| SENSOR_TYPE_LUX | 28 | Light level, in lux, "Lux: {value}".  | 
              
| SENSOR_TYPE_ECO2 | 29 | equivalent/estimated CO2 in ppm (estimated from some other measurement), "{value}ppm".  | 
              
| SENSOR_TYPE_UNITLESS_PERCENT | 30 | Percentage, unit-less, "{value}%".  | 
              
| SENSOR_TYPE_AMBIENT_TEMPERATURE_FAHRENHEIT | 31 | Temperature of the air around a sensor, in degrees Fahrenheit, "{value}°F".  | 
              
| SENSOR_TYPE_OBJECT_TEMPERATURE_FAHRENHEIT | 32 | Temperature of the object a sensor is touching/pointed at, in degrees Fahrenheit, "{value}°F".  | 
              
| SENSOR_TYPE_VOC_INDEX | 33 | Values are an index from 1-500 with 100 being normal, "${$v} VOC".  | 
              
| SENSOR_TYPE_NOX_INDEX | 34 | Values are an index from 1-500 with 100 being normal, "${$v} NOx".  | 
              
| SENSOR_TYPE_TVOC | 35 | Values are in parts per billion (ppb), "${$v} ppb".  | 
              
SPDX-FileCopyrightText: 2020 Brent Rubell for Adafruit Industries
SPDX-License-Identifier: MIT
Configures a PWM output pin
| Field | Type | Label | Description | 
| pin_name | string | Deprecated. Pin to write to  | 
                |
| duty_cycle | int32 | Deprecated. Duty cycle between always off (0) and always on (255)  | 
                |
| frequency | int32 | Deprecated. Target frequency, in Hz  | 
                |
| variable_frequency | bool | Deprecated. If the frequency changes over time NOTE: CIRCUITPYTHON-API ONLY  | 
                
| Name | Option | 
| pin_name | true  | 
                
| duty_cycle | true  | 
                
| frequency | true  | 
                
| variable_frequency | true  | 
                
| Field | Type | Label | Description | 
| list | ConfigurePWMPinRequest | repeated | Deprecated.  | 
                
| Name | Option | 
| list | true  | 
                
Represents a request from the broker to create, update, or delete a GPIO pin.
| Field | Type | Label | Description | 
| pin_name | string | The name of pin we are accessing.  | 
                |
| mode | Mode | Specifies the pin's type, analog or input.  | 
                |
| direction | ConfigurePinRequest.Direction | Specifies the pin's behavior.  | 
                |
| pull | ConfigurePinRequest.Pull | Specifies an optional pullup resistor value.  | 
                |
| period | float | Specifies the time between measurements, in seconds.  | 
                |
| request_type | ConfigurePinRequest.RequestType | Specifies the type of ConfigurePinRequest.  | 
                |
| aref | float | Deprecated. deprecated: Specifies the reference voltage used for analog input, defaults to 3.3v.  | 
                |
| analog_read_mode | ConfigurePinRequest.AnalogReadMode | ANALOG-ONLY: Specifies the read mode for an analog pin.  | 
                
| Name | Option | 
| aref | true  | 
                
Represents a list of ConfigurePinRequest messages.
| Field | Type | Label | Description | 
| list | ConfigurePinRequest | repeated | 
  | 
                
ConfigureReferenceVoltage - Changes the reference voltage used for analog inputs.
Direction: C2D
| Field | Type | Label | Description | 
| reference_voltage | float | Specifies an ADC reference voltage.  | 
                
Write duty cycle to a pin PWM output pin
| Field | Type | Label | Description | 
| duty_cycle | int32 | Deprecated. Duty cycle between always off (0) and always on (255)  | 
                
| Name | Option | 
| duty_cycle | true  | 
                
| Field | Type | Label | Description | 
| list | PWMPinEvent | repeated | Deprecated.  | 
                
| Name | Option | 
| list | true  | 
                
Pin Event. Describes a pin's value.
| Field | Type | Label | Description | 
| pin_name | string | Specifies the pin's name.  | 
                |
| pin_value | string | Specifies the pin's value.  | 
                |
| mode | Mode | Deprecated. DEPRECATED: Specifies the pin's mode, analog or digital.  | 
                |
| pin_value_volts | float | Deprecated. DEPRECATED: Specifies an anlog pin's voltage.  | 
                
| Name | Option | 
| mode | true  | 
                
| pin_value_volts | true  | 
                
Sends a list of PinEvents
NOTE: Not working with nanopb decode repeated
| Field | Type | Label | Description | 
| list | PinEvent | repeated | 
  | 
                
Selects the type of value read by an analog pin.
PIN_VALUE: Raw ADC reading.
PIN_VOLTAGE: Calculated voltage reading.
NOTE: This is only applicable to analog pins.
| Name | Number | Description | 
| ANALOG_READ_MODE_UNSPECIFIED | 0 | |
| ANALOG_READ_MODE_PIN_VALUE | 1 | |
| ANALOG_READ_MODE_PIN_VOLTAGE | 2 | 
Direction. Specifies the pin's direction, INPUT or OUTPUT.
| Name | Number | Description | 
| DIRECTION_UNSPECIFIED | 0 | Invalid Direction from Broker.  | 
              
| DIRECTION_INPUT | 1 | Set the pin to behave as an input.  | 
              
| DIRECTION_OUTPUT | 2 | Set the pin to behave as an output.  | 
              
Pull. An optional pullup resistor value
| Name | Number | Description | 
| PULL_UNSPECIFIED | 0 | Invalid Direction from Broker.  | 
              
| PULL_UP | 1 | Set the pin to pull high.  | 
              
| PULL_DOWN | 2 | Set the pin to pull low.  | 
              
Request Type. Describes the type of ConfigurePinRequest for the hardware to operate on.
| Name | Number | Description | 
| REQUEST_TYPE_UNSPECIFIED | 0 | Invalid request from Broker.  | 
              
| REQUEST_TYPE_CREATE | 1 | The request creates a pin.  | 
              
| REQUEST_TYPE_UPDATE | 2 | The request updates a previously created pin.  | 
              
| REQUEST_TYPE_DELETE | 3 | The request deletes a previously created pin.  | 
              
Mode. Specifies if a GPIO pin is an analog or digital pin.
| Name | Number | Description | 
| MODE_UNSPECIFIED | 0 | Invalid Mode from Broker.  | 
              
| MODE_ANALOG | 1 | Set up an analog pin.  | 
              
| MODE_DIGITAL | 2 | Set up a digital pin.  | 
              
PixelsCreateRequest represents a call from IO to a device.
Creates a strand of addressable pixels.
Initial brightness is always 128.
| Field | Type | Label | Description | 
| pixels_type | PixelsType | Defines the model/type of pixel strand  | 
                |
| pixels_num | uint32 | Number of pixels attached to strand.  | 
                |
| pixels_ordering | PixelsOrder | Defines the pixel strand's color ordering.  | 
                |
| pixels_brightness | uint32 | Strand brightness, 0 to 255  | 
                |
| pixels_pin_neopixel | string | Generic pin a NeoPixel strand is connected to.  | 
                |
| pixels_pin_dotstar_data | string | Data pin a DotStar strand is connected to.  | 
                |
| pixels_pin_dotstar_clock | string | Clock pin a DotStar strand is connected to.  | 
                
PixelsCreateResponse represents response from a WipperSnapper
device to IO after a PixelsCreateRequest call
| Field | Type | Label | Description | 
| is_success | bool | True if the strand initialized successfully, False otherwise.  | 
                |
| pixels_pin_data | string | Data pin the responding strand is connected to.  | 
                
PixelCreateRequest represents a call from IO to a device
Deletes a strand of addressable pixels and release the resources and pin.
| Field | Type | Label | Description | 
| pixels_type | PixelsType | Defines the model/type of pixel strand  | 
                |
| pixels_pin_data | string | Data pin a strand is connected to.  | 
                
PixelsWriteRequest represents a call from IO to a device.
Writes to a strand of pixels.
| Field | Type | Label | Description | 
| pixels_type | PixelsType | Defines the model/type of pixel strand  | 
                |
| pixels_pin_data | string | Data pin a strand is connected to.  | 
                |
| pixels_color | uint32 | 32-bit color value. Most significant byte is white (for RGBW pixels) or ignored (for RGB pixels), next is red, then green, and least significant byte is blue.  | 
                
PixelsOrder defines the color ordering.
| Name | Number | Description | 
| PIXELS_ORDER_UNSPECIFIED | 0 | Unspecified color ordering, error.  | 
              
| PIXELS_ORDER_GRB | 1 | DEFAULT for NeoPixels - Green, Red, Blue  | 
              
| PIXELS_ORDER_GRBW | 2 | Green, Red, Blue, White  | 
              
| PIXELS_ORDER_RGB | 3 | Red, Green, Blue  | 
              
| PIXELS_ORDER_RGBW | 4 | Red, Green, Blue, White  | 
              
| PIXELS_ORDER_BRG | 5 | DEFAULT for DotStars - Blue, Red, Green  | 
              
| PIXELS_ORDER_RBG | 6 | Red, Blue Green  | 
              
| PIXELS_ORDER_GBR | 7 | Green, Blue, Red  | 
              
| PIXELS_ORDER_BGR | 8 | Blue, Green, Red  | 
              
PixelsType defines the type/model of pixel strand.
| Name | Number | Description | 
| PIXELS_TYPE_UNSPECIFIED | 0 | |
| PIXELS_TYPE_NEOPIXEL | 1 | |
| PIXELS_TYPE_DOTSTAR | 2 | 
SPDX-FileCopyrightText: 2022 Brent Rubell for Adafruit Industries
SPDX-License-Identifier: MIT
PWMAttachRequest represents a request to a device to attach/allocate a PWM pin.
On ESP32 Arduino, this will "attach" a pin to a LEDC channel/timer group.
On non-ESP32 Arduino, this does nothing.
| Field | Type | Label | Description | 
| pin | string | The pin to be attached.  | 
                |
| frequency | int32 | PWM frequency of an analog pin, in Hz. *  | 
                |
| resolution | int32 | The resolution of an analog pin, in bits. *  | 
                
PWMAttachResponse represents a response from a device's execution of an
AttachRequest message.
| Field | Type | Label | Description | 
| pin | string | The requested pin.  | 
                |
| did_attach | bool | True if AttachRequest successful, False otherwise.  | 
                
PWMDetachRequest represents a request to stop PWM'ing and release the pin for re-use.
On ESP32, this will "detach" a pin from a LEDC channel/timer group.
On non-ESP32 Arduino, this calls digitalWrite(LOW) on the pin
| Field | Type | Label | Description | 
| pin | string | The PWM pin to de-initialized.  | 
                
WriteDutyCycle represents a wrapper request to write duty cycles to multiple pins.
This is used for controlling RGB/RGBW LEDs.
| Field | Type | Label | Description | 
| write_duty_cycle_req | PWMWriteDutyCycleRequest | repeated | 
  | 
                
WriteDutyCycleRequest represents a request to write a duty cycle to a pin with a frequency (fixed).
This is used for controlling LEDs.
| Field | Type | Label | Description | 
| pin | string | The pin to write to.  | 
                |
| duty_cycle | int32 | The desired duty cycle to write. This value will be changed by the slider on Adafruit IO. *  | 
                
WriteFrequencyRequest represents a request to write a Frequency, in Hz, to a pin with a duty cycle of 50%.
This is used for playing tones using a piezo buzzer or speaker.
| Field | Type | Label | Description | 
| pin | string | The pin to write to.  | 
                |
| frequency | int32 | The desired PWM frequency, in Hz. This value will be changed by the slider on Adafruit IO. *  | 
                
SPDX-FileCopyrightText: 2022 Brent Rubell for Adafruit Industries
SPDX-License-Identifier: MIT
ServoAttachRequest represents a request to attach a servo to a pin.
| Field | Type | Label | Description | 
| servo_pin | string | The name of pin to attach a servo to.  | 
                |
| servo_freq | int32 | The overall PWM frequency, default sent by Adafruit IO is 50Hz. *  | 
                |
| min_pulse_width | int32 | The minimum pulse length in uS. Default sent by Adafruit IO is 500uS. *  | 
                |
| max_pulse_width | int32 | The maximum pulse length in uS. Default sent by Adafruit IO is 2500uS. *  | 
                
ServoAttachResponse represents the result of attaching a servo to a pin.
| Field | Type | Label | Description | 
| attach_success | bool | True if a servo was attached successfully, False otherwise. *  | 
                |
| servo_pin | string | The name of pin we're responding about.  | 
                
ServoDetachRequest represents a request to detach a servo from a pin and de-initialize the pin for other uses.
| Field | Type | Label | Description | 
| servo_pin | string | The name of pin to use as a servo pin.  | 
                
ServoWriteReq represents a message to write the servo's position.
NOTE: Position is sent from Adafruit IO as a pulse width in uS between 500uS
and 2500uS. The client application must convert pulse width to duty cycle w/fixed
freq of 50Hz prior to writing to the servo pin.
| Field | Type | Label | Description | 
| servo_pin | string | The name of pin we're addressing.  | 
                |
| pulse_width | int32 | The pulse width to write to the servo, in uS *  | 
                
SPDX-FileCopyrightText: 2020-2021 Brent Rubell for Adafruit Industries
SPDX-License-Identifier: MIT
| Field | Type | Label | Description | 
| pin_configs | wippersnapper.pin.v1.ConfigurePinRequests | Create, update or remove a GPIO pin  | 
                |
| pin_event | wippersnapper.pin.v1.PinEvent | Update a pins state  | 
                |
| pwm_pin_config | wippersnapper.pin.v1.ConfigurePWMPinRequests | Deprecated. Create, update or remove a PWM output pin  | 
                |
| pwm_pin_event | wippersnapper.pin.v1.PWMPinEvents | Deprecated. Write duty cycle to a PWM output pin  | 
                |
| pin_events | wippersnapper.pin.v1.PinEvents | Update a pin's state  | 
                
| Name | Option | 
| pwm_pin_config | true  | 
                
| pwm_pin_event | true  | 
                
Ds18x20Request represents a Ds18x20 command sent to a device.
| Field | Type | Label | Description | 
| req_ds18x20_init | wippersnapper.ds18x20.v1.Ds18x20InitRequest | 
  | 
                |
| req_ds18x20_deinit | wippersnapper.ds18x20.v1.Ds18x20DeInitRequest | 
  | 
                
Ds18x20Response represents a Ds18x20 message from the device.
| Field | Type | Label | Description | 
| resp_ds18x20_init | wippersnapper.ds18x20.v1.Ds18x20InitResponse | 
  | 
                |
| resp_ds18x20_event | wippersnapper.ds18x20.v1.Ds18x20DeviceEvent | 
  | 
                
I2CRequest represents the broker's request for a specific i2c command to a device.
| Field | Type | Label | Description | 
| req_i2c_init | wippersnapper.i2c.v1.I2CBusInitRequest | Deprecated.  | 
                |
| req_i2c_scan | wippersnapper.i2c.v1.I2CBusScanRequest | 
  | 
                |
| req_i2c_set_freq | wippersnapper.i2c.v1.I2CBusSetFrequency | 
  | 
                |
| req_i2c_device_init | wippersnapper.i2c.v1.I2CDeviceInitRequest | 
  | 
                |
| req_i2c_device_deinit | wippersnapper.i2c.v1.I2CDeviceDeinitRequest | 
  | 
                |
| req_i2c_device_update | wippersnapper.i2c.v1.I2CDeviceUpdateRequest | 
  | 
                |
| req_i2c_device_init_requests | wippersnapper.i2c.v1.I2CDeviceInitRequests | 
  | 
                
| Name | Option | 
| req_i2c_init | true  | 
                
I2CResponse represents the device's response to an I2C-specific message from IO.
| Field | Type | Label | Description | 
| resp_i2c_init | wippersnapper.i2c.v1.I2CBusInitResponse | Deprecated.  | 
                |
| resp_i2c_scan | wippersnapper.i2c.v1.I2CBusScanResponse | 
  | 
                |
| resp_i2c_device_init | wippersnapper.i2c.v1.I2CDeviceInitResponse | 
  | 
                |
| resp_i2c_device_deinit | wippersnapper.i2c.v1.I2CDeviceDeinitResponse | 
  | 
                |
| resp_i2c_device_update | wippersnapper.i2c.v1.I2CDeviceUpdateResponse | 
  | 
                |
| resp_i2c_device_event | wippersnapper.i2c.v1.I2CDeviceEvent | 
  | 
                
| Name | Option | 
| resp_i2c_init | true  | 
                
PWMRequest represents a broker's request across the PWM sub-topic.
| Field | Type | Label | Description | 
| attach_request | wippersnapper.pwm.v1.PWMAttachRequest | 
  | 
                |
| detach_request | wippersnapper.pwm.v1.PWMDetachRequest | 
  | 
                |
| write_duty_request | wippersnapper.pwm.v1.PWMWriteDutyCycleRequest | 
  | 
                |
| write_duty_multi_request | wippersnapper.pwm.v1.PWMWriteDutyCycleMultiRequest | 
  | 
                |
| write_freq_request | wippersnapper.pwm.v1.PWMWriteFrequencyRequest | 
  | 
                
PWMRequest represents a devices's response across the PWM sub-topic.
| Field | Type | Label | Description | 
| attach_response | wippersnapper.pwm.v1.PWMAttachResponse | 
  | 
                
PixelsRequest represents the broker's request across the pixels sub-topic.
| Field | Type | Label | Description | 
| req_pixels_create | wippersnapper.pixels.v1.PixelsCreateRequest | 
  | 
                |
| req_pixels_delete | wippersnapper.pixels.v1.PixelsDeleteRequest | 
  | 
                |
| req_pixels_write | wippersnapper.pixels.v1.PixelsWriteRequest | 
  | 
                
| Field | Type | Label | Description | 
| resp_pixels_create | wippersnapper.pixels.v1.PixelsCreateResponse | 
  | 
                
ServoRequest represents the broker's request across the servo sub-topic.
| Field | Type | Label | Description | 
| servo_attach | wippersnapper.servo.v1.ServoAttachRequest | 
  | 
                |
| servo_detach | wippersnapper.servo.v1.ServoDetachRequest | 
  | 
                |
| servo_write | wippersnapper.servo.v1.ServoWriteRequest | 
  | 
                
ServoResponse represents the device's response across the servo sub-topic.
| Field | Type | Label | Description | 
| servo_attach_resp | wippersnapper.servo.v1.ServoAttachResponse | 
  | 
                
Response from a signal message payload (device->broker)
| Field | Type | Label | Description | 
| configuration_complete | bool | True if a device successfully completed a ConfigurePinRequests message, False otherwise.  | 
                
UARTRequest represents a UART command sent to a device.
| Field | Type | Label | Description | 
| req_uart_device_attach | wippersnapper.uart.v1.UARTDeviceAttachRequest | 
  | 
                |
| req_uart_device_detach | wippersnapper.uart.v1.UARTDeviceDetachRequest | 
  | 
                
UARTResponse represents a UART command from a device.
| Field | Type | Label | Description | 
| resp_uart_device_attach | wippersnapper.uart.v1.UARTDeviceAttachResponse | 
  | 
                |
| resp_uart_device_event | wippersnapper.uart.v1.UARTDeviceEvent | 
  | 
                
SPDX-FileCopyrightText: 2023 Brent Rubell for Adafruit Industries
SPDX-License-Identifier: MIT
UARTBusData represents a message to configure a UART bus for communication with a device.
NOTE: This message is never sent directly, it is packed inside UARTDeviceAttachRequest.
| Field | Type | Label | Description | 
| baudrate | int32 | The baudrate to use for UART communication (may be a common baud rate such as: 1200bps, 2400bps, 4800bps, 19200bps, 38400bps, 57600bps, or 115200bps).  | 
                |
| pin_rx | string | The pin on which to receive UART stream data.  | 
                |
| pin_tx | string | The pin on which to transmit UART stream data.  | 
                |
| is_invert | bool | Inverts the UART signal on RX and TX pins. Defaults to False.  | 
                
UARTDeviceAttachRequest represents a message sent from IO to a device
to configure the UART bus (if not already configured) and attach a device.
| Field | Type | Label | Description | 
| bus_info | UARTBusData | The UART bus configuration.  | 
                |
| device_id | string | The unique identifier of the device to attach to the UART bus, from Adafruit_WipperSnapper_Components.  | 
                |
| polling_interval | int32 | The polling interval, in milliseconds, to use for the device.  | 
                
UARTDeviceAttachResponse represents a message sent from a device to IO to
confirm that a device has been attached to the UART bus.
| Field | Type | Label | Description | 
| device_id | string | The unique identifier of the device to attach to the UART bus, from Adafruit_WipperSnapper_Components.  | 
                |
| is_success | bool | True if the UARTInitRequest was successful, False otherwise.  | 
                
UARTDeviceDetachRequest represents a message sent from IO to a device
to detach a device from the UART bus.
| Field | Type | Label | Description | 
| device_id | string | The unique identifier of the device to detach from the UART bus.  | 
                
UARTDeviceEvent represents incoming data from a UART sensor.
| Field | Type | Label | Description | 
| device_id | string | The unique identifier of the device to attach to the UART bus, from Adafruit_WipperSnapper_Components.  | 
                |
| sensor_event | wippersnapper.i2c.v1.SensorEvent | repeated | A, optionally repeated, SensorEvent from a sensor.  | 
                
| .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby | 
| double | double | double | float | float64 | double | float | Float | |
| float | float | float | float | float32 | float | float | Float | |
| int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | 
| int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | int64 | long | integer/string | Bignum | 
| uint32 | Uses variable-length encoding. | uint32 | int | int/long | uint32 | uint | integer | Bignum or Fixnum (as required) | 
| uint64 | Uses variable-length encoding. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum or Fixnum (as required) | 
| sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | 
| sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | int64 | long | integer/string | Bignum | 
| fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | uint32 | uint | integer | Bignum or Fixnum (as required) | 
| fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | uint64 | ulong | integer/string | Bignum | 
| sfixed32 | Always four bytes. | int32 | int | int | int32 | int | integer | Bignum or Fixnum (as required) | 
| sfixed64 | Always eight bytes. | int64 | long | int/long | int64 | long | integer/string | Bignum | 
| bool | bool | boolean | boolean | bool | bool | boolean | TrueClass/FalseClass | |
| string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | string | string | string | String (UTF-8) | 
| bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | []byte | ByteString | string | String (ASCII-8BIT) |