+
+ mraa_iio_context dev = &plat->iio_devices[device];
+
+ char* buf;
+ char sep[] = "_";
+ char* splitbuf;
+ DIR* dir;
+ struct dirent *ent;
+ if ((dir = opendir (IIO_SYSFS_DEVICE "0/")) != NULL) {
+ while ((ent = readdir (dir)) != NULL) {
+ if (strlen(ent->d_name) > 3) {
+ if (strncmp(ent->d_name, "in_", 3) == 0) {
+ dev->attrnum++;
+ buf = strndup(&ent->d_name[3], 64);
+ splitbuf = strsep(&buf, sep);
+ if (buf == NULL) {
+ return NULL;
+ }
+ int num = atoi(&splitbuf[strlen(splitbuf)-1]);
+ if (dev->channum < num) {
+ dev->channum = num;
+ }
+ free(splitbuf);
+ }
+ else if (strncmp(ent->d_name, "out_", 4) == 0) {
+ dev->attrnum++;
+ }
+ }
+ }
+ closedir (dir);
+ } else {
+ return NULL;
+ }
+
+ return dev;
+}
+
+// -1 is the device 'channel'
+int
+mraa_iio_get_attr_count(mraa_iio_context dev, int channel)
+{
+ // search is 0 indexed
+ return dev->attrnum + 1;