Beispiel #1
0
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");	
}
Beispiel #2
0
/* 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;
}
Beispiel #3
0
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;
}
Beispiel #4
0
static bool stmSpiSlaveCsIsActive(struct SpiDevice *dev)
{
    struct StmSpiDev *pdev = dev->pdata;
    return pdev->nss && !gpioGet(pdev->nss);
}
Beispiel #5
0
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;
	}
}