config

package module
v1.23.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 21, 2024 License: GPL-3.0 Imports: 15 Imported by: 20

README

go-config

Documentation

Index

Constants

View Source
const (
	DefaultConfigDir = "/etc/cacophony"
	ConfigFileName   = "config.toml"

	TimeFormat = time.RFC3339
)
View Source
const AudioBaitKey = "audio-bait"
View Source
const AudioRecordingKey = "audio-recording"
View Source
const (
	BatteryKey = "battery"
)
View Source
const CommsKey = "comms"
View Source
const DeviceKey = "device"
View Source
const DeviceSetupKey = "device-setup"
View Source
const GPIOKey = "gpio"
View Source
const LeptonKey = "lepton"
View Source
const LocationKey = "location"
View Source
const ModemdKey = "modemd"
View Source
const PortsKey = "ports"
View Source
const SaltKey = "salt"
View Source
const SecretsKey = "secrets"
View Source
const TestHostsKey = "test-hosts"
View Source
const ThermalMotionKey = "thermal-motion"
View Source
const ThermalRecorderKey = "thermal-recorder"
View Source
const ThermalThrottlerKey = "thermal-throttler"
View Source
const WindowsKey = "windows"

Variables

View Source
var LiIonPercent = []float32{0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100}
View Source
var LiIonVoltage = []float32{3.4, 3.46, 3.51, 3.56, 3.58, 3.61, 3.62, 3.64, 3.67, 3.71, 3.76, 3.81, 3.86, 3.9, 3.93, 3.97, 4.0, 4.04, 4.07, 4.11, 4.17}
View Source
var LimePercent = []float32{} /* 101 elements not displayed */
View Source
var LimeVoltage = []float32{} /* 101 elements not displayed */

Functions

func GetAllSections added in v1.22.0

func GetAllSections() map[string]interface{}

func GetDefaults added in v1.22.0

func GetDefaults() map[string]interface{}

func SetFs

func SetFs(f afero.Fs)

func SetLockFilePath

func SetLockFilePath(f func(string) string)

Types

type AudioBait added in v1.10.0

type AudioBait struct {
	Dir           string `mapstructure:"directory"`
	Card          int    `mapstructure:"card"`
	VolumeControl string `mapstructure:"volume-control"`
}

func DefaultAudioBait added in v1.10.0

func DefaultAudioBait() AudioBait

type AudioRecording added in v1.10.0

type AudioRecording struct {
	AudioMode string    `mapstructure:"audio-mode"`
	AudioSeed uint32    `mapstructure:"random-seed"`
	Updated   time.Time `mapstructure:"updated"`
}

func DefaultAudioRecording added in v1.10.0

func DefaultAudioRecording() AudioRecording

type Battery

type Battery struct {
	EnableVoltageReadings bool      `mapstructure:"enable-voltage-readings"`
	BatteryType           string    `mapstructure:"battery-type"`
	BatteryVoltage        []float32 `mapstructure:"battery-voltage"`
	BatteryPercent        []float32 `mapstructure:"battery-percent"`
}

func DefaultBattery added in v1.2.0

func DefaultBattery() Battery

https://imgur.com/IoUKfQs

func (*Battery) GetBatteryVoltageThresholds added in v1.15.0

func (batteryConfig *Battery) GetBatteryVoltageThresholds(batVolt float32) (string, []float32, []float32)

GetBatteryVoltageThresholds gets battery type and voltage thresholds if no battery type is specific LiIon or Lime will be used based of batVolt reading if a battery type other than li-ion or lime is specified it will use the battery-voltage,battery-percent config these arrays should be in ascending order of battery percentage ( 0 , 1, .. 100).

type Comms added in v1.22.0

