Skip to content

Commit 44eb5a5

Browse files
committed
Support get for specific list of parameters.
1 parent b0ecc17 commit 44eb5a5

1 file changed

Lines changed: 21 additions & 14 deletions

File tree

cmd/deviceparameter/deviceparameter.go

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ type Options struct {
106106
Timeout int `long:"timeout" default:"1" description:"Get/set action timeout (seconds)"`
107107
Retries int `long:"retries" default:"3" description:"Get/set action retries"`
108108

109-
Parameter string `short:"p" long:"parameter" description:"Name of the parameter"`
110-
Value string `short:"v" long:"value" description:"Value to set"`
109+
Parameter []string `short:"p" long:"parameter" description:"List of parameter names"`
110+
Value string `short:"v" long:"value" description:"Value to set (single parameter only)"`
111111

112112
String bool `long:"string" description:"Value is string"`
113113
Uint8 bool `long:"uint8" description:"Value is uint8"`
@@ -120,6 +120,7 @@ type Options struct {
120120
Int64 bool `long:"int64" description:"Value is int64"`
121121

122122
Debug []bool `short:"D" long:"debug" description:"Debug mode, print raw packets"`
123+
Quiet []bool `short:"Q" long:"quiet" description:"Quiet mode, print only values"`
123124
ShowVersion func() `short:"V" long:"version" description:"Show application version"`
124125
}
125126

@@ -172,29 +173,35 @@ func main() {
172173
logger.Error.Printf("Unable to connect to %s:%d\n", host, port)
173174
os.Exit(1)
174175
}
175-
logger.Info.Printf("Connected to %s:%d\n", host, port)
176+
if len(opts.Quiet) == 0 {
177+
logger.Info.Printf("Connected to %s:%d\n", host, port)
178+
}
176179

177180
if len(opts.Parameter) > 0 {
178-
if len(opts.Value) > 0 {
181+
if len(opts.Value) == 0 || len(opts.Parameter) > 1 {
182+
for _, parameter := range opts.Parameter {
183+
if len(opts.Quiet) == 0 {
184+
logger.Info.Printf("Get %s\n", parameter)
185+
}
186+
val, err := dpm.GetValue(parameter)
187+
if err == nil {
188+
logger.Info.Printf("%s = %s\n", val.Name, val)
189+
} else {
190+
logger.Info.Printf("Failed: %s\n", err)
191+
}
192+
}
193+
} else { // Set only if value and only a single parameter
179194
value, err := parseValue(opts)
180195
if err == nil {
181-
logger.Info.Printf("Set %s to 0x%X\n", opts.Parameter, value)
182-
if val, err := dpm.SetValue(opts.Parameter, value); err == nil {
196+
logger.Info.Printf("Set %s to 0x%X\n", opts.Parameter[0], value)
197+
if val, err := dpm.SetValue(opts.Parameter[0], value); err == nil {
183198
logger.Info.Printf("%s = %s\n", val.Name, val)
184199
} else {
185200
logger.Info.Printf("Failed: %s\n", err)
186201
}
187202
} else {
188203
logger.Error.Printf("%s", err)
189204
}
190-
} else {
191-
logger.Info.Printf("Get %s\n", opts.Parameter)
192-
val, err := dpm.GetValue(opts.Parameter)
193-
if err == nil {
194-
logger.Info.Printf("%s = %s\n", val.Name, val)
195-
} else {
196-
logger.Info.Printf("Failed: %s\n", err)
197-
}
198205
}
199206
} else {
200207
logger.Info.Printf("Get parameter list:\n")

0 commit comments

Comments
 (0)