syntax = "proto3";

package meshtastic;

option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "git.janky.solutions/finn/matrix-meshtastic-bridge-go/meshtastic/protobufs";
option java_outer_classname = "DeviceUIProtos";
option java_package = "com.geeksville.mesh";
option swift_prefix = "";

/*
 * Protobuf structures for device-ui persistency
 */

message DeviceUIConfig {
  /*
   * A version integer used to invalidate saved files when we make incompatible changes.
   */
  uint32 version = 1;

  /*
   * TFT display brightness 1..255 
   */
  uint32 screen_brightness = 2;

  /*
   * Screen timeout 0..900 
   */
  uint32 screen_timeout = 3;

  /*
   * Screen/Settings lock enabled 
   */
  bool screen_lock = 4;
  bool settings_lock = 5;
  uint32 pin_code = 6;

  /*
   * Color theme 
   */
  Theme theme = 7;

  /*
   * Audible message, banner and ring tone
   */
  bool alert_enabled = 8;
  bool banner_enabled = 9;
  uint32 ring_tone_id = 10;

  /*
   * Localization 
   */
  Language language = 11;

  /*
   * Node list filter 
   */
  NodeFilter node_filter = 12;

  /*
   * Node list highlightening
   */
  NodeHighlight node_highlight = 13;
}


message NodeFilter {
  /*
   * Filter unknown nodes
   */
  bool unknown_switch = 1;

  /*
   * Filter offline nodes
   */
  bool offline_switch = 2;
   
  /*
   * Filter nodes w/o public key
   */
  bool public_key_switch = 3;
   
  /*
   * Filter based on hops away
   */
  int32 hops_away = 4;
   
  /*
   * Filter nodes w/o position
   */
  bool position_switch = 5;
   
  /*
   * Filter nodes by matching name string
   */
  string node_name = 6;
   
}

message NodeHighlight {
  /*
   * Hightlight nodes w/ active chat
   */
  bool chat_switch = 1;

  /*
   * Highlight nodes w/ position
   */
  bool position_switch = 2;
   
  /*
   * Highlight nodes w/ telemetry data
   */
  bool telemetry_switch = 3;

  /*
   * Highlight nodes w/ iaq data
   */
  bool iaq_switch = 4;
   
  /*
   * Highlight nodes by matching name string
   */
  string node_name = 5;
   
}

enum Theme {
  /*
   * Dark
   */
  DARK = 0;
  /*
   * Light
   */
  LIGHT = 1;
  /*
   * Red
   */
  RED = 2;
}

/*
 * Localization
 */
enum Language {
  /*
   * English
   */
  ENGLISH = 0;

  /*
   * French
   */
  FRENCH = 1;

  /*
   * German
   */
  GERMAN = 2;

  /*
   * Italian
   */
  ITALIAN = 3;

  /*
   * Portuguese
   */
  PORTUGUESE = 4;

  /*
   * Spanish
   */
  SPANISH = 5;

  /*
   * Swedish
   */
  SWEDISH = 6;
  
  /*
   * Finnish
   */
  FINNISH = 7;
  
  /*
   * Polish
   */
  POLISH = 8;
  
  /*
   * Turkish
   */
  TURKISH = 9;

  /*
   * Serbian
   */
  SERBIAN = 10;

  /*
   * Russian
   */
  RUSSIAN = 11;

  /*
   * Dutch
   */
  DUTCH = 12;

  /*
   * Greek
   */
  GREEK = 13;

  /*
   * Simplified Chinese (experimental)
   */
  SIMPLIFIED_CHINESE = 30;

  /*
   * Traditional Chinese (experimental)
   */
  TRADITIONAL_CHINESE = 31;
  }