#include #include #include #define GPIO 12 int main(int argc, char *argv[]) { struct gpiod_chip* chip = gpiod_chip_open("/dev/gpiochip4"); if (chip == NULL) { perror("gpiod_chip_open"); return 1; } struct gpiod_line_settings* lineSettings = gpiod_line_settings_new(); if (lineSettings == NULL) { perror("gpiod_line_settings_new"); return 1; } gpiod_line_settings_set_direction(lineSettings, GPIOD_LINE_DIRECTION_INPUT); struct gpiod_line_config* lineConfig = gpiod_line_config_new(); if (lineConfig == NULL) { perror("gpiod_line_config_new"); return 1; } int gpios[] = { GPIO }; gpiod_line_config_add_line_settings(lineConfig, gpios, 1, lineSettings); struct gpiod_request_config* requestConfig = gpiod_request_config_new(); if (requestConfig == NULL) { perror("gpiod_request_config_new"); return 1; } gpiod_request_config_set_consumer(requestConfig, "me"); struct gpiod_line_request* request = gpiod_chip_request_lines(chip, requestConfig, lineConfig); if (request == NULL) { perror("gpiod_chip_request_lines"); return 1; } enum gpiod_line_value value = gpiod_line_request_get_value(request, GPIO); printf("GPIO %d is %d\n", GPIO, value); gpiod_line_request_release(request); gpiod_request_config_free(requestConfig); gpiod_line_config_free(lineConfig); gpiod_line_settings_free(lineSettings); gpiod_chip_close(chip); return 0; }