From b9327a4d161747218d4a7c8f621f248a58900e54 Mon Sep 17 00:00:00 2001
From: Scott Lahteine <github@thinkyhead.com>
Date: Sun, 19 Nov 2017 14:12:45 -0600
Subject: [PATCH] Misc. general cleanup

---
 .../HAL/HAL_LPC1768/HAL_LCD_I2C_routines.c    | 253 +++++++++---------
 Marlin/src/HAL/HAL_LPC1768/arduino.cpp        |  16 +-
 Marlin/src/HAL/HAL_LPC1768/pinmapping.h       |   1 +
 Marlin/src/core/macros.h                      |   1 -
 Marlin/src/inc/Version.h                      |   4 +-
 5 files changed, 130 insertions(+), 145 deletions(-)

diff --git a/Marlin/src/HAL/HAL_LPC1768/HAL_LCD_I2C_routines.c b/Marlin/src/HAL/HAL_LPC1768/HAL_LCD_I2C_routines.c
index e43032b094..80bf5fc633 100644
--- a/Marlin/src/HAL/HAL_LPC1768/HAL_LCD_I2C_routines.c
+++ b/Marlin/src/HAL/HAL_LPC1768/HAL_LCD_I2C_routines.c
@@ -23,161 +23,150 @@
 // adapted from  I2C/master/master.c example
 //   https://www-users.cs.york.ac.uk/~pcc/MCP/HAPR-Course-web/CMSIS/examples/html/master_8c_source.html
 
+#ifdef TARGET_LPC1768
 
