blob: d03dbcd42ae0bddf5377f5549b1ca1ca0b5f5085 [file] [log] [blame]
/*
*
* Copyright (c) 2022 Project CHIP Authors
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "ManualOperationCommand.h"
#include "ManualDishWasherAlarmCommand.h"
#include "ManualOperationalStateCommand.h"
#include "ManualRVCModesCommand.h"
#include "ManualRefrigeratorAlarmCommand.h"
#include "app/server/Server.h"
#include "platform/CHIPDeviceLayer.h"
#include <lib/support/CodeUtils.h>
#if CONFIG_ENABLE_CHIP_SHELL
#include "lib/shell/Engine.h"
#include "lib/shell/commands/Help.h"
#endif // ENABLE_CHIP_SHELL
using namespace chip;
using namespace chip::app;
#if CONFIG_ENABLE_CHIP_SHELL
using Shell::Engine;
using Shell::shell_command_t;
using Shell::streamer_get;
using Shell::streamer_printf;
Engine sShellManualOperationSubCommands;
#endif // defined(ENABLE_CHIP_SHELL)
namespace {
#if CONFIG_ENABLE_CHIP_SHELL
/********************************************************
* Manual Operation shell functions
*********************************************************/
CHIP_ERROR ManualOperationHelpHandler(int argc, char ** argv)
{
sShellManualOperationSubCommands.ForEachCommand(Shell::PrintCommandHelp, nullptr);
return CHIP_NO_ERROR;
}
CHIP_ERROR ManualOperationCommandHandler(int argc, char ** argv)
{
if (argc == 0)
{
return ManualOperationHelpHandler(argc, argv);
}
return sShellManualOperationSubCommands.ExecCommand(argc, argv);
}
/**
* @brief configures switch matter shell
*
*/
static void RegisterManualOperationCommands()
{
static const shell_command_t sManualOperationSubCommands[] = {
{ &ManualOperationHelpHandler, "help", "Usage: manual <subcommand>" },
{ &ManualOperationalStateCommandHandler, "opstate", " Usage: manual opstate <subcommand>" },
{ &ManualRVCCommandHandler, "rvc", " Usage: manual rvc <subcommand>" },
{ &ManualRefrigeratorAlarmCommandHandler, "refalm", " Usage: manual refalm <subcommand>" },
{ &ManualDishWasherAlarmCommandHandler, "dishalm", " Usage: manual dishalm <subcommand>" },
{ &ManualOvenCavityOperationalStateCommandHandler, "oven-opstate", " Usage: manual dishalm <subcommand>" },
};
static const shell_command_t sManualOperationalStateSubCommands[] = {
{ &ManualOperationalStateCommandHelpHandler, "help", "Usage: manual opstate <subcommand>" },
{ &ManualOperationalStateSetStateCommandHandler, "set-state", "set-state Usage: manual opstate set-state <state>" },
{ &ManualOperationalStateSetErrorCommandHandler, "set-error", "set-error Usage: manual opstate set-error <error>" },
};
static const shell_command_t sManualRVCSubCommands[] = {
{ &ManualRVCCommandHelpHandler, "help", "Usage: manual rvc <subcommand>" },
{ &ManualRVCOperationalStateCommandHandler, "opstate", "Usage: manual rvc opstate <subcommand>" },
{ &ManualRVCRunModeCommandHandler, "runmode", "Usage: manual rvc runmode <subcommand>" },
{ &ManualRVCCleanModeCommandHandler, "cleanmode", "Usage: manual rvc cleanmode <subcommand>" },
};
static const shell_command_t sManualRVCOperationalStateSubCommands[] = {
{ &ManualRVCOperationalStateCommandHelpHandler, "help", "Usage: manual rvc opstate <subcommand>" },
{ &ManualRVCOperationalStateSetStateCommandHandler, "set-state", "set-state Usage: manual rvc opstate set-state <state>" },
{ &ManualRVCOperationalStateSetErrorCommandHandler, "set-error", "set-error Usage: manual rvc opstate set-error <error>" },
};
static const shell_command_t sManualRVCRunModeSubCommands[] = {
{ &ManualRVCRunModeCommandHelpHandler, "help", "Usage: manual rvc runmode <subcommand>" },
{ &ManualRVCRunModeSetModeCommandHandler, "set-mode", "set-mode Usage: manual rvc runmode set-mode <mode>" },
};
static const shell_command_t sManualRVCCleanModeSubCommands[] = {
{ &ManualRVCCleanModeCommandHelpHandler, "help", "Usage: manual rvc cleanmode <subcommand>" },
{ &ManualRVCCleanModeSetModeCommandHandler, "set-mode", "set-mode Usage: manual rvc cleanmode set-mode <mode>" },
};
static const shell_command_t sManualRefrigeratorAlarmStateSubCommands[] = {
{ &ManualRefrigeratorAlarmCommandHelpHandler, "help", "Usage: manual refalm <subcommand>" },
{ &ManualRefrigeratorAlarmDoorOpenCommandHandler, "door-open", "door-open Usage: manual refalm door-open" },
{ &ManualRefrigeratorAlarmDoorCloseCommandHandler, "door-close", "door-close Usage: manual refalm door-close" },
{ &ManualRefrigeratorAlarmSuppressCommandHandler, "suppress-alarm", "suppress-alarm Usage: manual refalm suppress-alarm" },
};
static const shell_command_t sManualDishWasherAlarmSubCommands[] = {
{ &ManualDishWasherAlarmCommandHelpHandler, "help", "Usage: manual dishalm <subcommand>" },
{ &ManualDishWasherAlarmSetRaiseCommandHandler, "raise", "raise Usage: manual dishalm raise" },
{ &ManualDishWasherAlarmSetLowerCommandHandler, "lower", "lower Usage: manual dishalm lower" },
};
static const shell_command_t sManualOvenCavityOperationalStateSubCommands[] = {
{ &ManualOvenCavityOperationalStateCommandHelpHandler, "help", "Usage: manual oven-opstate <subcommand>" },
{ &ManualOvenCavityOperationalStateSetStateCommandHandler, "set-state",
"set-state Usage: manual oven-opstate set-state <state>" },
{ &ManualOvenCavityOperationalStateSetErrorCommandHandler, "set-error",
"set-error Usage: manual oven-opstate set-error <error>" },
};
static const shell_command_t sManualOperationCommand = { &ManualOperationCommandHandler, "manual",
"Manual Operation commands. Usage: manual <subcommand>" };
// Register commands
sShellManualOperationSubCommands.RegisterCommands(sManualOperationSubCommands, ArraySize(sManualOperationSubCommands));
sShellManualOperationalStateSubCommands.RegisterCommands(sManualOperationalStateSubCommands,
ArraySize(sManualOperationalStateSubCommands));
sShellManualRVCSubCommands.RegisterCommands(sManualRVCSubCommands, ArraySize(sManualRVCSubCommands));
sShellManualRVCOperationalStateSubCommands.RegisterCommands(sManualRVCOperationalStateSubCommands,
ArraySize(sManualRVCOperationalStateSubCommands));
sShellManualRVCRunModeSubCommands.RegisterCommands(sManualRVCRunModeSubCommands, ArraySize(sManualRVCRunModeSubCommands));
sShellManualRVCCleanModeSubCommands.RegisterCommands(sManualRVCCleanModeSubCommands, ArraySize(sManualRVCCleanModeSubCommands));
sShellManualRefrigeratorAlarmStateSubCommands.RegisterCommands(sManualRefrigeratorAlarmStateSubCommands,
ArraySize(sManualRefrigeratorAlarmStateSubCommands));
sShellManualDishWasherAlarmStateSubCommands.RegisterCommands(sManualDishWasherAlarmSubCommands,
ArraySize(sManualDishWasherAlarmSubCommands));
sShellManualOvenCavityOperationalStateSubCommands.RegisterCommands(sManualOvenCavityOperationalStateSubCommands,
ArraySize(sManualOvenCavityOperationalStateSubCommands));
Engine::Root().RegisterCommands(&sManualOperationCommand, 1);
}
#endif // ENABLE_CHIP_SHELL
} // namespace
/********************************************************
* Switch functions
*********************************************************/
CHIP_ERROR InitManualOperation()
{
#if CONFIG_ENABLE_CHIP_SHELL
RegisterManualOperationCommands();
#endif
return CHIP_NO_ERROR;
}