summaryrefslogtreecommitdiff
path: root/src/camera.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/camera.go')
-rw-r--r--src/camera.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/camera.go b/src/camera.go
new file mode 100644
index 0000000..12a9d54
--- /dev/null
+++ b/src/camera.go
@@ -0,0 +1,38 @@
+// vim: shiftwidth=4 tabstop=4 noexpandtab
+
+package main
+
+type Camera struct {
+ statemachine Machine
+}
+
+func NewCamera() Camera {
+ return Camera{
+ statemachine: Machine{
+ name: "camera",
+ initial: "idle",
+ states: StateMap{
+ "idle": MachineState{
+ on: TransitionMap{
+ "take_single_picture": MachineTransition{
+ to: "single_picture",
+ },
+ },
+ },
+ "single_picture": MachineState{
+ on: TransitionMap{
+ "single_picture_taken": MachineTransition{
+ to: "idle",
+ },
+ },
+ },
+ },
+ api: make(chan string),
+ state_listeners: make([]*(chan string), 0),
+ },
+ }
+}
+
+func (cam *Camera) run() {
+ cam.statemachine.Run()
+}