summaryrefslogtreecommitdiff
path: root/source/hal
diff options
context:
space:
mode:
authorKshitij Sisodia <kshitij.sisodia@arm.com>2022-04-06 13:03:20 +0100
committerKshitij Sisodia <kshitij.sisodia@arm.com>2022-04-06 16:03:23 +0100
commit68fdd119f38c37ab28066474086b0e352d991baf (patch)
treecedb897ff9128f7d07e54c5c53ff8eb6be6b2bb1 /source/hal
parentda2ec067da418d3d80b2829b111df25bd901eb5c (diff)
downloadml-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.txt2
-rw-r--r--source/hal/include/data_acq.h52
-rw-r--r--source/hal/include/data_psn.h72
-rw-r--r--source/hal/include/hal.h29
-rw-r--r--source/hal/include/hal_lcd.h49
-rw-r--r--source/hal/source/data_acq.c61
-rw-r--r--source/hal/source/data_psn.c46
-rw-r--r--source/hal/source/hal.c44
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;
+}