diff --git a/devices/geiger/geiger.go b/devices/geiger/geiger.go
index b1b2af4b7cf3fd7ef2b6af89a1b0526f7819e0fc..d04835a2bb067da65c48aebd3f495b2e717fe992 100644
--- a/devices/geiger/geiger.go
+++ b/devices/geiger/geiger.go
@@ -34,7 +34,10 @@ type Counter interface {
GetConfiguration()
SetConfiguration()
ResetConfiguration()
- SetTime(t time.Time)
+ SetTime(time.Time)
+ GetTime() (time.Time, error)
+ FactoryReset()
+ Reboot()
}
// Config contain the configuration for a Geiger Counter
diff --git a/devices/geiger/gqgmc.go b/devices/geiger/gqgmc.go
index b7712f78f0be348c35a9ab2b92e9d4f085688d55..37f8f08ef590452e34c59c700891e476d52d9087 100644
--- a/devices/geiger/gqgmc.go
+++ b/devices/geiger/gqgmc.go
@@ -103,17 +103,20 @@ const (
)
const (
- cmdGetSerial = "<GETSERIAL>>"
- cmdGetVersion = "<GETVER>>"
- cmdGetVoltage = "<GETVOLT>>"
- cmdGetCPM = "<GETCPM>>"
- cmdGetCPS = "<GETCPS>>"
- cmdGetCfg = "<GETCFG>>"
- cmdEraseCfg = "<ECFG>>"
- cmdUpdateCfg = "<CFGUPDATE>>"
- cmdTurnOnCPS = "<HEARTBEAT1>>"
- cmdTurnOffCPS = "<HEARTBEAT0>>"
- cmdTurnOffPwr = "<POWEROFF>>"
+ cmdGetSerial = "<GETSERIAL>>"
+ cmdGetVersion = "<GETVER>>"
+ cmdGetVoltage = "<GETVOLT>>"
+ cmdGetCPM = "<GETCPM>>"
+ cmdGetCPS = "<GETCPS>>"
+ cmdGetCfg = "<GETCFG>>"
+ cmdEraseCfg = "<ECFG>>"
+ cmdUpdateCfg = "<CFGUPDATE>>"
+ cmdTurnOnCPS = "<HEARTBEAT1>>"
+ cmdTurnOffCPS = "<HEARTBEAT0>>"
+ cmdTurnOffPwr = "<POWEROFF>>"
+ cmdFactoryReset = "<FACTORYRESET>>"
+ cmdReboot = "<REBOOT>>"
+ cmdGetTime = "<GETDATETIME>>"
)
// GQGMCCounter is a GQ GMC Counter
@@ -275,6 +278,9 @@ func (gc *GQGMCCounter) ResetConfiguration() {
// SetTime sets the time
func (gc *GQGMCCounter) SetTime(t time.Time) {
+ //command: <SETDATETIME[YYMMDDHHMMSS]>>
+ //Firmware supported: GMC-280, GMC-300 Re.3.00 or later
+
cmd := make([]byte, 13)
var timeCmds = []struct {
cmd string
@@ -297,6 +303,29 @@ func (gc *GQGMCCounter) SetTime(t time.Time) {
}
}
+// GetTime gets the time
+func (gc *GQGMCCounter) GetTime() (time.Time, error) {
+ b, err := gc.communicate(cmdGetTime, 7)
+ if err != nil {
+ return time.Unix(0, 0), err
+ }
+ t := time.Date(int(b[0])+2000, time.Month(b[1]), int(b[2]),
+ int(b[3]), int(b[4]), int(b[5]), 0, nil)
+ return t, nil
+}
+
+// FactoryReset does a factory reset
+func (gc *GQGMCCounter) FactoryReset() {
+ gc.sendCmd(cmdFactoryReset)
+ return
+}
+
+// Reboot reboots the device
+func (gc *GQGMCCounter) Reboot() {
+ gc.sendCmd(cmdReboot)
+ return
+}
+
func (gc *GQGMCCounter) communicate(cmd string, length uint32) ([]byte, error) {
gc.Clear()
if len(cmd) > 0 {