void dumpBTgpios(){ int i; output(1,"state 1: "); for(i=0;i<N_BT_GPIOS;i++) output(1,"%i=%i ",btio[i],gpioGet(btio[i])); output(1,"\n"); }
/* Name: bkeyGetKey * Description: Read keys from gpio. * * No parameter. * Return value: * Return the value of onboard keys. If a key is down, the * corresponding bit is 0, otherwise 1. */ UINT32 bkeyGetKey(VOID) { UINT32 gpio; gpio = gpioGet(ONBOARD_KEY_GPIO_MASK); return gpio & ONBOARD_KEY_GPIO_MASK; }
int main(int argc, char **argv){ int i,j; int gpio[128]; int oldstate[128], state[128]; int ngpios; struct timeval tv; fd_set read_fd; char *str = NULL; int lenStr = 0; ngpios = argc - 1; for(i=0;i<128;i++) gpio[i] = -1; for(i=0;i<ngpios;i++){ j = atoi(argv[i+1]); gpio[i] = j; oldstate[i] = -1; } #ifndef NOIO gpioInit(); #endif do{ tv.tv_sec=0; tv.tv_usec=1000; FD_ZERO(&read_fd); FD_SET(0,&read_fd); if(select(1, &read_fd,NULL,NULL,&tv) == -1) return 0; if(FD_ISSET(0,&read_fd)){ getline(&str, &lenStr, stdin); i=strlen(str); if(str[i-1] =='\n') str[i-1] = 0x00; if(str == NULL) break; if(str[0] == 'q') break; else if(str[0] == 'o'){ printf("GPIO #:"); getline(&str, &lenStr, stdin); i=atoi(str); #ifndef NOIO if(i >=0 && i < 128) gpioSetDir(i, 1); #endif printf("%i --> output\n",i); }else if(str[0] == 'i'){ printf("GPIO #:"); getline(&str, &lenStr, stdin); i=atoi(str); #ifndef NOIO if(i >=0 && i < 128) gpioSetDir(i, 0); #endif printf("%i --> input\n",i); }else if( str[0] >= '0' && str[0] <='9'){ //toggle i = atoi(str); if(i >=0 && i < 128){ #ifndef NOIO j = gpioGet(i); printf("%i: %i --> %i\n",i,j,!j); gpioSet(i, !j); #endif } } } for(i=0;i<ngpios;i++){ #ifdef NOIO state[i] = 0; #else state[i] = gpioGet( gpio[i] ); #endif if( state[i] != oldstate[i] ) printf("%i: %i --> %i\n",gpio[i],oldstate[i],state[i]); oldstate[i] = state[i]; } }while(1); #ifndef NOIO gpioCleanup(); #endif if(str != NULL) free(str); return 0; }
static bool stmSpiSlaveCsIsActive(struct SpiDevice *dev) { struct StmSpiDev *pdev = dev->pdata; return pdev->nss && !gpioGet(pdev->nss); }
void performCommandPLC() { UINT8 ui8NameStrDL[15]; UINT32 pos; UINT32 err = SUCCESS; UINT32 ui32dstDirPos; switch(ucHMI_addr) { case PLC_TIME: stime.tm_sec = uiHMIWord[PLC_TIME+5]; stime.tm_min = uiHMIWord[PLC_TIME+4]; stime.tm_hour = uiHMIWord[PLC_TIME+3]; stime.tm_mday = uiHMIWord[PLC_TIME+2]; stime.tm_mon = uiHMIWord[PLC_TIME+1]; stime.tm_year = uiHMIWord[PLC_TIME]-1900; timeSet(&stime); #if C_LEVI_DEBUG printf("time=%d/%d/%d %d:%d:%d ",uiHMIWord[PLC_TIME],uiHMIWord[PLC_TIME+1],uiHMIWord[PLC_TIME+2],uiHMIWord[PLC_TIME+3],uiHMIWord[PLC_TIME+4],uiHMIWord[PLC_TIME+5]); #endif if((uiHMIWord[PLC_TIME]!=2000)||(uiHMIWord[PLC_TIME+1]!=01)) ui8TimeFlag = 1; timeGet(&ptime); sio_psprintf(ui8NameStrDL, "%02d%02d%02dDC.CSV", (UINT32)(ptime->tm_year-100)%100, ptime->tm_mon,ptime->tm_mday); xdcfCurRootDirSet(ui8TermModule); //mp3_GetFileList(); pos = myFindFile(ui8NameStrDL); myGetSingleDayDL(pos, &ui32SuccessNum); break; case PLC_PARA_BUF: memcpy((UINT8 *)&curDevice, (UINT8 *)&uiHMIWord[PLC_PARA_BUF], C_PLC_PARA_NUM*sizeof(UINT16)); #if C_LEVI_DEBUG printf("device=%d, class=%d ",uiHMIWord[PLC_MODULE_NO],uiHMIWord[PLC_MODULE_NO+1]); #endif getModuleName(ui16CurModule, ui8TermModule); writePara(); //readPara(); break; case PLC_MODULE_NO: #if C_LEVI_DEBUG printf("device=%d, class=%d ",uiHMIWord[PLC_MODULE_NO],uiHMIWord[PLC_MODULE_NO+1]); #endif ui16CurModule = uiHMIWord[PLC_MODULE_NO]; ui16CurClass = uiHMIWord[PLC_MODULE_NO+1]; getModuleName(ui16CurModule, ui8TermModule); readPara(); writePara(); readParadelaytime(); writeParadelaytime(); break; case TESTSTEP0: test_step0=(~uiHMIWord[TESTSTEP0])&0xffff; test_step1=(~uiHMIWord[TESTSTEP1])&0xff; test_mode=(uiHMIWord[TestMode]&0x01); printf("test_step0=%d, test_step1=%d, test_mode=%d ",test_step0,test_step1,test_mode); break; case delay_time: memcpy((UINT8 *)&delay,(UINT8 *)&uiHMIWord[delay_time],C_delay_NUM*sizeof(UINT16)); //memcpy((UINT8 *)&uiHMIWord[delay_time], (UINT8 *)&delay, C_delay_NUM*sizeof(UINT16)); getModuleName(ui16CurModule, ui8TermModule); writeParadelaytime(); //readParadelaytime(); break; case PLC_BAKCMD: gpioConfig(GPIO_CARD_DET, 0); gpioSet(GPIO_CARD_DET, 1); if(gpioGet(GPIO_CARD_DET)==0) { err = xdcfActiveDevIdSet(DRIVE_SD); xdcfInit(imageDirNameStr, imageFileNameStr, 0); dirInit(); if(err==SUCCESS) { xdcfChange2Root(); vfsMkdir(ui8TermModule); xdcfCurRootDirSet(ui8TermModule); xdcfCurDirPosGet(&ui32dstDirPos); myXdcfDelFile(); xdcfActiveDevIdSet(DRIVE_NAND); xdcfCurRootDirSet(ui8TermModule); xdcfChange2Root(); vfsChdir(ui8TermModule); err |= myXdcfCopyDisk(ui32dstDirPos); if(uiHMIWord[PLC_BAKCMD]) { myXdcfDelFile(); } if(err==SUCCESS) uiHMIWord[PLC_BAKINFO] = 2; else uiHMIWord[PLC_BAKINFO] = 4; // ¶ÁSD¿¨´íÎó } else { uiHMIWord[PLC_BAKINFO] = 4; // ¶ÁSD¿¨´íÎó } } else { uiHMIWord[PLC_BAKINFO] = 3; // ûÓÐSD¿¨ } #if C_FILE_DEBUG printf("backup end "); #endif break; default: break; } }