瀏覽代碼

Split the increment function into increment and add

No size difference since the compiler did a good job optimizing the inc argument (always 1 before).
Alex Voinea 2 年之前
父節點
當前提交
ca943cceec
共有 4 個文件被更改,包括 27 次插入16 次删除
  1. 2 2
      Firmware/Filament_sensor.cpp
  2. 6 6
      Firmware/Marlin_main.cpp
  3. 14 6
      Firmware/eeprom.cpp
  4. 5 2
      Firmware/eeprom.h

+ 2 - 2
Firmware/Filament_sensor.cpp

@@ -161,8 +161,8 @@ void Filament_sensor::filRunout() {
     autoLoadEnabled = false;
     stop_and_save_print_to_ram(0, 0);
     restore_print_from_ram_and_continue(0);
-    eeprom_increment_byte((uint8_t *)EEPROM_FERROR_COUNT, 1);
-    eeprom_increment_word((uint16_t *)EEPROM_FERROR_COUNT_TOT, 1);
+    eeprom_increment_byte((uint8_t *)EEPROM_FERROR_COUNT);
+    eeprom_increment_word((uint16_t *)EEPROM_FERROR_COUNT_TOT);
     enquecommand_front_P((PSTR("M600")));
 }
 

+ 6 - 6
Firmware/Marlin_main.cpp

@@ -609,13 +609,13 @@ void crashdet_detected(uint8_t mask)
 
 	if (mask & X_AXIS_MASK)
 	{
-		eeprom_increment_byte((uint8_t*)EEPROM_CRASH_COUNT_X, 1);
-		eeprom_increment_word((uint16_t*)EEPROM_CRASH_COUNT_X_TOT, 1);
+		eeprom_increment_byte((uint8_t*)EEPROM_CRASH_COUNT_X);
+		eeprom_increment_word((uint16_t*)EEPROM_CRASH_COUNT_X_TOT);
 	}
 	if (mask & Y_AXIS_MASK)
 	{
-		eeprom_increment_byte((uint8_t*)EEPROM_CRASH_COUNT_Y, 1);
-		eeprom_increment_word((uint16_t*)EEPROM_CRASH_COUNT_Y_TOT, 1);
+		eeprom_increment_byte((uint8_t*)EEPROM_CRASH_COUNT_Y);
+		eeprom_increment_word((uint16_t*)EEPROM_CRASH_COUNT_Y_TOT);
 	}
 
 	lcd_update_enable(true);
@@ -10681,8 +10681,8 @@ void uvlo_()
 	if(sd_print) eeprom_update_byte((uint8_t*)EEPROM_UVLO, 1);
 
     // Increment power failure counter
-	eeprom_increment_byte((uint8_t*)EEPROM_POWER_COUNT, 1);
-	eeprom_increment_word((uint16_t*)EEPROM_POWER_COUNT_TOT, 1);
+	eeprom_increment_byte((uint8_t*)EEPROM_POWER_COUNT);
+	eeprom_increment_word((uint16_t*)EEPROM_POWER_COUNT_TOT);
 
     printf_P(_N("UVLO - end %d\n"), _millis() - time_start);
     WRITE(BEEPER,HIGH);

+ 14 - 6
Firmware/eeprom.cpp

@@ -182,20 +182,28 @@ void eeprom_switch_to_next_sheet()
     if (sheet >= 0) eeprom_update_byte(&(EEPROM_Sheets_base->active_sheet), sheet);
 }
 
-void __attribute__((noinline)) eeprom_increment_byte(uint8_t *__p, uint8_t inc){
-    eeprom_update_byte(__p, eeprom_read_byte(__p) + inc);
+void __attribute__((noinline)) eeprom_increment_byte(uint8_t *__p) {
+    eeprom_write_byte(__p, eeprom_read_byte(__p) + 1);
 }
 
-void __attribute__((noinline)) eeprom_increment_word(uint16_t *__p, uint8_t inc){
-    eeprom_update_word(__p, eeprom_read_word(__p) + inc);
+void __attribute__((noinline)) eeprom_increment_word(uint16_t *__p) {
+    eeprom_write_word(__p, eeprom_read_word(__p) + 1);
 }
 
-void __attribute__((noinline)) eeprom_init_default_byte(uint8_t *__p, uint8_t def){
+void __attribute__((noinline)) eeprom_add_byte(uint8_t *__p, uint8_t add) {
+    eeprom_write_byte(__p, eeprom_read_byte(__p) + add);
+}
+
+void __attribute__((noinline)) eeprom_add_word(uint16_t *__p, uint16_t add) {
+    eeprom_write_word(__p, eeprom_read_word(__p) + add);
+}
+
+void __attribute__((noinline)) eeprom_init_default_byte(uint8_t *__p, uint8_t def) {
     if (eeprom_read_byte(__p) == 0xff)
         eeprom_write_byte(__p, def);
 }
 
-void __attribute__((noinline)) eeprom_init_default_word(uint16_t *__p, uint16_t def){
+void __attribute__((noinline)) eeprom_init_default_word(uint16_t *__p, uint16_t def) {
     if (eeprom_read_word(__p) == 0xffff)
         eeprom_write_word(__p, def);
 }

+ 5 - 2
Firmware/eeprom.h

@@ -613,8 +613,11 @@ void eeprom_default_sheet_name(uint8_t index, SheetName &sheetName);
 int8_t eeprom_next_initialized_sheet(int8_t sheet);
 void eeprom_switch_to_next_sheet();
 
-void eeprom_increment_byte(uint8_t *__p, uint8_t inc);
-void eeprom_increment_word(uint16_t *__p, uint8_t inc);
+void eeprom_increment_byte(uint8_t *__p);
+void eeprom_increment_word(uint16_t *__p);
+
+void eeprom_add_byte(uint8_t *__p, uint8_t add);
+void eeprom_add_word(uint16_t *__p, uint16_t add);
 
 void eeprom_init_default_byte(uint8_t *__p, uint8_t def);
 void eeprom_init_default_word(uint16_t *__p, uint16_t def);