/* Automatically generated nanopb header */
/* Generated by nanopb-0.4.9 */

#ifndef PB_MESHTASTIC_MESHTASTIC_DEVICE_UI_PB_H_INCLUDED
#define PB_MESHTASTIC_MESHTASTIC_DEVICE_UI_PB_H_INCLUDED
#include <pb.h>

#if PB_PROTO_HEADER_VERSION != 40
#error Regenerate this file with the current version of nanopb generator.
#endif

/* Enum definitions */
typedef enum _meshtastic_Theme {
    /* Dark */
    meshtastic_Theme_DARK = 0,
    /* Light */
    meshtastic_Theme_LIGHT = 1,
    /* Red */
    meshtastic_Theme_RED = 2
} meshtastic_Theme;

/* Localization */
typedef enum _meshtastic_Language {
    /* English */
    meshtastic_Language_ENGLISH = 0,
    /* French */
    meshtastic_Language_FRENCH = 1,
    /* German */
    meshtastic_Language_GERMAN = 2,
    /* Italian */
    meshtastic_Language_ITALIAN = 3,
    /* Portuguese */
    meshtastic_Language_PORTUGUESE = 4,
    /* Spanish */
    meshtastic_Language_SPANISH = 5,
    /* Swedish */
    meshtastic_Language_SWEDISH = 6,
    /* Finnish */
    meshtastic_Language_FINNISH = 7,
    /* Polish */
    meshtastic_Language_POLISH = 8,
    /* Turkish */
    meshtastic_Language_TURKISH = 9
} meshtastic_Language;

/* Struct definitions */
typedef struct _meshtastic_NodeFilter {
    /* Filter unknown nodes */
    bool unknown_switch;
    /* Filter offline nodes */
    bool offline_switch;
    /* Filter nodes w/o public key */
    bool public_key_switch;
    /* Filter based on hops away */
    int8_t hops_away;
    /* Filter nodes w/o position */
    bool position_switch;
    /* Filter nodes by matching name string */
    char node_name[16];
} meshtastic_NodeFilter;

typedef struct _meshtastic_NodeHighlight {
    /* Hightlight nodes w/ active chat */
    bool chat_switch;
    /* Highlight nodes w/ position */
    bool position_switch;
    /* Highlight nodes w/ telemetry data */
    bool telemetry_switch;
    /* Highlight nodes w/ iaq data */
    bool iaq_switch;
    /* Highlight nodes by matching name string */
    char node_name[16];
} meshtastic_NodeHighlight;

typedef struct _meshtastic_DeviceUIConfig {
    /* TFT display brightness 1..255 */
    uint8_t screen_brightness;
    /* Screen timeout 0..900 */
    uint16_t screen_timeout;
    /* Screen lock enabled */
    bool screen_lock;
    /* Color theme */
    meshtastic_Theme theme;
    /* Audible message alert enabled */
    bool alert_enabled;
    /* Localization */
    meshtastic_Language language;
    /* Node list filter */
    bool has_node_filter;
    meshtastic_NodeFilter node_filter;
    /* Node list highlightening */
    bool has_node_highlight;
    meshtastic_NodeHighlight node_highlight;
} meshtastic_DeviceUIConfig;


