From 869f07b2b1b7293f95676c19ab02692980de660f Mon Sep 17 00:00:00 2001
From: Kevin Lyda <kevin@ie.suberic.net>
Date: Fri, 27 Jan 2017 18:16:49 +0000
Subject: [PATCH] Small initial pass at a geiger interface.

---
 devices/geiger/geiger.go | 34 ++++++++++++++++++++++++++++++++++
 devices/geiger/gqgmc.go  | 25 +++++++++++++++++++++++++
 2 files changed, 59 insertions(+)
 create mode 100644 devices/geiger/geiger.go
 create mode 100644 devices/geiger/gqgmc.go

diff --git a/devices/geiger/geiger.go b/devices/geiger/geiger.go
new file mode 100644
index 0000000..7599d56
--- /dev/null
+++ b/devices/geiger/geiger.go
@@ -0,0 +1,34 @@
+//
+// geiger.go
+// Copyright (C) 2017 kevin <kevin@ie.suberic.net>
+//
+// Distributed under terms of the GPL license.
+//
+
+package geiger
+
+// New creates a new Counter instance
+func New(c Config) (Counter, error) {
+	switch c.Model {
+	case "gqgmc":
+		return NewGQGMC(c)
+	}
+	return nil, nil
+}
+
+// Counter is an interface for Geiger Counters
+type Counter interface {
+	GetReading() (*Reading, error)
+}
+
+// Config contain the configuration for a Geiger Counter
+type Config struct {
+	Model   string
+	Device  string
+	Options map[string]string
+}
+
+// Reading contains a single geiger reading
+type Reading struct {
+	CPM float64
+}
diff --git a/devices/geiger/gqgmc.go b/devices/geiger/gqgmc.go
new file mode 100644
index 0000000..73e4483
--- /dev/null
+++ b/devices/geiger/gqgmc.go
@@ -0,0 +1,25 @@
+//
+// gqgmc.go
+// Copyright (C) 2017 kevin <kevin@phrye.com>
+//
+// Distributed under terms of the GPL license.
+//
+
+package geiger
+
+// GQGMCCounter is a GQ GMC Counter
+type GQGMCCounter struct {
+	fh string // TODO: make this a file handle.
+}
+
+// NewGQGMC creates a new GQGMC Counter instance
+func NewGQGMC(c Config) (*GQGMCCounter, error) {
+	return &GQGMCCounter{
+		fh: "TODO",
+	}, nil
+}
+
+// GetReading returns a reading.
+func (gc *GQGMCCounter) GetReading() (*Reading, error) {
+	return nil, nil
+}
-- 
GitLab