Add more metrics #15
|
@ -13,6 +13,7 @@ type gpio interface {
|
||||||
// set returns the GPIO value. The meaning of the logic level is
|
// set returns the GPIO value. The meaning of the logic level is
|
||||||
// implementation-dependent.
|
// implementation-dependent.
|
||||||
set(state bool) error
|
set(state bool) error
|
||||||
|
get() bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// bbGPIO implements gpio using BeagleBone's built-in GPIO pins.
|
// bbGPIO implements gpio using BeagleBone's built-in GPIO pins.
|
||||||
|
@ -72,6 +73,12 @@ func (b *bbGPIO) set(state bool) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *bbGPIO) get() bool {
|
||||||
|
b.mu.Lock()
|
||||||
|
defer b.mu.Unlock()
|
||||||
|
return b.state
|
||||||
|
}
|
||||||
|
|
||||||
// fakeGPIO implements a GPIO that logs state changes.
|
// fakeGPIO implements a GPIO that logs state changes.
|
||||||
type fakeGPIO struct {
|
type fakeGPIO struct {
|
||||||
desc string
|
desc string
|
||||||
|
@ -90,3 +97,9 @@ func (b *fakeGPIO) set(state bool) error {
|
||||||
b.state = state
|
b.state = state
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *fakeGPIO) get() bool {
|
||||||
|
b.mu.Lock()
|
||||||
|
defer b.mu.Unlock()
|
||||||
|
return b.state
|
||||||
|
}
|
||||||
|
|
|
@ -170,9 +170,28 @@ func (s *webServer) viewMetrics(w http.ResponseWriter, r *http.Request) {
|
||||||
// TODO(q3k): serve the rest of the data model
|
// TODO(q3k): serve the rest of the data model
|
||||||
state := s.d.snapshot()
|
state := s.d.snapshot()
|
||||||
mbar := state.piraniMbar100.mbar
|
mbar := state.piraniMbar100.mbar
|
||||||
|
rpOn := state.rpOn
|
||||||
|
dpOn := state.dpOn
|
||||||
|
pumpDownStatus := s.d.gpioPumpDownStatus()
|
||||||
|
ventStatus := s.d.gpioVentStatus()
|
||||||
|
belowRoughStatus := s.d.gpioBelowRoughStatus()
|
||||||
|
belowHighStatus := s.d.gpioBelowHighStatus()
|
||||||
|
|
||||||
fmt.Fprintf(w, "# HELP sem_pressure_mbar Pressure in the SEM chamber, in millibar\n")
|
fmt.Fprintf(w, "# HELP sem_pressure_mbar Pressure in the SEM chamber, in millibar\n")
|
||||||
fmt.Fprintf(w, "# TYPE sem_pressure_mbar gauge\n")
|
fmt.Fprintf(w, "# TYPE sem_pressure_mbar gauge\n")
|
||||||
fmt.Fprintf(w, "sem_pressure_mbar %f\n", mbar)
|
fmt.Fprintf(w, "sem_pressure_mbar %f\n", mbar)
|
||||||
|
fmt.Fprintf(w, "# TYPE sem_rp_on gauge\n")
|
||||||
|
fmt.Fprintf(w, "sem_rp_on %t\n", rpOn)
|
||||||
|
fmt.Fprintf(w, "# TYPE sem_dp_on gauge\n")
|
||||||
|
fmt.Fprintf(w, "sem_dp_on %t\n", dpOn)
|
||||||
|
fmt.Fprintf(w, "# TYPE sem_gpio_pump_down_status gauge\n")
|
||||||
|
fmt.Fprintf(w, "sem_gpio_pump_down_status %t\n", pumpDownStatus)
|
||||||
|
fmt.Fprintf(w, "# TYPE sem_gpio_vent_status gauge\n")
|
||||||
|
fmt.Fprintf(w, "sem_gpio_vent_status %t\n", ventStatus)
|
||||||
|
fmt.Fprintf(w, "# TYPE sem_gpio_below_rough_status gauge\n")
|
||||||
|
fmt.Fprintf(w, "sem_gpio_below_rough_status %t\n", belowRoughStatus)
|
||||||
|
fmt.Fprintf(w, "# TYPE sem_gpio_below_high_status gauge\n")
|
||||||
|
fmt.Fprintf(w, "sem_gpio_below_high_status %t\n", belowHighStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *webServer) viewRoughingPumpEnable(w http.ResponseWriter, r *http.Request) {
|
func (s *webServer) viewRoughingPumpEnable(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
|
@ -18,6 +18,12 @@ type daemonController interface {
|
||||||
pumpDownPress()
|
pumpDownPress()
|
||||||
// ventPRess simulates a vent button press.
|
// ventPRess simulates a vent button press.
|
||||||
ventPress()
|
ventPress()
|
||||||
|
// returns the current gpio state of the pump down button
|
||||||
|
gpioPumpDownStatus() bool
|
||||||
|
// returns the current gpio state of the vent button
|
||||||
|
gpioVentStatus() bool
|
||||||
|
gpioBelowRoughStatus() bool
|
||||||
|
gpioBelowHighStatus() bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *daemon) loopLoad() int64 {
|
func (d *daemon) loopLoad() int64 {
|
||||||
|
@ -62,3 +68,27 @@ func (d *daemon) ventPress() {
|
||||||
defer d.mu.Unlock()
|
defer d.mu.Unlock()
|
||||||
d.vent.trigger()
|
d.vent.trigger()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *daemon) gpioPumpDownStatus() bool {
|
||||||
|
d.mu.Lock()
|
||||||
|
defer d.mu.Unlock()
|
||||||
|
return d.gpioBtnPumpDown.get()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *daemon) gpioVentStatus() bool {
|
||||||
|
d.mu.Lock()
|
||||||
|
defer d.mu.Unlock()
|
||||||
|
return d.gpioBtnVent.get()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *daemon) gpioBelowRoughStatus() bool {
|
||||||
|
d.mu.Lock()
|
||||||
|
defer d.mu.Unlock()
|
||||||
|
return d.gpioBelowRough.get()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *daemon) gpioBelowHighStatus() bool {
|
||||||
|
d.mu.Lock()
|
||||||
|
defer d.mu.Unlock()
|
||||||
|
return d.gpioBelowHigh.get()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue