"open": DoorCmdHandler{ checkCmdDoorControl, "o"},
"close": DoorCmdHandler{ checkCmdDoorControl, "c"},
"toggle": DoorCmdHandler{ checkCmdDoorControl, "t"},
- "status": DoorCmdHandler{ checkCmdDoorControl, "s"},
+ "status": DoorCmdHandler{ checkCmdNoArgs, "s"},
}
// ---------- Command Handling Code -------------
return nil
}
-func checkCmdStatus(tokens [][]byte) (error) {
+func checkCmdNoArgs(tokens [][]byte) (error) {
if len(tokens) != 1 {
- return errors.New("status command does not accept arguments")
+ return errors.New("command does not accept arguments")
}
return nil
}
-func HandleCommand(tokens [][]byte, topub chan <- [][]byte, serial_wr chan string, serial_rd chan [][]byte) ([][]byte, error){
+func HandleCommand(tokens [][]byte, serial_wr chan string, serial_rd chan [][]byte) error {
if len(tokens) < 1 {
- return nil, errors.New("No Command to handle")
+ return errors.New("No Command to handle")
}
-
+
dch, present := cmdToDoorCmdHandler[string(tokens[0])]
if ! present {
- return nil, errors.New("Unknown Command")
+ return errors.New("Unknown Command")
}
if err := dch.Checker(tokens); err != nil {
- //return error to sender
- return nil, err
+ return err
}
-
- topub <- tokens
+
serial_wr <- dch.FirmwareChar
- fw_reply := <- serial_rd
- return fw_reply, nil
+ return nil
}