Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified disk/disk.img
Binary file not shown.
27 changes: 17 additions & 10 deletions webconfig/config-unpacked.htm
Original file line number Diff line number Diff line change
Expand Up @@ -1048,10 +1048,10 @@ <h3>Output A</h3>



<label class=""> Idle Time (μs)</label>
<label class=""> Idle Time (sec)</label>


<input class="api" type="text" name="name21" data-type="uint64" data-key="21"
<input class="api" type="text" name="name21" data-type="uint64" data-key="21" data-scale="1000000"
onchange="valueChangedHandler(this)"
/>

Expand All @@ -1069,10 +1069,10 @@ <h3>Output A</h3>



<label class=""> Max Time (μs)</label>
<label class=""> Max Time (sec)</label>


<input class="api" type="text" name="name22" data-type="uint64" data-key="22"
<input class="api" type="text" name="name22" data-type="uint64" data-key="22" data-scale="1000000"
onchange="valueChangedHandler(this)"
/>

Expand Down Expand Up @@ -1396,10 +1396,10 @@ <h3>Output B</h3>



<label class=""> Idle Time (μs)</label>
<label class=""> Idle Time (sec)</label>


<input class="api" type="text" name="name51" data-type="uint64" data-key="51"
<input class="api" type="text" name="name51" data-type="uint64" data-key="51" data-scale="1000000"
onchange="valueChangedHandler(this)"
/>

Expand All @@ -1417,10 +1417,10 @@ <h3>Output B</h3>



<label class=""> Max Time (μs)</label>
<label class=""> Max Time (sec)</label>


<input class="api" type="text" name="name52" data-type="uint64" data-key="52"
<input class="api" type="text" name="name52" data-type="uint64" data-key="52" data-scale="1000000"
onchange="valueChangedHandler(this)"
/>

Expand Down Expand Up @@ -1736,6 +1736,13 @@ <h3>Device Status</h3>
return report;
}

/* How many of the units the device stores go into one of the units the form shows, so
a field can be presented in something a person thinks in and still be sent as what the
firmware expects. Set from form.py; 1 for everything that needs no conversion. */
function scaleOf(element) {
return Number(element.getAttribute('data-scale')) || 1;
}

function packValue(element, key, dataType, buffer) {
const dataOffset = 1;
var buffer = new ArrayBuffer(8);
Expand All @@ -1756,7 +1763,7 @@ <h3>Device Status</h3>
if (element.type === 'checkbox')
view.setUint8(dataOffset, element.checked ? 1 : 0, true);
else
method.call(view, dataOffset, element.value, true);
method.call(view, dataOffset, element.value * scaleOf(element), true);
}

view.setUint8(0, key);
Expand Down Expand Up @@ -1837,7 +1844,7 @@ <h3>Device Status</h3>
dataType = element.getAttribute('data-type');

if (dataType in methods) {
var value = methods[dataType].call(event.data, dataOffset, true);
var value = methods[dataType].call(event.data, dataOffset, true) / scaleOf(element);
setValue(element, value);

if (element.hasAttribute('data-hex'))
Expand Down
2 changes: 1 addition & 1 deletion webconfig/config.htm

Large diffs are not rendered by default.

8 changes: 6 additions & 2 deletions webconfig/form.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ class FormField:
values: dict[int, str] = field(default_factory=dict)
data_type: str = "int32"
elem: str | None = None
# How many of the units the device stores go into one of the units the form shows.
# 1 where they are the same thing, which is everything but the screensaver timers.
scale: int = 1

SHORTCUTS = {
0x73: "None",
Expand Down Expand Up @@ -51,8 +54,8 @@ class FormField:
FormField(1003, "Screensaver", elem="label"),
FormField(9, "Mode", 0, {0: "Disabled", 1: "Pong", 2: "Jitter"}, "uint8"),
FormField(10, "Only If Inactive", None, {}, "uint8", "checkbox"),
FormField(11, "Idle Time (μs)", None, {}, "uint64"),
FormField(12, "Max Time (μs)", None, {}, "uint64"),
FormField(11, "Idle Time (sec)", None, {}, "uint64", scale=1000000),
FormField(12, "Max Time (sec)", None, {}, "uint64", scale=1000000),
]

def generate_output(base, data):
Expand All @@ -64,6 +67,7 @@ def generate_output(base, data):
"values": field.values,
"type": field.data_type,
"elem": field.elem,
"scale": field.scale,
}
for field in data
]
Expand Down
2 changes: 1 addition & 1 deletion webconfig/templates/form.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
{% set key = item.key %}

{% macro input(item, type='text', class='api', name='name') %}
<input class="{{ class }}" type="{{ type }}" name="{{ name }}{{ key }}" data-type="{{ item.type }}" data-key="{{ key }}"
<input class="{{ class }}" type="{{ type }}" name="{{ name }}{{ key }}" data-type="{{ item.type }}" data-key="{{ key }}"{% if item.scale != 1 %} data-scale="{{ item.scale }}"{% endif %}
onchange="valueChangedHandler(this)"
{% endmacro %}

Expand Down
11 changes: 9 additions & 2 deletions webconfig/templates/script.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,13 @@ function makeReport(type, payload, proxy=false) {
return report;
}

/* How many of the units the device stores go into one of the units the form shows, so
a field can be presented in something a person thinks in and still be sent as what the
firmware expects. Set from form.py; 1 for everything that needs no conversion. */
function scaleOf(element) {
return Number(element.getAttribute('data-scale')) || 1;
}

function packValue(element, key, dataType, buffer) {
const dataOffset = 1;
var buffer = new ArrayBuffer(8);
Expand All @@ -63,7 +70,7 @@ function packValue(element, key, dataType, buffer) {
if (element.type === 'checkbox')
view.setUint8(dataOffset, element.checked ? 1 : 0, true);
else
method.call(view, dataOffset, element.value, true);
method.call(view, dataOffset, element.value * scaleOf(element), true);
}

view.setUint8(0, key);
Expand Down Expand Up @@ -144,7 +151,7 @@ function updateElement(key, event) {
dataType = element.getAttribute('data-type');

if (dataType in methods) {
var value = methods[dataType].call(event.data, dataOffset, true);
var value = methods[dataType].call(event.data, dataOffset, true) / scaleOf(element);
setValue(element, value);

if (element.hasAttribute('data-hex'))
Expand Down