diff --git a/Marlin/src/libs/hex_print_routines.cpp b/Marlin/src/libs/hex_print_routines.cpp index 4c6d3b5881..9e8a2b702a 100644 --- a/Marlin/src/libs/hex_print_routines.cpp +++ b/Marlin/src/libs/hex_print_routines.cpp @@ -19,37 +19,58 @@ * along with this program. If not, see . * */ -#include "Marlin.h" -#include "gcode.h" + +#include "../inc/MarlinConfig.h" #if ENABLED(AUTO_BED_LEVELING_UBL) || ENABLED(M100_FREE_MEMORY_WATCHER) || ENABLED(DEBUG_GCODE_PARSER) -#include "hex_print_routines.h" - -static char _hex[7] = "0x0000"; - -char* hex_byte(const uint8_t b) { - _hex[4] = hex_nybble(b >> 4); - _hex[5] = hex_nybble(b); - return &_hex[4]; -} - -char* hex_word(const uint16_t w) { - _hex[2] = hex_nybble(w >> 12); - _hex[3] = hex_nybble(w >> 8); - _hex[4] = hex_nybble(w >> 4); - _hex[5] = hex_nybble(w); - return &_hex[2]; -} - -char* hex_address(const void * const w) { - (void)hex_word((int)w); - return _hex; -} - -void print_hex_nybble(const uint8_t n) { SERIAL_CHAR(hex_nybble(n)); } -void print_hex_byte(const uint8_t b) { SERIAL_ECHO(hex_byte(b)); } -void print_hex_word(const uint16_t w) { SERIAL_ECHO(hex_word(w)); } -void print_hex_address(const void * const w) { SERIAL_ECHO(hex_address(w)); } + #include "hex_print_routines.h" + + #ifdef CPU_32_BIT + constexpr int byte_start = 0; + static char _hex[] = "0x0000"; + #else + constexpr int byte_start = 4; + static char _hex[] = "0x00000000"; + #endif + + char* hex_byte(const uint8_t b) { + _hex[byte_start + 4] = hex_nybble(b >> 4); + _hex[byte_start + 5] = hex_nybble(b); + return &_hex[byte_start]; + } + + char* hex_word(const uint16_t w) { + _hex[byte_start + 2] = hex_nybble(w >> 12); + _hex[byte_start + 3] = hex_nybble(w >> 8); + _hex[byte_start + 4] = hex_nybble(w >> 4); + _hex[byte_start + 5] = hex_nybble(w); + return &_hex[byte_start - 2]; + } + + #ifdef CPU_32_BIT + char* hex_long(const uint32_t w) { + _hex[byte_start - 2] = hex_nybble(w >> 28); + _hex[byte_start - 1] = hex_nybble(w >> 24); + _hex[byte_start + 0] = hex_nybble(w >> 20); + _hex[byte_start + 1] = hex_nybble(w >> 16); + (void)hex_word((uint16_t)(w & 0xFFFF)); + return &_hex[byte_start - 6]; + } + #endif + + char* hex_address(const void * const w) { + #ifdef CPU_32_BIT + (void)hex_long((ptr_int_t)w); + #else + (void)hex_word((ptr_int_t)w); + #endif + return _hex; + } + + void print_hex_nybble(const uint8_t n) { SERIAL_CHAR(hex_nybble(n)); } + void print_hex_byte(const uint8_t b) { SERIAL_ECHO(hex_byte(b)); } + void print_hex_word(const uint16_t w) { SERIAL_ECHO(hex_word(w)); } + void print_hex_address(const void * const w) { SERIAL_ECHO(hex_address(w)); } #endif // AUTO_BED_LEVELING_UBL || M100_FREE_MEMORY_WATCHER || DEBUG_GCODE_PARSER diff --git a/Marlin/src/libs/hex_print_routines.h b/Marlin/src/libs/hex_print_routines.h index 1ca61e311e..859b79fe31 100644 --- a/Marlin/src/libs/hex_print_routines.h +++ b/Marlin/src/libs/hex_print_routines.h @@ -23,16 +23,13 @@ #ifndef HEX_PRINT_ROUTINES_H #define HEX_PRINT_ROUTINES_H -#include "MarlinConfig.h" -#include "gcode.h" - -#if ENABLED(AUTO_BED_LEVELING_UBL) || ENABLED(M100_FREE_MEMORY_WATCHER) || ENABLED(DEBUG_GCODE_PARSER) +#include // // Utility functions to create and print hex strings as nybble, byte, and word. // -inline char hex_nybble(const uint8_t n) { +FORCE_INLINE char hex_nybble(const uint8_t n) { return (n & 0xF) + ((n & 0xF) < 10 ? '0' : 'A' - 10); } char* hex_byte(const uint8_t b); @@ -44,5 +41,10 @@ void print_hex_byte(const uint8_t b); void print_hex_word(const uint16_t w); void print_hex_address(const void * const w); -#endif // AUTO_BED_LEVELING_UBL || M100_FREE_MEMORY_WATCHER || DEBUG_GCODE_PARSER +#ifdef CPU_32_BIT + typedef uint32_t ptr_int_t; +#else + typedef uint16_t ptr_int_t; +#endif + #endif // HEX_PRINT_ROUTINES_H diff --git a/Marlin/src/libs/least_squares_fit.cpp b/Marlin/src/libs/least_squares_fit.cpp index 66821ce58f..94588a0df5 100644 --- a/Marlin/src/libs/least_squares_fit.cpp +++ b/Marlin/src/libs/least_squares_fit.cpp @@ -32,15 +32,14 @@ * */ -#include "MarlinConfig.h" +#include "../inc/MarlinConfig.h" #if ENABLED(AUTO_BED_LEVELING_UBL) || ENABLED(AUTO_BED_LEVELING_LINEAR) -#include "macros.h" -#include - #include "least_squares_fit.h" +#include + int finish_incremental_LSF(struct linear_fit_data *lsf) { const float N = lsf->N; diff --git a/Marlin/src/libs/least_squares_fit.h b/Marlin/src/libs/least_squares_fit.h index 9ed923ab49..b45bc23f3d 100644 --- a/Marlin/src/libs/least_squares_fit.h +++ b/Marlin/src/libs/least_squares_fit.h @@ -32,12 +32,10 @@ * */ -#include "MarlinConfig.h" +#ifndef _LEAST_SQUARES_FIT_H_ +#define _LEAST_SQUARES_FIT_H_ -#if ENABLED(AUTO_BED_LEVELING_UBL) || ENABLED(AUTO_BED_LEVELING_LINEAR) - -#include "Marlin.h" -#include "macros.h" +#include "../inc/MarlinConfig.h" #include struct linear_fit_data { @@ -54,7 +52,7 @@ void inline incremental_LSF_reset(struct linear_fit_data *lsf) { void inline incremental_WLSF(struct linear_fit_data *lsf, const float &x, const float &y, const float &z, const float &w) { // weight each accumulator by factor w, including the "number" of samples - // (analagous to calling inc_LSF twice with same values to weight it by 2X) + // (analogous to calling inc_LSF twice with same values to weight it by 2X) lsf->xbar += w * x; lsf->ybar += w * y; lsf->zbar += w * z; @@ -86,5 +84,4 @@ void inline incremental_LSF(struct linear_fit_data *lsf, const float &x, const f int finish_incremental_LSF(struct linear_fit_data *); -#endif - +#endif // _LEAST_SQUARES_FIT_H_ diff --git a/Marlin/src/libs/nozzle.cpp b/Marlin/src/libs/nozzle.cpp index eec8bfa39a..c8c4732f9e 100644 --- a/Marlin/src/libs/nozzle.cpp +++ b/Marlin/src/libs/nozzle.cpp @@ -1,6 +1,28 @@ +/** + * 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 . + * + */ + #include "nozzle.h" -#include "Marlin.h" +#include "../Marlin.h" #include "point_t.h" /** diff --git a/Marlin/src/libs/nozzle.h b/Marlin/src/libs/nozzle.h index 2fbe98fb06..308efd1c96 100644 --- a/Marlin/src/libs/nozzle.h +++ b/Marlin/src/libs/nozzle.h @@ -23,7 +23,7 @@ #ifndef __NOZZLE_H__ #define __NOZZLE_H__ -#include "Marlin.h" +#include "../inc/MarlinConfig.h" #include "point_t.h" #if ENABLED(NOZZLE_CLEAN_FEATURE) @@ -106,4 +106,4 @@ class Nozzle { ) _Os; }; -#endif +#endif // __NOZZLE_H__ diff --git a/Marlin/src/libs/point_t.h b/Marlin/src/libs/point_t.h index 360abce649..367ee55fe1 100644 --- a/Marlin/src/libs/point_t.h +++ b/Marlin/src/libs/point_t.h @@ -34,10 +34,7 @@ * @param e The e-coordinate of the point. */ struct point_t { - float x; - float y; - float z; - float e; + float x, y, z, e; /** * @brief Two dimensional point constructor diff --git a/Marlin/src/libs/private_spi.h b/Marlin/src/libs/private_spi.h index 45cab24435..d124124fd7 100644 --- a/Marlin/src/libs/private_spi.h +++ b/Marlin/src/libs/private_spi.h @@ -23,8 +23,8 @@ #ifndef __PRIVATE_SPI_H__ #define __PRIVATE_SPI_H__ -#include #include "softspi.h" +#include template class SPI { diff --git a/Marlin/src/libs/softspi.h b/Marlin/src/libs/softspi.h index 3b77e443b3..9f81722d0c 100644 --- a/Marlin/src/libs/softspi.h +++ b/Marlin/src/libs/softspi.h @@ -766,5 +766,3 @@ class SoftSPI { } //---------------------------------------------------------------------------- }; - - diff --git a/Marlin/src/libs/stopwatch.cpp b/Marlin/src/libs/stopwatch.cpp index 5958000f72..29f84099a6 100644 --- a/Marlin/src/libs/stopwatch.cpp +++ b/Marlin/src/libs/stopwatch.cpp @@ -20,7 +20,7 @@ * */ -#include "Marlin.h" +#include "../Marlin.h" #include "stopwatch.h" Stopwatch::Stopwatch() { diff --git a/Marlin/src/libs/stopwatch.h b/Marlin/src/libs/stopwatch.h index ae3c998fb1..c092ee53c8 100644 --- a/Marlin/src/libs/stopwatch.h +++ b/Marlin/src/libs/stopwatch.h @@ -23,7 +23,7 @@ #ifndef STOPWATCH_H #define STOPWATCH_H -#include "macros.h" +#include "../core/types.h" // Print debug messages with M111 S2 (Uses 156 bytes of PROGMEM) //#define DEBUG_STOPWATCH @@ -103,7 +103,7 @@ class Stopwatch { */ millis_t duration(); - #if ENABLED(DEBUG_STOPWATCH) + #ifdef DEBUG_STOPWATCH /** * @brief Prints a debug message diff --git a/Marlin/src/libs/vector_3.cpp b/Marlin/src/libs/vector_3.cpp index f9615bcf08..796085bb23 100644 --- a/Marlin/src/libs/vector_3.cpp +++ b/Marlin/src/libs/vector_3.cpp @@ -38,12 +38,15 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include -#include "Marlin.h" + +#include "../inc/MarlinConfig.h" #if HAS_ABL + #include "vector_3.h" +#include + vector_3::vector_3() : x(0), y(0), z(0) { } vector_3::vector_3(float x_, float y_, float z_) : x(x_), y(y_), z(z_) { } diff --git a/Marlin/src/libs/vector_3.h b/Marlin/src/libs/vector_3.h index 19f6e3a3a7..14fb5b9168 100644 --- a/Marlin/src/libs/vector_3.h +++ b/Marlin/src/libs/vector_3.h @@ -38,11 +38,10 @@ License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + #ifndef VECTOR_3_H #define VECTOR_3_H -#if HAS_ABL - class matrix_3x3; struct vector_3 { @@ -79,5 +78,4 @@ struct matrix_3x3 { void apply_rotation_xyz(matrix_3x3 rotationMatrix, float &x, float &y, float &z); -#endif // HAS_ABL #endif // VECTOR_3_H