M552 - Printer IP address

This commit is contained in:
Alex Voinea 2021-02-02 13:21:16 +02:00
parent 2b81abb24c
commit 2f4119a6d7
5 changed files with 50 additions and 12 deletions

View File

@ -501,4 +501,6 @@ void raise_z_above(float target, bool plan=true);
extern "C" void softReset();
extern uint32_t IP_address;
#endif

View File

@ -321,6 +321,8 @@ uint16_t print_time_remaining_normal = PRINT_TIME_REMAINING_INIT; //estimated re
uint8_t print_percent_done_silent = PRINT_PERCENT_DONE_INIT;
uint16_t print_time_remaining_silent = PRINT_TIME_REMAINING_INIT; //estimated remaining print time in minutes
uint32_t IP_address = 0;
//===========================================================================
//=============================Private Variables=============================
//===========================================================================
@ -8003,6 +8005,23 @@ Sigma_Exit:
break;
}
#endif // CUSTOM_M_CODE_SET_Z_PROBE_OFFSET
case 552:
{
if (code_seen('P'))
{
uint8_t valCnt = 0;
IP_address = 0;
do
{
*strchr_pointer = '*';
((uint8_t*)&IP_address)[valCnt] = code_value_short();
valCnt++;
} while ((valCnt < 4) && code_seen('.'));
if (valCnt != 4)
IP_address = 0;
}
} break;
#ifdef FILAMENTCHANGEENABLE

View File

@ -2057,8 +2057,8 @@ static void lcd_support_menu()
{ // 22bytes total
int8_t status; // 1byte
bool is_flash_air; // 1byte
uint8_t ip[4]; // 4bytes
char ip_str[3*4+3+1]; // 16bytes
uint32_t ip; // 4bytes
char ip_str[IP4_STR_SIZE]; // 16bytes
} _menu_data_t;
static_assert(sizeof(menu_data)>= sizeof(_menu_data_t),"_menu_data_t doesn't fit into menu_data");
_menu_data_t* _md = (_menu_data_t*)&(menu_data[0]);
@ -2069,17 +2069,10 @@ static void lcd_support_menu()
_md->status = 1;
_md->is_flash_air = card.ToshibaFlashAir_isEnabled();
if (_md->is_flash_air) {
card.ToshibaFlashAir_GetIP(_md->ip); // ip[4] filled with 0 if it failed
// Prepare IP string from ip[4]
sprintf_P(_md->ip_str, PSTR("%d.%d.%d.%d"),
_md->ip[0], _md->ip[1],
_md->ip[2], _md->ip[3]);
card.ToshibaFlashAir_GetIP((uint8_t*)(&_md->ip)); // ip == 0 if it failed
}
} else if (_md->is_flash_air &&
_md->ip[0] == 0 && _md->ip[1] == 0 &&
_md->ip[2] == 0 && _md->ip[3] == 0 &&
++ _md->status == 16)
{
} else if (_md->is_flash_air && _md->ip == 0 && ++ _md->status == 16)
{
// Waiting for the FlashAir card to get an IP address from a router. Force an update.
_md->status = 0;
}
@ -2143,6 +2136,20 @@ static void lcd_support_menu()
MENU_ITEM_BACK_P(PSTR(" "));
if (((menu_item - 1) == menu_line) && lcd_draw_update) {
lcd_set_cursor(2, menu_row);
ip4_to_str(_md->ip_str, (uint8_t*)(&_md->ip));
lcd_printf_P(PSTR("%s"), _md->ip_str);
}
}
// Show the printer IP address, if it is available.
if (IP_address) {
MENU_ITEM_BACK_P(STR_SEPARATOR);
MENU_ITEM_BACK_P(PSTR("Printer IP Addr:")); //c=18 r=1
MENU_ITEM_BACK_P(PSTR(" "));
if (((menu_item - 1) == menu_line) && lcd_draw_update) {
lcd_set_cursor(2, menu_row);
ip4_to_str(_md->ip_str, (uint8_t*)(&IP_address));
lcd_printf_P(PSTR("%s"), _md->ip_str);
}
}

View File

@ -4,6 +4,7 @@
#include "sound.h"
#include "language.h"
#include "util.h"
#include <avr/pgmspace.h>
// Allocate the version string in the program memory. Otherwise the string lands either on the stack or in the global RAM.
const char FW_VERSION_STR[] PROGMEM = FW_VERSION;
@ -604,3 +605,9 @@ else {
sPrinterName=_sPrinterName;
}
}
void ip4_to_str(char* dest, uint8_t* IP)
{
sprintf_P(dest, PSTR("%u.%u.%u.%u"), IP[0], IP[1], IP[2], IP[3]);
}

View File

@ -110,4 +110,7 @@ void gcode_level_check(uint16_t nGcodeLevel);
void fSetMmuMode(bool bMMu);
#define IP4_STR_SIZE 16
extern void ip4_to_str(char* dest, uint8_t* IP);
#endif /* UTIL_H */