亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gpio.c

?? Open DMT Client C Source code
?? C
字號:
// ----------------------------------------------------------------------------//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at// // http://www.apache.org/licenses/LICENSE-2.0// // Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.//// ----------------------------------------------------------------------------// Description://  Platform specific General-Purpose I/O// Notes://  - Most of the utilities in this module were designed for the GumStix.  They//    may need to be modified to fit other platforms.// ---// Change History://  2006/05/10  Martin D. Flynn//     -Initial release// ----------------------------------------------------------------------------#include "stdafx.h" // TARGET_WINCE#include "custom/defaults.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <unistd.h>#include <fcntl.h>#include <errno.h>#include <termios.h>#include <sys/select.h>#include <time.h>#include <math.h>#include "custom/log.h"#include "custom/linux/gpio.h"#include "tools/stdtypes.h"#include "tools/strtools.h"#include "tools/utctools.h"#include "tools/io.h"// ----------------------------------------------------------------------------// AC'97 GPIO ports seem the most reasonable to use.// To initialize at boot up://   % modprobe proc_gpio //   % echo "GPIO in"   > /proc/gpio/GPIO29    # - SDATA_IN0 (pin 43)//   % echo "GPIO in"   > /proc/gpio/GPIO32    # - SDATA_IN1 (pin 15)//   % echo "GPIO out"  > /proc/gpio/GPIO30    # - SDATA_OUT (pin  5)// To se/clear://   % echo "out set"   > /proc/gpio/GPIO30//   % echo "out clear" > /proc/gpio/GPIO30// To read current state://   % echo "in"        > /proc/gpio/GPIO29//   % cat /proc/gpio/GPIO29//   # will report either "set", or "clear"#define GPIO_FILE               "/proc/gpio/GPIO%02d"#define GPIO_SDATA_IN0          29#define GPIO_SDATA_IN1          32#define GPIO_SDATA_OUT          30#define MAX_GPIO_IN             2#define MAX_GPIO_OUT            1#define GPIO_RETURN_DEFAULT         // define until we get hardware that supports GPIO#define GPIO_DEFAULT_IN0        utTrue#define GPIO_DEFAULT_IN1        utFalsestatic utBool GPIO_STATE_INPUT[]  = { GPIO_DEFAULT_IN0, GPIO_DEFAULT_IN1 };static utBool GPIO_STATE_OUTPUT[] = { utFalse };// ----------------------------------------------------------------------------#if defined(TARGET_GUMSTIX)static void _gpioInit(int gpio, int gpioType){    // % echo "GPIO in"   > /proc/gpio/GPIO??    // or    // % echo "GPIO out"  > /proc/gpio/GPIO??    char gpioFile[64], *direction = (gpioType == GPIO_TYPE_INPUT)? "GPIO in" : "GPIO out";    sprintf(gpioFile, GPIO_FILE, gpio);    ioWriteFile(gpioFile, direction, strlen(direction));}#endifvoid gpioInitialize(){#if defined(TARGET_GUMSTIX)    _gpioInit(GPIO_SDATA_IN0, GPIO_TYPE_INPUT);    _gpioInit(GPIO_SDATA_IN1, GPIO_TYPE_INPUT);    _gpioInit(GPIO_SDATA_OUT, GPIO_TYPE_OUTPUT);#endif    int dio;    for (dio = 0; dio < MAX_GPIO_OUT; dio++) {        gpioSetOutput(dio, GPIO_STATE_OUTPUT[dio]);    }}// ----------------------------------------------------------------------------/* get digital input */utBool gpioGetInput(int dio){    // Getting IO through file access is rather cumbersome, however, this is    // the only documented way to do this. When I find a better way, it will    // be implemented.#if defined(GPIO_RETURN_DEFAULT) || !defined(TARGET_GUMSTIX)    if ((dio >= 0) && (dio < MAX_GPIO_IN)) {        return GPIO_STATE_INPUT[dio];    } else {        return utFalse;    }#else    /* get GPIO file and init to read input */    char gpioFile[64] = { 0 };    switch (dio) {        case 0:            // SDATA_IN0            sprintf(gpioFile, GPIO_FILE, GPIO_SDATA_IN0);            break;        case 1:            // SDATA_IN1            sprintf(gpioFile, GPIO_FILE, GPIO_SDATA_IN1);            break;        default:            // unsupported GPIO is returned as 'false'            logERROR(LOGSRC,"Unsupported GPIO: %d", dio);            return utFalse;    }    /* write input initialization to input port */    ioWriteFile(gpioFile, "in", 2);        /* read state */    utBool state = utFalse;    char ioState[32];    long len = ioReadFile(gpioFile, ioState, sizeof(ioState) - 1);    if (len > 0L) {        ioState[len] = 0; // terminate string        state = strEqualsIgnoreCase(ioState, "set"); // true if 'set', false otherwise    } else {        logERROR(LOGSRC,"Unable to read GPIO: %s", gpioFile);        state = utFalse;    }    GPIO_STATE_INPUT[dio] = state;    return state;    #endif    }/* this function is for debug/simulation purposes only */void gpioSetInput(int dio, utBool state) {#if defined(GPIO_RETURN_DEFAULT) || !defined(TARGET_GUMSTIX)    /* set debug input state */    if ((dio >= 0) && (dio < MAX_GPIO_IN)) {        GPIO_STATE_INPUT[dio] = state;    }    #else    logERROR(LOGSRC,"Setting GPIO 'input' not supported: %d", dio);    #endif}// ----------------------------------------------------------------------------/* this function is typically for debug/simulation purposes only */utBool gpioGetOutput(int dio) {    if ((dio >= 0) && (dio < MAX_GPIO_OUT)) {        // always return the last set state        return GPIO_STATE_OUTPUT[dio];    } else {        return utFalse;    }}/* set digital output */void gpioSetOutput(int dio, utBool state){    // Setting IO through file access is rather cumbersome, however, this is    // the only documented way to do this. When I find a better way, it will    // be implemented.    /* get GPIO file and init to set/clear output */    char gpioFile[64] = { 0 };    switch (dio) {        case 0:            // SDATA_OUT            sprintf(gpioFile, GPIO_FILE, GPIO_SDATA_OUT);            break;        default:            // unsupported GPIO is returned as 'false'            logERROR(LOGSRC,"Invalid GPIO: %d", dio);            return;    }    GPIO_STATE_OUTPUT[dio] = state;#if defined(TARGET_GUMSTIX)        /* set output state */    const char *stateStr = state? "out set" : "out clear";    ioWriteFile(gpioFile, stateStr, strlen(stateStr));#else    logWARNING(LOGSRC,"GPIO Output is simulated on this platform: %d", dio);    #endif}// ----------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美又粗又大又爽| 911精品产国品一二三产区| 看片网站欧美日韩| 免费观看成人鲁鲁鲁鲁鲁视频| 一区二区在线观看av| 亚洲精品ww久久久久久p站 | 午夜精品一区二区三区免费视频| 亚洲欧洲另类国产综合| 亚洲视频图片小说| 国产精品麻豆一区二区| 日韩美女久久久| 亚洲啪啪综合av一区二区三区| 久久免费偷拍视频| 中文字幕一区二区三| 亚洲综合自拍偷拍| 午夜av区久久| 国产曰批免费观看久久久| 高清beeg欧美| 91美女蜜桃在线| 91精品久久久久久蜜臀| 精品成人在线观看| 最新高清无码专区| 爽好多水快深点欧美视频| 国产真实精品久久二三区| 99这里只有久久精品视频| 亚洲不卡一区二区三区| 成人免费一区二区三区视频| 欧美少妇性性性| 精品国产精品一区二区夜夜嗨| 国产欧美一区在线| 亚州成人在线电影| 成人午夜看片网址| 欧美三级欧美一级| 国产婷婷色一区二区三区四区| 亚洲自拍偷拍图区| 韩国三级电影一区二区| 在线免费观看一区| 久久久久久**毛片大全| 亚洲成国产人片在线观看| 懂色av一区二区三区免费看| 欧美午夜不卡在线观看免费| 国产香蕉久久精品综合网| 亚洲一线二线三线视频| 国产精品一区不卡| 欧美美女bb生活片| 亚洲欧美一区二区三区孕妇| 久久精品国产亚洲5555| 欧美影视一区二区三区| 国产精品少妇自拍| 久久电影网电视剧免费观看| 欧美在线综合视频| 日韩理论在线观看| 春色校园综合激情亚洲| 精品少妇一区二区三区在线播放| 一个色综合网站| 91首页免费视频| 中文字幕+乱码+中文字幕一区| 全部av―极品视觉盛宴亚洲| 欧美丝袜丝nylons| 一区二区三区**美女毛片| 波多野结衣亚洲| 国产日本一区二区| 国产精品一二三| 久久亚洲影视婷婷| 国内成人自拍视频| 精品国精品国产| 国内精品嫩模私拍在线| 日韩女优电影在线观看| 亚洲二区在线观看| 欧美日韩电影在线| 婷婷综合另类小说色区| 欧美一区二区三区四区久久| 亚洲一区二区三区中文字幕在线 | 日韩精品一区二区三区在线播放 | 久久久亚洲综合| 国产美女一区二区| 久久精品水蜜桃av综合天堂| 久久电影网站中文字幕 | 一区二区在线观看免费视频播放| 91丨porny丨蝌蚪视频| 亚洲精品视频一区二区| 在线一区二区三区四区五区| 亚洲一区二区不卡免费| 3atv在线一区二区三区| 久久精品国产**网站演员| 精品国产sm最大网站免费看| 国产精品911| 中文字幕综合网| 在线免费视频一区二区| 欧美aa在线视频| 2022国产精品视频| 91丨porny丨国产| 亚洲国产精品久久人人爱蜜臀| 欧美另类久久久品| 久久国产精品露脸对白| 中文子幕无线码一区tr| 欧美亚洲国产一区二区三区va | 日韩和欧美一区二区| 精品噜噜噜噜久久久久久久久试看 | 久久er精品视频| 中文字幕免费不卡| 欧美性猛交xxxx黑人交| 久久99久久久久久久久久久| 欧美国产综合一区二区| 欧美日韩一区成人| 高清不卡在线观看| 午夜av区久久| 国产精品传媒在线| 91精品在线一区二区| 成人精品一区二区三区四区| 亚洲国产精品人人做人人爽| 久久久欧美精品sm网站| 欧美亚洲图片小说| 国产成人午夜高潮毛片| 爽好多水快深点欧美视频| 国产精品五月天| 日韩一区二区免费电影| 色综合色综合色综合色综合色综合 | 亚洲成人一区在线| 国产欧美一区二区精品秋霞影院| 91久久免费观看| 国产主播一区二区| 视频在线在亚洲| 亚洲乱码国产乱码精品精小说| 日韩欧美在线影院| 欧美影视一区在线| 99这里都是精品| 国产一区二区三区电影在线观看| 亚洲精品免费视频| 国产精品区一区二区三区| 日韩一级免费观看| 欧美日韩aaaaaa| 在线视频一区二区三| av男人天堂一区| 国产成人丝袜美腿| 韩国女主播一区| 奇米影视7777精品一区二区| 亚洲美女偷拍久久| 综合精品久久久| 国产精品乱码妇女bbbb| 久久久亚洲午夜电影| 亚洲精品在线免费观看视频| 91精品欧美一区二区三区综合在 | 欧美成人vr18sexvr| 欧美精选一区二区| 欧美亚洲一区二区在线观看| 91美女片黄在线观看91美女| 99久久精品久久久久久清纯| 国产精品一二二区| 粉嫩av一区二区三区粉嫩| 国产精品伊人色| 国产成人综合网站| 国产99久久久国产精品潘金 | 亚洲精品视频一区| 一区二区三区美女视频| 一区二区三区精品在线| 樱花影视一区二区| 五月天亚洲精品| 日韩国产精品大片| 麻豆视频观看网址久久| 久久av中文字幕片| 粉嫩一区二区三区在线看| 波多野结衣中文字幕一区| 91丨porny丨户外露出| 欧洲生活片亚洲生活在线观看| 日本精品视频一区二区| 欧美性猛交xxxxxx富婆| 91精品国产乱| 久久久影视传媒| 亚洲欧洲中文日韩久久av乱码| 一区二区三区精品久久久| 日韩av二区在线播放| 国产一区 二区| 不卡一区二区三区四区| 欧美日韩日日骚| 精品国产凹凸成av人导航| 成人免费在线播放视频| 午夜精品久久久久久久久久久| 日韩高清在线电影| 成人午夜碰碰视频| 欧美日韩国产首页| 久久蜜臀中文字幕| 亚洲精品视频一区| 精品在线视频一区| 日本高清不卡视频| 26uuu亚洲综合色| 亚洲欧美日韩国产手机在线| 奇米精品一区二区三区在线观看一 | 国产精品素人一区二区| 午夜激情久久久| 国产不卡视频在线播放| 欧美日韩成人高清| 国产精品乱码一区二三区小蝌蚪| 亚洲国产日韩在线一区模特| 国产精品69毛片高清亚洲| 欧美三级蜜桃2在线观看| 国产无遮挡一区二区三区毛片日本| 一二三四区精品视频| 丁香桃色午夜亚洲一区二区三区| 6080yy午夜一二三区久久|