package main // daemonController is the control/data interface passed on to external system // controllers, eg. the web interface. // // This is a subset of daemon functions limited to a safe, explicit subset. type daemonController interface { // snapshot returns an internally consistent copy of the daemon state. snapshot() *daemonState // rpSet enables/disables the roughing pump. rpSet(bool) // dpSet enables/disables the diffusion pump. dpSet(bool) // pumpDownPress simulates a pumpdown button press. pumpDownPress() // ventPRess simulates a vent button press. ventPress() } func (d *daemon) snapshot() *daemonState { d.mu.RLock() ds := d.daemonState d.mu.RUnlock() return &ds } func (d *daemon) rpSet(state bool) { d.mu.Lock() defer d.mu.Unlock() d.rpOn = state } func (d *daemon) dpSet(state bool) { d.mu.Lock() defer d.mu.Unlock() d.dpOn = state } func (d *daemon) pumpDownPress() { d.mu.Lock() defer d.mu.Unlock() d.pumpdown.trigger() } func (d *daemon) ventPress() { d.mu.Lock() defer d.mu.Unlock() d.vent.trigger() }