31#if !SENSORLIB_EXCLUDE_WIRE_HELPER
39int SensorWireHelper::regdump(TwoWire &w, Stream &serial, uint8_t devAddr, uint8_t start, uint8_t length)
41 uint8_t *buffer = (uint8_t *)malloc(length);
42 if (!buffer)
return -1;
43 w.beginTransmission(devAddr);
45 if (w.endTransmission() != 0) {
49 size_t len = w.requestFrom(devAddr, length);
54 w.readBytes(buffer, length);
55 hexdump(buffer, length, serial);
62void SensorWireHelper::dumpDevices(TwoWire &w, Stream &serial,
int first,
int last)
66 serial.println(
" 0 1 2 3 4 5 6 7 8 9 a b c d e f");
67 for (
i = 0;
i < 128;
i += 16) {
73 for (j = 0; j < 16; j++) {
75 if (
i + j < first || i + j > last) {
80 w.beginTransmission(
i + j);
81 ret = w.endTransmission();
89 serial.print(
i + j, HEX);
98void SensorWireHelper::hexdump(uint8_t *data,
size_t len, Stream &serial)
100 size_t rem_len = len;
101 for (
size_t i = 0;
i < len;
i += 16) {
103 snprintf(str, 80,
"%07x ",
i);
104 size_t line_len = 16;
105 if (rem_len < line_len) {
108 for (
size_t j = 0; j < line_len; j++) {
109 snprintf(&str[8 + j * 3], 80,
"%02x ", data[
i + j]);
111 for (
size_t j = line_len; j < 16; j++) {
112 snprintf(&str[8 + j * 3], 80,
" ");
116 for (
size_t j = 0; j < line_len; j++) {
117 char c = data[
i + j];
118 if ((c <
' ') || (c >
'~')) {
121 snprintf(&str[58 + j], 80,
"%c", c);
123 for (
size_t j = line_len; j < 16; j++) {
124 snprintf(&str[58 + j], 80,
" ");