Compare commits
	
		
			1 commit
		
	
	
		
			main
			...
			more-metri
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | a943586b7e | 
					 3 changed files with 62 additions and 0 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue