ACS source code layout
Generally speaking, files that end in _gen.go are generated files, meaning they are output from some other program. Usually, if the generating program is included in this tree, it can be found in an immediate folder named “generators”. The major outlier is files found in the builtin/commands
which originate as outputs from configuration sets from a separate repo: AVAPS Docs in the ICD
folder there.
Everything in ACS is broken down into testable packages that have a single purpose and live in a single folder.
Directory | Comments |
---|---|
builtin | Hand curated lists of commands, simulators, and other tidbits - heavily used for testing, especially for low level command and control. Might be better named “testing”. |
cmd | Contains many package main binary packages |
channel | This is where channel implementers (where the interface exists in structs/channel ). A channel is code that wraps around some sort of RF receiver to both control the tuning and record raw data from the sonde. Channels are more fire-and-forget type devices. In the current hardware architecture, don’t need any sort of manipulation once running. |
datastore | This is where datastore.DataStorer (defined in structs/datastore implementers exist |
docs | Various documentations efforts |
launcher | Functionally a factory that returns launcher instances based on the structs/launcher.Type . Mostly boilerplate |
logger | Package wide logger. |
monitor | Monitor holds the low level controllers that directly interact with hardware, poll for status, read low level []byte , parse the data and provide higher level control to a parent. |
postdrop | Code that takes a completed sounding and performs needed post-drop manipulations |
routes | Various HTTP Route handlers with a few definitions for authenticated users, cookie management, etc. |
structs | The guts of the ACS codebase. Sets of parsers, config Structs, and interfaces used mostly by monitors |
tools | Various testing tools and scripts. |
webui | Top level web package that hosts the front end. |
yamls | Built in stock configuration. Currently there is only the default set, but is intended to hold stock config for various users. |