From 63dfcfabdb3806bfc56f85e55ad38b66c8c86d6b Mon Sep 17 00:00:00 2001 From: Cellivar <1441553+Cellivar@users.noreply.github.com> Date: Thu, 4 Sep 2025 21:04:01 -0700 Subject: [PATCH] Add network config handling --- demo/advanced.html | 86 +++- demo/test_advanced.ts | 37 ++ docs/zpl/networks.md | 128 +++++ src/Languages/Zpl/CmdHostConfig.test.ts | 8 + src/Languages/Zpl/CmdHostConfig.ts | 37 +- src/Languages/Zpl/CmdNetworkSettings.ts | 54 +++ src/Languages/Zpl/CmdXmlQuery.test.ts | 3 + src/Languages/Zpl/Config.ts | 45 ++ src/Languages/Zpl/ZplPrinterCommandSet.ts | 6 +- src/Languages/Zpl/index.ts | 1 + src/Languages/Zpl/test_files/LP2844_Z_NET.txt | 55 +++ src/Languages/Zpl/test_files/LP2844_Z_NET.xml | 458 ++++++++++++++++++ .../Zpl/test_files/LP2844_Z_NET_CONF.ts.snap | 31 ++ .../Zpl/test_files/LP2844_Z_NET_FULL.ts.snap | 61 +++ src/Languages/Zpl/test_files/index.test.ts | 5 + 15 files changed, 1011 insertions(+), 4 deletions(-) create mode 100644 docs/zpl/networks.md create mode 100644 src/Languages/Zpl/CmdNetworkSettings.ts create mode 100644 src/Languages/Zpl/test_files/LP2844_Z_NET.txt create mode 100644 src/Languages/Zpl/test_files/LP2844_Z_NET.xml create mode 100644 src/Languages/Zpl/test_files/LP2844_Z_NET_CONF.ts.snap create mode 100644 src/Languages/Zpl/test_files/LP2844_Z_NET_FULL.ts.snap diff --git a/demo/advanced.html b/demo/advanced.html index 3f4781f..85e1d09 100644 --- a/demo/advanced.html +++ b/demo/advanced.html @@ -226,8 +226,13 @@ // Power up/head close actions modalZplPowerUpAction : HTMLSelectElement modalZplHeadCloseAction: HTMLSelectElement - } + // Networking + modalNetworkProtocolMode : HTMLSelectElement + modalNetworkIpAddress : HTMLInputElement + modalNetworkDefaultGateway: HTMLInputElement + modalNetworkNetmask : HTMLInputElement + } // A function to find and hide any alerts for a given alert ID. function hideAlerts(alertId: string) { @@ -372,6 +377,11 @@

${titleHtml}

const config = printer.printerOptions; // If the printer uses ZPL it will have a special config, show those! const isZpl = config instanceof WebLabel.ZPL.ZplPrinterConfig; + // If the printer has an IP address show the networking config! + let isNetwork = false; + if (isZpl) { + isNetwork = config.ipResolutionMode !== undefined; + } const formElement = this.configModal.querySelector('form')!; const form = formElement.elements as ConfigModalForm; @@ -384,6 +394,13 @@

${titleHtml}

e.classList.add('d-none'); } } + for (const e of formElement.querySelectorAll('.modal-setting-network')) { + if (isNetwork) { + e.classList.remove('d-none'); + } else { + e.classList.add('d-none'); + } + } // Translate the available speeds to options to be selected form.modalSpeed.innerHTML = ''; @@ -440,6 +457,14 @@

${titleHtml}

form.modalZplPowerUpAction.value = config.actionPowerUp.toString(); form.modalZplHeadCloseAction.value = config.actionHeadClose.toString(); + + if (isNetwork) { + form.modalNetworkIpAddress.value = config.ipAddress ?? ""; + form.modalNetworkDefaultGateway.value = config.defaultGateway ?? ""; + form.modalNetworkNetmask.value = config.subnetMask ?? ""; + form.modalNetworkProtocolMode.value = config.ipResolutionMode ?? "ALL"; + // TODO: On protocol change lock out IP settings for DHCP + } } this.configModalHandle.show(); @@ -745,6 +770,17 @@

${titleHtml}

ribbonThreshold : Number(form.modalZplRibbonTHold.value), webThreshold : Number(form.modalZplWebTHold.value), })); + + + const isNetwork = printer.printerOptions.ipResolutionMode !== undefined; + if (isNetwork) { + configDoc.andThen(new WebLabel.ZPL.CmdSetNetworkIpResolutionMode( + form.modalNetworkProtocolMode.value as WebLabel.ZPL.NetworkIpResolutionMode, + form.modalNetworkIpAddress.value, + form.modalNetworkNetmask.value, + form.modalNetworkDefaultGateway.value + )) + } } let doc: WebLabel.IDocument; @@ -1035,6 +1071,54 @@
Printer Settings
+