syntax = "proto3";

package meshtastic;

import "meshtastic/config.proto";
import "meshtastic/module_config.proto";

option csharp_namespace = "Meshtastic.Protobufs";
option go_package = "github.com/meshtastic/go/generated";
option java_outer_classname = "LocalOnlyProtos";
option java_package = "org.meshtastic.proto";
option swift_prefix = "";

/*
 * Protobuf structures common to apponly.proto and deviceonly.proto
 * This is never sent over the wire, only for local use
 */

message LocalConfig {
  /*
   * The part of the config that is specific to the Device
   */
  Config.DeviceConfig device = 1;

  /*
   * The part of the config that is specific to the GPS Position
   */
  Config.PositionConfig position = 2;

  /*
   * The part of the config that is specific to the Power settings
   */
  Config.PowerConfig power = 3;

  /*
   * The part of the config that is specific to the Wifi Settings
   */
  Config.NetworkConfig network = 4;

  /*
   * The part of the config that is specific to the Display
   */
  Config.DisplayConfig display = 5;

  /*
   * The part of the config that is specific to the Lora Radio
   */
  Config.LoRaConfig lora = 6;

  /*
   * The part of the config that is specific to the Bluetooth settings
   */
  Config.BluetoothConfig bluetooth = 7;

  /*
   * A version integer used to invalidate old save files when we make
   * incompatible changes This integer is set at build time and is private to
   * NodeDB.cpp in the device code.
   */
  uint32 version = 8;

  /*
   * The part of the config that is specific to Security settings
   */
  Config.SecurityConfig security = 9;
}

message LocalModuleConfig {
  /*
   * The part of the config that is specific to the MQTT module
   */
  ModuleConfig.MQTTConfig mqtt = 1;

  /*
   * The part of the config that is specific to the Serial module
   */
  ModuleConfig.SerialConfig serial = 2;

  /*
   * The part of the config that is specific to the ExternalNotification module
   */
  ModuleConfig.ExternalNotificationConfig external_notification = 3;

  /*
   * The part of the config that is specific to the Store & Forward module
   */
  ModuleConfig.StoreForwardConfig store_forward = 4;

  /*
   * The part of the config that is specific to the RangeTest module
   */
  ModuleConfig.RangeTestConfig range_test = 5;

  /*
   * The part of the config that is specific to the Telemetry module
   */
  ModuleConfig.TelemetryConfig telemetry = 6;

  /*
   * The part of the config that is specific to the Canned Message module
   */
  ModuleConfig.CannedMessageConfig canned_message = 7;

  /*
   * The part of the config that is specific to the Audio module
   */
  ModuleConfig.AudioConfig audio = 9;

  /*
   * The part of the config that is specific to the Remote Hardware module
   */
  ModuleConfig.RemoteHardwareConfig remote_hardware = 10;

  /*
   * The part of the config that is specific to the Neighbor Info module
   */
  ModuleConfig.NeighborInfoConfig neighbor_info = 11;

  /*
   * The part of the config that is specific to the Ambient Lighting module
   */
  ModuleConfig.AmbientLightingConfig ambient_lighting = 12;

  /*
   * The part of the config that is specific to the Detection Sensor module
   */
  ModuleConfig.DetectionSensorConfig detection_sensor = 13;

  /*
   * Paxcounter Config
   */
  ModuleConfig.PaxcounterConfig paxcounter = 14;

  /*
   * A version integer used to invalidate old save files when we make
   * incompatible changes This integer is set at build time and is private to
   * NodeDB.cpp in the device code.
   */
  uint32 version = 8;
}
