diff --git a/screenless/bureau/photography/photography.py b/screenless/bureau/photography/photography.py index cf45847..649a41c 100644 --- a/screenless/bureau/photography/photography.py +++ b/screenless/bureau/photography/photography.py @@ -1,6 +1,8 @@ import subprocess import tempfile +from pyA20.gpio import gpio, port + from bureau import Bureau, add_api @@ -13,9 +15,22 @@ class Photography(Bureau): name = "Photography Dept." prefix = "PX" version = 0 + doc_light_pin = port.PG0 def __init__(self): Bureau.__init__(self) + + # set up the gpios for lamp & knobs + gpio.init() + gpio.pullup(doc_light_pin, 0) # reset pullup state + gpio.pullup(doc_light_pin, gpio.PULLDOWN) + + + def _doc_light_on(self): + gpio.output(self.doc_light_pin, gpio.HIGH) + + def _doc_light_off(self): + gpio.output(self.doc_light_pin, gpio.LOW) @add_api("photo", "Get Document Photo") def photo(self): @@ -23,9 +38,12 @@ class Photography(Bureau): Takes a photograph using the document camera. Returns the file name. """ + self._doc_light_on() tmpimg = tempfile.NamedTemporaryFile(suffix=".jpg", delete=False) tmpimg.close() + # TODO: make more reliable + # TODO: make resolution config variable # this is a dirty hack to keep the webcam system calls from hanging #cmd1 = "fswebcam --jpeg 95 --no-banner --resolution 320x240 /dev/null" #cmd2 = "fswebcam --jpeg 95 --no-banner --resolution 1920x1080 " @@ -34,6 +52,7 @@ class Photography(Bureau): cmd2 = "uvccapture -d/dev/video1 -D2 -m -x3264 -y2448 -o" + tmpimg.name #subprocess.check_output(cmd1.split()) subprocess.check_output(cmd2.split()) + self._doc_light_off() return {"photo": tmpimg.name}