set_units allow scale multiplier

Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
James Cherry 2024-03-15 15:46:25 -07:00
parent 4c2a1aa101
commit 105a078324
2 changed files with 28 additions and 20 deletions

View File

@ -144,18 +144,22 @@ proc set_unit_values { unit key suffix key_var } {
upvar 1 $key_var keys
if { [info exists keys($key)] } {
set value $keys($key)
if { [regexp "(10*)?(\[Mkmunpf\])?" $value match mult prefix] } {
set arg_suffix [string range $value [string length $match] end]
if { ![string match -nocase $arg_suffix $suffix] } {
sta_error 501 "unknown unit $unit suffix $arg_suffix."
set suffix_length [string length $suffix]
set arg_suffix [string range $value end-[expr $suffix_length - 1] end]
if { [string match -nocase $arg_suffix $suffix] } {
set arg_prefix [string range $value 0 end-$suffix_length]
if { [regexp "^(10*)?(\[Mkmunpf\])?$" $arg_prefix ignore mult prefix] } {
#puts "$arg_prefix '$mult' '$prefix'"
if { $mult == "" } {
set mult 1
}
set scale [unit_prefix_scale $unit $prefix ]
set_cmd_unit_scale $unit $scale
} else {
sta_error 343 "unknown unit $unit prefix '${arg_prefix}'."
}
if { $mult == "" } {
set mult 1
}
set scale [unit_prefix_scale $unit $prefix ]
set_cmd_unit_scale $unit $scale
} else {
sta_error 163 "unknown unit $unit format."
sta_error 501 "incorrect unit suffix '$arg_suffix'."
}
if [info exists keys(-digits)] {
set_cmd_unit_digits $unit $keys(-digits)

View File

@ -241,18 +241,22 @@ proc check_unit { unit key suffix key_var } {
upvar 1 $key_var keys
if { [info exists keys($key)] } {
set value $keys($key)
if { [regexp "(10*)?(\[Mkmunpf\])?" $value match mult prefix] } {
set arg_suffix [string range $value [string length $match] end]
if { ![string match -nocase $arg_suffix $suffix] } {
sta_error 501 "unknown unit $unit suffix $arg_suffix."
set suffix_length [string length $suffix]
set arg_suffix [string range $value end-[expr $suffix_length - 1] end]
if { [string match -nocase $arg_suffix $suffix] } {
set arg_prefix [string range $value 0 end-$suffix_length]
if { [regexp "^(10*)?(\[Mkmunpf\])?$" $arg_prefix ignore mult prefix] } {
#puts "$arg_prefix '$mult' '$prefix'"
if { $mult == "" } {
set mult 1
}
set scale [unit_prefix_scale $unit $prefix ]
check_unit_scale $unit [expr $scale * $mult]
} else {
sta_error 343 "unknown unit $unit prefix '${arg_prefix}'."
}
if { $mult == "" } {
set mult 1
}
set scale [unit_prefix_scale $unit $prefix ]
check_unit_scale $unit [expr $scale * $mult]
} else {
sta_error 343 "unknown unit $unit format."
sta_error 501 "incorrect unit suffix '$arg_suffix'."
}
}
}