From 356410dcfce70972f9cfbafd9c32a71701781640 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <github@thinkyhead.com>
Date: Tue, 11 Jun 2019 07:41:54 -0500
Subject: [PATCH] Move crc16 function to libs

---
 Marlin/src/HAL/shared/persistent_store_api.h  |  2 ++
 Marlin/src/core/utility.cpp                   | 13 --------
 Marlin/src/core/utility.h                     | 20 +++---------
 Marlin/src/feature/backlash.h                 |  2 ++
 .../src/gcode/feature/digipot/M907-M910.cpp   | 10 ++----
 Marlin/src/libs/crc16.cpp                     | 32 +++++++++++++++++++
 Marlin/src/libs/crc16.h                       | 26 +++++++++++++++
 Marlin/src/sd/usb_flashdrive/lib/Usb.cpp      |  2 +-
 8 files changed, 69 insertions(+), 38 deletions(-)
 create mode 100644 Marlin/src/libs/crc16.cpp
 create mode 100644 Marlin/src/libs/crc16.h

diff --git a/Marlin/src/HAL/shared/persistent_store_api.h b/Marlin/src/HAL/shared/persistent_store_api.h
index de9f1c1090..1e1bc983b0 100644
--- a/Marlin/src/HAL/shared/persistent_store_api.h
+++ b/Marlin/src/HAL/shared/persistent_store_api.h
@@ -25,6 +25,8 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include "../../libs/crc16.h"
+
 class PersistentStore {
 public:
   static bool access_start();
diff --git a/Marlin/src/core/utility.cpp b/Marlin/src/core/utility.cpp
index f8415637ef..4f2cb81079 100644
--- a/Marlin/src/core/utility.cpp
+++ b/Marlin/src/core/utility.cpp
@@ -35,19 +35,6 @@ void safe_delay(millis_t ms) {
   thermalManager.manage_heater(); // This keeps us safe if too many small safe_delay() calls are made
 }
 
-#if EITHER(EEPROM_SETTINGS, SD_FIRMWARE_UPDATE)
-
-  void crc16(uint16_t *crc, const void * const data, uint16_t cnt) {
-    uint8_t *ptr = (uint8_t *)data;
-    while (cnt--) {
-      *crc = (uint16_t)(*crc ^ (uint16_t)(((uint16_t)*ptr++) << 8));
-      for (uint8_t i = 0; i < 8; i++)
-        *crc = (uint16_t)((*crc & 0x8000) ? ((uint16_t)(*crc << 1) ^ 0x1021) : (*crc << 1));
-    }
-  }
-
-#endif // EEPROM_SETTINGS || SD_FIRMWARE_UPDATE
-
 #if ENABLED(DEBUG_LEVELING_FEATURE)
 
   #include "../module/probe.h"
diff --git a/Marlin/src/core/utility.h b/Marlin/src/core/utility.h
index d27e742c98..2e226e2ba2 100644
--- a/Marlin/src/core/utility.h
+++ b/Marlin/src/core/utility.h
@@ -37,21 +37,10 @@ inline void serial_delay(const millis_t ms) {
   #endif
 }
 
-#if EITHER(EEPROM_SETTINGS, SD_FIRMWARE_UPDATE)
-  void crc16(uint16_t *crc, const void * const data, uint16_t cnt);
-#endif
-
-#if EITHER(AUTO_BED_LEVELING_UBL, G26_MESH_VALIDATION)
-  /**
-   * These support functions allow the use of large bit arrays of flags that take very
-   * little RAM. Currently they are limited to being 16x16 in size. Changing the declaration
-   * to unsigned long will allow us to go to 32x32 if higher resolution Mesh's are needed
-   * in the future.
-   */
-  FORCE_INLINE void bitmap_clear(uint16_t bits[16], const uint8_t x, const uint8_t y)  { CBI(bits[y], x); }
-  FORCE_INLINE void bitmap_set(uint16_t bits[16], const uint8_t x, const uint8_t y)    { SBI(bits[y], x); }
-  FORCE_INLINE bool is_bitmap_set(uint16_t bits[16], const uint8_t x, const uint8_t y) { return TEST(bits[y], x); }
-#endif
+// 16x16 bit arrays
+FORCE_INLINE void bitmap_clear(uint16_t bits[16], const uint8_t x, const uint8_t y)  { CBI(bits[y], x); }
+FORCE_INLINE void bitmap_set(uint16_t bits[16], const uint8_t x, const uint8_t y)    { SBI(bits[y], x); }
+FORCE_INLINE bool is_bitmap_set(uint16_t bits[16], const uint8_t x, const uint8_t y) { return TEST(bits[y], x); }
 
 #if ENABLED(DEBUG_LEVELING_FEATURE)
   void log_machine_info();
@@ -76,4 +65,3 @@ public:
 // Converts from an uint8_t in the range of 0-255 to an uint8_t
 // in the range 0-100 while avoiding rounding artifacts
 constexpr uint8_t ui8_to_percent(const uint8_t i) { return (int(i) * 100 + 127) / 255; }
-constexpr uint8_t all_on = 0xFF, all_off = 0x00;
diff --git a/Marlin/src/feature/backlash.h b/Marlin/src/feature/backlash.h
index f2dffe1311..623a5fa0ff 100644
--- a/Marlin/src/feature/backlash.h
+++ b/Marlin/src/feature/backlash.h
@@ -24,6 +24,8 @@
 #include "../inc/MarlinConfigPre.h"
 #include "../module/planner.h"
 
+constexpr uint8_t all_on = 0xFF, all_off = 0x00;
+
 class Backlash {
 public:
   #ifdef BACKLASH_DISTANCE_MM
diff --git a/Marlin/src/gcode/feature/digipot/M907-M910.cpp b/Marlin/src/gcode/feature/digipot/M907-M910.cpp
index 107c77f41c..541c32d054 100644
--- a/Marlin/src/gcode/feature/digipot/M907-M910.cpp
+++ b/Marlin/src/gcode/feature/digipot/M907-M910.cpp
@@ -85,16 +85,10 @@ void GcodeSuite::M907() {
    */
   void GcodeSuite::M908() {
     #if HAS_DIGIPOTSS
-      stepper.digitalPotWrite(
-        parser.intval('P'),
-        parser.intval('S')
-      );
+      stepper.digitalPotWrite(parser.intval('P'), parser.intval('S'));
     #endif
     #if ENABLED(DAC_STEPPER_CURRENT)
-      dac_current_raw(
-        parser.byteval('P', -1),
-        parser.ushortval('S', 0)
-      );
+      dac_current_raw(parser.byteval('P', -1), parser.ushortval('S', 0));
     #endif
   }
 
diff --git a/Marlin/src/libs/crc16.cpp b/Marlin/src/libs/crc16.cpp
new file mode 100644
index 0000000000..a5a8a2809e
--- /dev/null
+++ b/Marlin/src/libs/crc16.cpp
@@ -0,0 +1,32 @@
+/**
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "crc16.h"
+
+void crc16(uint16_t *crc, const void * const data, uint16_t cnt) {
+  uint8_t *ptr = (uint8_t *)data;
+  while (cnt--) {
+    *crc = (uint16_t)(*crc ^ (uint16_t)(((uint16_t)*ptr++) << 8));
+    for (uint8_t i = 0; i < 8; i++)
+      *crc = (uint16_t)((*crc & 0x8000) ? ((uint16_t)(*crc << 1) ^ 0x1021) : (*crc << 1));
+  }
+}
diff --git a/Marlin/src/libs/crc16.h b/Marlin/src/libs/crc16.h
new file mode 100644
index 0000000000..507ad48ef3
--- /dev/null
+++ b/Marlin/src/libs/crc16.h
@@ -0,0 +1,26 @@
+/**
+ * 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 <http://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#include <stdint.h>
+
+void crc16(uint16_t *crc, const void * const data, uint16_t cnt);
diff --git a/Marlin/src/sd/usb_flashdrive/lib/Usb.cpp b/Marlin/src/sd/usb_flashdrive/lib/Usb.cpp
index 4ca0b2dde3..b0a6d2943d 100644
--- a/Marlin/src/sd/usb_flashdrive/lib/Usb.cpp
+++ b/Marlin/src/sd/usb_flashdrive/lib/Usb.cpp
@@ -46,7 +46,7 @@ void USB::init() {
 }
 
 uint8_t USB::getUsbTaskState(void) {
-  return ( usb_task_state);
+  return usb_task_state;
 }
 
 void USB::setUsbTaskState(uint8_t state) {
-- 
GitLab