#ifdef __cplusplus
extern "C" {
#endif

/* Helper constants for enums */
#define _meshtastic_Theme_MIN meshtastic_Theme_DARK
#define _meshtastic_Theme_MAX meshtastic_Theme_RED
#define _meshtastic_Theme_ARRAYSIZE ((meshtastic_Theme)(meshtastic_Theme_RED+1))

#define _meshtastic_Language_MIN meshtastic_Language_ENGLISH
#define _meshtastic_Language_MAX meshtastic_Language_TURKISH
#define _meshtastic_Language_ARRAYSIZE ((meshtastic_Language)(meshtastic_Language_TURKISH+1))

#define meshtastic_DeviceUIConfig_theme_ENUMTYPE meshtastic_Theme
#define meshtastic_DeviceUIConfig_language_ENUMTYPE meshtastic_Language




/* Initializer values for message structs */
#define meshtastic_DeviceUIConfig_init_default   {0, 0, 0, _meshtastic_Theme_MIN, 0, _meshtastic_Language_MIN, false, meshtastic_NodeFilter_init_default, false, meshtastic_NodeHighlight_init_default}
#define meshtastic_NodeFilter_init_default       {0, 0, 0, 0, 0, ""}
#define meshtastic_NodeHighlight_init_default    {0, 0, 0, 0, ""}
#define meshtastic_DeviceUIConfig_init_zero      {0, 0, 0, _meshtastic_Theme_MIN, 0, _meshtastic_Language_MIN, false, meshtastic_NodeFilter_init_zero, false, meshtastic_NodeHighlight_init_zero}
#define meshtastic_NodeFilter_init_zero          {0, 0, 0, 0, 0, ""}
#define meshtastic_NodeHighlight_init_zero       {0, 0, 0, 0, ""}

/* Field tags (for use in manual encoding/decoding) */
#define meshtastic_NodeFilter_unknown_switch_tag 1
#define meshtastic_NodeFilter_offline_switch_tag 2
#define meshtastic_NodeFilter_public_key_switch_tag 3
#define meshtastic_NodeFilter_hops_away_tag      4
#define meshtastic_NodeFilter_position_switch_tag 5
#define meshtastic_NodeFilter_node_name_tag      6
#define meshtastic_NodeHighlight_chat_switch_tag 1
#define meshtastic_NodeHighlight_position_switch_tag 2
#define meshtastic_NodeHighlight_telemetry_switch_tag 3
#define meshtastic_NodeHighlight_iaq_switch_tag  4
#define meshtastic_NodeHighlight_node_name_tag   5
#define meshtastic_DeviceUIConfig_screen_brightness_tag 1
#define meshtastic_DeviceUIConfig_screen_timeout_tag 2
#define meshtastic_DeviceUIConfig_screen_lock_tag 3
#define meshtastic_DeviceUIConfig_theme_tag      4
#define meshtastic_DeviceUIConfig_alert_enabled_tag 5
#define meshtastic_DeviceUIConfig_language_tag   6
#define meshtastic_DeviceUIConfig_node_filter_tag 7
#define meshtastic_DeviceUIConfig_node_highlight_tag 8

/* Struct field encoding specification for nanopb */
#define meshtastic_DeviceUIConfig_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, UINT32,   screen_brightness,   1) \
X(a, STATIC,   SINGULAR, UINT32,   screen_timeout,    2) \
X(a, STATIC,   SINGULAR, BOOL,     screen_lock,       3) \
X(a, STATIC,   SINGULAR, UENUM,    theme,             4) \
X(a, STATIC,   SINGULAR, BOOL,     alert_enabled,     5) \
X(a, STATIC,   SINGULAR, UENUM,    language,          6) \
X(a, STATIC,   OPTIONAL, MESSAGE,  node_filter,       7) \
X(a, STATIC,   OPTIONAL, MESSAGE,  node_highlight,    8)
#define meshtastic_DeviceUIConfig_CALLBACK NULL
#define meshtastic_DeviceUIConfig_DEFAULT NULL
#define meshtastic_DeviceUIConfig_node_filter_MSGTYPE meshtastic_NodeFilter
#define meshtastic_DeviceUIConfig_node_highlight_MSGTYPE meshtastic_NodeHighlight

#define meshtastic_NodeFilter_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, BOOL,     unknown_switch,    1) \
X(a, STATIC,   SINGULAR, BOOL,     offline_switch,    2) \
X(a, STATIC,   SINGULAR, BOOL,     public_key_switch,   3) \
X(a, STATIC,   SINGULAR, INT32,    hops_away,         4) \
X(a, STATIC,   SINGULAR, BOOL,     position_switch,   5) \
X(a, STATIC,   SINGULAR, STRING,   node_name,         6)
#define meshtastic_NodeFilter_CALLBACK NULL
#define meshtastic_NodeFilter_DEFAULT NULL

#define meshtastic_NodeHighlight_FIELDLIST(X, a) \
X(a, STATIC,   SINGULAR, BOOL,     chat_switch,       1) \
X(a, STATIC,   SINGULAR, BOOL,     position_switch,   2) \
X(a, STATIC,   SINGULAR, BOOL,     telemetry_switch,   3) \
X(a, STATIC,   SINGULAR, BOOL,     iaq_switch,        4) \
X(a, STATIC,   SINGULAR, STRING,   node_name,         5)
#define meshtastic_NodeHighlight_CALLBACK NULL
#define meshtastic_NodeHighlight_DEFAULT NULL

extern const pb_msgdesc_t meshtastic_DeviceUIConfig_msg;
extern const pb_msgdesc_t meshtastic_NodeFilter_msg;
extern const pb_msgdesc_t meshtastic_NodeHighlight_msg;

/* Defines for backwards compatibility with code written before nanopb-0.4.0 */
#define meshtastic_DeviceUIConfig_fields &meshtastic_DeviceUIConfig_msg
#define meshtastic_NodeFilter_fields &meshtastic_NodeFilter_msg
#define meshtastic_NodeHighlight_fields &meshtastic_NodeHighlight_msg

/* Maximum encoded size of messages (where known) */
#define MESHTASTIC_MESHTASTIC_DEVICE_UI_PB_H_MAX_SIZE meshtastic_DeviceUIConfig_size
#define meshtastic_DeviceUIConfig_size           80
#define meshtastic_NodeFilter_size               36
#define meshtastic_NodeHighlight_size            25

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif
