// SPDX-License-Identifier: GPL-2.0-only /* * lsgpio - example on how to list the GPIO lines on a system * * Copyright (C) 2015 Linus Walleij * * Usage: * lsgpio <-n device-name>
*/
for (i = 0; i < info->num_attrs; i++) { if (info->attrs[i].id == GPIO_V2_LINE_ATTR_ID_DEBOUNCE)
fprintf(stdout, ", debounce_period=%dusec",
info->attrs[i].debounce_period_us);
}
}
int list_device(constchar *device_name)
{ struct gpiochip_info cinfo; char *chrdev_name; int fd; int ret; int i;
ret = asprintf(&chrdev_name, "/dev/%s", device_name); if (ret < 0) return -ENOMEM;
fd = open(chrdev_name, 0); if (fd == -1) {
ret = -errno;
fprintf(stderr, "Failed to open %s\n", chrdev_name); goto exit_free_name;
}
/* Inspect this GPIO chip */
ret = ioctl(fd, GPIO_GET_CHIPINFO_IOCTL, &cinfo); if (ret == -1) {
ret = -errno;
perror("Failed to issue CHIPINFO IOCTL\n"); goto exit_close_error;
}
fprintf(stdout, "GPIO chip: %s, \"%s\", %u GPIO lines\n",
cinfo.name, cinfo.label, cinfo.lines);
/* Loop over the lines and print info */ for (i = 0; i < cinfo.lines; i++) { struct gpio_v2_line_info linfo;
ret = ioctl(fd, GPIO_V2_GET_LINEINFO_IOCTL, &linfo); if (ret == -1) {
ret = -errno;
perror("Failed to issue LINEINFO IOCTL\n"); goto exit_close_error;
}
fprintf(stdout, "\tline %2d:", linfo.offset); if (linfo.name[0])
fprintf(stdout, " \"%s\"", linfo.name); else
fprintf(stdout, " unnamed"); if (linfo.consumer[0])
fprintf(stdout, " \"%s\"", linfo.consumer); else
fprintf(stdout, " unused"); if (linfo.flags) {
fprintf(stdout, " [");
print_attributes(&linfo);
fprintf(stdout, "]");
}
fprintf(stdout, "\n");
}
exit_close_error: if (close(fd) == -1)
perror("Failed to close GPIO character device file");
exit_free_name:
free(chrdev_name); return ret;
}
void print_usage(void)
{
fprintf(stderr, "Usage: lsgpio [options]...\n" "List GPIO chips, lines and states\n" " -n List GPIOs on a named device\n" " -? This helptext\n"
);
}
int main(int argc, char **argv)
{ constchar *device_name = NULL; int ret; int c;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.