From 144b2d2d735d5b2e25894bdeacef7e03761025ad Mon Sep 17 00:00:00 2001 From: Davide Grohmann Date: Tue, 31 May 2022 15:24:02 +0200 Subject: Refactor message_handler app to be more test friendly Fix importing indexed models, the inclusion of header files was not working. Change-Id: Idab7e002abc31f57acc4eda6a2f1cf2defdfd5c4 --- .../indexed_networks/indexed_networks.hpp | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 applications/message_handler/indexed_networks/indexed_networks.hpp (limited to 'applications/message_handler/indexed_networks/indexed_networks.hpp') diff --git a/applications/message_handler/indexed_networks/indexed_networks.hpp b/applications/message_handler/indexed_networks/indexed_networks.hpp new file mode 100644 index 0000000..0b6d62a --- /dev/null +++ b/applications/message_handler/indexed_networks/indexed_networks.hpp @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2022 Arm Limited. + * + * SPDX-License-Identifier: Apache-2.0 + * + * 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 + * + * 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. + */ + +#ifndef INDEXED_NETWORKS_H +#define INDEXED_NETWORKS_H + +#include "networks.hpp" + +#include +#include + +#define XSTRINGIFY(src) #src +#define STRINGIFY(src) XSTRINGIFY(src) + +namespace { +#if defined(__has_include) + +#if defined(MODEL_0) +namespace Model0 { +#include STRINGIFY(MODEL_0) +} +#endif + +#if defined(MODEL_1) +namespace Model1 { +#include STRINGIFY(MODEL_1) +} +#endif + +#if defined(MODEL_2) +namespace Model2 { +#include STRINGIFY(MODEL_2) +} +#endif + +#if defined(MODEL_3) +namespace Model3 { +#include STRINGIFY(MODEL_3) +} +#endif + +#endif +} // namespace + +namespace MessageHandler { + +class WithIndexedNetworks : public BaseNetworks { +public: + static bool getIndexedNetwork(const uint32_t index, void *&data, size_t &size) { + switch (index) { +#if defined(MODEL_0) + case 0: + data = reinterpret_cast(Model0::networkModel); + size = sizeof(Model0::networkModel); + break; +#endif + +#if defined(MODEL_1) + case 1: + data = reinterpret_cast(Model1::networkModel); + size = sizeof(Model1::networkModel); + break; +#endif + +#if defined(MODEL_2) + case 2: + data = reinterpret_cast(Model2::networkModel); + size = sizeof(Model2::networkModel); + break; +#endif + +#if defined(MODEL_3) + case 3: + data = reinterpret_cast(Model3::networkModel); + size = sizeof(Model3::networkModel); + break; +#endif + + default: + printf("Error: Network model index out of range. index=%" PRIu32 "\n", index); + return true; + } + + return false; + } +}; + +} // namespace MessageHandler + +#endif -- cgit v1.2.1