#ifdef TARGET_HAS_SPI
#include "drv/spi.h"
#endif
+#include <drv/endian.h>
#include "cmdproc_utils.h"
#define MIN(a, b) ((a) < (b) ? (a) : (b))
return cmd_opchar_replong(cmd_io, param, value, 0, 16);
}
case 16: {
- uint16_t value;
- ret = sscanf(param[2], "%hi", &value);
- if (ret == EOF || ret == 0)
- break;
- value = cpu_to_be16(value);
- ret = port->set(port, &value, sizeof(value));
+ uint16_t value[8];
+ int i, n;
+ char *p = param[2];
+ assert(port->numchn <= ARRAY_SIZE(value));
+
+ for (i = 0; i < port->numchn; i++) {
+ ret = sscanf(param[2], "%hi%n", &value[i], &n);
+ if (ret == EOF || ret == 0)
+ break;
+ value[i] = cpu_to_be16(value[i]);
+ p += n;
+ }
+
+ ret = port->set(port, &value, port->numchn * 2);
if (ret == FAILURE)
return -CMDERR_WRPERM;
- return cmd_opchar_replong(cmd_io, param, be16_to_cpu(value), 0, 16);
+ if (port->numchn == 1)
+ return cmd_opchar_replong(cmd_io, param, be16_to_cpu(value[0]), 0, 16);
+ else {
+ for (i = 0; i < port->numchn; i++)
+ rpp_sci_printf("%#x ", be16_to_cpu(value[i]));
+ rpp_sci_printf("\n");
+ return 0;
+ }
}
case 24: {
uint32_t value;