Browse Source

Update deps, add ethernet config

pull/55/head
Sacha Weatherstone 4 years ago
parent
commit
aa01bb206f
No known key found for this signature in database GPG Key ID: 7AB2D7E206124B31
  1. 6
      package.json
  2. 169
      pnpm-lock.yaml
  3. 55
      src/components/PageComponents/Config/Network.tsx
  4. 2
      src/components/Sidebar.tsx
  5. 16
      src/components/form/Input.tsx
  6. 2
      src/components/form/Select.tsx
  7. 26
      src/validation/config/network.ts

6
package.json

@ -25,7 +25,7 @@
"@heroicons/react": "^2.0.12",
"@hookform/resolvers": "^2.9.10",
"@meshtastic/eslint-config": "^1.0.8",
"@meshtastic/meshtasticjs": "^0.6.109",
"@meshtastic/meshtasticjs": "^0.6.110",
"@tailwindcss/line-clamp": "^0.4.2",
"@tailwindcss/typography": "^0.5.7",
"base64-js": "^1.5.1",
@ -35,7 +35,7 @@
"class-validator": "^0.13.2",
"date-fns": "^2.29.3",
"geodesy": "^2.4.0",
"immer": "^9.0.15",
"immer": "^9.0.16",
"mapbox-gl": "npm:empty-npm-package@^1.0.0",
"maplibre-gl": "^2.4.0",
"pretty-ms": "^8.0.0",
@ -50,7 +50,7 @@
"react-map-gl": "^7.0.19",
"react-qrcode-logo": "^2.8.0",
"rfc4648": "^1.5.2",
"zustand": "4.1.2"
"zustand": "4.1.3"
},
"devDependencies": {
"@tailwindcss/forms": "^0.5.3",

169
pnpm-lock.yaml

@ -6,7 +6,7 @@ specifiers:
'@heroicons/react': ^2.0.12
'@hookform/resolvers': ^2.9.10
'@meshtastic/eslint-config': ^1.0.8
'@meshtastic/meshtasticjs': ^0.6.109
'@meshtastic/meshtasticjs': ^0.6.110
'@tailwindcss/forms': ^0.5.3
'@tailwindcss/line-clamp': ^0.4.2
'@tailwindcss/typography': ^0.5.7
@ -27,7 +27,7 @@ specifiers:
date-fns: ^2.29.3
geodesy: ^2.4.0
gzipper: ^7.1.0
immer: ^9.0.15
immer: ^9.0.16
mapbox-gl: npm:empty-npm-package@^1.0.0
maplibre-gl: ^2.4.0
postcss: ^8.4.18
@ -53,7 +53,7 @@ specifiers:
unimported: ^1.22.0
vite: ^3.1.8
vite-plugin-environment: ^1.1.3
zustand: 4.1.2
zustand: 4.1.3
dependencies:
'@emeraldpay/hashicon-react': 0.5.2
@ -61,7 +61,7 @@ dependencies:
'@heroicons/react': 2.0[email protected]
'@hookform/resolvers': 2.9[email protected]
'@meshtastic/eslint-config': 1.0.8
'@meshtastic/meshtasticjs': link:../meshtastic.js
'@meshtastic/meshtasticjs': 0.6.110
'@tailwindcss/line-clamp': 0.4[email protected]
'@tailwindcss/typography': 0.5[email protected]
base64-js: 1.5.1
@ -71,7 +71,7 @@ dependencies:
class-validator: 0.13.2
date-fns: 2.29.3
geodesy: 2.4.0
immer: 9.0.15
immer: 9.0.16
mapbox-gl: /empty-npm-package/1.0.0
maplibre-gl: 2.4.0
pretty-ms: 8.0.0
@ -86,7 +86,7 @@ dependencies:
react-map-gl: 7.0.19_6eczaga5xxiwzxtfiyk6fioasq
react-qrcode-logo: 2.8.0_biqbaboplfbrettd7655fr4n2y
rfc4648: 1.5.2
zustand: 4.1.[email protected][email protected]
zustand: 4.1.[email protected][email protected]
devDependencies:
'@tailwindcss/forms': 0.5[email protected]
@ -636,6 +636,17 @@ packages:
- supports-color
dev: false
/@meshtastic/meshtasticjs/0.6.110:
resolution: {integrity: sha512-pqWDg12NKcWRFqvrrG0KIaESZG+e4HqT9zFQKOcf0DwI1xw0f7d7qaa4UNYK6BSOtY7CxAjYuTwxn6O4vYXwZw==}
dependencies:
'@protobuf-ts/runtime': 2.8.1
'@serialport/stream': 10.3.0
serialport: 10.4.0
sub-events: 1.9.0
transitivePeerDependencies:
- supports-color
dev: false
/@nodelib/fs.scandir/2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@ -654,6 +665,106 @@ packages:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.13.0
/@protobuf-ts/runtime/2.8.1:
resolution: {integrity: sha512-D9M5hSumYCovIfNllt7N6ODh4q+LrjiMWtNETvooaf+a2XheZJ7kgjFlsFghti0CFWwtA//of4JXQfw9hU+cCw==}
dev: false
/@serialport/binding-mock/10.2.2:
resolution: {integrity: sha512-HAFzGhk9OuFMpuor7aT5G1ChPgn5qSsklTFOTUX72Rl6p0xwcSVsRtG/xaGp6bxpN7fI9D/S8THLBWbBgS6ldw==}
engines: {node: '>=12.0.0'}
dependencies:
'@serialport/bindings-interface': 1.2.2
debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: false
/@serialport/bindings-cpp/10.7.0:
resolution: {integrity: sha512-Xx1wA2UCG2loS32hxNvWJI4smCzGKhWqE85//fLRzHoGgE1lSLe3Nk7W40/ebrlGFHWRbQZmeaIF4chb2XLliA==}
engines: {node: '>=12.17.0 <13.0 || >=14.0.0'}
requiresBuild: true
dependencies:
'@serialport/bindings-interface': 1.2.1
'@serialport/parser-readline': 10.3.0
debug: 4.3.4
node-addon-api: 4.3.0
node-gyp-build: 4.5.0
transitivePeerDependencies:
- supports-color
dev: false
/@serialport/bindings-interface/1.2.1:
resolution: {integrity: sha512-63Dyqz2gtryRDDckFusOYqLYhR3Hq/M4sEdbF9i/VsvDb6T+tNVgoAKUZ+FMrXXKnCSu+hYbk+MTc0XQANszxw==}
engines: {node: ^12.22 || ^14.13 || >=16}
dev: false
/@serialport/bindings-interface/1.2.2:
resolution: {integrity: sha512-CJaUd5bLvtM9c5dmO9rPBHPXTa9R2UwpkJ0wdh9JCYcbrPWsKz+ErvR0hBLeo7NPeiFdjFO4sonRljiw4d2XiA==}
engines: {node: ^12.22 || ^14.13 || >=16}
dev: false
/@serialport/parser-byte-length/10.3.0:
resolution: {integrity: sha512-pJ/VoFemzKRRNDHLhFfPThwP40QrGaEnm9TtwL7o2GihEPwzBg3T0bN13ew5TpbbUYZdMpUtpm3CGfl6av9rUQ==}
engines: {node: '>=12.0.0'}
dev: false
/@serialport/parser-cctalk/10.3.0:
resolution: {integrity: sha512-8ujmk8EvVbDPrNF4mM33bWvUYJOZ0wXbY3WCRazHRWvyCdL0VO0DQvW81ZqgoTpiDQZm5r8wQu9rmuemahF6vQ==}
engines: {node: '>=12.0.0'}
dev: false
/@serialport/parser-delimiter/10.3.0:
resolution: {integrity: sha512-9E4Vj6s0UbbcCCTclwegHGPYjJhdm9qLCS0lowXQDEQC5naZnbsELemMHs93nD9jHPcyx1B4oXkMnVZLxX5TYw==}
engines: {node: '>=12.0.0'}
dev: false
/@serialport/parser-inter-byte-timeout/10.3.0:
resolution: {integrity: sha512-wKP0QK85NHgvT6BBB1qBfKBBU4pf8kespNXAZBUYmFT+P4n8r8IZE2mqigCD+AiZcfWNQoAizwOsT/Jx/qeVig==}
engines: {node: '>=12.0.0'}
dev: false
/@serialport/parser-packet-length/10.3.0:
resolution: {integrity: sha512-bj0cWzt8YSQj/E5fRQVYdi4TsfTlZQrXlXrUwjyTsCONv8IPOHzsz+yY0fw5SEMiJtaLyqvPkCHLsttOd/zFsg==}
engines: {node: '>=8.6.0'}
dev: false
/@serialport/parser-readline/10.3.0:
resolution: {integrity: sha512-ki3ATZ3/RAqnqGROBKE7k+OeZ0DZXZ53GTca4q71OU5RazbbNhTOBQLKLXD3v9QZXCMJdg4hGW/2Y0DuMUqMQg==}
engines: {node: '>=12.0.0'}
dependencies:
'@serialport/parser-delimiter': 10.3.0
dev: false
/@serialport/parser-ready/10.3.0:
resolution: {integrity: sha512-1owywJ4p592dJyVrEJZPIh6pUZ3/y/LN6kGTDH2wxdewRUITo/sGvDy0er5i2+dJD3yuowiAz0dOHSdz8tevJA==}
engines: {node: '>=12.0.0'}
dev: false
/@serialport/parser-regex/10.3.0:
resolution: {integrity: sha512-tIogTs7CvTH+UUFnsvE7i33MSISyTPTGPWlglWYH2/5coipXY503jlaYS1YGe818wWNcSx6YAjMZRdhTWwM39w==}
engines: {node: '>=12.0.0'}
dev: false
/@serialport/parser-slip-encoder/10.3.0:
resolution: {integrity: sha512-JI0ILF5sylWn8f0MuMzHFBix/iMUTa79/Z95KaPZYnVaEdA7h7hh/o21Jmon/26P3RJwL1SNJCjZ81zfan+LtQ==}
engines: {node: '>=12.0.0'}
dev: false
/@serialport/parser-spacepacket/10.3.0:
resolution: {integrity: sha512-PDF73ClEPsClD1FEJZHNuBevDKsJCkqy/XD5+S5eA6+tY5D4HLrVgSWsg+3qqB6+dlpwf2CzHe+uO8D3teuKHA==}
engines: {node: '>=12.0.0'}
dev: false
/@serialport/stream/10.3.0:
resolution: {integrity: sha512-7sooi5fHogYNVEJwxVdg872xO6TuMgQd2E9iRmv+o8pk/1dbBnPkmH6Ka3st1mVE+0KnIJqVlgei+ncSsqXIGw==}
engines: {node: '>=12.0.0'}
dependencies:
'@serialport/bindings-interface': 1.2.1
debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: false
/@stablelib/binary/1.0.1:
resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==}
dependencies:
@ -2430,8 +2541,8 @@ packages:
resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==}
engines: {node: '>= 4'}
/immer/9.0.15:
resolution: {integrity: sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==}
/immer/9.0.16:
resolution: {integrity: sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==}
dev: false
/import-fresh/3.3.0:
@ -2909,6 +3020,15 @@ packages:
/natural-compare/1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
/node-addon-api/4.3.0:
resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==}
dev: false
/node-gyp-build/4.5.0:
resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==}
hasBin: true
dev: false
/node-modules-regexp/1.0.0:
resolution: {integrity: sha512-JMaRS9L4wSRIR+6PTVEikTrq/lMGEZR43a48ETeilY0Q0iMwVnccMFrUM1k+tNzmYuIU0Vh710bCUqHX+/+ctQ==}
engines: {node: '>=0.10.0'}
@ -3633,6 +3753,28 @@ packages:
dependencies:
lru-cache: 6.0.0
/serialport/10.4.0:
resolution: {integrity: sha512-PszPM5SnFMgSXom60PkKS2A9nMlNbHkuoyRBlzdSWw9rmgOn258+V0dYbWMrETJMM+TJV32vqBzjg5MmmUMwMw==}
engines: {node: '>=12.0.0'}
dependencies:
'@serialport/binding-mock': 10.2.2
'@serialport/bindings-cpp': 10.7.0
'@serialport/parser-byte-length': 10.3.0
'@serialport/parser-cctalk': 10.3.0
'@serialport/parser-delimiter': 10.3.0
'@serialport/parser-inter-byte-timeout': 10.3.0
'@serialport/parser-packet-length': 10.3.0
'@serialport/parser-readline': 10.3.0
'@serialport/parser-ready': 10.3.0
'@serialport/parser-regex': 10.3.0
'@serialport/parser-slip-encoder': 10.3.0
'@serialport/parser-spacepacket': 10.3.0
'@serialport/stream': 10.3.0
debug: 4.3.4
transitivePeerDependencies:
- supports-color
dev: false
/shebang-command/2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@ -3798,6 +3940,11 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
/sub-events/1.9.0:
resolution: {integrity: sha512-dnFBayilG9Ku0k/lNs1Y7WV4kv91+ovCoeBV3uIYrY49DylvBb6z9d9ED2ctcrvX2YlReFalpCgJNtSgmrOaJg==}
engines: {node: '>=10.0.0'}
dev: false
/supercluster/7.1.5:
resolution: {integrity: sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==}
dependencies:
@ -4227,8 +4374,8 @@ packages:
engines: {node: '>=10'}
dev: false
/zustand/4.1.[email protected][email protected]:
resolution: {integrity: sha512-gcRaKchcxFPbImrBb/BKgujOhHhik9YhVpIeP87ETT7uokEe2Szu7KkuZ9ghjtD+/KKkcrRNktR2AiLXPIbKIQ==}
/zustand/4.1.[email protected][email protected]:
resolution: {integrity: sha512-AdFyr6+4sVD6xlyc/ArQaOrleqzxJEBbAXglufZ5lgvisoz8GUN3icOrKOnX1uRSxmpmdVUQPen9hhymWIzhBg==}
engines: {node: '>=12.7.0'}
peerDependencies:
immer: '>=9.0'
@ -4239,7 +4386,7 @@ packages:
react:
optional: true
dependencies:
immer: 9.0.15
immer: 9.0.16
react: 18.2.0
use-sync-external-store: 1.2[email protected]
dev: false

