From a2ba0aaaacb38a680782a1ff7fd3e3a78f45fb6f Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Mon, 8 Jul 2019 23:42:29 -0500 Subject: [PATCH] HAL include and other adjustments (#14525) --- Marlin/src/HAL/{platforms.h => HAL.h} | 2 + Marlin/src/HAL/HAL_AVR/HAL.h | 4 +- Marlin/src/HAL/HAL_AVR/MarlinSerial.h | 1 - Marlin/src/HAL/HAL_AVR/endstop_interrupts.h | 1 - Marlin/src/HAL/HAL_DUE/fastio_Due.h | 2 + Marlin/src/HAL/HAL_LPC1768/HAL.h | 2 +- .../src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp | 2 + .../HAL_TEENSY31_32/persistent_store_impl.cpp | 20 ++++- Marlin/src/HAL/shared/I2cEeprom.cpp | 2 +- Marlin/src/HAL/shared/SpiEeprom.cpp | 2 +- Marlin/src/core/macros.h | 67 +++++++++++++++- Marlin/src/core/minmax.h | 77 ------------------- Marlin/src/core/serial.h | 9 ++- Marlin/src/inc/MarlinConfig.h | 7 +- Marlin/src/inc/MarlinConfigPre.h | 1 - Marlin/src/pins/pinsDebug.h | 7 +- Marlin/src/pins/pinsDebug_list.h | 2 +- Marlin/src/pins/pins_BIGTREE_SKR_V1.3.h | 2 +- Marlin/src/sd/SdVolume.h | 5 +- 19 files changed, 110 insertions(+), 105 deletions(-) rename Marlin/src/HAL/{platforms.h => HAL.h} (98%) delete mode 100644 Marlin/src/core/minmax.h diff --git a/Marlin/src/HAL/platforms.h b/Marlin/src/HAL/HAL.h similarity index 98% rename from Marlin/src/HAL/platforms.h rename to Marlin/src/HAL/HAL.h index 48405f49f..0ae916da9 100644 --- a/Marlin/src/HAL/platforms.h +++ b/Marlin/src/HAL/HAL.h @@ -50,3 +50,5 @@ #define XSTR_(M) #M #define XSTR(M) XSTR_(M) #define HAL_PATH(PATH, NAME) XSTR(PATH/HAL_PLATFORM/NAME) + +#include HAL_PATH(.,HAL.h) diff --git a/Marlin/src/HAL/HAL_AVR/HAL.h b/Marlin/src/HAL/HAL_AVR/HAL.h index 38405e944..763b360e9 100644 --- a/Marlin/src/HAL/HAL_AVR/HAL.h +++ b/Marlin/src/HAL/HAL_AVR/HAL.h @@ -22,8 +22,6 @@ // Includes // -------------------------------------------------------------------------- -#include - #include "../shared/Marduino.h" #include "../shared/HAL_SPI.h" #include "fastio_AVR.h" @@ -33,9 +31,11 @@ #ifdef USBCON #include "HardwareSerial.h" #else + #define HardwareSerial_h // Hack to prevent HardwareSerial.h header inclusion #include "MarlinSerial.h" #endif +#include #include #include #include diff --git a/Marlin/src/HAL/HAL_AVR/MarlinSerial.h b/Marlin/src/HAL/HAL_AVR/MarlinSerial.h index 8849212d9..f3e2086b2 100644 --- a/Marlin/src/HAL/HAL_AVR/MarlinSerial.h +++ b/Marlin/src/HAL/HAL_AVR/MarlinSerial.h @@ -275,7 +275,6 @@ #endif // !USBCON - #ifdef INTERNAL_SERIAL_PORT template struct MarlinInternalSerialCfg { diff --git a/Marlin/src/HAL/HAL_AVR/endstop_interrupts.h b/Marlin/src/HAL/HAL_AVR/endstop_interrupts.h index 4446367d1..c313f95ce 100644 --- a/Marlin/src/HAL/HAL_AVR/endstop_interrupts.h +++ b/Marlin/src/HAL/HAL_AVR/endstop_interrupts.h @@ -36,7 +36,6 @@ * (Located in Marlin/buildroot/share/pin_interrupt_test/pin_interrupt_test.ino) */ -#include "../../core/macros.h" #include "../../module/endstops.h" #include diff --git a/Marlin/src/HAL/HAL_DUE/fastio_Due.h b/Marlin/src/HAL/HAL_DUE/fastio_Due.h index e44d1d1ee..576e8536b 100644 --- a/Marlin/src/HAL/HAL_DUE/fastio_Due.h +++ b/Marlin/src/HAL/HAL_DUE/fastio_Due.h @@ -39,6 +39,8 @@ #include +#include "../../inc/MarlinConfigPre.h" + /** * Utility functions */ diff --git a/Marlin/src/HAL/HAL_LPC1768/HAL.h b/Marlin/src/HAL/HAL_LPC1768/HAL.h index 32765bd0e..d96bf7c90 100644 --- a/Marlin/src/HAL/HAL_LPC1768/HAL.h +++ b/Marlin/src/HAL/HAL_LPC1768/HAL.h @@ -34,7 +34,7 @@ void HAL_init(void); #include #include -extern "C" volatile millis_t _millis; +extern "C" volatile uint32_t _millis; #include "../shared/Marduino.h" #include "../shared/math_32bit.h" diff --git a/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp b/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp index 4f90b26e6..7dd1767d2 100644 --- a/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp +++ b/Marlin/src/HAL/HAL_STM32F1/HAL_sdio_STM32F1.cpp @@ -124,6 +124,8 @@ bool SDIO_ReadBlock(uint32_t blockAddress, uint8_t *data) { return false; } +uint32_t millis(); + bool SDIO_WriteBlock(uint32_t blockAddress, const uint8_t *data) { if (SDIO_GetCardState() != SDIO_CARD_TRANSFER) return false; if (blockAddress >= SdCard.LogBlockNbr) return false; diff --git a/Marlin/src/HAL/HAL_TEENSY31_32/persistent_store_impl.cpp b/Marlin/src/HAL/HAL_TEENSY31_32/persistent_store_impl.cpp index d746dc973..8622c947f 100644 --- a/Marlin/src/HAL/HAL_TEENSY31_32/persistent_store_impl.cpp +++ b/Marlin/src/HAL/HAL_TEENSY31_32/persistent_store_impl.cpp @@ -1,10 +1,28 @@ +/** + * Marlin 3D Printer Firmware + * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ #ifdef __MK20DX256__ #include "../../inc/MarlinConfig.h" #if ENABLED(EEPROM_SETTINGS) -#include "../persistent_store_api.h" +#include "../shared/persistent_store_api.h" namespace HAL { namespace PersistentStore { diff --git a/Marlin/src/HAL/shared/I2cEeprom.cpp b/Marlin/src/HAL/shared/I2cEeprom.cpp index cc98ac183..d9faa36da 100644 --- a/Marlin/src/HAL/shared/I2cEeprom.cpp +++ b/Marlin/src/HAL/shared/I2cEeprom.cpp @@ -33,7 +33,7 @@ // Includes // -------------------------------------------------------------------------- -#include HAL_PATH(.., HAL.h) +#include "../HAL.h" #include // -------------------------------------------------------------------------- diff --git a/Marlin/src/HAL/shared/SpiEeprom.cpp b/Marlin/src/HAL/shared/SpiEeprom.cpp index cbdb4d298..35e7d9b0a 100644 --- a/Marlin/src/HAL/shared/SpiEeprom.cpp +++ b/Marlin/src/HAL/shared/SpiEeprom.cpp @@ -29,7 +29,7 @@ #if ENABLED(SPI_EEPROM) -#include HAL_PATH(.., HAL.h) +#include "../HAL.h" #define CMD_WREN 6 // WREN #define CMD_READ 2 // WRITE diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h index 918b3c6d1..a6e546a4a 100644 --- a/Marlin/src/core/macros.h +++ b/Marlin/src/core/macros.h @@ -21,8 +21,6 @@ */ #pragma once -#include "minmax.h" - #define NUM_AXIS 4 #define ABCE 4 #define XYZE 4 @@ -75,10 +73,16 @@ #undef _BV #define _BV(n) (1<<(n)) #define TEST(n,b) !!((n)&_BV(b)) -#define SBI(n,b) (n |= _BV(b)) -#define CBI(n,b) (n &= ~_BV(b)) #define SET_BIT_TO(N,B,TF) do{ if (TF) SBI(N,B); else CBI(N,B); }while(0) +#ifndef SBI + #define SBI(A,B) (A |= (1 << (B))) +#endif + +#ifndef CBI + #define CBI(A,B) (A &= ~(1 << (B))) +#endif + #define _BV32(b) (1UL << (b)) #define TEST32(n,b) !!((n)&_BV32(b)) #define SBI32(n,b) (n |= _BV32(b)) @@ -269,3 +273,58 @@ #else #define I2C_ADDRESS(A) A #endif + +// Use NUM_ARGS(__VA_ARGS__) to get the number of variadic arguments +#define _NUM_ARGS(_0,_24_,_23,_22,_21,_20,_19,_18,_17,_16,_15,_14,_13,_12,_11,_10,_9,_8,_7,_6,_5,_4,_3,_2,_1,N,...) N +#define NUM_ARGS(V...) _NUM_ARGS(0,V,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0) + +#ifdef __cplusplus + + #ifndef _MINMAX_H_ + #define _MINMAX_H_ + + extern "C++" { + + // C++11 solution that is standards compliant. Return type is deduced automatically + template static inline constexpr auto _MIN(const L lhs, const R rhs) -> decltype(lhs + rhs) { + return lhs < rhs ? lhs : rhs; + } + template static inline constexpr auto _MAX(const L lhs, const R rhs) -> decltype(lhs + rhs) { + return lhs > rhs ? lhs : rhs; + } + template static inline constexpr const T _MIN(T V, Ts... Vs) { return _MIN(V, _MIN(Vs...)); } + template static inline constexpr const T _MAX(T V, Ts... Vs) { return _MAX(V, _MAX(Vs...)); } + + } + + #endif + +#else + + #define MIN_2(a,b) ((a)<(b)?(a):(b)) + #define MIN_3(a,...) MIN_2(a,MIN_2(__VA_ARGS__)) + #define MIN_4(a,...) MIN_2(a,MIN_3(__VA_ARGS__)) + #define MIN_5(a,...) MIN_2(a,MIN_4(__VA_ARGS__)) + #define MIN_6(a,...) MIN_2(a,MIN_5(__VA_ARGS__)) + #define MIN_7(a,...) MIN_2(a,MIN_6(__VA_ARGS__)) + #define MIN_8(a,...) MIN_2(a,MIN_7(__VA_ARGS__)) + #define MIN_9(a,...) MIN_2(a,MIN_8(__VA_ARGS__)) + #define MIN_10(a,...) MIN_2(a,MIN_9(__VA_ARGS__)) + #define __MIN_N(N, ...) MIN_##N(__VA_ARGS__) + #define _MIN_N(N, ...) __MIN_N(N,__VA_ARGS__) + #define _MIN(...) _MIN_N(NUM_ARGS(__VA_ARGS__), __VA_ARGS__) + + #define MAX_2(a,b) ((a)>(b)?(a):(b)) + #define MAX_3(a,...) MAX_2(a,MAX_2(__VA_ARGS__)) + #define MAX_4(a,...) MAX_2(a,MAX_3(__VA_ARGS__)) + #define MAX_5(a,...) MAX_2(a,MAX_4(__VA_ARGS__)) + #define MAX_6(a,...) MAX_2(a,MAX_5(__VA_ARGS__)) + #define MAX_7(a,...) MAX_2(a,MAX_6(__VA_ARGS__)) + #define MAX_8(a,...) MAX_2(a,MAX_7(__VA_ARGS__)) + #define MAX_9(a,...) MAX_2(a,MAX_8(__VA_ARGS__)) + #define MAX_10(a,...) MAX_2(a,MAX_9(__VA_ARGS__)) + #define __MAX_N(N, ...) MAX_##N(__VA_ARGS__) + #define _MAX_N(N, ...) __MAX_N(N,__VA_ARGS__) + #define _MAX(...) _MAX_N(NUM_ARGS(__VA_ARGS__), __VA_ARGS__) + +#endif diff --git a/Marlin/src/core/minmax.h b/Marlin/src/core/minmax.h deleted file mode 100644 index 64294711f..000000000 --- a/Marlin/src/core/minmax.h +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Marlin 3D Printer Firmware - * Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin] - * - * Based on Sprinter and grbl. - * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ -#pragma once - -// Use NUM_ARGS(__VA_ARGS__) to get the number of variadic arguments -#define _NUM_ARGS(_0,_24_,_23,_22,_21,_20,_19,_18,_17,_16,_15,_14,_13,_12,_11,_10,_9,_8,_7,_6,_5,_4,_3,_2,_1,N,...) N -#define NUM_ARGS(V...) _NUM_ARGS(0,V,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0) - -#ifdef __cplusplus - - #ifndef _MINMAX_H_ - #define _MINMAX_H_ - - extern "C++" { - - // C++11 solution that is standards compliant. Return type is deduced automatically - template static inline constexpr auto _MIN(const L lhs, const R rhs) -> decltype(lhs + rhs) { - return lhs < rhs ? lhs : rhs; - } - template static inline constexpr auto _MAX(const L lhs, const R rhs) -> decltype(lhs + rhs) { - return lhs > rhs ? lhs : rhs; - } - template static inline constexpr const T _MIN(T V, Ts... Vs) { return _MIN(V, _MIN(Vs...)); } - template static inline constexpr const T _MAX(T V, Ts... Vs) { return _MAX(V, _MAX(Vs...)); } - - } - - #endif - -#else - - #define MIN_2(a,b) ((a)<(b)?(a):(b)) - #define MIN_3(a,...) MIN_2(a,MIN_2(__VA_ARGS__)) - #define MIN_4(a,...) MIN_2(a,MIN_3(__VA_ARGS__)) - #define MIN_5(a,...) MIN_2(a,MIN_4(__VA_ARGS__)) - #define MIN_6(a,...) MIN_2(a,MIN_5(__VA_ARGS__)) - #define MIN_7(a,...) MIN_2(a,MIN_6(__VA_ARGS__)) - #define MIN_8(a,...) MIN_2(a,MIN_7(__VA_ARGS__)) - #define MIN_9(a,...) MIN_2(a,MIN_8(__VA_ARGS__)) - #define MIN_10(a,...) MIN_2(a,MIN_9(__VA_ARGS__)) - #define __MIN_N(N, ...) MIN_##N(__VA_ARGS__) - #define _MIN_N(N, ...) __MIN_N(N,__VA_ARGS__) - #define MIN(...) _MIN_N(NUM_ARGS(__VA_ARGS__), __VA_ARGS__) - - #define MAX_2(a,b) ((a)>(b)?(a):(b)) - #define MAX_3(a,...) MAX_2(a,MAX_2(__VA_ARGS__)) - #define MAX_4(a,...) MAX_2(a,MAX_3(__VA_ARGS__)) - #define MAX_5(a,...) MAX_2(a,MAX_4(__VA_ARGS__)) - #define MAX_6(a,...) MAX_2(a,MAX_5(__VA_ARGS__)) - #define MAX_7(a,...) MAX_2(a,MAX_6(__VA_ARGS__)) - #define MAX_8(a,...) MAX_2(a,MAX_7(__VA_ARGS__)) - #define MAX_9(a,...) MAX_2(a,MAX_8(__VA_ARGS__)) - #define MAX_10(a,...) MAX_2(a,MAX_9(__VA_ARGS__)) - #define __MAX_N(N, ...) MAX_##N(__VA_ARGS__) - #define _MAX_N(N, ...) __MAX_N(N,__VA_ARGS__) - #define MAX(...) _MAX_N(NUM_ARGS(__VA_ARGS__), __VA_ARGS__) - -#endif diff --git a/Marlin/src/core/serial.h b/Marlin/src/core/serial.h index e46696669..d6c3291f6 100644 --- a/Marlin/src/core/serial.h +++ b/Marlin/src/core/serial.h @@ -21,9 +21,12 @@ */ #pragma once -#include "../inc/MarlinConfigPre.h" -#include "../core/minmax.h" -#include HAL_PATH(../HAL, HAL.h) +//#include + +//#include "../inc/MarlinConfigPre.h" +#include "../HAL/HAL.h" + +// #include "../core/macros.h" /** * Define debug bit-masks diff --git a/Marlin/src/inc/MarlinConfig.h b/Marlin/src/inc/MarlinConfig.h index 94aa1939b..8e8bf9682 100644 --- a/Marlin/src/inc/MarlinConfig.h +++ b/Marlin/src/inc/MarlinConfig.h @@ -27,16 +27,12 @@ #include "MarlinConfigPre.h" -#include HAL_PATH(../HAL, HAL.h) +#include "../HAL/HAL.h" #include "../pins/pins.h" #include HAL_PATH(../HAL, spi_pins.h) -#if defined(__AVR__) && !defined(USBCON) - #define HardwareSerial_h // trick to disable the standard HWserial -#endif - #include "Conditionals_post.h" #include "SanityCheck.h" @@ -47,4 +43,3 @@ #include "../core/language.h" #include "../core/utility.h" #include "../core/serial.h" -#include "../core/minmax.h" diff --git a/Marlin/src/inc/MarlinConfigPre.h b/Marlin/src/inc/MarlinConfigPre.h index ef998c654..fa3b93c29 100644 --- a/Marlin/src/inc/MarlinConfigPre.h +++ b/Marlin/src/inc/MarlinConfigPre.h @@ -27,7 +27,6 @@ // Prefix header to acquire configurations // -#include "../HAL/platforms.h" #include "../core/boards.h" #include "../core/macros.h" #include "../core/millis_t.h" diff --git a/Marlin/src/pins/pinsDebug.h b/Marlin/src/pins/pinsDebug.h index e1f6b1573..61f05c11b 100644 --- a/Marlin/src/pins/pinsDebug.h +++ b/Marlin/src/pins/pinsDebug.h @@ -17,6 +17,8 @@ * */ +#include "../inc/MarlinConfig.h" + #define MAX_NAME_LENGTH 39 // one place to specify the format of all the sources of names // "-" left justify, "39" minimum width of name, pad with blanks @@ -40,7 +42,7 @@ #define REPORT_NAME_ANALOG(COUNTER, NAME) _ADD_PIN(#NAME, COUNTER) #include "pinsDebug_list.h" -#line 47 +#line 46 // manually add pins that have names that are macros which don't play well with these macros #if SERIAL_PORT == 0 && (AVR_ATmega2560_FAMILY || AVR_ATmega1284_FAMILY || defined(ARDUINO_ARCH_SAM)) @@ -92,11 +94,10 @@ const PinInfo pin_array[] PROGMEM = { #endif #include "pinsDebug_list.h" - #line 99 + #line 98 }; - #include HAL_PATH(../HAL, pinsDebug.h) // get the correct support file for this CPU #ifndef M43_NEVER_TOUCH diff --git a/Marlin/src/pins/pinsDebug_list.h b/Marlin/src/pins/pinsDebug_list.h index cf6dcc098..26968ed00 100644 --- a/Marlin/src/pins/pinsDebug_list.h +++ b/Marlin/src/pins/pinsDebug_list.h @@ -24,7 +24,7 @@ // Pin lists 1.1.x and 2.0.x synchronized 2018-02-17 -#line 31 // set __LINE__ to a known value for both passes +#line 28 // set __LINE__ to a known value for both passes // // Analog Pin Assignments diff --git a/Marlin/src/pins/pins_BIGTREE_SKR_V1.3.h b/Marlin/src/pins/pins_BIGTREE_SKR_V1.3.h index 0db91a83e..ef9fe23e7 100644 --- a/Marlin/src/pins/pins_BIGTREE_SKR_V1.3.h +++ b/Marlin/src/pins/pins_BIGTREE_SKR_V1.3.h @@ -115,7 +115,7 @@ #endif #if HAS_TMC220x - /** + /** * TMC2208/TMC2209 stepper drivers * * Hardware serial communication ports. diff --git a/Marlin/src/sd/SdVolume.h b/Marlin/src/sd/SdVolume.h index 1c72fd3d2..b5282bdce 100644 --- a/Marlin/src/sd/SdVolume.h +++ b/Marlin/src/sd/SdVolume.h @@ -33,6 +33,10 @@ * This file is part of the Arduino Sd2Card Library */ +#include + +#include "../inc/MarlinConfigPre.h" + #if ENABLED(USB_FLASH_DRIVE_SUPPORT) #include "usb_flashdrive/Sd2Card_FlashDrive.h" #elif ENABLED(SDIO_SUPPORT) @@ -43,7 +47,6 @@ #include "SdFatConfig.h" #include "SdFatStructs.h" -#include //============================================================================== // SdVolume class