Skip to content

Commit bf5e9f3

Browse files
committed
iio_widget: Reenable reading all channel attributes
Signed-off-by: Dan <[email protected]>
1 parent 2f1ced9 commit bf5e9f3

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

iio_utils.c

+21
Original file line numberDiff line numberDiff line change
@@ -326,3 +326,24 @@ void dev_attr_read_all(struct iio_device *dev,
326326
}
327327
}
328328
}
329+
330+
void chn_attr_read_all(struct iio_channel *chn,
331+
int (*cb)(struct iio_channel *chn, const char *attr, const char *value, size_t len, void *d),
332+
void *data)
333+
{
334+
unsigned int i, attr_cnt = iio_channel_get_attrs_count(chn);
335+
const struct iio_attr *attr;
336+
char local_value[8192];
337+
int ret;
338+
339+
for (i = 0; i < attr_cnt; ++i) {
340+
attr = iio_channel_get_attr(chn, i);
341+
ret = iio_attr_read_raw(attr, local_value, ARRAY_SIZE(local_value));
342+
if (ret < 0) {
343+
fprintf(stderr, "Failed to read attribute: %s\n", iio_attr_get_name(attr));
344+
continue;
345+
} else {
346+
cb(chn, iio_attr_get_name(attr), local_value, strlen(local_value), data);
347+
}
348+
}
349+
}

iio_utils.h

+3
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,8 @@ inline int chn_attr_write_longlong(struct iio_channel *chn, const char *attr_nam
5252
inline void dev_attr_read_all(struct iio_device *dev,
5353
int (*cb)(struct iio_device *dev, const char *attr, const char *value, size_t len, void *d),
5454
void *data);
55+
inline void chn_attr_read_all(struct iio_channel *chn,
56+
int (*cb)(struct iio_channel *chn, const char *attr, const char *value, size_t len, void *d),
57+
void *data);
5558

5659
#endif /* __IIO_UTILS__ */

iio_widget.c

+3-4
Original file line numberDiff line numberDiff line change
@@ -696,12 +696,11 @@ void iio_update_widgets_of_device(struct iio_widget *widgets,
696696
.nb = num_widgets,
697697
};
698698

699-
// !!!!!!!!
700699
dev_attr_read_all(dev, __cb_dev_update, &params);
701700

702-
// for (i = 0; i < iio_device_get_channels_count(dev); i++)
703-
// iio_channel_attr_read_all(iio_device_get_channel(dev, i),
704-
// __cb_chn_update, &params);
701+
for (i = 0; i < iio_device_get_channels_count(dev); i++)
702+
chn_attr_read_all(iio_device_get_channel(dev, i),
703+
__cb_chn_update, &params);
705704
}
706705

707706
void iio_save_widgets(struct iio_widget *widgets, unsigned int num_widgets)

0 commit comments

Comments
 (0)