# # Copyright (c) 2023 Project CHIP Authors # # 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. from matter_yamltests.pseudo_clusters.pseudo_cluster import PseudoCluster class example_cluster(PseudoCluster): name = 'ExampleCluster' async def CommandSuccess(self, request): return {} async def CommandError(self, request): return {'error': 'UNSUPPORTED_COMMAND'} async def CommandWithReturnValues(self, request): rv = { 'BooleanTrue': True, 'BooleanFalse': False, 'PositiveNumber': 123456789, 'NegativeNumber': -123456789, 'ListOfBoolean': [True, False, True], 'Struct': { 'boolean': True, 'number': 1, 'struct': { 'boolean': False, 'number': 2, }, 'list': [ { 'boolean': True, 'number': 1, }, { 'boolean': False, 'number': 3, }, ] } } return {'value': rv} async def CommandWithInputValues(self, request): try: arg1 = int(self._get_argument_value(request, 'Argument1')) arg2 = int(self._get_argument_value(request, 'Argument2')) except NameError: return {'error': 'INVALID_COMMAND'} rv = {'ReturnValue': arg1 + arg2} return {'value': rv} def _get_argument_value(self, request, name): for argument in request.arguments['values']: if argument['name'] == name: return argument['value'] raise NameError