From c21e4c2efa4dfad679d3f330054d38b28cf12eee Mon Sep 17 00:00:00 2001 From: rusefi Date: Wed, 3 Jul 2019 21:01:48 -0400 Subject: [PATCH] Refactoring: OS access should be explicit #867 --- firmware/controllers/math/speed_density.cpp | 4 +++ firmware/controllers/obd2.cpp | 4 +-- firmware/global.h | 1 + firmware/hw_layer/mcp3208.c | 3 ++- firmware/hw_layer/ports/stm32/flash.c | 1 + firmware/hw_layer/serial_over_usb/usbcfg.c | 1 + .../hw_layer/serial_over_usb/usbconsole.c | 1 + firmware/os_access.h | 27 +++++++++++++++++++ firmware/util/histogram.c | 4 +++ firmware/util/rfiutil.c | 1 + simulator/simulator/os_access.h | 27 +++++++++++++++++++ 11 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 firmware/os_access.h create mode 100644 simulator/simulator/os_access.h diff --git a/firmware/controllers/math/speed_density.cpp b/firmware/controllers/math/speed_density.cpp index 5f4a3b7260..ce6d2796f7 100644 --- a/firmware/controllers/math/speed_density.cpp +++ b/firmware/controllers/math/speed_density.cpp @@ -16,6 +16,10 @@ #include "maf2map.h" #include "config_engine_specs.h" +#if defined(HAS_OS_ACCESS) +#error "Unexpected OS ACCESS HERE" +#endif + #define rpmMin 500 #define rpmMax 8000 diff --git a/firmware/controllers/obd2.cpp b/firmware/controllers/obd2.cpp index 50a18ceadb..751d395726 100644 --- a/firmware/controllers/obd2.cpp +++ b/firmware/controllers/obd2.cpp @@ -27,8 +27,7 @@ #include "global.h" #if EFI_CAN_SUPPORT - - +#include "os_access.h" #include "engine.h" #include "obd2.h" #include "can_hw.h" @@ -39,7 +38,6 @@ #include "engine_math.h" #include "fuel_math.h" - extern CANTxFrame txmsg; EXTERN_ENGINE diff --git a/firmware/global.h b/firmware/global.h index 28ca957dc1..73679d6b9d 100644 --- a/firmware/global.h +++ b/firmware/global.h @@ -20,6 +20,7 @@ extern "C" { #endif /* __cplusplus */ +// todo: remove these two from here and rely on os_access.h #include #include diff --git a/firmware/hw_layer/mcp3208.c b/firmware/hw_layer/mcp3208.c index 205bb5869b..1c5b221e87 100644 --- a/firmware/hw_layer/mcp3208.c +++ b/firmware/hw_layer/mcp3208.c @@ -3,10 +3,11 @@ * @brief MCP3208 external ADC chip implementation. Not really used right now. * * @date Aug 12, 2013 - * @author Andrey Belomutskiy, (c) 2012-2018 + * @author Andrey Belomutskiy, (c) 2012-2019 */ #include "global.h" +#include "os_access.h" #if EFI_MCP_3208 #include "mcp3208.h" diff --git a/firmware/hw_layer/ports/stm32/flash.c b/firmware/hw_layer/ports/stm32/flash.c index 47dcf9ae58..a68d0b4fd2 100644 --- a/firmware/hw_layer/ports/stm32/flash.c +++ b/firmware/hw_layer/ports/stm32/flash.c @@ -8,6 +8,7 @@ */ #include "global.h" +#include "os_access.h" #if EFI_INTERNAL_FLASH diff --git a/firmware/hw_layer/serial_over_usb/usbcfg.c b/firmware/hw_layer/serial_over_usb/usbcfg.c index 3a3ac625da..2c61007d21 100644 --- a/firmware/hw_layer/serial_over_usb/usbcfg.c +++ b/firmware/hw_layer/serial_over_usb/usbcfg.c @@ -15,6 +15,7 @@ */ #include "global.h" +#include "os_access.h" #if HAL_USE_SERIAL_USB diff --git a/firmware/hw_layer/serial_over_usb/usbconsole.c b/firmware/hw_layer/serial_over_usb/usbconsole.c index dcf8a753d1..66edcf6d4b 100644 --- a/firmware/hw_layer/serial_over_usb/usbconsole.c +++ b/firmware/hw_layer/serial_over_usb/usbconsole.c @@ -7,6 +7,7 @@ */ #include "global.h" +#include "os_access.h" #if EFI_USB_SERIAL diff --git a/firmware/os_access.h b/firmware/os_access.h new file mode 100644 index 0000000000..05a3ee5aa9 --- /dev/null +++ b/firmware/os_access.h @@ -0,0 +1,27 @@ +/* + * os_access.h + * + * OS access is not part of global.h in order to help separate synchronous code from asynchronous + * + * Created on: Jul 3, 2019 + * @author Andrey Belomutskiy, (c) 2012-2019 + */ + +#ifndef OS_ACCESS_H_ +#define OS_ACCESS_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include +#include + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#define HAS_OS_ACCESS + +#endif /* OS_ACCESS_H_ */ diff --git a/firmware/util/histogram.c b/firmware/util/histogram.c index 3dda5136a9..cf1a937d7f 100644 --- a/firmware/util/histogram.c +++ b/firmware/util/histogram.c @@ -13,6 +13,10 @@ #include "histogram.h" #include "global.h" +#if defined(HAS_OS_ACCESS) +#error "Unexpected OS ACCESS HERE" +#endif + #if EFI_HISTOGRAMS || EFI_UNIT_TEST #define H_ACCURACY 0.05 diff --git a/firmware/util/rfiutil.c b/firmware/util/rfiutil.c index 5e13cde6d0..0c2c80a32f 100644 --- a/firmware/util/rfiutil.c +++ b/firmware/util/rfiutil.c @@ -56,6 +56,7 @@ */ #if !EFI_UNIT_TEST +#include "os_access.h" void chVTSetAny(virtual_timer_t *vtp, systime_t time, vtfunc_t vtfunc, void *par) { bool wasLocked = lockAnyContext(); diff --git a/simulator/simulator/os_access.h b/simulator/simulator/os_access.h new file mode 100644 index 0000000000..05a3ee5aa9 --- /dev/null +++ b/simulator/simulator/os_access.h @@ -0,0 +1,27 @@ +/* + * os_access.h + * + * OS access is not part of global.h in order to help separate synchronous code from asynchronous + * + * Created on: Jul 3, 2019 + * @author Andrey Belomutskiy, (c) 2012-2019 + */ + +#ifndef OS_ACCESS_H_ +#define OS_ACCESS_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include +#include + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#define HAS_OS_ACCESS + +#endif /* OS_ACCESS_H_ */