from cherrypy.lib.static import serve_file
import gpiod
from gpiod.line import Direction, Value
+import iio
import signal
import sys
-n=0
+n = 0
+pressure = 0
+thrust = 0
+pyro = 0
+battery = 0
+
+ctx = iio.LocalContext()
+ctrl = ctx.find_device('ads8688')
+# configuration for each channel on ADS8688
+OFFSET = "0"
+SCALE = "0.078127104"
+VOLTAGES = ['voltage0', 'voltage1', 'voltage2', 'voltage3']
# set gpio output lines
def set_line_values(chip_path, line_values):
@cherrypy.tools.json_out()
def getData(self):
global n
- n = n + 1
- a = ' psi'
- b = ' N'
- p = str(n) + a
- t = str(n) + b
- pyro_v = str(n) + ' volts'
- batt_v = str(n) + ' volts'
+ global pressure
+ global thrust
+ global pyro
+ global battery
+
+ for id in VOLTAGES:
+ chan = ctrl.find_channel(id)
+ rawstring = chan.attrs['raw'].value
+ voltage = (float(rawstring) + float(OFFSET)) * float(SCALE) / 1000
+ match chan.id:
+ case 'voltage0':
+ pressure = voltage
+ case 'voltage1':
+ thrust = voltage
+ case 'voltage2':
+ pyro = voltage
+ case 'voltage3':
+ battery = voltage
+
armed = sense_armed()
return {
- 'pressure' : p,
- 'thrust' : t,
- 'pyro' : pyro_v,
- 'battery' : batt_v,
+ 'pressure' : pressure,
+ 'thrust' : thrust,
+ 'pyro' : pyro,
+ 'battery' : battery,
'armed' : armed
}
}
)
+ # configure ADC channels
+ for id in VOLTAGES:
+ chan = ctrl.find_channel(id)
+ chan.attrs['scale'].value = SCALE
+ chan.attrs['offset'].value = OFFSET
+
# launch web user interface
cherrypy.quickstart(App(), '/', config)