Use a macro for HAL header redirection (#10380)

This commit is contained in:
Chris Pepper 2018-04-13 02:25:08 +01:00 committed by Scott Lahteine
parent 12785583d0
commit cc6d41e1d3
51 changed files with 152 additions and 285 deletions

View file

@ -1,59 +0,0 @@
/* **************************************************************************
Marlin 3D Printer Firmware
Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
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 <http://www.gnu.org/licenses/>.
****************************************************************************/
/**
* Description: HAL wrapper
*
* Supports platforms :
* ARDUINO_ARCH_SAM : For Arduino Due and other boards based on Atmel SAM3X8E
* __AVR__ : For all Atmel AVR boards
*/
#ifndef _HAL_H
#define _HAL_H
#include "HAL_SPI.h"
#define CPU_32_BIT
#ifdef __AVR__
#undef CPU_32_BIT
#include "HAL_AVR/HAL_AVR.h"
#elif defined(ARDUINO_ARCH_SAM)
#include "HAL_DUE/HAL_Due.h"
#include "math_32bit.h"
#elif defined(__MK64FX512__) || defined(__MK66FX1M0__)
#include "HAL_TEENSY35_36/HAL_Teensy.h"
#include "math_32bit.h"
#elif defined(TARGET_LPC1768)
#include "math_32bit.h"
#include "HAL_LPC1768/HAL.h"
#elif defined(__STM32F1__) || defined(TARGET_STM32F1)
#include "math_32bit.h"
#include "HAL_STM32F1/HAL_Stm32f1.h"
#elif defined(STM32F7)
#define CPU_32_BIT
#include "math_32bit.h"
#include "HAL_STM32F7/HAL_STM32F7.h"
#else
#error "Unsupported Platform!"
#endif
#endif // _HAL_H

View file

@ -43,6 +43,7 @@
#include <avr/interrupt.h>
#include <avr/io.h>
#include "../HAL_SPI.h"
#include "fastio_AVR.h"
#include "watchdog_AVR.h"
#include "math_AVR.h"

View file

@ -41,6 +41,17 @@
#include "../../core/macros.h"
#include <stdint.h>
volatile uint8_t e_hit = 0; // Different from 0 when the endstops should be tested in detail.
// Must be reset to 0 by the test function when finished.
// This is what is really done inside the interrupts.
FORCE_INLINE void endstop_ISR_worker( void ) {
e_hit = 2; // Because the detection of a e-stop hit has a 1 step debouncer it has to be called at least twice.
}
// One ISR for all EXT-Interrupts
void endstop_ISR(void) { endstop_ISR_worker(); }
/**
* Patch for pins_arduino.h (...\Arduino\hardware\arduino\avr\variants\mega\pins_arduino.h)
*

View file

@ -29,7 +29,7 @@
// Includes
// --------------------------------------------------------------------------
#include "../HAL.h"
#include "HAL.h"
#include <Wire.h>
#include "usb/usb_task.h"

View file

@ -29,10 +29,14 @@
#ifndef _HAL_DUE_H
#define _HAL_DUE_H
#define CPU_32_BIT
#include <stdint.h>
#include <Arduino.h>
#include "../math_32bit.h"
#include "../HAL_SPI.h"
#include "fastio_Due.h"
#include "watchdog_Due.h"
#include "HAL_timers_Due.h"

View file

@ -32,7 +32,7 @@
// Includes
// --------------------------------------------------------------------------
#include "../HAL.h"
#include "HAL.h"
#include "HAL_timers_Due.h"

View file

@ -32,7 +32,7 @@
*/
#ifdef ARDUINO_ARCH_SAM
#include "HAL_Due.h"
#include "HAL.h"
#include "InterruptVectors_Due.h"
/* The relocated Exception/Interrupt Table - According to the ARM

View file

@ -27,7 +27,7 @@
#ifdef ARDUINO_ARCH_SAM
#include "HAL_Due.h"
#include "HAL.h"
#include "HAL_timers_Due.h"
static pin_t tone_pin;

View file

@ -34,8 +34,19 @@
* (Located in Marlin/buildroot/share/pin_interrupt_test/pin_interrupt_test.ino)
*/
#ifndef _ENDSTOP_INTERRUPTS_H_
#define _ENDSTOP_INTERRUPTS_H_
#ifndef _ENDSTOP_INTERRUPTS_H_
#define _ENDSTOP_INTERRUPTS_H_
volatile uint8_t e_hit = 0; // Different from 0 when the endstops should be tested in detail.
// Must be reset to 0 by the test function when finished.
// This is what is really done inside the interrupts.
FORCE_INLINE void endstop_ISR_worker( void ) {
e_hit = 2; // Because the detection of a e-stop hit has a 1 step debouncer it has to be called at least twice.
}
// One ISR for all EXT-Interrupts
void endstop_ISR(void) { endstop_ISR_worker(); }
/**
* Endstop interrupts for Due based targets.

View file

@ -25,7 +25,7 @@
// Arduino Due core now has watchdog support
#include "../HAL.h"
#include "HAL.h"
// Initialize watchdog with a 4 second interrupt time
void watchdog_init();

View file

@ -28,6 +28,8 @@
#ifndef _HAL_LPC1768_H_
#define _HAL_LPC1768_H_
#define CPU_32_BIT
// --------------------------------------------------------------------------
// Includes
// --------------------------------------------------------------------------
@ -58,6 +60,8 @@ extern "C" volatile uint32_t _millis;
#include <Arduino.h>
#include <pinmapping.h>
#include "../math_32bit.h"
#include "../HAL_SPI.h"
#include "fastio.h"
#include "watchdog.h"
#include "serial.h"

View file

@ -34,8 +34,22 @@
* (Located in Marlin/buildroot/share/pin_interrupt_test/pin_interrupt_test.ino)
*/
#ifndef _ENDSTOP_INTERRUPTS_H_
#define _ENDSTOP_INTERRUPTS_H_
#ifndef _ENDSTOP_INTERRUPTS_H_
#define _ENDSTOP_INTERRUPTS_H_
//Currently this is untested and broken
#error "Please disable Endstop Interrupts LPC176x is currently an unsupported platform"
volatile uint8_t e_hit = 0; // Different from 0 when the endstops should be tested in detail.
// Must be reset to 0 by the test function when finished.
// This is what is really done inside the interrupts.
FORCE_INLINE void endstop_ISR_worker( void ) {
e_hit = 2; // Because the detection of a e-stop hit has a 1 step debouncer it has to be called at least twice.
}
// One ISR for all EXT-Interrupts
void endstop_ISR(void) { endstop_ISR_worker(); }
void setup_endstop_interrupts(void) {
#if HAS_X_MAX

View file

@ -31,7 +31,7 @@
// Includes
// --------------------------------------------------------------------------
#include "../HAL.h"
#include "HAL.h"
#include <STM32ADC.h>
//#include <Wire.h>

View file

@ -28,6 +28,7 @@
#ifndef _HAL_STM32F1_H
#define _HAL_STM32F1_H
#define CPU_32_BIT
#undef DEBUG_NONE
#ifndef vsnprintf_P
@ -55,6 +56,9 @@
// Includes
// --------------------------------------------------------------------------
#include "../math_32bit.h"
#include "../HAL_SPI.h"
#include "fastio_Stm32f1.h"
#include "watchdog_Stm32f1.h"

View file

@ -36,7 +36,7 @@
// Includes
// --------------------------------------------------------------------------
#include "../HAL.h"
#include "HAL.h"
#include "../HAL_SPI.h"
#include "pins_arduino.h"
#include "spi_pins.h"

View file

@ -30,7 +30,7 @@
// Includes
// --------------------------------------------------------------------------
#include "../HAL.h"
#include "HAL.h"
#include "HAL_timers_Stm32f1.h"

View file

@ -49,6 +49,17 @@
#ifndef _ENDSTOP_INTERRUPTS_H_
#define _ENDSTOP_INTERRUPTS_H_
volatile uint8_t e_hit = 0; // Different from 0 when the endstops should be tested in detail.
// Must be reset to 0 by the test function when finished.
// This is what is really done inside the interrupts.
FORCE_INLINE void endstop_ISR_worker( void ) {
e_hit = 2; // Because the detection of a e-stop hit has a 1 step debouncer it has to be called at least twice.
}
// One ISR for all EXT-Interrupts
void endstop_ISR(void) { endstop_ISR_worker(); }
void setup_endstop_interrupts(void) {
#if HAS_X_MAX
SET_INPUT(X_MAX_PIN);

View file

@ -0,0 +1 @@
#error Debug pins is not supported on this Platform!

View file

@ -9,7 +9,7 @@
******************************************************************************
* @attention
*
* <h2><center>&copy; Copyright © 2016 STMicroelectronics International N.V.
* <h2><center>&copy; Copyright © 2016 STMicroelectronics International N.V.
* All rights reserved.</center></h2>
*
* Redistribution and use in source and binary forms, with or without
@ -54,7 +54,7 @@
// Includes
// --------------------------------------------------------------------------
#include "../../../inc/MarlinConfig.h"
#include "../../HAL.h"
#include "../HAL.h"
/* Exported constants --------------------------------------------------------*/
/* EEPROM emulation firmware error codes */

View file

@ -30,7 +30,7 @@
// Includes
// --------------------------------------------------------------------------
#include "../HAL.h"
#include "HAL.h"
#include "EEPROM_Emul/eeprom_emul.h"

View file

@ -28,7 +28,7 @@
// Includes
// --------------------------------------------------------------------------
#include "../HAL.h"
#include "HAL.h"
//#include <Wire.h>

View file

@ -26,6 +26,7 @@
#ifndef _HAL_STM32F7_H
#define _HAL_STM32F7_H
#define CPU_32_BIT
#undef DEBUG_NONE
#ifndef vsnprintf_P
@ -40,6 +41,9 @@
#include "Arduino.h"
#include "../math_32bit.h"
#include "../HAL_SPI.h"
#include "fastio_STM32F7.h"
#include "watchdog_STM32F7.h"

View file

@ -36,7 +36,7 @@
// Includes
// --------------------------------------------------------------------------
#include "../HAL.h"
#include "HAL.h"
#include "../HAL_SPI.h"
#include "pins_arduino.h"
#include "spi_pins.h"

View file

@ -26,7 +26,7 @@
// Includes
// --------------------------------------------------------------------------
#include "../HAL.h"
#include "HAL.h"
#include "HAL_timers_STM32F7.h"

View file

@ -26,6 +26,17 @@
#ifndef _ENDSTOP_INTERRUPTS_H_
#define _ENDSTOP_INTERRUPTS_H_
volatile uint8_t e_hit = 0; // Different from 0 when the endstops should be tested in detail.
// Must be reset to 0 by the test function when finished.
// This is what is really done inside the interrupts.
FORCE_INLINE void endstop_ISR_worker( void ) {
e_hit = 2; // Because the detection of a e-stop hit has a 1 step debouncer it has to be called at least twice.
}
// One ISR for all EXT-Interrupts
void endstop_ISR(void) { endstop_ISR_worker(); }
void setup_endstop_interrupts(void) {
#if HAS_X_MAX
pinMode(X_MAX_PIN, INPUT);

View file

@ -0,0 +1 @@
#error Debug pins is not supported on this Platform!

View file

@ -1,47 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 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 <http://www.gnu.org/licenses/>.
*
*/
#ifndef HAL_SANITYCHECK_H
#ifdef __AVR__
#include "HAL_AVR/SanityCheck_AVR_8_bit.h"
#elif defined(ARDUINO_ARCH_SAM)
#include "HAL_DUE/SanityCheck_Due.h"
#elif IS_32BIT_TEENSY
#include "HAL_TEENSY35_36/SanityCheck_Teensy_35_36.h"
#elif defined(TARGET_LPC1768)
#include "HAL_LPC1768/SanityCheck.h"
#elif defined(__STM32F1__)
#include "HAL_STM32F1/SanityCheck_Stm32f1.h"
#elif defined(STM32F7)
#include "HAL_STM32F7/SanityCheck_STM32F7.h"
#else
#error Unsupported Platform!
#endif
#endif

View file

@ -25,7 +25,7 @@
#if defined(__MK64FX512__) || defined(__MK66FX1M0__)
#include "../HAL.h"
#include "HAL.h"
#include <Wire.h>

View file

@ -26,6 +26,8 @@
#ifndef _HAL_TEENSY_H
#define _HAL_TEENSY_H
#define CPU_32_BIT
// --------------------------------------------------------------------------
// Includes
// --------------------------------------------------------------------------
@ -39,6 +41,9 @@
#undef sq
#define sq(x) ((x)*(x))
#include "../math_32bit.h"
#include "../HAL_SPI.h"
#include "fastio_Teensy.h"
#include "watchdog_Teensy.h"

View file

@ -1,6 +1,6 @@
#if defined(__MK64FX512__) || defined(__MK66FX1M0__)
#include "../HAL.h"
#include "HAL.h"
#include <SPI.h>
#include <pins_arduino.h>
#include "spi_pins.h"

View file

@ -26,7 +26,7 @@
#if defined(__MK64FX512__) || defined(__MK66FX1M0__)
#include "../HAL.h"
#include "HAL.h"
#include "HAL_timers_Teensy.h"

View file

@ -34,8 +34,19 @@
* (Located in Marlin/buildroot/share/pin_interrupt_test/pin_interrupt_test.ino)
*/
#ifndef _ENDSTOP_INTERRUPTS_H_
#define _ENDSTOP_INTERRUPTS_H_
#ifndef _ENDSTOP_INTERRUPTS_H_
#define _ENDSTOP_INTERRUPTS_H_
volatile uint8_t e_hit = 0; // Different from 0 when the endstops should be tested in detail.
// Must be reset to 0 by the test function when finished.
// This is what is really done inside the interrupts.
FORCE_INLINE void endstop_ISR_worker( void ) {
e_hit = 2; // Because the detection of a e-stop hit has a 1 step debouncer it has to be called at least twice.
}
// One ISR for all EXT-Interrupts
void endstop_ISR(void) { endstop_ISR_worker(); }
/**
* Endstop interrupts for Due based targets.

View file

@ -23,7 +23,7 @@
#ifndef WATCHDOG_TEENSY_H
#define WATCHDOG_TEENSY_H
#include "../HAL.h"
#include "HAL.h"
// Arduino Due core now has watchdog support

View file

@ -1,63 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 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 <http://www.gnu.org/licenses/>.
*
*/
#ifndef HAL_ENDSTOP_INTERRUPTS_H_
#define HAL_ENDSTOP_INTERRUPTS_H_
volatile uint8_t e_hit = 0; // Different from 0 when the endstops should be tested in detail.
// Must be reset to 0 by the test function when finished.
// This is what is really done inside the interrupts.
FORCE_INLINE void endstop_ISR_worker( void ) {
e_hit = 2; // Because the detection of a e-stop hit has a 1 step debouncer it has to be called at least twice.
}
// One ISR for all EXT-Interrupts
void endstop_ISR(void) { endstop_ISR_worker(); }
#ifdef __AVR__
#include "HAL_AVR/endstop_interrupts.h"
#elif defined(ARDUINO_ARCH_SAM)
#include "HAL_DUE/endstop_interrupts.h"
#elif IS_32BIT_TEENSY
#include "HAL_TEENSY35_36/endstop_interrupts.h"
#elif defined(__STM32F1__)
#include "HAL_STM32F1/endstop_interrupts.h"
#elif defined(STM32F7)
#include "HAL_STM32F7/endstop_interrupts.h"
#else
#error Unsupported Platform!
#endif
#endif /* HAL_ENDSTOP_INTERRUPTS_H_ */

View file

@ -1,38 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 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 <http://www.gnu.org/licenses/>.
*
*/
#ifndef HAL_PINSDEBUG_H
#define HAL_PINSDEBUG_H
#ifdef __AVR__
#include "HAL_AVR/pinsDebug_AVR_8_bit.h"
#elif defined(ARDUINO_ARCH_SAM)
#include "HAL_DUE/HAL_pinsDebug_Due.h"
#elif IS_32BIT_TEENSY
#include "HAL_TEENSY35_36/HAL_pinsDebug_Teensy.h"
#elif defined(TARGET_LPC1768)
#include "HAL_LPC1768/pinsDebug_LPC1768.h"
#else
#error Unsupported Platform!
#endif
#endif // HAL_PINSDEBUG_H

View file

@ -1,48 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 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 <http://www.gnu.org/licenses/>.
*
*/
#ifndef HAL_SPI_PINS_H_
#define HAL_SPI_PINS_H_
#ifdef ARDUINO_ARCH_SAM
#include "HAL_DUE/spi_pins.h"
#elif defined(IS_32BIT_TEENSY)
#include "HAL_TEENSY35_36/spi_pins.h"
#elif defined(__AVR__)
#include "HAL_AVR/spi_pins.h"
#elif defined(TARGET_LPC1768)
#include "HAL_LPC1768/spi_pins.h"
#elif defined(__STM32F1__)
#include "HAL_STM32F1/spi_pins.h"
#elif defined(STM32F7)
#include "HAL_STM32F7/spi_pins.h"
#else
#error "Unsupported Platform!"
#endif
#endif // HAL_SPI_PINS_H_

View file

@ -0,0 +1,28 @@
#ifndef _HAL_PLATFORMS_H_
#define _HAL_PLATFORMS_H_
#ifndef HAL_PLATFORM
#ifdef __AVR__
#define HAL_PLATFORM HAL_AVR
#elif defined(ARDUINO_ARCH_SAM)
#define HAL_PLATFORM HAL_DUE
#elif defined(__MK64FX512__) || defined(__MK66FX1M0__)
#define HAL_PLATFORM HAL_TEENSY35_36
#elif defined(TARGET_LPC1768)
#define HAL_PLATFORM HAL_LPC1768
#elif defined(__STM32F1__) || defined(TARGET_STM32F1)
#define HAL_PLATFORM HAL_STM32F1
#elif defined(STM32F7)
#define HAL_PLATFORM HAL_STM32F7
#else
#error "Unsupported Platform!"
#endif
#endif // HAL_PLATFORM
#define XSTR_(M) #M
#define XSTR(M) XSTR_(M)
#define HAL_PATH(PATH, NAME) XSTR(PATH/HAL_PLATFORM/NAME)
#endif // _HAL_PLATFORMS_H_

View file

@ -96,7 +96,7 @@
#endif
#if ENABLED(ENDSTOP_INTERRUPTS_FEATURE)
#include "HAL/HAL_endstop_interrupts.h"
#include HAL_PATH(HAL, endstop_interrupts.h)
#endif
#if HAS_TRINAMIC

View file

@ -25,14 +25,16 @@
#include "MarlinConfigPre.h"
#include "../HAL/HAL.h"
#include "../HAL/platforms.h"
#include HAL_PATH(../HAL, HAL.h)
#include "../pins/pins.h"
#if defined(__AVR__) && !defined(USBCON)
#define HardwareSerial_h // trick to disable the standard HWserial
#endif
#include "Conditionals_post.h"
#include "SanityCheck.h"
#include "../HAL/HAL_SanityCheck.h"
#include HAL_PATH(../HAL, SanityCheck.h)
// Include all core headers
#include "../core/enum.h"

View file

@ -886,6 +886,6 @@
// Note: default SPI pins are defined in the HAL
#include "../HAL/HAL_spi_pins.h"
#include HAL_PATH(../HAL, spi_pins.h)
#endif // __PINS_H__

View file

@ -100,14 +100,13 @@ const PinInfo pin_array[] PROGMEM = {
};
#include "../HAL/HAL_pinsDebug.h" // get the correct support file for this CPU
#include HAL_PATH(../HAL, pinsDebug.h) // get the correct support file for this CPU
static void print_input_or_output(const bool isout) {
serialprintPGM(isout ? PSTR("Output = ") : PSTR("Input = "));
}
// pretty report with PWM info
inline void report_pin_state_extended(pin_t pin, bool ignore, bool extended = false, const char *start_string = "") {
char buffer[MAX_NAME_LENGTH + 1]; // for the sprintf statements