55
src/components/PageComponents/Config/Network.tsx

@ -33,6 +33,12 @@ export const Network = (): JSX.Element => {
defaultValue: false,
});
const ethEnabled = useWatch({
control,
name: "ethEnabled",
defaultValue: false,
});
useEffect(() => {
reset(config.network);
}, [reset, config.network]);
@ -108,8 +114,57 @@ export const Network = (): JSX.Element => {
label="NTP Server"
description="NTP server for time synchronization"
error={errors.ntpServer?.message}
disabled={!wifiEnabled && !ethEnabled}
{...register("ntpServer")}
/>
<Controller
name="ethEnabled"
control={control}
render={({ field: { value, ...rest } }) => (
<Toggle
label="Ethernet Enabled"
description="Enable or disbale the Ethernet port"
checked={value}
{...rest}
/>
)}
/>
<Select
label="Ethernet Mode"
description="Address assignment selection"
disabled={!ethEnabled}
{...register("ethMode", { valueAsNumber: true })}
>
{renderOptions(Protobuf.Config_NetworkConfig_WiFiMode)}
</Select>
<Input
label="Ethernet IP"
description="IP Address"
error={errors.wifiSsid?.message}
disabled={!ethEnabled}
{...register("ethConfig.ip")}
/>
<Input
label="Ethernet Gateway"
description="Default Gatewat"
error={errors.wifiSsid?.message}
disabled={!ethEnabled}
{...register("ethConfig.gateway")}
/>
<Input
label="Ethernet Subnet"
description="Subnet Mask"
error={errors.wifiSsid?.message}
disabled={!ethEnabled}
{...register("ethConfig.subnet")}
/>
<Input
label="Ethernet DNS"
description="DNS Server"
error={errors.wifiSsid?.message}
disabled={!ethEnabled}
{...register("ethConfig.dns")}
/>
</Form>
);
};

