/* Automatically generated nanopb header */ /* Generated by nanopb-0.4.7 */ #ifndef PB_MESHTASTIC_MESHTASTIC_REMOTE_HARDWARE_PB_H_INCLUDED #define PB_MESHTASTIC_MESHTASTIC_REMOTE_HARDWARE_PB_H_INCLUDED #include #if PB_PROTO_HEADER_VERSION != 40 #error Regenerate this file with the current version of nanopb generator. #endif /* Enum definitions */ /* TODO: REPLACE */ typedef enum _HardwareMessage_Type { /* Unset/unused */ HardwareMessage_Type_UNSET = 0, /* Set gpio gpios based on gpio_mask/gpio_value */ HardwareMessage_Type_WRITE_GPIOS = 1, /* We are now interested in watching the gpio_mask gpios. If the selected gpios change, please broadcast GPIOS_CHANGED. Will implicitly change the gpios requested to be INPUT gpios. */ HardwareMessage_Type_WATCH_GPIOS = 2, /* The gpios listed in gpio_mask have changed, the new values are listed in gpio_value */ HardwareMessage_Type_GPIOS_CHANGED = 3, /* Read the gpios specified in gpio_mask, send back a READ_GPIOS_REPLY reply with gpio_value populated */ HardwareMessage_Type_READ_GPIOS = 4, /* A reply to READ_GPIOS. gpio_mask and gpio_value will be populated */ HardwareMessage_Type_READ_GPIOS_REPLY = 5 } HardwareMessage_Type; /* Struct definitions */ /* An example app to show off the module system. This message is used for REMOTE_HARDWARE_APP PortNums. Also provides easy remote access to any GPIO. In the future other remote hardware operations can be added based on user interest (i.e. serial output, spi/i2c input/output). FIXME - currently this feature is turned on by default which is dangerous because no security yet (beyond the channel mechanism). It should be off by default and then protected based on some TBD mechanism (a special channel once multichannel support is included?) */ typedef struct _HardwareMessage { /* What type of HardwareMessage is this? */ HardwareMessage_Type type; /* What gpios are we changing. Not used for all MessageTypes, see MessageType for details */ uint64_t gpio_mask; /* For gpios that were listed in gpio_mask as valid, what are the signal levels for those gpios. Not used for all MessageTypes, see MessageType for details */ uint64_t gpio_value; } HardwareMessage; #ifdef __cplusplus extern "C" { #endif /* Helper constants for enums */ #define _HardwareMessage_Type_MIN HardwareMessage_Type_UNSET #define _HardwareMessage_Type_MAX HardwareMessage_Type_READ_GPIOS_REPLY #define _HardwareMessage_Type_ARRAYSIZE ((HardwareMessage_Type)(HardwareMessage_Type_READ_GPIOS_REPLY+1)) #define HardwareMessage_type_ENUMTYPE HardwareMessage_Type /* Initializer values for message structs */ #define HardwareMessage_init_default {_HardwareMessage_Type_MIN, 0, 0} #define HardwareMessage_init_zero {_HardwareMessage_Type_MIN, 0, 0} /* Field tags (for use in manual encoding/decoding) */ #define HardwareMessage_type_tag 1 #define HardwareMessage_gpio_mask_tag 2 #define HardwareMessage_gpio_value_tag 3 /* Struct field encoding specification for nanopb */ #define HardwareMessage_FIELDLIST(X, a) \ X(a, STATIC, SINGULAR, UENUM, type, 1) \ X(a, STATIC, SINGULAR, UINT64, gpio_mask, 2) \ X(a, STATIC, SINGULAR, UINT64, gpio_value, 3) #define HardwareMessage_CALLBACK NULL #define HardwareMessage_DEFAULT NULL extern const pb_msgdesc_t HardwareMessage_msg; /* Defines for backwards compatibility with code written before nanopb-0.4.0 */ #define HardwareMessage_fields &HardwareMessage_msg /* Maximum encoded size of messages (where known) */ #define HardwareMessage_size 24 #ifdef __cplusplus } /* extern "C" */ #endif #endif