To avoid possible bugs with older devices, in all my drivers I use this 2’s complement conversion before sending configuration or preference parameters.
--2's complement value if needed
local parameter_value_send = parameter_value_set
if parameter_size_set == 4 and parameter_value_set > 2147483647 then
parameter_value_send = parameter_value_set - 4294967296
elseif parameter_size_set == 2 and parameter_value_set > 32767 then
parameter_value_send = parameter_value_set - 65536
elseif parameter_size_set == 1 and parameter_value_set > 127 then
parameter_value_send = parameter_value_set - 256
end
print("new_parameter_value Sent >>>>",parameter_value_send)
-- Sent configuration parameter to device
device:send(Configuration:Set({parameter_number = parameter_number, size = parameter_size_set, configuration_value = parameter_value_send}))