More than 7.5KB saved by slight refactoring of printing to serial line
This commit is contained in:
parent
a38f37aa06
commit
a3fde091ab
@ -79,9 +79,9 @@ extern FILE _uartout;
|
|||||||
#define SERIAL_PROTOCOL_F(x,y) (MYSERIAL.print(x,y))
|
#define SERIAL_PROTOCOL_F(x,y) (MYSERIAL.print(x,y))
|
||||||
#define SERIAL_PROTOCOLPGM(x) (serialprintPGM(PSTR(x)))
|
#define SERIAL_PROTOCOLPGM(x) (serialprintPGM(PSTR(x)))
|
||||||
#define SERIAL_PROTOCOLRPGM(x) (serialprintPGM((x)))
|
#define SERIAL_PROTOCOLRPGM(x) (serialprintPGM((x)))
|
||||||
#define SERIAL_PROTOCOLLN(x) (MYSERIAL.print(x),MYSERIAL.write('\n'))
|
#define SERIAL_PROTOCOLLN(x) (MYSERIAL.println(x)/*,MYSERIAL.write('\n')*/)
|
||||||
#define SERIAL_PROTOCOLLNPGM(x) (serialprintPGM(PSTR(x)),MYSERIAL.write('\n'))
|
#define SERIAL_PROTOCOLLNPGM(x) (serialprintPGM(PSTR(x)),MYSERIAL.println()/*write('\n')*/)
|
||||||
#define SERIAL_PROTOCOLLNRPGM(x) (serialprintPGM((x)),MYSERIAL.write('\n'))
|
#define SERIAL_PROTOCOLLNRPGM(x) (serialprintPGM((x)),MYSERIAL.println()/*write('\n')*/)
|
||||||
|
|
||||||
|
|
||||||
extern const char errormagic[] PROGMEM;
|
extern const char errormagic[] PROGMEM;
|
||||||
@ -111,15 +111,9 @@ void serial_echopair_P(const char *s_P, unsigned long v);
|
|||||||
|
|
||||||
|
|
||||||
//Things to write to serial from Program memory. Saves 400 to 2k of RAM.
|
//Things to write to serial from Program memory. Saves 400 to 2k of RAM.
|
||||||
FORCE_INLINE void serialprintPGM(const char *str)
|
// Making this FORCE_INLINE is not a good idea when running out of FLASH
|
||||||
{
|
// I'd rather skip a few CPU ticks than 5.5KB (!!) of FLASH
|
||||||
char ch=pgm_read_byte(str);
|
void serialprintPGM(const char *str);
|
||||||
while(ch)
|
|
||||||
{
|
|
||||||
MYSERIAL.write(ch);
|
|
||||||
ch=pgm_read_byte(++str);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_buffer_empty();
|
bool is_buffer_empty();
|
||||||
void get_command();
|
void get_command();
|
||||||
|
@ -96,7 +96,7 @@ class MarlinSerial //: public Stream
|
|||||||
static int read(void);
|
static int read(void);
|
||||||
static void flush(void);
|
static void flush(void);
|
||||||
|
|
||||||
static FORCE_INLINE int available(void)
|
static /*FORCE_INLINE*/ int available(void)
|
||||||
{
|
{
|
||||||
return (unsigned int)(RX_BUFFER_SIZE + rx_buffer.head - rx_buffer.tail) % RX_BUFFER_SIZE;
|
return (unsigned int)(RX_BUFFER_SIZE + rx_buffer.head - rx_buffer.tail) % RX_BUFFER_SIZE;
|
||||||
}
|
}
|
||||||
@ -184,14 +184,14 @@ class MarlinSerial //: public Stream
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static FORCE_INLINE void write(const char *str)
|
static /*FORCE_INLINE*/ void write(const char *str)
|
||||||
{
|
{
|
||||||
while (*str)
|
while (*str)
|
||||||
write(*str++);
|
write(*str++);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static FORCE_INLINE void write(const uint8_t *buffer, size_t size)
|
static /*FORCE_INLINE*/ void write(const uint8_t *buffer, size_t size)
|
||||||
{
|
{
|
||||||
while (size--)
|
while (size--)
|
||||||
write(*buffer++);
|
write(*buffer++);
|
||||||
|
@ -411,6 +411,24 @@ void serial_echopair_P(const char *s_P, double v)
|
|||||||
void serial_echopair_P(const char *s_P, unsigned long v)
|
void serial_echopair_P(const char *s_P, unsigned long v)
|
||||||
{ serialprintPGM(s_P); SERIAL_ECHO(v); }
|
{ serialprintPGM(s_P); SERIAL_ECHO(v); }
|
||||||
|
|
||||||
|
/*FORCE_INLINE*/ void serialprintPGM(const char *str)
|
||||||
|
{
|
||||||
|
#if 0
|
||||||
|
char ch=pgm_read_byte(str);
|
||||||
|
while(ch)
|
||||||
|
{
|
||||||
|
MYSERIAL.write(ch);
|
||||||
|
ch=pgm_read_byte(++str);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
// hmm, same size as the above version, the compiler did a good job optimizing the above
|
||||||
|
while( uint8_t ch = pgm_read_byte(str) ){
|
||||||
|
MYSERIAL.write((char)ch);
|
||||||
|
++str;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef SDSUPPORT
|
#ifdef SDSUPPORT
|
||||||
#include "SdFatUtil.h"
|
#include "SdFatUtil.h"
|
||||||
int freeMemory() { return SdFatUtil::FreeRam(); }
|
int freeMemory() { return SdFatUtil::FreeRam(); }
|
||||||
|
@ -3954,6 +3954,13 @@ void lcd_menu_show_sensors_state() // NOT static due to using ins
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void prusa_statistics_err(char c){
|
||||||
|
SERIAL_ECHO("{[ERR:");
|
||||||
|
SERIAL_ECHO(c);
|
||||||
|
SERIAL_ECHO(']');
|
||||||
|
prusa_stat_farm_number();
|
||||||
|
}
|
||||||
|
|
||||||
void prusa_statistics(int _message, uint8_t _fil_nr) {
|
void prusa_statistics(int _message, uint8_t _fil_nr) {
|
||||||
#ifdef DEBUG_DISABLE_PRUSA_STATISTICS
|
#ifdef DEBUG_DISABLE_PRUSA_STATISTICS
|
||||||
return;
|
return;
|
||||||
@ -3963,114 +3970,93 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
|
|||||||
|
|
||||||
case 0: // default message
|
case 0: // default message
|
||||||
if (busy_state == PAUSED_FOR_USER)
|
if (busy_state == PAUSED_FOR_USER)
|
||||||
{
|
{
|
||||||
SERIAL_ECHO("{");
|
|
||||||
prusa_stat_printerstatus(15);
|
|
||||||
prusa_stat_farm_number();
|
|
||||||
prusa_stat_printinfo();
|
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
status_number = 15;
|
status_number = 15;
|
||||||
}
|
}
|
||||||
else if (isPrintPaused || card.paused)
|
else if (isPrintPaused || card.paused)
|
||||||
{
|
{
|
||||||
SERIAL_ECHO("{");
|
|
||||||
prusa_stat_printerstatus(14);
|
|
||||||
prusa_stat_farm_number();
|
|
||||||
prusa_stat_printinfo();
|
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
status_number = 14;
|
status_number = 14;
|
||||||
}
|
}
|
||||||
else if (IS_SD_PRINTING || loading_flag)
|
else if (IS_SD_PRINTING || loading_flag)
|
||||||
{
|
{
|
||||||
SERIAL_ECHO("{");
|
|
||||||
prusa_stat_printerstatus(4);
|
|
||||||
prusa_stat_farm_number();
|
|
||||||
prusa_stat_printinfo();
|
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
status_number = 4;
|
status_number = 4;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SERIAL_ECHO("{");
|
|
||||||
prusa_stat_printerstatus(1);
|
|
||||||
prusa_stat_farm_number();
|
|
||||||
prusa_stat_diameter();
|
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
status_number = 1;
|
status_number = 1;
|
||||||
}
|
}
|
||||||
|
SERIAL_ECHO('{');
|
||||||
|
prusa_stat_printerstatus(status_number);
|
||||||
|
prusa_stat_farm_number();
|
||||||
|
prusa_stat_printinfo();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1: // 1 heating
|
case 1: // 1 heating
|
||||||
farm_status = 2;
|
farm_status = 2;
|
||||||
SERIAL_ECHO("{");
|
SERIAL_ECHO('{');
|
||||||
prusa_stat_printerstatus(2);
|
prusa_stat_printerstatus(2);
|
||||||
prusa_stat_farm_number();
|
prusa_stat_farm_number();
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
status_number = 2;
|
status_number = 2;
|
||||||
farm_timer = 1;
|
farm_timer = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2: // heating done
|
case 2: // heating done
|
||||||
farm_status = 3;
|
farm_status = 3;
|
||||||
SERIAL_ECHO("{");
|
SERIAL_ECHO('{');
|
||||||
prusa_stat_printerstatus(3);
|
prusa_stat_printerstatus(3);
|
||||||
prusa_stat_farm_number();
|
prusa_stat_farm_number();
|
||||||
SERIAL_ECHOLN("}");
|
SERIAL_ECHOLN('}');
|
||||||
status_number = 3;
|
status_number = 3;
|
||||||
farm_timer = 1;
|
farm_timer = 1;
|
||||||
|
|
||||||
if (IS_SD_PRINTING || loading_flag)
|
if (IS_SD_PRINTING || loading_flag)
|
||||||
{
|
{
|
||||||
farm_status = 4;
|
farm_status = 4;
|
||||||
SERIAL_ECHO("{");
|
SERIAL_ECHO('{');
|
||||||
prusa_stat_printerstatus(4);
|
prusa_stat_printerstatus(4);
|
||||||
prusa_stat_farm_number();
|
prusa_stat_farm_number();
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
status_number = 4;
|
status_number = 4;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SERIAL_ECHO("{");
|
SERIAL_ECHO('{');
|
||||||
prusa_stat_printerstatus(3);
|
prusa_stat_printerstatus(3);
|
||||||
prusa_stat_farm_number();
|
prusa_stat_farm_number();
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
status_number = 3;
|
status_number = 3;
|
||||||
}
|
}
|
||||||
farm_timer = 1;
|
farm_timer = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3: // filament change
|
case 3: // filament change
|
||||||
|
// must do a return here to prevent doing SERIAL_ECHOLN("}") at the very end of this function
|
||||||
|
// saved a considerable amount of FLASH
|
||||||
|
return;
|
||||||
break;
|
break;
|
||||||
case 4: // print succesfull
|
case 4: // print succesfull
|
||||||
SERIAL_ECHO("{[RES:1][FIL:");
|
SERIAL_ECHO("{[RES:1][FIL:");
|
||||||
MYSERIAL.print(int(_fil_nr));
|
MYSERIAL.print(int(_fil_nr));
|
||||||
SERIAL_ECHO("]");
|
SERIAL_ECHO(']');
|
||||||
prusa_stat_printerstatus(status_number);
|
prusa_stat_printerstatus(status_number);
|
||||||
prusa_stat_farm_number();
|
prusa_stat_farm_number();
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
farm_timer = 2;
|
farm_timer = 2;
|
||||||
break;
|
break;
|
||||||
case 5: // print not succesfull
|
case 5: // print not succesfull
|
||||||
SERIAL_ECHO("{[RES:0][FIL:");
|
SERIAL_ECHO("{[RES:0][FIL:");
|
||||||
MYSERIAL.print(int(_fil_nr));
|
MYSERIAL.print(int(_fil_nr));
|
||||||
SERIAL_ECHO("]");
|
SERIAL_ECHO(']');
|
||||||
prusa_stat_printerstatus(status_number);
|
prusa_stat_printerstatus(status_number);
|
||||||
prusa_stat_farm_number();
|
prusa_stat_farm_number();
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
farm_timer = 2;
|
farm_timer = 2;
|
||||||
break;
|
break;
|
||||||
case 6: // print done
|
case 6: // print done
|
||||||
SERIAL_ECHO("{[PRN:8]");
|
SERIAL_ECHO("{[PRN:8]");
|
||||||
prusa_stat_farm_number();
|
prusa_stat_farm_number();
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
status_number = 8;
|
status_number = 8;
|
||||||
farm_timer = 2;
|
farm_timer = 2;
|
||||||
break;
|
break;
|
||||||
case 7: // print done - stopped
|
case 7: // print done - stopped
|
||||||
SERIAL_ECHO("{[PRN:9]");
|
SERIAL_ECHO("{[PRN:9]");
|
||||||
prusa_stat_farm_number();
|
prusa_stat_farm_number();
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
status_number = 9;
|
status_number = 9;
|
||||||
farm_timer = 2;
|
farm_timer = 2;
|
||||||
break;
|
break;
|
||||||
@ -4078,49 +4064,38 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
|
|||||||
SERIAL_ECHO("{[PRN:0][PFN:");
|
SERIAL_ECHO("{[PRN:0][PFN:");
|
||||||
status_number = 0;
|
status_number = 0;
|
||||||
SERIAL_ECHO(farm_no);
|
SERIAL_ECHO(farm_no);
|
||||||
SERIAL_ECHOLN("]}");
|
SERIAL_ECHO(']');
|
||||||
farm_timer = 2;
|
farm_timer = 2;
|
||||||
break;
|
break;
|
||||||
case 20: // echo farm no
|
case 20: // echo farm no
|
||||||
SERIAL_ECHO("{");
|
SERIAL_ECHO('{');
|
||||||
prusa_stat_printerstatus(status_number);
|
prusa_stat_printerstatus(status_number);
|
||||||
prusa_stat_farm_number();
|
prusa_stat_farm_number();
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
farm_timer = 4;
|
farm_timer = 4;
|
||||||
break;
|
break;
|
||||||
case 21: // temperatures
|
case 21: // temperatures
|
||||||
SERIAL_ECHO("{");
|
SERIAL_ECHO('{');
|
||||||
prusa_stat_temperatures();
|
prusa_stat_temperatures();
|
||||||
prusa_stat_farm_number();
|
prusa_stat_farm_number();
|
||||||
prusa_stat_printerstatus(status_number);
|
prusa_stat_printerstatus(status_number);
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
break;
|
break;
|
||||||
case 22: // waiting for filament change
|
case 22: // waiting for filament change
|
||||||
SERIAL_ECHO("{[PRN:5]");
|
SERIAL_ECHO("{[PRN:5]");
|
||||||
prusa_stat_farm_number();
|
prusa_stat_farm_number();
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
status_number = 5;
|
status_number = 5;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 90: // Error - Thermal Runaway
|
case 90: // Error - Thermal Runaway
|
||||||
SERIAL_ECHO("{[ERR:1]");
|
prusa_statistics_err('1');
|
||||||
prusa_stat_farm_number();
|
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
break;
|
break;
|
||||||
case 91: // Error - Thermal Runaway Preheat
|
case 91: // Error - Thermal Runaway Preheat
|
||||||
SERIAL_ECHO("{[ERR:2]");
|
prusa_statistics_err('2');
|
||||||
prusa_stat_farm_number();
|
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
break;
|
break;
|
||||||
case 92: // Error - Min temp
|
case 92: // Error - Min temp
|
||||||
SERIAL_ECHO("{[ERR:3]");
|
prusa_statistics_err('3');
|
||||||
prusa_stat_farm_number();
|
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
break;
|
break;
|
||||||
case 93: // Error - Max temp
|
case 93: // Error - Max temp
|
||||||
SERIAL_ECHO("{[ERR:4]");
|
prusa_statistics_err('4');
|
||||||
prusa_stat_farm_number();
|
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 99: // heartbeat
|
case 99: // heartbeat
|
||||||
@ -4128,11 +4103,11 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
|
|||||||
prusa_stat_temperatures();
|
prusa_stat_temperatures();
|
||||||
SERIAL_ECHO("[PFN:");
|
SERIAL_ECHO("[PFN:");
|
||||||
SERIAL_ECHO(farm_no);
|
SERIAL_ECHO(farm_no);
|
||||||
SERIAL_ECHO("]");
|
SERIAL_ECHO(']');
|
||||||
SERIAL_ECHOLN("}");
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
SERIAL_ECHOLN('}');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4140,19 +4115,19 @@ static void prusa_stat_printerstatus(int _status)
|
|||||||
{
|
{
|
||||||
SERIAL_ECHO("[PRN:");
|
SERIAL_ECHO("[PRN:");
|
||||||
SERIAL_ECHO(_status);
|
SERIAL_ECHO(_status);
|
||||||
SERIAL_ECHO("]");
|
SERIAL_ECHO(']');
|
||||||
}
|
}
|
||||||
|
|
||||||
static void prusa_stat_farm_number() {
|
static void prusa_stat_farm_number() {
|
||||||
SERIAL_ECHO("[PFN:");
|
SERIAL_ECHO("[PFN:");
|
||||||
SERIAL_ECHO(farm_no);
|
SERIAL_ECHO(farm_no);
|
||||||
SERIAL_ECHO("]");
|
SERIAL_ECHO(']');
|
||||||
}
|
}
|
||||||
|
|
||||||
static void prusa_stat_diameter() {
|
static void prusa_stat_diameter() {
|
||||||
SERIAL_ECHO("[DIA:");
|
SERIAL_ECHO("[DIA:");
|
||||||
SERIAL_ECHO(eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM));
|
SERIAL_ECHO(eeprom_read_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM));
|
||||||
SERIAL_ECHO("]");
|
SERIAL_ECHO(']');
|
||||||
}
|
}
|
||||||
|
|
||||||
static void prusa_stat_temperatures()
|
static void prusa_stat_temperatures()
|
||||||
@ -4165,7 +4140,7 @@ static void prusa_stat_temperatures()
|
|||||||
SERIAL_ECHO(current_temperature[0]);
|
SERIAL_ECHO(current_temperature[0]);
|
||||||
SERIAL_ECHO("][ATB:");
|
SERIAL_ECHO("][ATB:");
|
||||||
SERIAL_ECHO(current_temperature_bed);
|
SERIAL_ECHO(current_temperature_bed);
|
||||||
SERIAL_ECHO("]");
|
SERIAL_ECHO(']');
|
||||||
}
|
}
|
||||||
|
|
||||||
static void prusa_stat_printinfo()
|
static void prusa_stat_printinfo()
|
||||||
@ -4189,7 +4164,7 @@ static void prusa_stat_printinfo()
|
|||||||
}
|
}
|
||||||
SERIAL_ECHO("][FWR:");
|
SERIAL_ECHO("][FWR:");
|
||||||
SERIAL_ECHO(FW_VERSION);
|
SERIAL_ECHO(FW_VERSION);
|
||||||
SERIAL_ECHO("]");
|
SERIAL_ECHO(']');
|
||||||
prusa_stat_diameter();
|
prusa_stat_diameter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user