type Comms struct {
	Enable               bool   `mapstructure:"enable"`
	TrapEnabledByDefault bool   `mapstructure:"trap-enabled-by-default"` // If no animals are seen should the trap be enabled or not.
	CommsOut             string `mapstructure:"comms-out"`               // "uart" or "high-low"
	Bluetooth            bool   `mapstructure:"bluetooth"`               // Bluetooth can only be enabled if UART is not in use.

	PowerOutput     string        `mapstructure:"power-output"`      // "on", "off", "comms-only"
	PowerUpDuration time.Duration `mapstructure:"power-up-duration"` // When PowerOutput is set to "comms-only" how long should it be powered up before sending data.

	TrapSpecies  map[string]int32 `mapstructure:"trap-species"`  // Species with set confidence to trap
	TrapDuration time.Duration    `mapstructure:"trap-duration"` // How long to keep a trap active for after seeing a trapped species

	ProtectSpecies  map[string]int32 `mapstructure:"protect-species"`  // Species with set confidence to protect
	ProtectDuration time.Duration    `mapstructure:"protect-duration"` // How long to keep a trap inactive for after seeing a protected species

}

func DefaultComms added in v1.22.0

func DefaultComms() Comms

type Config

type Config struct {
	AutoWrite bool
	// contains filtered or unexported fields
}

func New

func New(dir string) (*Config, error)

New created a new config and loads files from the given directory

func (*Config) Get

func (c *Config) Get(key string) interface{}

func (*Config) GetAllValues added in v1.22.0

func (c *Config) GetAllValues() (map[string]interface{}, error)

func (*Config) Reload added in v1.6.1

func (c *Config) Reload() error

func (*Config) Set

func (c *Config) Set(key string, value interface{}) error

Set can only update one section at a time.

func (*Config) SetField

func (c *Config) SetField(sectionKey, valueKey, value string, force bool) error

func (*Config) SetFromMap

func (c *Config) SetFromMap(sectionKey string, newConfig map[string]interface{}, force bool) error

SetFromMap can only update one section at a time.

func (*Config) Unmarshal

func (c *Config) Unmarshal(key string, raw interface{}) error

func (*Config) Unset

func (c *Config) Unset(key string) error

func (*Config) Update

func (c *Config) Update() error

func (*Config) Write

func (c *Config) Write() error

type ConfigArgs added in v1.22.0

type ConfigArgs struct {
	ConfigDir string `arg:"--config-dir" default:"/etc/cacophony/" help:"path to configuration directory"`
}

type Device

type Device struct {
	Group  string
	ID     int
	Name   string
	Server string
}

type DeviceSetup added in v1.9.0

type DeviceSetup struct {
	IR bool `mapstructure:"ir"`

	// S or L ( for small trap or large trap)
	TrapSize string `mapstructure:"trap-size"`
}

func DefaultDeviceSetup added in v1.11.0

func DefaultDeviceSetup() DeviceSetup

type GPIO

type GPIO struct {
	ThermalCameraPower string `mapstructure:"thermal-camera-power"`
	ModemPower         string `mapstructure:"modem-power"`
	UartTx             string `mapstructure:"uart-tx"`
}

func DefaultGPIO

func DefaultGPIO() GPIO

type Lepton

type Lepton struct {
	SPISpeed    int64  `mapstructure:"spi-speed"`
	FrameOutput string `mapstructure:"frame-output"`
}

func DefaultLepton

func DefaultLepton() Lepton

type Location

type Location struct {
	Timestamp time.Time
	Accuracy  float32
	Altitude  float32
	Latitude  float32
	Longitude float32
}

func DefaultWindowLocation

func DefaultWindowLocation() Location

Default location used when setting windows relative to sunset/sunrise

type Modem

type Modem struct {
	Name            string `mapstructure:"name"`
	NetDev          string `mapstructure:"net-dev"`
	VendorProductID string `mapstructure:"vendor-product-id"`
}

type Modemd

type Modemd struct {
	TestInterval           time.Duration `mapstructure:"test-interval"`
	InitialOnDuration      time.Duration `mapstructure:"initial-on-duration"`
	FindModemTimeout       time.Duration `mapstructure:"find-modem-timeout"`
	ConnectionTimeout      time.Duration `mapstructure:"connection-timeout"`
	RequestOnDuration      time.Duration `mapstructure:"request-on-duration"`
	RetryInterval          time.Duration `mapstructure:"retry-interval"`
	RetryFindModemInterval time.Duration `mapstructure:"retry-find-modem-interval"`
	MinConnDuration        time.Duration `mapstructure:"min-connection-duration"`
	MaxOffDuration         time.Duration `mapstructure:"max-off-duration"`
	Modems                 []Modem       `mapstructure:"modems"`
}

