Merge pull request #3012 from leptun/MK3_IP_support
M552 - Printer IP address
This commit is contained in:
commit
f7fd7a5331
@ -501,4 +501,6 @@ void raise_z_above(float target, bool plan=true);
|
||||
|
||||
extern "C" void softReset();
|
||||
|
||||
extern uint32_t IP_address;
|
||||
|
||||
#endif
|
||||
|
@ -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=============================
|
||||
//===========================================================================
|
||||
@ -3732,6 +3734,7 @@ extern uint8_t st_backlash_y;
|
||||
//!@n M503 - print the current settings (from memory not from EEPROM)
|
||||
//!@n M509 - force language selection on next restart
|
||||
//!@n M540 - Use S[0|1] to enable or disable the stop SD card print on endstop hit (requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
|
||||
//!@n M552 - Set IP address
|
||||
//!@n M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
|
||||
//!@n M605 - Set dual x-carriage movement mode: S<mode> [ X<duplication x-offset> R<duplication temp offset> ]
|
||||
//!@n M860 - Wait for PINDA thermistor to reach target temperature.
|
||||
@ -8004,6 +8007,36 @@ Sigma_Exit:
|
||||
}
|
||||
#endif // CUSTOM_M_CODE_SET_Z_PROBE_OFFSET
|
||||
|
||||
/*!
|
||||
### M552 - Set IP address <a href="https://reprap.org/wiki/G-code#M552:_Set_IP_address.2C_enable.2Fdisable_network_interface">M552: Set IP address, enable/disable network interface"</a>
|
||||
Sets the printer IP address that is shown in the support menu. Designed to be used with the help of host software.
|
||||
If P is not specified nothing happens.
|
||||
If the structure of the IP address is invalid, 0.0.0.0 is assumed and nothing is shown on the screen in the Support menu.
|
||||
#### Usage
|
||||
|
||||
M552 [ P<IP_address> ]
|
||||
|
||||
#### Parameters
|
||||
- `P` - The IP address in xxx.xxx.xxx.xxx format. Eg: P192.168.1.14
|
||||
*/
|
||||
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
|
||||
|
||||
/*!
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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]);
|
||||
}
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user