# Default Repeater Configuration

repeater:
  # Node name for logging and identification
  node_name: "mesh-repeater-01"

  # Geographic location (optional)
  # Latitude in decimal degrees (-90 to 90)
  latitude: 0.0
  # Longitude in decimal degrees (-180 to 180)
  longitude: 0.0

  # Path to identity file (public/private key)
  # If not specified, a new identity will be generated
  identity_file: null

  # Duplicate packet cache TTL in seconds
  cache_ttl: 60

  # Score-based transmission filtering
  # Enable quality-based packet filtering and adaptive delays
  use_score_for_tx: false

  # Score threshold for quality monitoring (future use)
  # Currently reserved for potential future features like dashboard alerts,
  # proactive statistics collection, or advanced filtering strategies.
  # Changing this value has no effect on current packet processing.
  score_threshold: 0.3

  # Automatic advertisement interval in hours
  # The repeater will send an advertisement packet at this interval
  # Set to 0 to disable automatic adverts (manual only via web interface)
  # Range: 0 (disabled) to 24+ hours
  # Recommended: 10 hours for typical deployments
  send_advert_interval_hours: 10

  # Respond to discovery requests from other nodes
  # When enabled, the repeater will automatically respond to discovery packets
  # with its node information (node type 2 - repeater)
  allow_discovery: true

# Mesh Network Configuration
mesh:
  # Global flood policy - controls whether the repeater allows or denies flooding by default
  # true = allow flooding globally, false = deny flooding globally
  # Individual transport keys can override this setting
  global_flood_allow: true

radio:
  # Frequency in Hz (869.618 MHz for EU)
  frequency: 869618000

  # TX power in dBm
  tx_power: 14

  # Bandwidth in Hz (62500 = 62.5 kHz)
  bandwidth: 62500

  # LoRa spreading factor (7-12)
  spreading_factor: 8

  # Coding rate (5-8)
  coding_rate: 8

  # Preamble length in symbols
  preamble_length: 17

  # Sync word (LoRa network ID)
  sync_word: 13380

  # Enable CRC checking
  crc_enabled: true

  # Use implicit header mode
  implicit_header: false

# SX1262 Hardware Configuration
sx1262:
  # SPI bus and chip select
  bus_id: 0
  cs_id: 0

  # GPIO pins (BCM numbering)
  cs_pin: 21
  reset_pin: 18
  busy_pin: 20
  irq_pin: 16

  # TX/RX enable pins (-1 to disable)
  txen_pin: -1
  rxen_pin: -1

  # LED pins for TX/RX indication (-1 to disable)
  txled_pin: -1
  rxled_pin: -1

  use_dio3_tcxo: false

  # Waveshare hardware flag
  is_waveshare: false

delays:
  # TX delay factor for flood mode (multiplier)
  tx_delay_factor: 1.0

  # TX delay factor for direct mode (faster)
  direct_tx_delay_factor: 0.5

duty_cycle:
  # Enable/disable duty cycle enforcement
  # Set to false to disable airtime limits
  enforcement_enabled: false

  # Maximum airtime per minute in milliseconds
  max_airtime_per_minute: 3600


# Storage Configuration
storage:
  # Directory for persistent storage files (SQLite, RRD)
  storage_dir: "/var/lib/pymc_repeater"

  # MQTT publishing configuration (optional)
  mqtt:
    # Enable/disable MQTT publishing
    enabled: false
    
    # MQTT broker settings
    broker: "localhost"
    port: 1883
    
    # Authentication (optional)
    username: null
    password: null
    
    # Base topic for publishing
    # Messages will be published to: {base_topic}/{node_name}/{packet|advert}
    base_topic: "meshcore/repeater"

  # Data retention settings
  retention:
    # Clean up SQLite records older than this many days
    sqlite_cleanup_days: 31
    
    # RRD archives are managed automatically:
    # - 1 minute resolution for 1 week
    # - 5 minute resolution for 1 month  
    # - 1 hour resolution for 1 year





letsmesh:
  enabled: false
  iata_code: "Test"  # e.g., "SFO", "LHR", "Test"
  broker_index: 0                  # Which LetsMesh broker (0=EU, 1=US West)
  status_interval: 300
  owner: ""
  email: ""
  
  # Block specific packet types from being published to LetsMesh
  # If not specified or empty list, all types are published
  # Available types: REQ, RESPONSE, TXT_MSG, ACK, ADVERT, GRP_TXT, 
  #                  GRP_DATA, ANON_REQ, PATH, TRACE, RAW_CUSTOM
  disallowed_packet_types: []
    # - REQ           # Don't publish requests
    # - RESPONSE      # Don't publish responses
    # - TXT_MSG       # Don't publish text messages
    # - ACK           # Don't publish acknowledgments
    # - ADVERT        # Don't publish advertisements
    # - GRP_TXT       # Don't publish group text messages
    # - GRP_DATA      # Don't publish group data
    # - ANON_REQ      # Don't publish anonymous requests
    # - PATH          # Don't publish path packets
    # - TRACE         # Don't publish trace packets
    # - RAW_CUSTOM    # Don't publish custom raw packets

logging:
  # Log level: DEBUG, INFO, WARNING, ERROR
  level: INFO

  # Log format
  format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"

# Web interface configuration
web:
  # Enable Cross-Origin Resource Sharing (CORS) headers
  # Allows web frontends from different origins to access the API
  cors_enabled: false
