diff --git a/src/device/deviceSVG.tsx b/src/device/deviceSVG.tsx index d6399f7..e279268 100644 --- a/src/device/deviceSVG.tsx +++ b/src/device/deviceSVG.tsx @@ -5204,6 +5204,933 @@ export default function DeviceSVG(props: Props) { ); }; + const streamlineMonitorSVG = () => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {/* buttons for port selection */} + {/* I2C PORTS */} + { + openMenu(e, { + address: 0, //address here is not important for I2C, the restrictions are per component not per port + addressType: quack.AddressType.ADDRESS_TYPE_I2C, + label: "1", + autoDetectable: false + }); + }} + className={classes.testButton} + id="button" + cx="20.5" + cy="44" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* CONFIGURABLE PIN PORTS - Note input Ports 3 and 4 and all control ports are locked for the monitor */} + {/* PORT 1 */} + { + openMenu(e, { + address: 1, + addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + label: "1", + autoDetectable: true + }); + }} + className={classes.testButton} + id="button" + cx="20" + cy="80" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* PORT 2 */} + { + openMenu(e, { + address: 2, + addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + label: "2", + autoDetectable: true + }); + }} + className={classes.testButton} + id="button" + cx="20.5" + cy="116" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* PORT 3 */} + { + setLockOpen(true); + // openMenu(e, { + // address: 4, + // addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + // label: "3", + // autoDetectable: true + // }); + }} + className={classes.testButton} + id="button" + cx="21.5" + cy="153" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* Port 4 */} + { + setLockOpen(true); + // openMenu(e, { + // address: 8, + // addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + // label: "3", + // autoDetectable: true + // }); + }} + className={classes.testButton} + id="button" + cx="21.5" + cy="189" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* Controller ports - note these are all locked for monitor devices */} + {/* PORT C1 */} + { + setLockOpen(true); + // openMenu(e, { + // address: 2, + // addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + // label: "2", + // autoDetectable: true + // }); + }} + className={classes.testButton} + id="button" + cx="98" + cy="206" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* PORT C2 */} + { + setLockOpen(true); + // openMenu(e, { + // address: 4, + // addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + // label: "3", + // autoDetectable: true + // }); + }} + className={classes.testButton} + id="button" + cx="140" + cy="206" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* Port C3 */} + { + setLockOpen(true); + // openMenu(e, { + // address: 8, + // addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + // label: "3", + // autoDetectable: true + // }); + }} + className={classes.testButton} + id="button" + cx="182" + cy="206" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + + ); + }; + + const streamlineAutomateSVG = () => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {/* buttons for port selection */} + {/* I2C PORTS */} + { + openMenu(e, { + address: 0, //address here is not important for I2C, the restrictions are per component not per port + addressType: quack.AddressType.ADDRESS_TYPE_I2C, + label: "1", + autoDetectable: false + }); + }} + className={classes.testButton} + id="button" + cx="17" + cy="44" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* CONFIGURABLE PIN PORTS - Note input Ports 3 and 4 and all control ports are locked for the monitor */} + {/* PORT 1 */} + { + openMenu(e, { + address: 1, + addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + label: "1", + autoDetectable: true + }); + }} + className={classes.testButton} + id="button" + cx="17" + cy="80" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* PORT 2 */} + { + openMenu(e, { + address: 2, + addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + label: "2", + autoDetectable: true + }); + }} + className={classes.testButton} + id="button" + cx="17" + cy="116" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* PORT 3 */} + { + openMenu(e, { + address: 4, + addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + label: "3", + autoDetectable: true + }); + }} + className={classes.testButton} + id="button" + cx="17" + cy="152" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* Port 4 */} + { + openMenu(e, { + address: 8, + addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + label: "4", + autoDetectable: true + }); + }} + className={classes.testButton} + id="button" + cx="17" + cy="188" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* Controller ports - note these are all locked for monitor devices */} + {/* PORT C1 */} + { + openMenu(e, { + address: 2, + addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + label: "C1", + autoDetectable: true + }); + }} + className={classes.testButton} + id="button" + cx="95" + cy="207" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* PORT C2 */} + { + openMenu(e, { + address: 4, + addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + label: "C2", + autoDetectable: true + }); + }} + className={classes.testButton} + id="button" + cx="138" + cy="207" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + {/* Port C3 */} + { + openMenu(e, { + address: 8, + addressType: quack.AddressType.ADDRESS_TYPE_CONFIGURABLE_PIN_ARRAY, + label: "C3", + autoDetectable: true + }); + }} + className={classes.testButton} + id="button" + cx="180" + cy="207" + rx={buttonSize.rxLarge} + ry={buttonSize.ryLarge} + /> + + ); + }; + const getProductSVG = () => { switch (device.settings.product) { case pond.DeviceProduct.DEVICE_PRODUCT_BINDAPT_PLUS_PRO: @@ -5232,6 +6159,10 @@ export default function DeviceSVG(props: Props) { return miVentSVG(); case pond.DeviceProduct.DEVICE_PRODUCT_MIVENT_V2: return miVentSVG(true); + case pond.DeviceProduct.DEVICE_PRODUCT_STREAMLINE_MONITOR: + return streamlineMonitorSVG(); + case pond.DeviceProduct.DEVICE_PRODUCT_STREAMLINE_AUTOMATE: + return streamlineAutomateSVG(); } }; diff --git a/src/firmware/UploadFirmware.tsx b/src/firmware/UploadFirmware.tsx index d985f7a..aa5aa41 100644 --- a/src/firmware/UploadFirmware.tsx +++ b/src/firmware/UploadFirmware.tsx @@ -79,7 +79,8 @@ class UploadFirmware extends React.Component { pond.DevicePlatform.DEVICE_PLATFORM_V2_CELLULAR_BLACK, pond.DevicePlatform.DEVICE_PLATFORM_V2_CELLULAR_GREEN, pond.DevicePlatform.DEVICE_PLATFORM_V2_CELLULAR_BLUE, - pond.DevicePlatform.DEVICE_PLATFORM_V2_WIFI_BLUE + pond.DevicePlatform.DEVICE_PLATFORM_V2_WIFI_BLUE, + pond.DevicePlatform.DEVICE_PLATFORM_V2_ETHERNET_BLUE ].includes(platform); var isChannelValid = [ pond.UpgradeChannel.UPGRADE_CHANNEL_ALPHA, @@ -229,6 +230,9 @@ class UploadFirmware extends React.Component { V2 Wifi Blue + + + V2 Ethernet Blue = new Map([ @@ -29,7 +30,8 @@ const featureVersions: Map = new Map([ v2CellBlack: "2.0.44", v2CellGreen: "2.0.44", v2WifiBlue: "2.0.44", - v2CellBlue: "2.0.44" + v2CellBlue: "2.0.44", + v2EthBlue: "2.0.44" } ] ]); @@ -118,6 +120,8 @@ export class Device { return this.status.firmwareVersion >= versions.v2WifiBlue; case pond.DevicePlatform.DEVICE_PLATFORM_V2_CELLULAR_BLUE: return this.status.firmwareVersion >= versions.v2CellBlue; + case pond.DevicePlatform.DEVICE_PLATFORM_V2_ETHERNET_BLUE: + return this.status.firmwareVersion >= versions.v2EthBlue; default: return false; } diff --git a/src/pages/DeviceSupport.tsx b/src/pages/DeviceSupport.tsx index 20bf476..a6a19de 100644 --- a/src/pages/DeviceSupport.tsx +++ b/src/pages/DeviceSupport.tsx @@ -301,6 +301,9 @@ export default function DeviceSupport() { V2 Cellular Blue + + V2 Ethernet Blue +