func DefaultModemd

func DefaultModemd() Modemd

type Ports

type Ports struct {
	Managementd int
}

func DefaultPorts

func DefaultPorts() Ports

type Salt added in v1.11.0

type Salt struct {
	AutoUpdate bool `mapstructure:"auto-update"`
}

func DefaultSalt added in v1.11.0

func DefaultSalt() Salt

type Secrets

type Secrets struct {
	DevicePassword string `mapstructure:"device-password"`
}

type TestHosts

type TestHosts struct {
	URLs         []string
	PingWaitTime time.Duration `mapstructure:"ping-wait-time"`
	PingRetries  int           `mapstructure:"ping-retries"`
}

func DefaultTestHosts

func DefaultTestHosts() TestHosts

type ThermalMotion

type ThermalMotion struct {
	DynamicThreshold bool   `mapstructure:"dynamic-threshold"`
	TempThreshMin    uint16 `mapstructure:"temp-thresh-min"`
	TempThreshMax    uint16 `mapstructure:"temp-thresh-max"`
	TempThresh       uint16 `mapstructure:"temp-thresh"`
	DeltaThresh      uint16 `mapstructure:"delta-thresh"`
	CountThresh      int    `mapstructure:"count-thresh"`
	FrameCompareGap  int    `mapstructure:"frame-compare-gap"`
	UseOneDiffOnly   bool   `mapstructure:"use-one-diff-only"`
	TriggerFrames    int    `mapstructure:"trigger-frames"`
	WarmerOnly       bool   `mapstructure:"warmer-only"`
	EdgePixels       int    `mapstructure:"edge-pixels"`
	Verbose          bool   `mapstructure:"verbose"`
	RunClassifier    bool   `mapstructure:"run-classifier"`
	TrackingEvents   bool   `mapstructure:"tracking-events"`
	DoTracking       bool   `mapstructure:"do-tracking"`
	BluetoothBeacons bool   `mapstructure:"bluetooth-beacons"`
}

func DefaultLepton35Motion added in v1.5.0

func DefaultLepton35Motion() ThermalMotion

func DefaultLeptonMotion added in v1.5.0

func DefaultLeptonMotion() ThermalMotion

func DefaultThermalMotion

func DefaultThermalMotion(cameraModel string) ThermalMotion

type ThermalRecorder

type ThermalRecorder struct {
	OutputDir        string    `mapstructure:"output-dir"`
	MinDiskSpaceMB   uint64    `mapstructure:"min-disk-space-mb"`
	MinSecs          int       `mapstructure:"min-secs"`
	MaxSecs          int       `mapstructure:"max-secs"`
	PreviewSecs      int       `mapstructure:"preview-secs"`
	ConstantRecorder bool      `mapstructure:"constant-recorder"`
	UseLowPowerMode  bool      `mapstructure:"use-low-power-mode"`
	Updated          time.Time `mapstructure:"updated"`
}

func DefaultThermalRecorder

func DefaultThermalRecorder() ThermalRecorder

type ThermalThrottler

type ThermalThrottler struct {
	Activate   bool
	BucketSize time.Duration `mapstructure:"bucket-size"`
	MinRefill  time.Duration `mapstructure:"min-refill"`
}

func DefaultThermalThrottler

func DefaultThermalThrottler() ThermalThrottler

type Windows

type Windows struct {
	StartRecording string    `mapstructure:"start-recording"`
	StopRecording  string    `mapstructure:"stop-recording"`
	PowerOn        string    `mapstructure:"power-on"`
	PowerOff       string    `mapstructure:"power-off"`
	Updated        time.Time `mapstructure:"updated"`
}

func DefaultWindows

func DefaultWindows() Windows

Directories

Path Synopsis
cmd
cacophony-config-sync
cacophony-config-sync - sync device settings with Cacophony Project API.
cacophony-config-sync - sync device settings with Cacophony Project API.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL