Example #1
0
int main() {

	// Turn libsoc debug off (0) or on (1)
	libsoc_set_debug(0);

	printf("Requesting GPIO\n");
	gpio* motion_int = libsoc_gpio_request(MOTION_GPIO, LS_SHARED);

	printf("Setting direction\n");
	libsoc_gpio_set_direction(motion_int, INPUT);

	printf("Setting edge\n");
	libsoc_gpio_set_edge(motion_int, RISING);

	printf("Waiting for interrupt\n");

	int ret;

	while (1) {

		libsoc_gpio_wait_interrupt(motion_int, -1);
		printf("Motion detected!\n");

		do {
			ret = libsoc_gpio_wait_interrupt(motion_int, 1000);
		}
		while(ret != EXIT_FAILURE); 
	}

	return 0;
}
Example #2
0
int main(void) {
  // Enable debug output
  libsoc_set_debug(1);

  // Request gpios
  gpio_output = libsoc_gpio_request(GPIO_OUTPUT, LS_SHARED);
  gpio_input = libsoc_gpio_request(GPIO_INPUT, LS_SHARED);

  // Set direction to OUTPUT
  libsoc_gpio_set_direction(gpio_output, OUTPUT);
  
  // Set direction to INPUT
  libsoc_gpio_set_direction(gpio_input, INPUT);

  // Set edge to BOTH
  libsoc_gpio_set_edge(gpio_input, BOTH);

  // Setup callback
  libsoc_gpio_callback_interrupt(gpio_input, &callback_test, 
                      (void*) &interrupt_count);
  
  printf("Push the button...\n"); 
  // Disaple debug output so the code will respond faster
  libsoc_set_debug(0);

  sleep(10);
  
  libsoc_set_debug(1);
 
  // Cancel the callback on interrupt
  libsoc_gpio_callback_interrupt_cancel(gpio_input);
  
  //If gpio_request was successful
  if (gpio_input) { // Free gpio request memory
    libsoc_gpio_free(gpio_input);
  }
  
  if (gpio_output) { // Free gpio request memory
    libsoc_gpio_free(gpio_output);
  }
  
  return EXIT_SUCCESS;
}