From 6d886d26eb4ababfa3158ead22a7fa54a884b321 Mon Sep 17 00:00:00 2001 From: xiaojiazhu <258828110.@qq.com> Date: Sun, 13 Aug 2023 01:38:14 -0700 Subject: [PATCH] Improve hal module. --- hal/abstract/i_hal.c | 1 + hal/include/i_hal.h | 5 +---- hal/src/hal_make_ptr.c | 11 ++++++++--- hal/src/hal_make_ptr.h | 6 +++--- test/hal/src/i_hal_Test.cpp | 4 ++-- 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/hal/abstract/i_hal.c b/hal/abstract/i_hal.c index 508ef2d6..7143dc04 100644 --- a/hal/abstract/i_hal.c +++ b/hal/abstract/i_hal.c @@ -33,5 +33,6 @@ RETURN_CODE_C new_i_hal(IHal **object) } void reset_hal_impl(IHal *impl) { + hal_instance->free(hal_instance); hal_instance = impl; } \ No newline at end of file diff --git a/hal/include/i_hal.h b/hal/include/i_hal.h index 1017c4b1..3dac4afb 100644 --- a/hal/include/i_hal.h +++ b/hal/include/i_hal.h @@ -22,15 +22,12 @@ extern "C" { return get_hal_instance()->init(get_hal_instance()); } - static inline void i_hal_free(void) - { - return get_hal_instance()->free(get_hal_instance()); - } static inline RETURN_CODE_C i_hal_un_init(void) { return get_hal_instance()->un_init(get_hal_instance()); } RETURN_CODE_C create_hal_module(void); + RETURN_CODE_C destroy_hal_module(void); #ifdef __cplusplus } #endif diff --git a/hal/src/hal_make_ptr.c b/hal/src/hal_make_ptr.c index 3985da60..148a0551 100644 --- a/hal/src/hal_make_ptr.c +++ b/hal/src/hal_make_ptr.c @@ -6,17 +6,22 @@ #include RETURN_CODE_C create_hal_module(void) { - IHal *hal = NULL; + Hal *hal = NULL; RETURN_CODE_C code = create_hal_instance(&hal); if (C_RETURN_CODE_OK == code.mCode) { LogInfo("Create hal instance ok.\n"); - reset_hal_impl(hal); + reset_hal_impl((IHal *)hal); return code; } return CreateReturnCode(C_RETURN_CODE_NOT_OK); } -static RETURN_CODE_C create_hal_instance_ptr(HalMakePtr *object, IHal **hal) +RETURN_CODE_C destroy_hal_module(void) +{ + reset_hal_impl(NULL); + return CreateReturnCode(C_RETURN_CODE_OK); +} +static RETURN_CODE_C create_hal_instance_ptr(HalMakePtr *object, Hal **hal) { return new_hal(hal); } diff --git a/hal/src/hal_make_ptr.h b/hal/src/hal_make_ptr.h index c6fb990f..5d0fe5f3 100644 --- a/hal/src/hal_make_ptr.h +++ b/hal/src/hal_make_ptr.h @@ -1,7 +1,7 @@ #ifndef HAL_MAKE_PTR_H #define HAL_MAKE_PTR_H #include "ReturnCode.h" -#include "i_hal.h" +#include "hal.h" /* ** Make sure we can call this stuff from C++. */ @@ -13,7 +13,7 @@ extern "C" typedef struct hal_make_ptr { RETURN_CODE_C (*init)(HalMakePtr *); - RETURN_CODE_C (*create_hal_instance)(HalMakePtr *, IHal **); + RETURN_CODE_C (*create_hal_instance)(HalMakePtr *, Hal **); void (*free)(HalMakePtr *); RETURN_CODE_C (*un_init)(HalMakePtr *); } HalMakePtr; @@ -28,7 +28,7 @@ extern "C" { return get_hal_make_ptr_instance()->un_init(get_hal_make_ptr_instance()); } - static inline RETURN_CODE_C create_hal_instance(IHal **hal) + static inline RETURN_CODE_C create_hal_instance(Hal **hal) { return get_hal_make_ptr_instance()->create_hal_instance(get_hal_make_ptr_instance(), hal); } diff --git a/test/hal/src/i_hal_Test.cpp b/test/hal/src/i_hal_Test.cpp index 1cd016c4..6dd4eba6 100644 --- a/test/hal/src/i_hal_Test.cpp +++ b/test/hal/src/i_hal_Test.cpp @@ -9,10 +9,10 @@ namespace IHalTest TEST(IHalTest, Demo) { InitLog(LOG_EASYLOGGING, nullptr); - // create_hal_module(); + create_hal_module(); i_hal_init(); i_hal_un_init(); - i_hal_free(); + destroy_hal_module(); UnInitLog(); } } \ No newline at end of file