diff --git a/devices/geiger/geiger.go b/devices/geiger/geiger.go
index 139ba58f06e620d3cf3273ec0ec8706e0ff15b5a..b1b2af4b7cf3fd7ef2b6af89a1b0526f7819e0fc 100644
--- a/devices/geiger/geiger.go
+++ b/devices/geiger/geiger.go
@@ -7,6 +7,8 @@
package geiger
+import "time"
+
// New creates a new Counter instance
func New(c Config) (Counter, error) {
switch c.Model {
@@ -32,8 +34,7 @@ type Counter interface {
GetConfiguration()
SetConfiguration()
ResetConfiguration()
- SetDate(date string)
- SetTime(time string)
+ SetTime(t time.Time)
}
// Config contain the configuration for a Geiger Counter
diff --git a/devices/geiger/gqgmc.go b/devices/geiger/gqgmc.go
index 7bd8db4b7ab450fd2bd426774df29b451c5efc2d..069339e60f7112d0e303f03abaab00a52f1f1743 100644
--- a/devices/geiger/gqgmc.go
+++ b/devices/geiger/gqgmc.go
@@ -268,41 +268,28 @@ func (gc *GQGMCCounter) ResetConfiguration() {
//communicate(erase_cfg_cmd, ret_char, retsize);
}
-// SetDate sets the date - format of YYYYMMDD
-func (gc *GQGMCCounter) SetDate(date string) {
- //setMonthCmd = "<SETDATEMM";
- //setMonthCmd += uint8_t(month);
- //setMonthCmd += ">>";
- //communicate(setMonthCmd, ret_char, retsize);
-
- //setDayCmd = "<SETDATEDD";
- //setDayCmd += uint8_t(day);
- //setDayCmd += ">>";
- //communicate(setDayCmd, ret_char, retsize);
-
- // year - last two digits
- //setYearCmd = "<SETDATEYY";
- //setYearCmd += uint8_t(year);
- //setYearCmd += ">>";
- //communicate(setYearCmd, ret_char, retsize);
-}
+// SetTime sets the time
+func (gc *GQGMCCounter) SetTime(t time.Time) {
+ cmd := make([]byte, 13)
+ var timeCmds = []struct {
+ cmd string
+ unit int
+ }{
+ {"<SETDATEYY", t.Year()},
+ {"<SETDATEMM", int(t.Month())},
+ {"<SETDATEDD", t.Day()},
+ {"<SETTIMEHH", t.Hour()},
+ {"<SETTIMEMM", t.Minute()},
+ {"<SETTIMESS", t.Second()},
+ }
-// SetTime sets the time (HH:MM:SS)
-func (gc *GQGMCCounter) SetTime(time string) {
- //setHourCmd = "<SETTIMEHH";
- //setHourCmd += uint8_t(hour);
- //setHourCmd += ">>";
- //communicate(setHourCmd, ret_char, retsize);
-
- //setMinuteCmd = "<SETTIMEMM";
- //setMinuteCmd += uint8_t(minute);
- //setMinuteCmd += ">>";
- //communicate(setMinuteCmd, ret_char, retsize);
-
- //setSecondCmd = "<SETTIMESS";
- //setSecondCmd += uint8_t(second);
- //setSecondCmd += ">>";
- //communicate(setSecondCmd, ret_char, retsize);
+ for _, c := range timeCmds {
+ copy(cmd[:], c.cmd)
+ cmd[10] = uint8(c.unit)
+ copy(cmd[11:], ">>")
+ gc.port.Write(cmd)
+ gc.readCmd(1)
+ }
}
func (gc *GQGMCCounter) communicate(cmd string, length uint32) ([]byte, error) {