/* * main.c * * Created by Setsu on April 3, 2011. * Copyright 2011 RoundSquare Inc. All rights reserved. * * Permission is hereby granted, free of charge, to any person or organization * obtaining a copy of the software and accompanying documentation covered by * this license (the "Software") to use, reproduce, display, distribute, * execute, and transmit the Software, and to prepare derivative works of the * Software, and to permit third-parties to whom the Software is furnished to * do so, all subject to the following: * * The copyright notices in the Software and this entire statement, including * the above license grant, this restriction and the following disclaimer, * must be included in all copies of the Software, in whole or in part, and * all derivative works of the Software, unless such copies or derivative * works are solely in the form of machine-executable object code generated by * a source language processor. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE * FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. */ /* *---------------------------------------- * include *---------------------------------------- */ #include #include #include #include #include /* *---------------------------------------- * define *---------------------------------------- */ #define GPIO_NUM_BOARD_ID2 (171) #define GPIO_NUM_BOARD_ID1 (101) #define GPIO_NUM_BOARD_ID0 (182) /* *---------------------------------------- * global *---------------------------------------- */ static volatile sig_atomic_t exit_flag = 0; /* *---------------------------------------- * ReadGPIO *---------------------------------------- */ int ReadGPIO(int gpioNum) { const char* fmt = "/sys/class/gpio/gpio%d/value"; char str[64]; char buf; int num_read; int rtn = -1; int fd; sprintf(str, fmt, gpioNum); fd = open(str, O_RDONLY); if(fd) { num_read = read(fd, &buf, sizeof(char)); rtn = (num_read != 1) ? num_read:(buf-'0'); close(fd); } return rtn; } /* *---------------------------------------- * ReadBoardRevision *---------------------------------------- */ int ReadBoardRevision(void) { int boardRev = 0; const int gpio_num_tbl[] = { GPIO_NUM_BOARD_ID2 , GPIO_NUM_BOARD_ID1 , GPIO_NUM_BOARD_ID0 }; size_t i; for(i=0; i