command: Simplify sendf() switch
Commit f28eb902
reworked the switch to fix int16 encoding. However,
at least one version of avr gcc doesn't like that switch layout (it
uses a jump table). Reorg the switch to avoid that issue.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
6de85d02ae
commit
d67f962a38
|
@ -139,17 +139,18 @@ _sendf(uint8_t parserid, ...)
|
|||
param_types++;
|
||||
uint32_t v;
|
||||
switch (t) {
|
||||
case PT_byte:
|
||||
case PT_uint16:
|
||||
v = va_arg(args, unsigned int);
|
||||
goto encode_int;
|
||||
case PT_int16:
|
||||
v = (int32_t)va_arg(args, int);
|
||||
goto encode_int;
|
||||
case PT_uint32:
|
||||
case PT_int32:
|
||||
case PT_uint16:
|
||||
case PT_int16:
|
||||
case PT_byte:
|
||||
if (t >= PT_uint16)
|
||||
if (t == PT_int16)
|
||||
v = (int32_t)va_arg(args, int);
|
||||
else
|
||||
v = va_arg(args, unsigned int);
|
||||
else
|
||||
v = va_arg(args, uint32_t);
|
||||
encode_int:
|
||||
p = encode_int(p, v);
|
||||
break;
|
||||
case PT_string: {
|
||||
|
|
Loading…
Reference in New Issue