+#ifdef __cplusplus
+  extern "C" {
+#endif
 
-#if defined(TARGET_LPC1768)
-
-  #ifdef __cplusplus
-    extern "C" {
-  #endif
+#include <lpc17xx_i2c.h>
+#include <lpc17xx_pinsel.h>
+#include <lpc17xx_libcfg_default.h>
 
-  #include <lpc17xx_i2c.h>
-  #include <lpc17xx_pinsel.h>
-  #include <lpc17xx_libcfg_default.h>
+//////////////////////////////////////////////////////////////////////////////////////
 
-  //////////////////////////////////////////////////////////////////////////////////////
+// These two routines are exact copies of the lpc17xx_i2c.c routines.  Couldn't link to
+// to the lpc17xx_i2c.c routines so had to copy them into this file & rename them.
 
-  // These two routines are exact copies of the lpc17xx_i2c.c routines.  Couldn't link to
-  // to the lpc17xx_i2c.c routines so had to copy them into this file & rename them.
+static uint32_t _I2C_Start (LPC_I2C_TypeDef *I2Cx) {
+  // Reset STA, STO, SI
+  I2Cx->I2CONCLR = I2C_I2CONCLR_SIC|I2C_I2CONCLR_STOC|I2C_I2CONCLR_STAC;
 
-  static uint32_t _I2C_Start (LPC_I2C_TypeDef *I2Cx)
-  {
-    // Reset STA, STO, SI
-    I2Cx->I2CONCLR = I2C_I2CONCLR_SIC|I2C_I2CONCLR_STOC|I2C_I2CONCLR_STAC;
+  // Enter to Master Transmitter mode
+  I2Cx->I2CONSET = I2C_I2CONSET_STA;
 
-    // Enter to Master Transmitter mode
-    I2Cx->I2CONSET = I2C_I2CONSET_STA;
+  // Wait for complete
+  while (!(I2Cx->I2CONSET & I2C_I2CONSET_SI));
+  I2Cx->I2CONCLR = I2C_I2CONCLR_STAC;
+  return (I2Cx->I2STAT & I2C_STAT_CODE_BITMASK);
+}
 
-    // Wait for complete
-    while (!(I2Cx->I2CONSET & I2C_I2CONSET_SI));
+static void _I2C_Stop (LPC_I2C_TypeDef *I2Cx) {
+  /* Make sure start bit is not active */
+  if (I2Cx->I2CONSET & I2C_I2CONSET_STA)
     I2Cx->I2CONCLR = I2C_I2CONCLR_STAC;
-    return (I2Cx->I2STAT & I2C_STAT_CODE_BITMASK);
-  }
-
-  static void _I2C_Stop (LPC_I2C_TypeDef *I2Cx)
-  {
 
-    /* Make sure start bit is not active */
-    if (I2Cx->I2CONSET & I2C_I2CONSET_STA)
-    {
-      I2Cx->I2CONCLR = I2C_I2CONCLR_STAC;
-    }
+  I2Cx->I2CONSET = I2C_I2CONSET_STO|I2C_I2CONSET_AA;
+  I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
+}
 
-    I2Cx->I2CONSET = I2C_I2CONSET_STO|I2C_I2CONSET_AA;
+//////////////////////////////////////////////////////////////////////////////////////
 
-    I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
-  }
+#define U8G_I2C_OPT_FAST 16  // from u8g.h
 
+#define USEDI2CDEV_M            1
 
-  //////////////////////////////////////////////////////////////////////////////////////
+#define I2CDEV_S_ADDR   0x78  // from SSD1306  //actual address is 0x3C - shift left 1 with LSB set to 0 to indicate write
 
-  #define U8G_I2C_OPT_FAST 16  // from u8g.h
+#define BUFFER_SIZE                     0x1  // only do single byte transfers with LCDs
 
-  #define USEDI2CDEV_M            1
-
-  #define I2CDEV_S_ADDR   0x78  // from SSD1306  //actual address is 0x3C - shift left 1 with LSB set to 0 to indicate write
-
-  #define BUFFER_SIZE                     0x1  // only do single byte transfers with LCDs
+#if (USEDI2CDEV_M == 0)
+  #define I2CDEV_M LPC_I2C0
+#elif (USEDI2CDEV_M == 1)
+  #define I2CDEV_M LPC_I2C1
+#elif (USEDI2CDEV_M == 2)
+  #define I2CDEV_M LPC_I2C2
+#else
+  #error "Master I2C device not defined!"
+#endif
 
-  #if (USEDI2CDEV_M == 0)
-    #define I2CDEV_M LPC_I2C0
-  #elif (USEDI2CDEV_M == 1)
-    #define I2CDEV_M LPC_I2C1
-  #elif (USEDI2CDEV_M == 2)
-    #define I2CDEV_M LPC_I2C2
-  #else
-    #error "Master I2C device not defined!"
+PINSEL_CFG_Type PinCfg;
+I2C_M_SETUP_Type transferMCfg;
+
+#define I2C_status (LPC_I2C1->I2STAT & I2C_STAT_CODE_BITMASK)
+
+uint8_t u8g_i2c_start(uint8_t sla) {  // send slave address and write bit
+  // Sometimes TX data ACK or NAK status is returned.  That mean the start state didn't
+  // happen which means only the value of the slave address was send.  Keep looping until
+  // the slave address and write bit are actually sent.
+  do{
+    _I2C_Stop(I2CDEV_M); // output stop state on I2C bus
+    _I2C_Start(I2CDEV_M); // output start state on I2C bus
+    while ((I2C_status != I2C_I2STAT_M_TX_START)
+        && (I2C_status != I2C_I2STAT_M_TX_RESTART)
+        && (I2C_status != I2C_I2STAT_M_TX_DAT_ACK)
+        && (I2C_status != I2C_I2STAT_M_TX_DAT_NACK));  //wait for start to be asserted
+
+    LPC_I2C1->I2CONCLR = I2C_I2CONCLR_STAC; // clear start state before tansmitting slave address
+    LPC_I2C1->I2DAT = I2CDEV_S_ADDR & I2C_I2DAT_BITMASK; // transmit slave address & write bit
+    LPC_I2C1->I2CONSET = I2C_I2CONSET_AA;
+    LPC_I2C1->I2CONCLR = I2C_I2CONCLR_SIC;
+    while ((I2C_status != I2C_I2STAT_M_TX_SLAW_ACK)
+        && (I2C_status != I2C_I2STAT_M_TX_SLAW_NACK)
+        && (I2C_status != I2C_I2STAT_M_TX_DAT_ACK)
+        && (I2C_status != I2C_I2STAT_M_TX_DAT_NACK));  //wait for slaw to finish
+  }while ( (I2C_status == I2C_I2STAT_M_TX_DAT_ACK) ||  (I2C_status == I2C_I2STAT_M_TX_DAT_NACK));
+  return 1;
+}
+
+void u8g_i2c_init(uint8_t clock_option) {
+
+  /**
+   * Init I2C pin connect
+   */
+  PinCfg.OpenDrain = 0;
+  PinCfg.Pinmode = 0;
+  #if ((USEDI2CDEV_M == 0))
+    PinCfg.Funcnum = 1;
+    PinCfg.Pinnum = 27;
+    PinCfg.Portnum = 0;
+    PINSEL_ConfigPin(&PinCfg); // SDA0 / D57  AUX-1
+    PinCfg.Pinnum = 28;
+    PINSEL_ConfigPin(&PinCfg); // SCL0 / D58  AUX-1
   #endif
+  #if ((USEDI2CDEV_M == 1))
+    PinCfg.Funcnum = 3;
+    PinCfg.Pinnum = 0;
+    PinCfg.Portnum = 0;
+    PINSEL_ConfigPin(&PinCfg);  // SDA1 / D20 SCA
+    PinCfg.Pinnum = 1;
+    PINSEL_ConfigPin(&PinCfg);  // SCL1 / D21 SCL
+  #endif
+  #if ((USEDI2CDEV_M == 2))
+    PinCfg.Funcnum = 2;
+    PinCfg.Pinnum = 10;
+    PinCfg.Portnum = 0;
+    PINSEL_ConfigPin(&PinCfg); // SDA2 / D38  X_ENABLE_PIN
+    PinCfg.Pinnum = 11;
+    PINSEL_ConfigPin(&PinCfg); // SCL2 / D55  X_DIR_PIN
+  #endif
+  // Initialize I2C peripheral
+  I2C_Init(I2CDEV_M, (clock_option & U8G_I2C_OPT_FAST) ? 400000: 100000);  // LCD data rates
 
+  // Enable Master I2C operation
+  I2C_Cmd(I2CDEV_M, I2C_MASTER_MODE, ENABLE);
 
-  PINSEL_CFG_Type PinCfg;
-  I2C_M_SETUP_Type transferMCfg;
-
-  #define I2C_status (LPC_I2C1->I2STAT & I2C_STAT_CODE_BITMASK)
-
-
-  uint8_t u8g_i2c_start(uint8_t sla) {  // send slave address and write bit
-    // Sometimes TX data ACK or NAK status is returned.  That mean the start state didn't
-    // happen which means only the value of the slave address was send.  Keep looping until
-    // the slave address and write bit are actually sent.
-    do{
-      _I2C_Stop(I2CDEV_M); // output stop state on I2C bus
-      _I2C_Start(I2CDEV_M); // output start state on I2C bus
-      while ((I2C_status != I2C_I2STAT_M_TX_START)
-          && (I2C_status != I2C_I2STAT_M_TX_RESTART)
-          && (I2C_status != I2C_I2STAT_M_TX_DAT_ACK)
-          && (I2C_status != I2C_I2STAT_M_TX_DAT_NACK));  //wait for start to be asserted
-
-      LPC_I2C1->I2CONCLR = I2C_I2CONCLR_STAC; // clear start state before tansmitting slave address
-      LPC_I2C1->I2DAT = I2CDEV_S_ADDR & I2C_I2DAT_BITMASK; // transmit slave address & write bit
-      LPC_I2C1->I2CONSET = I2C_I2CONSET_AA;
-      LPC_I2C1->I2CONCLR = I2C_I2CONCLR_SIC;
-      while ((I2C_status != I2C_I2STAT_M_TX_SLAW_ACK)
-          && (I2C_status != I2C_I2STAT_M_TX_SLAW_NACK)
-          && (I2C_status != I2C_I2STAT_M_TX_DAT_ACK)
-          && (I2C_status != I2C_I2STAT_M_TX_DAT_NACK));  //wait for slaw to finish
-    }while ( (I2C_status == I2C_I2STAT_M_TX_DAT_ACK) ||  (I2C_status == I2C_I2STAT_M_TX_DAT_NACK));
-    return 1;
-  }
+  u8g_i2c_start(0); // send slave address and write bit
+}
 
+volatile extern uint32_t _millis;
+uint8_t u8g_i2c_send_byte(uint8_t data) {
+  #define I2C_TIMEOUT 3
+  LPC_I2C1->I2DAT = data & I2C_I2DAT_BITMASK; // transmit data
+  LPC_I2C1->I2CONSET = I2C_I2CONSET_AA;
+  LPC_I2C1->I2CONCLR = I2C_I2CONCLR_SIC;
+  uint32_t timeout = _millis + I2C_TIMEOUT;
+  while ((I2C_status != I2C_I2STAT_M_TX_DAT_ACK) && (I2C_status != I2C_I2STAT_M_TX_DAT_NACK) && (timeout > _millis));  // wait for xmit to finish
+  // had hangs with SH1106 so added time out - have seen temporary screen corruption when this happens
+  return 1;
+}
 
-  void u8g_i2c_init(uint8_t clock_option) {
-
-    /*
-      * Init I2C pin connect
-    */
-    PinCfg.OpenDrain = 0;
-    PinCfg.Pinmode = 0;
-    #if ((USEDI2CDEV_M == 0))
-      PinCfg.Funcnum = 1;
-      PinCfg.Pinnum = 27;
-      PinCfg.Portnum = 0;
-      PINSEL_ConfigPin(&PinCfg); // SDA0 / D57  AUX-1
-      PinCfg.Pinnum = 28;
-      PINSEL_ConfigPin(&PinCfg); // SCL0 / D58  AUX-1
-    #endif
-    #if ((USEDI2CDEV_M == 1))
-      PinCfg.Funcnum = 3;
-      PinCfg.Pinnum = 0;
-      PinCfg.Portnum = 0;
-      PINSEL_ConfigPin(&PinCfg);  // SDA1 / D20 SCA
-      PinCfg.Pinnum = 1;
-      PINSEL_ConfigPin(&PinCfg);  // SCL1 / D21 SCL
-    #endif
-    #if ((USEDI2CDEV_M == 2))
-      PinCfg.Funcnum = 2;
-      PinCfg.Pinnum = 10;
-      PinCfg.Portnum = 0;
-      PINSEL_ConfigPin(&PinCfg); // SDA2 / D38  X_ENABLE_PIN
-      PinCfg.Pinnum = 11;
-      PINSEL_ConfigPin(&PinCfg); // SCL2 / D55  X_DIR_PIN
-    #endif
-    // Initialize I2C peripheral
-    I2C_Init(I2CDEV_M, (clock_option & U8G_I2C_OPT_FAST) ? 400000: 100000);  // LCD data rates
-
-    /* Enable Master I2C operation */
-    I2C_Cmd(I2CDEV_M, I2C_MASTER_MODE, ENABLE);
-
-    u8g_i2c_start(0); // send slave address and write bit
-  }
+void u8g_i2c_stop(void) {
+}
 
-  volatile extern uint32_t _millis;
-  uint8_t u8g_i2c_send_byte(uint8_t data) {
-    #define I2C_TIMEOUT 3
-    LPC_I2C1->I2DAT = data & I2C_I2DAT_BITMASK; // transmit data
-    LPC_I2C1->I2CONSET = I2C_I2CONSET_AA;
-    LPC_I2C1->I2CONCLR = I2C_I2CONCLR_SIC;
-    uint32_t timeout = _millis + I2C_TIMEOUT;
-    while ((I2C_status != I2C_I2STAT_M_TX_DAT_ACK) && (I2C_status != I2C_I2STAT_M_TX_DAT_NACK) && (timeout > _millis));  // wait for xmit to finish
-    // had hangs with SH1106 so added time out - have seen temporary screen corruption when this happens
-    return 1;
-  }
 
-  void u8g_i2c_stop(void) {
+#ifdef __cplusplus
   }
-
-
-  #ifdef __cplusplus
-    }
-  #endif
 #endif
+
+#endif // TARGET_LPC1768
diff --git a/Marlin/src/HAL/HAL_LPC1768/arduino.cpp b/Marlin/src/HAL/HAL_LPC1768/arduino.cpp
index 794bbad248..4b31a54bd9 100644
--- a/Marlin/src/HAL/HAL_LPC1768/arduino.cpp
+++ b/Marlin/src/HAL/HAL_LPC1768/arduino.cpp
@@ -72,8 +72,7 @@ extern "C" void delay(const int msec) {
 // IO functions
 // As defined by Arduino INPUT(0x0), OUPUT(0x1), INPUT_PULLUP(0x2)
 void pinMode(pin_t pin, uint8_t mode) {
-  if (!VALID_PIN(pin))
-    return;
+  if (!VALID_PIN(pin)) return;
 
   PINSEL_CFG_Type config = { LPC1768_PIN_PORT(pin),
                              LPC1768_PIN_PIN(pin),
@@ -100,8 +99,7 @@ void pinMode(pin_t pin, uint8_t mode) {
 }
 
 void digitalWrite(pin_t pin, uint8_t pin_status) {
-  if (!VALID_PIN(pin))
-    return;
+  if (!VALID_PIN(pin)) return;
 
   if (pin_status)
     LPC_GPIO(LPC1768_PIN_PORT(pin))->FIOSET = LPC_PIN(LPC1768_PIN_PIN(pin));
@@ -120,20 +118,18 @@ void digitalWrite(pin_t pin, uint8_t pin_status) {
 }
 
 bool digitalRead(pin_t pin) {
-  if (!VALID_PIN(pin)) {
-    return false;
-  }
+  if (!VALID_PIN(pin)) return false;
+
   return LPC_GPIO(LPC1768_PIN_PORT(pin))->FIOPIN & LPC_PIN(LPC1768_PIN_PIN(pin)) ? 1 : 0;
 }
 
 void analogWrite(pin_t pin, int pwm_value) {  // 1 - 254: pwm_value, 0: LOW, 255: HIGH
+  if (!VALID_PIN(pin)) return;
+
   #define MR0_MARGIN 200       // if channel value too close to MR0 the system locks up
 
   static bool out_of_PWM_slots = false;
 
-  if (!VALID_PIN(pin))
-    return;
-
   uint value = MAX(MIN(pwm_value, 255), 0);
   if (value == 0 || value == 255) {  // treat as digital pin
     LPC1768_PWM_detach_pin(pin);    // turn off PWM
diff --git a/Marlin/src/HAL/HAL_LPC1768/pinmapping.h b/Marlin/src/HAL/HAL_LPC1768/pinmapping.h
index 4c7195ad55..c9ce96eefd 100644
--- a/Marlin/src/HAL/HAL_LPC1768/pinmapping.h
+++ b/Marlin/src/HAL/HAL_LPC1768/pinmapping.h
@@ -22,6 +22,7 @@
 
 #ifndef __HAL_PINMAPPING_H__
 #define __HAL_PINMAPPING_H__
+
 #include "../../core/macros.h"
 
 #include <stdint.h>
diff --git a/Marlin/src/core/macros.h b/Marlin/src/core/macros.h
index 1265ddbbc8..6342c16439 100644
--- a/Marlin/src/core/macros.h
+++ b/Marlin/src/core/macros.h
@@ -43,7 +43,6 @@
 #define _O2          __attribute__((optimize("O2")))
 #define _O3          __attribute__((optimize("O3")))
 
-
 // Clock speed factors
 #define CYCLES_PER_MICROSECOND (F_CPU / 1000000L) // 16 or 20
 #define INT0_PRESCALER 8
diff --git a/Marlin/src/inc/Version.h b/Marlin/src/inc/Version.h
index 3731b476fe..6a08df0fb1 100644
--- a/Marlin/src/inc/Version.h
+++ b/Marlin/src/inc/Version.h
@@ -27,7 +27,7 @@
 
 /**
  * This file is the standard Marlin version identifier file, all fields can be
- * overriden by the ones defined on _Version.h by using the Configuration.h
+ * overriden by the ones defined in _Version.h by using the Configuration.h
  * directive USE_AUTOMATIC_VERSIONING.
  */
 
@@ -53,7 +53,7 @@
    * here we define this default string as the date where the latest release
    * version was tagged.
    */
-  #define STRING_DISTRIBUTION_DATE "2017-10-19 12:00"
+  #define STRING_DISTRIBUTION_DATE "2017-11-19 12:00"
 
   /**
    * Required minimum Configuration.h and Configuration_adv.h file versions.
-- 
GitLab