diff options
author | Kshitij Sisodia <kshitij.sisodia@arm.com> | 2022-04-06 13:03:20 +0100 |
---|---|---|
committer | Kshitij Sisodia <kshitij.sisodia@arm.com> | 2022-04-06 16:03:23 +0100 |
commit | 68fdd119f38c37ab28066474086b0e352d991baf (patch) | |
tree | cedb897ff9128f7d07e54c5c53ff8eb6be6b2bb1 /source/hal | |
parent | da2ec067da418d3d80b2829b111df25bd901eb5c (diff) | |
download | ml-embedded-evaluation-kit-68fdd119f38c37ab28066474086b0e352d991baf.tar.gz |
MLECO-3096: Removing data_acq and data_psn
Further to the HAL refactoring done in previous commits,
this CR simpifies HAL by removing data_acq and data_psn
"modules". The associated function pointers have been
removed.
Change-Id: I04c194c08dfe0aff98ce4e0f0f056bac254c137d
Signed-off-by: Kshitij Sisodia <kshitij.sisodia@arm.com>
Diffstat (limited to 'source/hal')
-rw-r--r-- | source/hal/CMakeLists.txt | 2 | ||||
-rw-r--r-- | source/hal/include/data_acq.h | 52 | ||||
-rw-r--r-- | source/hal/include/data_psn.h | 72 | ||||
-rw-r--r-- | source/hal/include/hal.h | 29 | ||||
-rw-r--r-- | source/hal/include/hal_lcd.h | 49 | ||||
-rw-r--r-- | source/hal/source/data_acq.c | 61 | ||||
-rw-r--r-- | source/hal/source/data_psn.c | 46 | ||||
-rw-r--r-- | source/hal/source/hal.c | 44 |
8 files changed, 78 insertions, 277 deletions
diff --git a/source/hal/CMakeLists.txt b/source/hal/CMakeLists.txt index 10016c2..37bf267 100644 --- a/source/hal/CMakeLists.txt +++ b/source/hal/CMakeLists.txt @@ -39,8 +39,6 @@ target_include_directories(${HAL_TARGET} target_sources(${HAL_TARGET} PRIVATE source/hal.c - source/data_psn.c - source/data_acq.c source/hal_timer.c) if (DEFINED VERIFY_TEST_OUTPUT) diff --git a/source/hal/include/data_acq.h b/source/hal/include/data_acq.h deleted file mode 100644 index 965fbe5..0000000 --- a/source/hal/include/data_acq.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2021 Arm Limited. All rights reserved. - * 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 - * - * 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. - */ -#ifndef DATA_ACQ_H -#define DATA_ACQ_H - -/** - * This file is the top level abstraction for the data acquisition module. - **/ -#include <stdint.h> - -/* Structure to encompass the data acquisition module and it's methods. */ -typedef struct data_acquisition_module { - int inited; /**< initialised or not. */ - char system_name[8]; /**< name(s) of the channel in use. */ - int (* system_init)(void); /**< channel initialisation function. */ - - /* Function to go and check if there are any events that require handling. */ - int (* get_input)(char *user_input, int size); -} data_acq_module; - -/** - * @brief Initialise the data acquisition channel: goes and - * sets the required channel up for usage. - * @param[in,out] module Pointer to a pre-allocated data - * acquisition structure object. - * @return 0 if successful, error code otherwise. - **/ -int data_acq_channel_init(data_acq_module *module); - -/** - * @brief Releases the data acquisition channel. - * @param[in,out] module Pointer to a pre-allocated data - * acquisition structure object. - * @return 0 if successful, error code otherwise. - **/ -int data_acq_channel_release(data_acq_module *module); - -#endif /* DATA_ACQ_H */ diff --git a/source/hal/include/data_psn.h b/source/hal/include/data_psn.h deleted file mode 100644 index 05d7649..0000000 --- a/source/hal/include/data_psn.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2021-2022 Arm Limited. All rights reserved. - * 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 - * - * 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. - */ -#ifndef DATA_PSN_H -#define DATA_PSN_H - -/** - * This file is the top level abstraction for the data presentation module - **/ -#include <stdint.h> -#include <stddef.h> -#include <stdbool.h> - -/* Structure to encompass the data presentation module and it's methods */ -typedef struct data_presentation_module { - int inited; /**< initialised or not */ - char system_name[8]; /**< name of the system in use */ - int (* system_init)(void); /**< pointer to init function */ - - /** Pointer to the image presentation function */ - int (* present_data_image)(const uint8_t *data, const uint32_t width, - const uint32_t height, const uint32_t channels, - const uint32_t pos_x, const uint32_t pos_y, - const uint32_t downsample_factor); - - /* Pointer to text presentation function */ - int (* present_data_text)(const char *str, const size_t str_sz, - const uint32_t pos_x, const uint32_t pos_y, - const bool allow_multiple_lines); - - /* Pointer to box presentation function */ - int (* present_box)(const uint32_t pos_x, const uint32_t pos_y, - const uint32_t width, const uint32_t height, const uint16_t color); - - /* Pointer to clear presentation function */ - int (* clear)(const uint16_t color); - - /* Pointer to set text color presentation function */ - int (* set_text_color)(const uint16_t color); -} data_psn_module; - - -/** - * @brief Initialises the data presentation system. - * @param[in,out] module Pointer to a pre-allocated data - * presentation structure object. - * @return 0 if successful, error code otherwise. - **/ -int data_psn_system_init(data_psn_module *module); - -/** - * @brief Releases the data presentation system. - * @param[in,out] module Pointer to a pre-allocated data - * presentation structure object. - * @return 0 if successful, error code otherwise. - **/ -int data_psn_system_release(data_psn_module *module); - -#endif /* DATA_PSN_H */ diff --git a/source/hal/include/hal.h b/source/hal/include/hal.h index 6335e6d..25ea1e2 100644 --- a/source/hal/include/hal.h +++ b/source/hal/include/hal.h @@ -28,20 +28,18 @@ extern "C" { #endif -#include "platform_drivers.h" /* Platform drivers */ -#include "data_acq.h" /* Data acquisition abstraction */ -#include "data_psn.h" /* Data presentation abstraction */ -#include "timer.h" /* Timer/profiler API */ +#include "platform_drivers.h" /* Platform drivers */ +#include "timer.h" /* Timer/profiler API */ +#include "hal_lcd.h" /* LCD functions */ #include <inttypes.h> +#include <stdbool.h> /* Structure to define a platform context to be used by the application */ typedef struct hal_platform_context { int inited; /**< initialised */ char plat_name[64]; /**< name of this platform */ - data_acq_module * data_acq; /**< data acquisition module pointer */ - data_psn_module * data_psn; /**< data presentation module pointer */ - platform_timer * timer; /**< timer */ + platform_timer* timer; /**< timer */ int (* platform_init)(); /**< pointer to platform initialisation function */ void (* platform_release)(); /**< pointer to platform release function */ } hal_platform; @@ -50,13 +48,10 @@ typedef struct hal_platform_context { * @brief Initialise the HAL structure based on compile time config. This * should be called before any other function in this API. * @param[in,out] platform Pointer to a pre-allocated platform struct. - * @param[in,out] data_acq Pointer to a pre-allocated data acquisition module. - * @param[in,out] data_psn Pointer to a pre-allocated data presentation module. * @param[in,out] timer Pointer to a pre-allocated timer module. * @return 0 if successful, error code otherwise. **/ -int hal_init(hal_platform *platform, data_acq_module *data_acq, - data_psn_module *data_psn, platform_timer *timer); +int hal_init(hal_platform* platform, platform_timer* timer); /** @@ -66,7 +61,7 @@ int hal_init(hal_platform *platform, data_acq_module *data_acq, * platform structure. * @return 0 if successful, error code otherwise. **/ -int hal_platform_init(hal_platform *platform); +int hal_platform_init(hal_platform* platform); /** @@ -74,7 +69,15 @@ int hal_platform_init(hal_platform *platform); * @param[in] platform pointer to a pre-allocated and initialised * platform structure. **/ -void hal_platform_release(hal_platform *platform); +void hal_platform_release(hal_platform* platform); + +/** + * @brief Gets user input from the stdin interface. + * @param[out] user_input Pointer to a buffer where the input will be stored. + * @param[in] size Buffer size in bytes. + * @return True if successful, false otherwise. + */ +bool hal_get_user_input(char* user_input, int size); #ifdef __cplusplus } diff --git a/source/hal/include/hal_lcd.h b/source/hal/include/hal_lcd.h new file mode 100644 index 0000000..0a484c5 --- /dev/null +++ b/source/hal/include/hal_lcd.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2021-2022 Arm Limited. All rights reserved. + * 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 + * + * 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. + */ +#ifndef HAL_LCD_H +#define HAL_LCD_H +/** + * This file is the top level abstraction for the LCD related functions + **/ + +#include "lcd_img.h" + +#include <stdint.h> +#include <stddef.h> +#include <stdbool.h> + +/** + * See lcd_img.h for function docstrings. + * In the following macro definitions: + * d = data (pointer) + * w = width + * h = height + * c = channels + * x = x position + * y = y position + * s = down-sample factor (images) + * m = allow multiple lines (text) + * cl = colour + */ +#define hal_lcd_init() lcd_init() +#define hal_lcd_display_image(d,w,h,c,x,y,s) lcd_display_image(d,w,h,c,x,y,s) +#define hal_lcd_display_text(s,l,x,y,m) lcd_display_text(s,l,x,y,m) +#define hal_lcd_display_box(x,y,w,h,cl) lcd_display_box(x,y,w,h,cl) +#define hal_lcd_clear(cl) lcd_clear(cl) +#define hal_lcd_set_text_color(cl) lcd_set_text_color(cl) + +#endif /* HAL_LCD_H */ diff --git a/source/hal/source/data_acq.c b/source/hal/source/data_acq.c deleted file mode 100644 index ec6c725..0000000 --- a/source/hal/source/data_acq.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2022 Arm Limited. All rights reserved. - * 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 - * - * 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 "data_acq.h" - -#include "log_macros.h" -#include "platform_drivers.h" - -#include <assert.h> -#include <stdlib.h> -#include <string.h> - -/** - * @brief Get the user input from USART. - * @param[out] user_input String read from the UART block. - * @param[in] size String read length. - * @return 0 if successful, error code otherwise. - **/ -static int get_uart_user_input(char* user_input, int size) -{ - if (1 != GetLine(user_input, size - 1)) { - return 1; - } - return 0; -} - -int data_acq_channel_init(data_acq_module* module) -{ - assert(module); - - /* UART should have been initialised with low level initialisation - * routines. */ - module->system_init = NULL; - - strncpy(module->system_name, "UART", sizeof(module->system_name)); - module->get_input = get_uart_user_input; - module->inited = 1; - - return !(module->inited); -} - -int data_acq_channel_release(data_acq_module* module) -{ - assert(module); - module->inited = 0; - module->get_input = NULL; - return 0; -} diff --git a/source/hal/source/data_psn.c b/source/hal/source/data_psn.c deleted file mode 100644 index de088d7..0000000 --- a/source/hal/source/data_psn.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2022 Arm Limited. All rights reserved. - * 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 - * - * 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 "data_psn.h" - -#include "lcd_img.h" -#include "platform_drivers.h" - -#include <assert.h> -#include <string.h> - -int data_psn_system_init(data_psn_module* module) -{ - assert(module); - - /* LCD output supported. */ - module->system_init = lcd_init; - module->present_data_image = lcd_display_image; - module->present_data_text = lcd_display_text; - module->present_box = lcd_display_box; - module->set_text_color = lcd_set_text_color; - module->clear = lcd_clear; - strncpy(module->system_name, "lcd", sizeof(module->system_name)); - module->inited = !module->system_init(); - return !module->inited; -} - -int data_psn_system_release(data_psn_module* module) -{ - assert(module); - module->inited = 0; - return 0; -} diff --git a/source/hal/source/hal.c b/source/hal/source/hal.c index 2715a17..d6028e7 100644 --- a/source/hal/source/hal.c +++ b/source/hal/source/hal.c @@ -23,13 +23,8 @@ #include <assert.h> #include <string.h> -int hal_init(hal_platform* platform, data_acq_module* data_acq, - data_psn_module* data_psn, platform_timer* timer) +int hal_init(hal_platform* platform, platform_timer* timer) { - assert(platform && data_acq && data_psn); - - platform->data_acq = data_acq; - platform->data_psn = data_psn; platform->timer = timer; platform->platform_init = platform_init; platform->platform_release = platform_release; @@ -59,46 +54,33 @@ int hal_platform_init(hal_platform* platform) return state; } - /* Initialise the data acquisition module */ - if (0 != (state = data_acq_channel_init(platform->data_acq))) { - if (!platform->data_acq->inited) { - printf_err("Failed to initialise data acq module: %s\n", - platform->data_acq->system_name); - } - hal_platform_release(platform); + /* Initialise LCD */ + if (0 != (state = hal_lcd_init())) { + printf_err("hal_lcd_init failed\n"); return state; } - /* Initialise the presentation module */ - if (0 != (state = data_psn_system_init(platform->data_psn))) { - printf_err("Failed to initialise data psn module: %s\n", - platform->data_psn->system_name); - data_acq_channel_release(platform->data_acq); - hal_platform_release(platform); - return state; - } - - /* Followed by the timer module */ + /* Initialise the timer module */ init_timer(platform->timer); info("%s platform initialised\n", platform->plat_name); - debug("Using %s module for data acquisition\n", - platform->data_acq->system_name); - debug("Using %s module for data presentation\n", - platform->data_psn->system_name); - platform->inited = !state; - return state; } void hal_platform_release(hal_platform *platform) { assert(platform && platform->platform_release); - data_acq_channel_release(platform->data_acq); - data_psn_system_release(platform->data_psn); hal_platform_clear(platform); info("Releasing platform %s\n", platform->plat_name); platform->platform_release(); } + +bool hal_get_user_input(char* user_input, int size) +{ + if (1 != GetLine(user_input, size - 1)) { + return true; + } + return false; +} |