Merge branch 'bugfix-2.0.x' into CrealityDwin2.0_Bleeding

This commit is contained in:
InsanityAutomation
2021-06-11 15:42:13 -04:00
204 changed files with 994 additions and 622 deletions
+11 -1
View File
@@ -3564,8 +3564,18 @@
#define SPINDLE_LASER_POWERDOWN_DELAY 50 // (ms) Delay to allow the spindle to stop
#endif
//
// Laser I2C Ammeter (High precision INA226 low/high side module)
//
//#define I2C_AMMETER
#if ENABLED(I2C_AMMETER)
#define I2C_AMMETER_IMAX 0.1 // (Amps) Calibration value for the expected current range
#define I2C_AMMETER_SHUNT_RESISTOR 0.1 // (Ohms) Calibration shunt resistor value
#endif
#endif
#endif
#endif // SPINDLE_FEATURE || LASER_FEATURE
/**
* Synchronous Laser Control with M106/M107
+1 -1
View File
@@ -186,7 +186,7 @@ inline void HAL_adc_init() {
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
#define HAL_SENSITIVE_PINS 0, 1
#define HAL_SENSITIVE_PINS 0, 1,
#ifdef __AVR_AT90USB1286__
#define JTAG_DISABLE() do{ MCUCR = 0x80; MCUCR = 0x80; }while(0)
@@ -25,43 +25,6 @@
#include "../../../gcode/parser.h"
uint8_t analog_offset = NUM_DIGITAL_PINS - NUM_ANALOG_INPUTS;
// Get the digital pin for an analog index
pin_t analogInputToDigitalPin(const int8_t p) {
return (WITHIN(p, 0, NUM_ANALOG_INPUTS) ? analog_offset + p : P_NC);
}
// Return the index of a pin number
int16_t GET_PIN_MAP_INDEX(const pin_t pin) {
return pin;
}
// Test whether the pin is valid
bool VALID_PIN(const pin_t p) {
return WITHIN(p, 0, NUM_DIGITAL_PINS);
}
// Get the analog index for a digital pin
int8_t DIGITAL_PIN_TO_ANALOG_PIN(const pin_t p) {
return (WITHIN(p, analog_offset, NUM_DIGITAL_PINS) ? p - analog_offset : P_NC);
}
// Test whether the pin is PWM
bool PWM_PIN(const pin_t p) {
return false;
}
// Test whether the pin is interruptable
bool INTERRUPT_PIN(const pin_t p) {
return false;
}
// Get the pin number at the given index
pin_t GET_PIN_MAP_PIN(const int16_t ind) {
return ind;
}
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval) {
return parser.intval(code, dval);
}
+17 -11
View File
@@ -34,26 +34,32 @@ constexpr uint8_t NUM_ANALOG_INPUTS = 16;
#define HAL_SENSITIVE_PINS
constexpr uint8_t analog_offset = NUM_DIGITAL_PINS - NUM_ANALOG_INPUTS;
// Get the digital pin for an analog index
pin_t analogInputToDigitalPin(const int8_t p);
// Return the index of a pin number
int16_t GET_PIN_MAP_INDEX(const pin_t pin);
// Test whether the pin is valid
bool VALID_PIN(const pin_t p);
constexpr pin_t analogInputToDigitalPin(const int8_t p) {
return (WITHIN(p, 0, NUM_ANALOG_INPUTS) ? analog_offset + p : P_NC);
}
// Get the analog index for a digital pin
int8_t DIGITAL_PIN_TO_ANALOG_PIN(const pin_t p);
constexpr int8_t DIGITAL_PIN_TO_ANALOG_PIN(const pin_t p) {
return (WITHIN(p, analog_offset, NUM_DIGITAL_PINS) ? p - analog_offset : P_NC);
}
// Return the index of a pin number
constexpr int16_t GET_PIN_MAP_INDEX(const pin_t pin) { return pin; }
// Test whether the pin is valid
constexpr bool VALID_PIN(const pin_t p) { return WITHIN(p, 0, NUM_DIGITAL_PINS); }
// Test whether the pin is PWM
bool PWM_PIN(const pin_t p);
constexpr bool PWM_PIN(const pin_t p) { return false; }
// Test whether the pin is interruptable
bool INTERRUPT_PIN(const pin_t p);
constexpr bool INTERRUPT_PIN(const pin_t p) { return false; }
// Get the pin number at the given index
pin_t GET_PIN_MAP_PIN(const int16_t ind);
constexpr pin_t GET_PIN_MAP_PIN(const int16_t ind) { return ind; }
// Parse a G-code word into a pin index
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval);
+1 -1
View File
@@ -198,7 +198,7 @@ constexpr pin_t GET_PIN_MAP_PIN(const int16_t index) {
// Parse a G-code word into a pin index
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval);
// P0.6 thru P0.9 are for the onboard SD card
#define HAL_SENSITIVE_PINS P0_06, P0_07, P0_08, P0_09
#define HAL_SENSITIVE_PINS P0_06, P0_07, P0_08, P0_09,
#define HAL_IDLETASK 1
void HAL_idletask();
+1 -1
View File
@@ -30,7 +30,7 @@
// Better: "utility/stm32_eeprom.h", but only after updating stm32duino to 2.0.0
// Use EEPROM.h for compatibility, for now.
#include <EEPROM.h>
#include <EEPROM.h>
/**
* The STM32 HAL supports chips that deal with "pages" and some with "sectors" and some that
@@ -30,3 +30,6 @@
#undef F_CPU
#define F_CPU BOARD_F_CPU
#endif
// The Sensitive Pins array is not optimizable
#define RUNTIME_ONLY_ANALOG_TO_DIGITAL
+17 -4
View File
@@ -61,11 +61,24 @@ static constexpr uint8_t eeprom_device_address = I2C_ADDRESS(EEPROM_DEVICE_ADDRE
// Public functions
// ------------------------
#define SMALL_EEPROM (MARLIN_EEPROM_SIZE <= 2048)
// Combine Address high bits into the device address on <=16Kbit (2K) and >512Kbit (64K) EEPROMs.
// Note: MARLIN_EEPROM_SIZE is specified in bytes, whereas EEPROM model numbers refer to bits.
// e.g., The "16" in BL24C16 indicates a 16Kbit (2KB) size.
static uint8_t _eeprom_calc_device_address(uint8_t * const pos) {
const unsigned eeprom_address = (unsigned)pos;
return (SMALL_EEPROM || MARLIN_EEPROM_SIZE > 65536)
? uint8_t(eeprom_device_address | ((eeprom_address >> (SMALL_EEPROM ? 8 : 16)) & 0x07))
: eeprom_device_address;
}
static void _eeprom_begin(uint8_t * const pos) {
const unsigned eeprom_address = (unsigned)pos;
Wire.beginTransmission(eeprom_device_address);
Wire.write(int(eeprom_address >> 8)); // Address High
Wire.write(int(eeprom_address & 0xFF)); // Address Low
Wire.beginTransmission(_eeprom_calc_device_address(pos));
if (!SMALL_EEPROM)
Wire.write(uint8_t((eeprom_address >> 8) & 0xFF)); // Address High, if needed
Wire.write(uint8_t(eeprom_address & 0xFF)); // Address Low
}
void eeprom_write_byte(uint8_t *pos, uint8_t value) {
@@ -81,7 +94,7 @@ void eeprom_write_byte(uint8_t *pos, uint8_t value) {
uint8_t eeprom_read_byte(uint8_t *pos) {
_eeprom_begin(pos);
Wire.endTransmission();
Wire.requestFrom(eeprom_device_address, (byte)1);
Wire.requestFrom(_eeprom_calc_device_address(pos), (byte)1);
return Wire.available() ? Wire.read() : 0xFF;
}
+8 -1
View File
@@ -282,8 +282,15 @@ bool wait_for_heatup = true;
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wnarrowing"
#ifdef RUNTIME_ONLY_ANALOG_TO_DIGITAL
static const pin_t sensitive_pins[] PROGMEM = { SENSITIVE_PINS };
#else
template <pin_t ...D>
constexpr pin_t OnlyPins<-2, D...>::table[sizeof...(D)];
#define sensitive_pins OnlyPins<SENSITIVE_PINS>::table
#endif
bool pin_is_protected(const pin_t pin) {
static const pin_t sensitive_pins[] PROGMEM = SENSITIVE_PINS;
LOOP_L_N(i, COUNT(sensitive_pins)) {
pin_t sensitive_pin;
memcpy_P(&sensitive_pin, &sensitive_pins[i], sizeof(pin_t));
+1 -1
View File
@@ -321,7 +321,7 @@
#define BOARD_BTT_SKR_MINI_V1_1 4023 // BigTreeTech SKR Mini v1.1 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V1_0 4024 // BigTreeTech SKR Mini E3 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V1_2 4025 // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V2_0 4026 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC)
#define BOARD_BTT_SKR_MINI_E3_V2_0 4026 // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC / STM32F103RE)
#define BOARD_BTT_SKR_MINI_MZ_V1_0 4027 // BigTreeTech SKR Mini MZ V1.0 (STM32F103RC)
#define BOARD_BTT_SKR_E3_DIP 4028 // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
#define BOARD_BTT_SKR_CR6 4029 // BigTreeTech SKR CR6 v1.0 (STM32F103RE)
+54
View File
@@ -0,0 +1,54 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 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 <https://www.gnu.org/licenses/>.
*
*/
#include "../inc/MarlinConfig.h"
#if ENABLED(I2C_AMMETER)
#include "ammeter.h"
#ifndef I2C_AMMETER_IMAX
#define I2C_AMMETER_IMAX 0.500 // Calibration range 500 Milliamps
#endif
INA226 ina;
Ammeter ammeter;
float Ammeter::scale;
float Ammeter::current;
void Ammeter::init() {
ina.begin();
ina.configure(INA226_AVERAGES_16, INA226_BUS_CONV_TIME_1100US, INA226_SHUNT_CONV_TIME_1100US, INA226_MODE_SHUNT_BUS_CONT);
ina.calibrate(I2C_AMMETER_SHUNT_RESISTOR, I2C_AMMETER_IMAX);
}
float Ammeter::read() {
scale = 1;
current = ina.readShuntCurrent();
if (current <= 0.0001f) current = 0; // Clean up least-significant-bit amplification errors
if (current < 0.1f) scale = 1000;
return current * scale;
}
#endif // I2C_AMMETER
+39
View File
@@ -0,0 +1,39 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 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 <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#include "../inc/MarlinConfigPre.h"
#include <Wire.h>
#include <INA226.h>
class Ammeter {
private:
static float scale;
public:
static float current;
static void init();
static float read();
};
extern Ammeter ammeter;
+1 -1
View File
@@ -24,7 +24,7 @@
#include "../../inc/MarlinConfigPre.h"
#if EITHER(RESTORE_LEVELING_AFTER_G28, ENABLE_LEVELING_AFTER_G28)
#define G28_L0_ENSURES_LEVELING_OFF 1
#define CAN_SET_LEVELING_AFTER_G28 1
#endif
#if ENABLED(PROBE_MANUALLY)
+2 -2
View File
@@ -88,7 +88,7 @@ typedef struct {
uint8_t fan_speed[FAN_COUNT];
#endif
#if ENABLED(HAS_LEVELING)
#if HAS_LEVELING
float fade;
#endif
@@ -120,7 +120,7 @@ typedef struct {
bool raised:1; // Raised before saved
bool dryrun:1; // M111 S8
bool allow_cold_extrusion:1; // M302 P1
#if ENABLED(HAS_LEVELING)
#if HAS_LEVELING
bool leveling:1; // M420 S
#endif
#if DISABLED(NO_VOLUMETRICS)
+7
View File
@@ -34,6 +34,10 @@
#include "../module/servo.h"
#endif
#if ENABLED(I2C_AMMETER)
#include "../feature/ammeter.h"
#endif
SpindleLaser cutter;
uint8_t SpindleLaser::power;
#if ENABLED(LASER_FEATURE)
@@ -74,6 +78,9 @@ void SpindleLaser::init() {
#if ENABLED(AIR_ASSIST)
OUT_WRITE(AIR_ASSIST_PIN, !AIR_ASSIST_ACTIVE); // Init Air Assist OFF
#endif
#if ENABLED(I2C_AMMETER)
ammeter.init(); // Init I2C Ammeter
#endif
}
#if ENABLED(SPINDLE_LASER_PWM)
+1 -1
View File
@@ -246,7 +246,7 @@ G29_TYPE GcodeSuite::G29() {
// Send 'N' to force homing before G29 (internal only)
if (parser.seen_test('N'))
process_subcommands_now_P(TERN(G28_L0_ENSURES_LEVELING_OFF, PSTR("G28L0"), G28_STR));
process_subcommands_now_P(TERN(CAN_SET_LEVELING_AFTER_G28, PSTR("G28L0"), G28_STR));
// Don't allow auto-leveling without homing first
if (homing_needed_error()) G29_RETURN(false);
+1 -1
View File
@@ -87,7 +87,7 @@ void GcodeSuite::G29() {
mbl.reset();
mbl_probe_index = 0;
if (!ui.wait_for_move) {
queue.inject_P(parser.seen_test('N') ? PSTR("G28" TERN(G28_L0_ENSURES_LEVELING_OFF, "L0", "") "\nG29S2") : PSTR("G29S2"));
queue.inject_P(parser.seen_test('N') ? PSTR("G28" TERN(CAN_SET_LEVELING_AFTER_G28, "L0", "") "\nG29S2") : PSTR("G29S2"));
return;
}
state = MeshNext;
+13 -10
View File
@@ -242,12 +242,16 @@ void GcodeSuite::G28() {
SET_SOFT_ENDSTOP_LOOSE(false); // Reset a leftover 'loose' motion state
// Disable the leveling matrix before homing
#if HAS_LEVELING
const bool leveling_restore_state = parser.boolval('L', TERN(RESTORE_LEVELING_AFTER_G28, planner.leveling_active, ENABLED(ENABLE_LEVELING_AFTER_G28)));
IF_ENABLED(PROBE_MANUALLY, g29_in_progress = false); // Cancel the active G29 session
set_bed_leveling_enabled(false);
#if CAN_SET_LEVELING_AFTER_G28
const bool leveling_restore_state = parser.boolval('L', TERN1(RESTORE_LEVELING_AFTER_G28, planner.leveling_active));
#endif
// Cancel any prior G29 session
TERN_(PROBE_MANUALLY, g29_in_progress = false);
// Disable leveling before homing
TERN_(HAS_LEVELING, set_bed_leveling_enabled(false));
// Reset to the XY plane
TERN_(CNC_WORKSPACE_PLANES, workspace_plane = PLANE_XY);
@@ -353,13 +357,14 @@ void GcodeSuite::G28() {
const float z_homing_height = parser.seenval('R') ? parser.value_linear_units() : Z_HOMING_HEIGHT;
if (z_homing_height && (0 LINEAR_AXIS_GANG(|| doX, || doY, || TERN0(Z_SAFE_HOMING, doZ), || doI, || doJ, || doK))) {
if (z_homing_height && (LINEAR_AXIS_GANG(doX, || doY, || TERN0(Z_SAFE_HOMING, doZ), || doI, || doJ, || doK))) {
// Raise Z before homing any other axes and z is not already high enough (never lower z)
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPAIR("Raise Z (before homing) by ", z_homing_height);
do_z_clearance(z_homing_height);
TERN_(BLTOUCH, bltouch.init());
}
// Diagonal move first if both are homing
TERN_(QUICK_HOME, if (doX && doY) quick_home_xy());
// Home Y (before X)
@@ -464,12 +469,10 @@ void GcodeSuite::G28() {
// Clear endstop state for polled stallGuard endstops
TERN_(SPI_ENDSTOPS, endstops.clear_endstop_state());
#if BOTH(DELTA, DELTA_HOME_TO_SAFE_ZONE)
// move to a height where we can use the full xy-area
do_blocking_move_to_z(delta_clip_start_height);
#endif
// Move to a height where we can use the full xy-area
TERN_(DELTA_HOME_TO_SAFE_ZONE, do_blocking_move_to_z(delta_clip_start_height));
TERN_(HAS_LEVELING, set_bed_leveling_enabled(leveling_restore_state));
TERN_(CAN_SET_LEVELING_AFTER_G28, if (leveling_restore_state) set_bed_leveling_enabled());
restore_feedrate_and_scaling();
+3 -3
View File
@@ -439,7 +439,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) {
#if HAS_Z_AXIS && AXIS_CAN_CALIBRATE(Z)
SERIAL_ECHOLNPAIR(" Top: ", m.backlash[TOP]);
#endif
#if LINEAR_AXES >= 4 AXIS_CAN_CALIBRATE(I)
#if LINEAR_AXES >= 4 && AXIS_CAN_CALIBRATE(I)
#if ENABLED(CALIBRATION_MEASURE_IMIN)
SERIAL_ECHOLNPAIR(" " STR_I_MIN ": ", m.backlash[IMINIMUM]);
#endif
@@ -447,7 +447,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) {
SERIAL_ECHOLNPAIR(" " STR_I_MAX ": ", m.backlash[IMAXIMUM]);
#endif
#endif
#if LINEAR_AXES >= 5 AXIS_CAN_CALIBRATE(J)
#if LINEAR_AXES >= 5 && AXIS_CAN_CALIBRATE(J)
#if ENABLED(CALIBRATION_MEASURE_JMIN)
SERIAL_ECHOLNPAIR(" " STR_J_MIN ": ", m.backlash[JMINIMUM]);
#endif
@@ -455,7 +455,7 @@ inline void probe_sides(measurements_t &m, const float uncertainty) {
SERIAL_ECHOLNPAIR(" " STR_J_MAX ": ", m.backlash[JMAXIMUM]);
#endif
#endif
#if LINEAR_AXES >= 6 AXIS_CAN_CALIBRATE(K)
#if LINEAR_AXES >= 6 && AXIS_CAN_CALIBRATE(K)
#if ENABLED(CALIBRATION_MEASURE_KMIN)
SERIAL_ECHOLNPAIR(" " STR_K_MIN ": ", m.backlash[KMINIMUM]);
#endif
+1 -1
View File
@@ -392,7 +392,7 @@ public:
static void process_subcommands_now(char * gcode);
static inline void home_all_axes(const bool keep_leveling=false) {
process_subcommands_now_P(keep_leveling ? G28_STR : TERN(G28_L0_ENSURES_LEVELING_OFF, PSTR("G28L0"), G28_STR));
process_subcommands_now_P(keep_leveling ? G28_STR : TERN(CAN_SET_LEVELING_AFTER_G28, PSTR("G28L0"), G28_STR));
}
#if EITHER(HAS_AUTO_REPORTING, HOST_KEEPALIVE_FEATURE)
+18 -5
View File
@@ -405,6 +405,10 @@
#endif
#if EITHER(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008) && DISABLED(NO_LCD_DETECT)
#define DETECT_I2C_LCD_DEVICE 1
#endif
#ifndef STD_ENCODER_PULSES_PER_STEP
#if ENABLED(TOUCH_SCREEN)
#define STD_ENCODER_PULSES_PER_STEP 2
@@ -713,14 +717,19 @@
#ifndef Z_PROBE_SERVO_NR
#define Z_PROBE_SERVO_NR 0
#endif
#undef DEACTIVATE_SERVOS_AFTER_MOVE
#ifdef DEACTIVATE_SERVOS_AFTER_MOVE
#error "BLTOUCH requires DEACTIVATE_SERVOS_AFTER_MOVE to be to disabled. Please update your Configuration.h file."
#endif
// Always disable probe pin inverting for BLTouch
#undef Z_MIN_PROBE_ENDSTOP_INVERTING
#define Z_MIN_PROBE_ENDSTOP_INVERTING false
#if Z_MIN_PROBE_ENDSTOP_INVERTING
#error "BLTOUCH requires Z_MIN_PROBE_ENDSTOP_INVERTING set to false. Please update your Configuration.h file."
#endif
#if ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
#undef Z_MIN_ENDSTOP_INVERTING
#define Z_MIN_ENDSTOP_INVERTING false
#if Z_MIN_ENDSTOP_INVERTING
#error "BLTOUCH requires Z_MIN_ENDSTOP_INVERTING set to false. Please update your Configuration.h file."
#endif
#endif
#endif
@@ -1013,6 +1022,10 @@
#endif
#endif
#if DISABLED(DELTA)
#undef DELTA_HOME_TO_SAFE_ZONE
#endif
// This flag indicates some kind of jerk storage is needed
#if EITHER(CLASSIC_JERK, IS_KINEMATIC)
#define HAS_CLASSIC_JERK 1
+1 -1
View File
@@ -42,7 +42,7 @@
* version was tagged.
*/
#ifndef STRING_DISTRIBUTION_DATE
#define STRING_DISTRIBUTION_DATE "2021-06-06"
#define STRING_DISTRIBUTION_DATE "2021-06-11"
#endif
/**
+25 -17
View File
@@ -50,6 +50,10 @@
#include "../../feature/cooler.h"
#endif
#if ENABLED(I2C_AMMETER)
#include "../../feature/ammeter.h"
#endif
#if ENABLED(AUTO_BED_LEVELING_UBL)
#include "../../feature/bedlevel/bedlevel.h"
#endif
@@ -64,11 +68,7 @@
#elif EITHER(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008)
LCD_CLASS lcd(LCD_I2C_ADDRESS
#ifdef DETECT_DEVICE
, 1
#endif
);
LCD_CLASS lcd(LCD_I2C_ADDRESS OPTARG(DETECT_I2C_LCD_DEVICE, 1));
#elif ENABLED(LCD_I2C_TYPE_PCA8574)
@@ -376,11 +376,7 @@ void MarlinUI::init_lcd() {
}
bool MarlinUI::detected() {
return (true
#if EITHER(LCD_I2C_TYPE_MCP23017, LCD_I2C_TYPE_MCP23008) && defined(DETECT_DEVICE)
&& lcd.LcdDetected() == 1
#endif
);
return TERN1(DETECT_I2C_LCD_DEVICE, lcd.LcdDetected() == 1);
}
#if HAS_SLOW_BUTTONS
@@ -588,12 +584,27 @@ FORCE_INLINE void _draw_cooler_status(const char prefix, const bool blink) {
#if ENABLED(LASER_COOLANT_FLOW_METER)
FORCE_INLINE void _draw_flowmeter_status() {
lcd_put_u8str("~ ");
lcd_put_u8str("~");
lcd_put_u8str(ftostr11ns(cooler.flowrate));
lcd_put_wchar('L');
}
#endif
#if ENABLED(I2C_AMMETER)
FORCE_INLINE void _draw_ammeter_status() {
lcd_put_u8str(" ");
ammeter.read();
if (ammeter.current <= 0.999f) {
lcd_put_u8str(ui16tostr3rj(uint16_t(ammeter.current * 1000 + 0.5f)));
lcd_put_u8str("mA");
}
else {
lcd_put_u8str(ftostr12ns(ammeter.current));
lcd_put_wchar('A');
}
}
#endif
FORCE_INLINE void _draw_bed_status(const bool blink) {
_draw_heater_status(H_BED, TERN0(HAS_LEVELING, blink && planner.leveling_active) ? '_' : LCD_STR_BEDTEMP[0], blink);
}
@@ -829,12 +840,9 @@ void MarlinUI::draw_status_screen() {
#endif
#endif
#if HAS_COOLER
_draw_cooler_status('*', blink);
#endif
#if ENABLED(LASER_COOLANT_FLOW_METER)
_draw_flowmeter_status();
#endif
TERN_(HAS_COOLER, _draw_cooler_status('*', blink));
TERN_(LASER_COOLANT_FLOW_METER, _draw_flowmeter_status());
TERN_(I2C_AMMETER, _draw_ammeter_status());
#endif // LCD_WIDTH >= 20
+39 -1
View File
@@ -107,7 +107,17 @@
#define STATUS_FLOWMETER_BYTEWIDTH BW(STATUS_FLOWMETER_WIDTH)
#endif
//
// Laser Ammeter
//
#if ENABLED(I2C_AMMETER)
#if !STATUS_AMMETER_WIDTH
#include "status/ammeter.h"
#endif
#ifndef STATUS_AMMETER_WIDTH
#define STATUS_AMMETER_WIDTH 0
#endif
#endif
//
// Bed
@@ -603,6 +613,31 @@
#endif
#endif
//
// I2C Laser Ammeter
//
#if ENABLED(I2C_AMMETER) && STATUS_AMMETER_WIDTH
#ifndef STATUS_AMMETER_BYTEWIDTH
#define STATUS_AMMETER_BYTEWIDTH BW(STATUS_AMMETER_WIDTH)
#endif
#ifndef STATUS_AMMETER_X
#define STATUS_AMMETER_X (LCD_PIXEL_WIDTH - (STATUS_AMMETER_BYTEWIDTH + STATUS_FLOWMETER_BYTEWIDTH + STATUS_FAN_BYTEWIDTH + STATUS_CUTTER_BYTEWIDTH + STATUS_COOLER_BYTEWIDTH) * 8)
#endif
#ifndef STATUS_AMMETER_HEIGHT
#define STATUS_AMMETER_HEIGHT(S) (sizeof(status_ammeter_bmp1) / (STATUS_AMMETER_BYTEWIDTH))
#endif
#ifndef STATUS_AMMETER_Y
#define STATUS_AMMETER_Y(S) (18 - STATUS_AMMETER_HEIGHT(S))
#endif
#ifndef STATUS_AMMETER_TEXT_X
#define STATUS_AMMETER_TEXT_X (STATUS_AMMETER_X + 7)
#endif
static_assert(
sizeof(status_ammeter_bmp1) == (STATUS_AMMETER_BYTEWIDTH) * STATUS_AMMETER_HEIGHT(0),
"Status ammeter bitmap (status_ammeter_bmp1) dimensions don't match data."
);
#endif
//
// Bed Bitmap Properties
//
@@ -696,6 +731,9 @@
#if ENABLED(LASER_COOLANT_FLOW_METER)
#define DO_DRAW_FLOWMETER 1
#endif
#if ENABLED(I2C_AMMETER)
#define DO_DRAW_AMMETER 1
#endif
#if HAS_TEMP_CHAMBER && STATUS_CHAMBER_WIDTH && HOTENDS <= 4
#define DO_DRAW_CHAMBER 1
+68
View File
@@ -0,0 +1,68 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 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 <https://www.gnu.org/licenses/>.
*
*/
#pragma once
//
// lcd/dogm/status/ammeter.h - Status Screen Laser Ammeter bitmaps
//
#define STATUS_AMMETER_WIDTH 20
const unsigned char status_ammeter_bmp_mA[] PROGMEM = {
B00000000,B11111100,B00000000,
B00000011,B00000011,B00000000,
B00000100,B00000000,B10000000,
B00001000,B00000000,B01000000,
B00010000,B00000110,B00100000,
B00010000,B00001001,B00100000,
B00100000,B00001001,B00010000,
B00100011,B01001111,B00010000,
B11100010,B10101001,B00011100,
B00100010,B10101001,B00010000,
B00100010,B10101001,B00010000,
B00010000,B00000000,B00100000,
B00010000,B00000000,B00100000,
B00001000,B00000000,B01000000,
B00000100,B00000000,B10000000,
B00000011,B00000011,B00000000,
B00000000,B11111100,B00000000
};
const unsigned char status_ammeter_bmp_A[] PROGMEM = {
B00000000,B11111100,B00000000,
B00000011,B00000011,B00000000,
B00000100,B00000000,B10000000,
B00001000,B00000000,B01000000,
B00010000,B00000000,B00100000,
B00010000,B00110000,B00100000,
B00100000,B01001000,B00010000,
B00100000,B01001000,B00010000,
B11100000,B01111000,B00011100,
B00100000,B01001000,B00010000,
B00100000,B01001000,B00010000,
B00010000,B01001000,B00100000,
B00010000,B00000000,B00100000,
B00001000,B00000000,B01000000,
B00000100,B00000000,B10000000,
B00000011,B00000011,B00000000,
B00000000,B11111100,B00000000,
};
+32 -32
View File
@@ -29,40 +29,40 @@
#define STATUS_COOLER_WIDTH 22
const unsigned char status_cooler_bmp2[] PROGMEM = {
B00000100,B00000010,B00000000,
B00000100,B10010010,B01000000,
B00010101,B00001010,B10000000,
B00001110,B00000111,B00000000,
B00111111,B10111111,B11000000,
B00001110,B00000111,B00000000,
B00010101,B00001010,B10000000,
B00100100,B00100010,B01000000,
B00000100,B00100000,B00000000,
B00000001,B00100100,B00000000,
B00000000,B10101000,B00000000,
B00000000,B01110000,B00000000,
B00000111,B11111111,B00000000,
B00000000,B01110000,B00000000,
B00000000,B10101000,B00000000,
B00000001,B00100100,B00000000
B00000001,B00000000,B10000000,
B00000001,B00100100,B10010000,
B00000101,B01000010,B10100000,
B00000011,B10000001,B11000000,
B00001111,B11101111,B11110000,
B00000011,B10000001,B11000000,
B00000101,B01000010,B10100000,
B00001001,B00001000,B10010000,
B00000001,B00001000,B00000000,
B00000000,B01001001,B00000000,
B00000000,B00101010,B00000000,
B00000000,B00011100,B00000000,
B00000001,B11111111,B11000000,
B00000000,B00011100,B00000000,
B00000000,B00101010,B00000000,
B00000000,B01001001,B00000000
};
const unsigned char status_cooler_bmp1[] PROGMEM = {
B00000100,B00000010,B00000000,
B00000100,B10010010,B01000000,
B00010101,B00001010,B10000000,
B00001010,B00000101,B00000000,
B00110001,B11011000,B11000000,
B00001010,B00000101,B00000000,
B00010101,B00001010,B10000000,
B00100100,B00100010,B01000000,
B00000100,B00100000,B00000000,
B00000001,B00100100,B00000000,
B00000000,B10101000,B00000000,
B00000000,B01010000,B00000000,
B00000111,B10001111,B00000000,
B00000000,B01010000,B00000000,
B00000000,B10101000,B00000000,
B00000001,B00100100,B00000000
B00000001,B00000000,B10000000,
B00000001,B00100100,B10010000,
B00000101,B01000010,B10100000,
B00000010,B10000001,B01000000,
B00001100,B01110110,B00110000,
B00000010,B10000001,B01000000,
B00000101,B01000010,B10100000,
B00001001,B00001000,B10010000,
B00000001,B00001000,B00000000,
B00000000,B01001001,B00000000,
B00000000,B00101010,B00000000,
B00000000,B00010100,B00000000,
B00000001,B11100011,B11000000,
B00000000,B00010100,B00000000,
B00000000,B00101010,B00000000,
B00000000,B01001001,B00000000
};
#endif
@@ -205,6 +205,14 @@ FORCE_INLINE void _draw_centered_temp(const celsius_t temp, const uint8_t tx, co
}
#endif
#if DO_DRAW_AMMETER
FORCE_INLINE void _draw_centered_current(const float current, const uint8_t tx, const uint8_t ty) {
const char *str = ftostr31ns(current);
const uint8_t len = str[0] != ' ' ? 3 : str[1] != ' ' ? 2 : 1;
lcd_put_u8str(tx - len * (INFO_FONT_WIDTH) / 2 + 1, ty, &str[3-len]);
}
#endif
#if DO_DRAW_HOTENDS
// Draw hotend bitmap with current and target temperatures
@@ -404,6 +412,13 @@ FORCE_INLINE void _draw_centered_temp(const celsius_t temp, const uint8_t tx, co
}
#endif
#if DO_DRAW_AMMETER
FORCE_INLINE void _draw_ammeter_status() {
if (PAGE_CONTAINS(28 - INFO_FONT_ASCENT, 28 - 1))
_draw_centered_current(ammeter.read(), STATUS_AMMETER_TEXT_X, 28);
}
#endif
//
// Before homing, blink '123' <-> '???'.
// Homed but unknown... '123' <-> ' '.
@@ -677,6 +692,13 @@ void MarlinUI::draw_status_screen() {
u8g.drawBitmapP(STATUS_FLOWMETER_X, flowmetery, STATUS_FLOWMETER_BYTEWIDTH, flowmeterh, blink && cooler.flowpulses ? status_flowmeter_bmp2 : status_flowmeter_bmp1);
#endif
// Laser Ammeter
#if DO_DRAW_AMMETER
const uint8_t ammetery = STATUS_AMMETER_Y(status_ammeter_bmp_mA),
ammeterh = STATUS_AMMETER_HEIGHT(status_ammeter_bmp_mA);
if (PAGE_CONTAINS(ammetery, ammetery + ammeterh - 1))
u8g.drawBitmapP(STATUS_AMMETER_X, ammetery, STATUS_AMMETER_BYTEWIDTH, ammeterh, (ammeter.current < 0.1f) ? status_ammeter_bmp_mA : status_ammeter_bmp_A);
#endif
// Heated Bed
TERN_(DO_DRAW_BED, _draw_bed_status(blink));
@@ -690,6 +712,9 @@ void MarlinUI::draw_status_screen() {
// Flowmeter
TERN_(DO_DRAW_FLOWMETER, _draw_flowmeter_status());
// Flowmeter
TERN_(DO_DRAW_AMMETER, _draw_ammeter_status());
// Fan, if a bitmap was provided
#if DO_DRAW_FAN
if (PAGE_CONTAINS(STATUS_FAN_TEXT_Y - INFO_FONT_ASCENT, STATUS_FAN_TEXT_Y - 1)) {
@@ -27,9 +27,7 @@
#if ENABLED(SDSUPPORT)
bool MediaFileReader::open(const char *filename) {
card.init(SD_SPI_SPEED, SDSS);
volume.init(&card);
root.openRoot(&volume);
root = CardReader::getroot();
return file.open(&root, filename, O_READ);
}
@@ -21,7 +21,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_BIO_ADVANCED_SETTINGS_MENU
@@ -21,7 +21,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_BIO_CONFIRM_HOME_E
@@ -21,7 +21,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_BIO_CONFIRM_HOME_XYZ
@@ -21,7 +21,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_BIO_MAIN_MENU
@@ -21,7 +21,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_BIO_PRINTING_DIALOG_BOX
@@ -22,14 +22,14 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_BIO_STATUS_SCREEN
#if ENABLED(TOUCH_UI_PORTRAIT)
#include "bio_printer_ui_portrait.h"
#include "ui_portrait.h"
#else
#include "bio_printer_ui_landscape.h"
#include "ui_landscape.h"
#endif
#define GRID_COLS 2
@@ -21,7 +21,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_BIO_TUNE_MENU
@@ -1,5 +1,5 @@
/*****************************************
* cocoa_press_advance_settings_menu.cpp *
* cocoa_press/advance_settings_menu.cpp *
*****************************************/
/****************************************************************************
@@ -21,9 +21,9 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_COCOA_ADVANCED_SETTINGS_MENU
#ifdef COCOA_ADVANCED_SETTINGS_MENU
using namespace FTDI;
using namespace ExtUI;
@@ -92,4 +92,4 @@ bool AdvancedSettingsMenu::onTouchEnd(uint8_t tag) {
}
return true;
}
#endif // FTDI_COCOA_ADVANCED_SETTINGS_MENU
#endif // COCOA_ADVANCED_SETTINGS_MENU
@@ -1,5 +1,5 @@
/***************************************
* cocoa_press_advance_settings_menu.h *
* cocoa_press/advance_settings_menu.h *
***************************************/
/****************************************************************************
@@ -22,8 +22,8 @@
#pragma once
#define FTDI_COCOA_ADVANCED_SETTINGS_MENU
#define FTDI_COCOA_ADVANCED_SETTINGS_MENU_CLASS AdvancedSettingsMenu
#define COCOA_ADVANCED_SETTINGS_MENU
#define COCOA_ADVANCED_SETTINGS_MENU_CLASS AdvancedSettingsMenu
class AdvancedSettingsMenu : public BaseScreen, public CachedScreen<ADVANCED_SETTINGS_SCREEN_CACHE> {
public:
@@ -1,6 +1,6 @@
/************************************
* cocoa_press_unload_cartridge.cpp *
************************************/
/**********************************
* cocoa_press/load_chocolate.cpp *
**********************************/
/****************************************************************************
* Written By Mark Pelletier 2017 - Aleph Objects, Inc. *
@@ -22,10 +22,10 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "screen_data.h"
#include "../screens.h"
#include "../screen_data.h"
#ifdef FTDI_COCOA_LOAD_CHOCOLATE_SCREEN
#ifdef COCOA_LOAD_CHOCOLATE_SCREEN
#include "cocoa_press_ui.h"
@@ -215,4 +215,4 @@ void LoadChocolateScreen::onIdle() {
}
BaseScreen::onIdle();
}
#endif // FTDI_COCOA_LOAD_CHOCOLATE_SCREEN
#endif // COCOA_LOAD_CHOCOLATE_SCREEN
@@ -1,5 +1,5 @@
/********************************
* cocoa_press_load_chocolate.h *
* cocoa_press/load_chocolate.h *
********************************/
/****************************************************************************
@@ -23,8 +23,8 @@
#pragma once
#define FTDI_COCOA_LOAD_CHOCOLATE_SCREEN
#define FTDI_COCOA_LOAD_CHOCOLATE_SCREEN_CLASS LoadChocolateScreen
#define COCOA_LOAD_CHOCOLATE_SCREEN
#define COCOA_LOAD_CHOCOLATE_SCREEN_CLASS LoadChocolateScreen
struct LoadChocolateScreenData {
uint8_t repeat_tag;
@@ -1,5 +1,5 @@
/*****************************
* cocoa_press_main_menu.cpp *
* cocoa_press/main_menu.cpp *
*****************************/
/****************************************************************************
@@ -22,9 +22,9 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_COCOA_MAIN_MENU
#ifdef COCOA_MAIN_MENU
using namespace FTDI;
using namespace Theme;
@@ -97,4 +97,4 @@ bool MainMenu::onTouchEnd(uint8_t tag) {
return true;
}
#endif // FTDI_COCOA_MAIN_MENU
#endif // COCOA_MAIN_MENU
@@ -1,5 +1,5 @@
/***************************
* cocoa_press_main_menu.h *
* cocoa_press/main_menu.h *
***************************/
/****************************************************************************
@@ -23,8 +23,8 @@
#pragma once
#define FTDI_COCOA_MAIN_MENU
#define FTDI_COCOA_MAIN_MENU_CLASS MainMenu
#define COCOA_MAIN_MENU
#define COCOA_MAIN_MENU_CLASS MainMenu
class MainMenu : public BaseScreen, public CachedScreen<MENU_SCREEN_CACHE> {
public:
@@ -1,5 +1,5 @@
/*********************************
* cocoa_press_move_e_screen.cpp *
* cocoa_press/move_e_screen.cpp *
*********************************/
/****************************************************************************
@@ -22,10 +22,10 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "screen_data.h"
#include "../screens.h"
#include "../screen_data.h"
#ifdef FTDI_COCOA_MOVE_E_SCREEN
#ifdef COCOA_MOVE_E_SCREEN
using namespace FTDI;
using namespace ExtUI;
@@ -60,4 +60,4 @@ void MoveEScreen::onIdle() {
}
BaseScreen::onIdle();
}
#endif // FTDI_COCOA_MOVE_E_SCREEN
#endif // COCOA_MOVE_E_SCREEN
@@ -1,5 +1,5 @@
/*******************************
* cocoa_press_move_e_screen.h *
* cocoa_press/move_e_screen.h *
*******************************/
/****************************************************************************
@@ -23,8 +23,8 @@
#pragma once
#define FTDI_COCOA_MOVE_E_SCREEN
#define FTDI_COCOA_MOVE_E_SCREEN_CLASS MoveEScreen
#define COCOA_MOVE_E_SCREEN
#define COCOA_MOVE_E_SCREEN_CLASS MoveEScreen
class MoveEScreen : public BaseMoveAxisScreen, public CachedScreen<MOVE_E_SCREEN_CACHE> {
public:
@@ -1,5 +1,5 @@
/***********************************
* cocoa_press_move_xyz_screen.cpp *
* cocoa_press/move_xyz_screen.cpp *
***********************************/
/****************************************************************************
@@ -22,10 +22,10 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "screen_data.h"
#include "../screens.h"
#include "../screen_data.h"
#ifdef FTDI_COCOA_MOVE_XYZ_SCREEN
#ifdef COCOA_MOVE_XYZ_SCREEN
using namespace FTDI;
using namespace ExtUI;
@@ -49,4 +49,4 @@ void MoveXYZScreen::onIdle() {
}
BaseScreen::onIdle();
}
#endif // FTDI_COCOA_MOVE_XYZ_SCREEN
#endif // COCOA_MOVE_XYZ_SCREEN
@@ -1,5 +1,5 @@
/*********************************
* cocoa_press_move_xyz_screen.h *
* cocoa_press/move_xyz_screen.h *
*********************************/
/****************************************************************************
@@ -23,8 +23,8 @@
#pragma once
#define FTDI_COCOA_MOVE_XYZ_SCREEN
#define FTDI_COCOA_MOVE_XYZ_SCREEN_CLASS MoveXYZScreen
#define COCOA_MOVE_XYZ_SCREEN
#define COCOA_MOVE_XYZ_SCREEN_CLASS MoveXYZScreen
class MoveXYZScreen : public BaseMoveAxisScreen, public CachedScreen<MOVE_XYZ_SCREEN_CACHE> {
public:
@@ -1,5 +1,5 @@
/********************************
* cocoa_press_preheat_menu.cpp *
* cocoa_press/preheat_menu.cpp *
********************************/
/****************************************************************************
@@ -20,9 +20,9 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_COCOA_PREHEAT_MENU
#ifdef COCOA_PREHEAT_MENU
using namespace FTDI;
using namespace ExtUI;
@@ -113,4 +113,4 @@ bool PreheatMenu::onTouchEnd(uint8_t tag) {
return true;
}
#endif // FTDI_COCOA_PREHEAT_MENU
#endif // COCOA_PREHEAT_MENU
@@ -1,5 +1,5 @@
/******************************
* cocoa_press_preheat_menu.h *
* cocoa_press/preheat_menu.h *
******************************/
/****************************************************************************
@@ -21,8 +21,8 @@
#pragma once
#define FTDI_COCOA_PREHEAT_MENU
#define FTDI_COCOA_PREHEAT_MENU_CLASS PreheatMenu
#define COCOA_PREHEAT_MENU
#define COCOA_PREHEAT_MENU_CLASS PreheatMenu
class PreheatMenu : public BaseScreen, public CachedScreen<PREHEAT_MENU_CACHE> {
public:
@@ -1,6 +1,6 @@
/****************************
* preheat_timer_screen.cpp *
****************************/
/***************************************
* cocoapress/preheat_timer_screen.cpp *
***************************************/
/****************************************************************************
* Written By Marcio Teixeira 2019 - Cocoa Press *
@@ -20,10 +20,10 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "screen_data.h"
#include "../screens.h"
#include "../screen_data.h"
#ifdef FTDI_COCOA_PREHEAT_SCREEN
#ifdef COCOA_PREHEAT_SCREEN
using namespace FTDI;
using namespace ExtUI;
@@ -168,4 +168,4 @@ void PreheatTimerScreen::onIdle() {
BaseScreen::onIdle();
}
#endif // FTDI_COCOA_PREHEAT_SCREEN
#endif // COCOA_PREHEAT_SCREEN
@@ -1,5 +1,5 @@
/*********************************
* cocoapress_preheat_screen.cpp *
* cocoapress/preheat_screen.cpp *
*********************************/
/****************************************************************************
@@ -21,8 +21,8 @@
#pragma once
#define FTDI_COCOA_PREHEAT_SCREEN
#define FTDI_COCOA_PREHEAT_SCREEN_CLASS PreheatTimerScreen
#define COCOA_PREHEAT_SCREEN
#define COCOA_PREHEAT_SCREEN_CLASS PreheatTimerScreen
struct PreheatTimerScreenData {
uint32_t start_ms;
@@ -1,5 +1,5 @@
/*********************************
* cocoa_press_status_screen.cpp *
* cocoa_press/status_screen.cpp *
*********************************/
/****************************************************************************
@@ -22,9 +22,9 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_COCOA_STATUS_SCREEN
#ifdef COCOA_STATUS_SCREEN
#include "cocoa_press_ui.h"
@@ -294,4 +294,4 @@ void StatusScreen::onIdle() {
}
}
#endif // FTDI_COCOA_STATUS_SCREEN
#endif // COCOA_STATUS_SCREEN
@@ -1,5 +1,5 @@
/*******************************
* cocoa_press_status_screen.h *
* cocoa_press/status_screen.h *
*******************************/
/****************************************************************************
@@ -23,8 +23,8 @@
#pragma once
#define FTDI_COCOA_STATUS_SCREEN
#define FTDI_COCOA_STATUS_SCREEN_CLASS StatusScreen
#define COCOA_STATUS_SCREEN
#define COCOA_STATUS_SCREEN_CLASS StatusScreen
class StatusScreen : public BaseScreen, public CachedScreen<STATUS_SCREEN_CACHE> {
private:
@@ -28,7 +28,7 @@
#if ENABLED(TOUCH_UI_FTDI_EVE)
#include "screens/screens.h"
#include "screens.h"
namespace ExtUI {
using namespace Theme;
@@ -82,8 +82,8 @@ namespace FTDI {
box_width = w;
measure_text_box(fm, str, box_width, box_height);
if (box_width <= (uint16_t)w && box_height <= (uint16_t)h) break;
fm.load(--font);
if (font == 26) break;
fm.load(--font);
}
const uint16_t dx = (options & OPT_RIGHTX) ? w :
@@ -21,12 +21,12 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_ABOUT_SCREEN
#define GRID_COLS 4
#define GRID_ROWS 7
#define GRID_ROWS 8
using namespace FTDI;
using namespace Theme;
@@ -47,9 +47,9 @@ void AboutScreen::onRedraw(draw_mode_t) {
#define HEADING_POS BTN_POS(1,2), BTN_SIZE(4,1)
#define FW_VERS_POS BTN_POS(1,3), BTN_SIZE(4,1)
#define FW_INFO_POS BTN_POS(1,4), BTN_SIZE(4,1)
#define LICENSE_POS BTN_POS(1,5), BTN_SIZE(4,2)
#define STATS_POS BTN_POS(1,7), BTN_SIZE(2,1)
#define BACK_POS BTN_POS(3,7), BTN_SIZE(2,1)
#define LICENSE_POS BTN_POS(1,5), BTN_SIZE(4,3)
#define STATS_POS BTN_POS(1,8), BTN_SIZE(2,1)
#define BACK_POS BTN_POS(3,8), BTN_SIZE(2,1)
#define _INSET_POS(x,y,w,h) x + w/10, y, w - w/5, h
#define INSET_POS(pos) _INSET_POS(pos)
@@ -21,7 +21,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_ADVANCED_SETTINGS_MENU
@@ -21,8 +21,8 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "screen_data.h"
#include "../screens.h"
#include "../screen_data.h"
#ifdef FTDI_ALERT_DIALOG_BOX
@@ -21,7 +21,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_BACKLASH_COMP_SCREEN
@@ -21,8 +21,8 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "screen_data.h"
#include "../screens.h"
#include "../screen_data.h"
#ifdef FTDI_BASE_NUMERIC_ADJ_SCREEN
@@ -21,7 +21,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_BASE_SCREEN
@@ -20,7 +20,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_BED_MESH_BASE
@@ -20,8 +20,8 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "screen_data.h"
#include "../screens.h"
#include "../screen_data.h"
#ifdef FTDI_BED_MESH_EDIT_SCREEN
@@ -20,8 +20,8 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "screen_data.h"
#include "../screens.h"
#include "../screen_data.h"
#ifdef FTDI_BED_MESH_VIEW_SCREEN
@@ -69,7 +69,7 @@ void BedMeshViewScreen::onEntry() {
void BedMeshViewScreen::drawHighlightedPointValue() {
CommandProcessor cmd;
cmd.font(Theme::font_medium)
.colors(normal_btn)
.cmd(COLOR_RGB(bg_text_enabled))
.text(Z_LABEL_POS, GET_TEXT_F(MSG_MESH_EDIT_Z))
.font(font_small);
@@ -161,7 +161,7 @@ void BedMeshViewScreen::doProbe() {
void BedMeshViewScreen::doMeshValidation() {
mydata.count = 0;
GOTO_SCREEN(StatusScreen);
injectCommands_P(PSTR("G28 O\nM117 Heating...\nG26 R X0 Y0"));
injectCommands_P(PSTR("M75\nG28 O\nM117 Heating...\nG26 R X0 Y0\nG27\nM77"));
}
void BedMeshViewScreen::show() {
@@ -22,7 +22,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_BOOT_SCREEN
@@ -20,7 +20,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_CASE_LIGHT_SCREEN
@@ -21,8 +21,8 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "screen_data.h"
#include "../screens.h"
#include "../screen_data.h"
#ifdef FTDI_CHANGE_FILAMENT_SCREEN
@@ -21,7 +21,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_CONFIRM_ABORT_PRINT_DIALOG_BOX
@@ -21,7 +21,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_CONFIRM_AUTO_CALIBRATION_DIALOG_BOX
@@ -21,7 +21,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_CONFIRM_ERASE_FLASH_DIALOG_BOX
@@ -21,8 +21,8 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "screen_data.h"
#include "../screens.h"
#include "../screen_data.h"
#ifdef FTDI_CONFIRM_START_PRINT_DIALOG_BOX
@@ -21,8 +21,8 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "screen_data.h"
#include "../screens.h"
#include "../screen_data.h"
#ifdef FTDI_CONFIRM_USER_REQUEST_ALERT_BOX
@@ -21,7 +21,7 @@
*/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_CUSTOM_USER_MENUS
@@ -21,7 +21,7 @@
****************************************************************************/
#include "../config.h"
#include "screens.h"
#include "../screens.h"
#ifdef FTDI_DEFAULT_ACCELERATION_SCREEN

Some files were not shown because too many files have changed in this diff Show More