Home | History | Annotate | Download | only in examples
      1 /*
      2  * Author: Brendan Le Foll <brendan.le.foll (at) intel.com>
      3  * Copyright (c) 2014 Intel Corporation.
      4  *
      5  * Permission is hereby granted, free of charge, to any person obtaining
      6  * a copy of this software and associated documentation files (the
      7  * "Software"), to deal in the Software without restriction, including
      8  * without limitation the rights to use, copy, modify, merge, publish,
      9  * distribute, sublicense, and/or sell copies of the Software, and to
     10  * permit persons to whom the Software is furnished to do so, subject to
     11  * the following conditions:
     12  *
     13  * The above copyright notice and this permission notice shall be
     14  * included in all copies or substantial portions of the Software.
     15  *
     16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
     17  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     18  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
     19  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
     20  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
     21  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
     22  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     23  */
     24 
     25 #include <stdio.h>
     26 #include <unistd.h>
     27 #include <errno.h>
     28 #include <signal.h>
     29 #include <stdlib.h>
     30 
     31 #include "mraa.h"
     32 
     33 #define DEFAULT_IOPIN 8
     34 
     35 int running = 0;
     36 static int iopin;
     37 
     38 void
     39 sig_handler(int signo)
     40 {
     41     if (signo == SIGINT) {
     42         printf("closing IO%d nicely\n", iopin);
     43         running = -1;
     44     }
     45 }
     46 
     47 int
     48 main(int argc, char** argv)
     49 {
     50     mraa_result_t r = MRAA_SUCCESS;
     51     iopin = DEFAULT_IOPIN;
     52 
     53     if (argc < 2) {
     54         printf("Provide an int arg if you want to flash on something other than %d\n", DEFAULT_IOPIN);
     55     } else {
     56         iopin = strtol(argv[1], NULL, 10);
     57     }
     58 
     59     mraa_init();
     60     fprintf(stdout, "MRAA Version: %s\nStarting Blinking on IO%d\n", mraa_get_version(), iopin);
     61 
     62     mraa_gpio_context gpio;
     63     gpio = mraa_gpio_init(iopin);
     64     if (gpio == NULL) {
     65         fprintf(stderr, "Are you sure that pin%d you requested is valid on your platform?", iopin);
     66         exit(1);
     67     }
     68     printf("Initialised pin%d\n", iopin);
     69 
     70     // set direction to OUT
     71     r = mraa_gpio_dir(gpio, MRAA_GPIO_OUT);
     72     if (r != MRAA_SUCCESS) {
     73         mraa_result_print(r);
     74     }
     75 
     76     signal(SIGINT, sig_handler);
     77 
     78     while (running == 0) {
     79         r = mraa_gpio_write(gpio, 0);
     80         if (r != MRAA_SUCCESS) {
     81             mraa_result_print(r);
     82         } else {
     83             printf("off\n");
     84         }
     85 
     86         sleep(1);
     87 
     88         r = mraa_gpio_write(gpio, 1);
     89         if (r != MRAA_SUCCESS) {
     90             mraa_result_print(r);
     91         } else {
     92             printf("on\n");
     93         }
     94 
     95         sleep(1);
     96     }
     97 
     98     r = mraa_gpio_close(gpio);
     99     if (r != MRAA_SUCCESS) {
    100         mraa_result_print(r);
    101     }
    102 
    103     return r;
    104 }
    105