From 2438281389a88b1b69edde1530e6a71f37a4323f Mon Sep 17 00:00:00 2001
From: Kevin Lyda <kevin@ie.suberic.net>
Date: Tue, 31 Jan 2017 19:47:31 +0000
Subject: [PATCH] Rework version.

---
 cmd/gqgmc/main.go        | 10 +++-------
 devices/geiger/geiger.go |  4 +++-
 devices/geiger/gqgmc.go  | 32 ++++++++++++++++++++++++++------
 3 files changed, 32 insertions(+), 14 deletions(-)

diff --git a/cmd/gqgmc/main.go b/cmd/gqgmc/main.go
index 12e1653..626c58a 100644
--- a/cmd/gqgmc/main.go
+++ b/cmd/gqgmc/main.go
@@ -20,7 +20,6 @@ func main() {
 		volts    int16
 		ser      string
 		err      error
-		ver      string
 		t        time.Time
 	)
 
@@ -54,12 +53,9 @@ func main() {
 	}
 	fmt.Printf("CPS: %d\n", cps)
 
-	ver, err = gc.Version()
-	if err != nil {
-		fmt.Printf("Failed: '%s'\n", err)
-		return
-	}
-	fmt.Printf("Version: %s\n", ver)
+	fmt.Printf("Version: %s\n", gc.Version())
+	fmt.Printf("Short Version: %s\n", gc.Ver())
+	fmt.Printf("Model: %s\n", gc.Model())
 
 	ser, err = gc.SerialNum()
 	if err != nil {
diff --git a/devices/geiger/geiger.go b/devices/geiger/geiger.go
index d04835a..9c2d731 100644
--- a/devices/geiger/geiger.go
+++ b/devices/geiger/geiger.go
@@ -21,7 +21,9 @@ func New(c Config) (Counter, error) {
 // Counter is an interface for Geiger Counters
 type Counter interface {
 	Clear() error
-	Version() (string, error)
+	Model() string
+	Version() string
+	Ver() string
 	SerialNum() (string, error)
 	GetCPM() (uint16, error)
 	GetCPS() (uint16, error)
diff --git a/devices/geiger/gqgmc.go b/devices/geiger/gqgmc.go
index 59d4ff1..95ffdc4 100644
--- a/devices/geiger/gqgmc.go
+++ b/devices/geiger/gqgmc.go
@@ -123,21 +123,32 @@ const (
 type GQGMCCounter struct {
 	port   *serial.Port
 	config *serial.Config
+	version,
+	shortVer,
+	model string
 }
 
 // NewGQGMC creates a new GQGMC Counter instance
 func NewGQGMC(c Config) (*GQGMCCounter, error) {
-	cfg := serial.Config{
+	var gc GQGMCCounter
+	var v []byte
+
+	gc.config = &serial.Config{
 		Name:        c.Device,
 		Baud:        57600,
 		ReadTimeout: 500 * time.Millisecond,
 	}
-	p, err := serial.OpenPort(&cfg)
+	p, err := serial.OpenPort(gc.config)
 	if err != nil {
 		return nil, err
 	}
+	gc.port = p
+	v, err = gc.communicate(cmdGetVersion, 14)
+	gc.model = string(v[:6])
+	gc.version = string(v[7:])
+	gc.shortVer = string(v[10:])
 	//getConfigurationData()
-	return &GQGMCCounter{port: p, config: &cfg}, nil
+	return &gc, nil
 }
 
 // Clear clears out any remaining data
@@ -153,9 +164,18 @@ func (gc *GQGMCCounter) Clear() error {
 }
 
 // Version gets the version of the device
-func (gc *GQGMCCounter) Version() (string, error) {
-	ver, err := gc.communicate(cmdGetVersion, 14)
-	return string(ver), err
+func (gc *GQGMCCounter) Version() string {
+	return gc.version
+}
+
+// Ver gets the short version of the device
+func (gc *GQGMCCounter) Ver() string {
+	return gc.shortVer
+}
+
+// Model gets the model of the device
+func (gc *GQGMCCounter) Model() string {
+	return gc.model
 }
 
 // SerialNum gets the serial number of the device
-- 
GitLab