2
src/components/Sidebar.tsx

@ -34,7 +34,7 @@ export const Sidebar = (): JSX.Element => {
removeDevice(selectedDevice ?? 0);
}}
reconnect={() => {
console.log("");
void connection?.disconnect();
}}
/>

16
src/components/form/Input.tsx

@ -16,7 +16,16 @@ export interface InputProps extends InputHTMLAttributes<HTMLInputElement> {
}
export const Input = forwardRef<HTMLInputElement, InputProps>(function Input(
{ label, description, prefix, suffix, action, error, ...rest }: InputProps,
{
label,
description,
prefix,
suffix,
action,
error,
disabled,
...rest
}: InputProps,
ref
) {
return (
@ -34,7 +43,10 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(function Input(
ref={ref}
className={`flex h-10 w-full rounded-md border-transparent bg-orange-100 px-3 text-sm focus:border-transparent focus:outline-none focus:ring-2 focus:ring-orange-500 ${
prefix ? "rounded-l-none" : ""
} ${action ? "rounded-r-none" : ""}`}
} ${action ? "rounded-r-none" : ""} ${
disabled ? "cursor-not-allowed bg-orange-50 text-orange-200" : ""
}`}
disabled={disabled}
{...rest}
/>
{suffix && (

2
src/components/form/Select.tsx

@ -43,7 +43,7 @@ export const Select = forwardRef<HTMLSelectElement, SelectProps>(function Input(
className={`flex h-10 w-full rounded-md border-transparent bg-orange-100 px-3 text-sm focus:border-transparent focus:outline-none focus:ring-2 focus:ring-orange-500 ${
prefix ? "rounded-l-none" : ""
} ${action ? "rounded-r-none" : ""} ${
disabled ? "cursor-not-allowed" : ""
disabled ? "cursor-not-allowed bg-orange-50 text-orange-200" : ""
}`}
disabled={disabled}
{...rest}

26
src/validation/config/network.ts

@ -1,4 +1,4 @@
import { IsBoolean, IsEnum, Length } from "class-validator";
import { IsBoolean, IsEnum, IsIP, Length } from "class-validator";
import { Protobuf } from "@meshtastic/meshtasticjs";
@ -17,4 +17,28 @@ export class NetworkValidation implements Protobuf.Config_NetworkConfig {
@Length(2, 30)
ntpServer: string;
@IsBoolean()
ethEnabled: boolean;
@IsEnum(Protobuf.Config_NetworkConfig_EthMode)
ethMode: Protobuf.Config_NetworkConfig_EthMode;
ethConfig: NetworkValidation_ethConfig;
}
export class NetworkValidation_ethConfig
implements Protobuf.Config_NetworkConfig_NetworkConfig
{
@IsIP()
ip: number;
@IsIP()
gateway: number;
@IsIP()
subnet: number;
@IsIP()
dns: number;
}

Loading…
Cancel
Save