User`s manual
PICO822 Intel
®
Atom
TM
E620T/E680T All-In-One Pico-ITX Board
Digital I/O 113
}
}
}
else if (argc == 2)
{
portval = (UCHAR)atoi(argv[1]);
printf("Specified port value : %s\n", (portval ? "HIGH" : "LOW"));
printf("\n*** DeviceIoControl(code:IOCTL_GPIO_DIRECTION <0,
GPIO%d, OUTPUT, 0>)\n", (INT)portnum);
objGpioReqtOut.port=0;
objGpioReqtOut.pins=(1<<portnum);
objGpioReqtOut.mode=OUTPUT_SEL;
objGpioReqtOut.enable=0;
lpOutBuffer = (LPVOID)&objGpioReqtOut;
nOutBufferSize = sizeof(objGpioReqtOut);
lpInBuffer = (LPVOID)&objGpioReqtIn;
nInBufferSize = sizeof(objGpioReqtIn);
memset(lpInBuffer,0, nInBufferSize); // clear for in buffer
dwBytesReturned = 0;
lpOverlapped = NULL;
bRc = DeviceIoControl(hDevice,IOCTL_GPIO_DIRECTION,lpOutBuffer,
nOutBufferSize,lpInBuffer,nInBufferSize,&dwBytesReturned,
lpOverlapped);
if(bRc == TRUE)
{
printf(" Sucess DeviceIoControl\n");
printf(" dwBytesReturned = %ld, output buffer = {port:%lx,
pins:%lx, mode:%llx, enable:%lx}\n", dwBytesReturned,
objGpioReqtIn.port, objGpioReqtIn.pins,
objGpioReqtIn.mode, objGpioReqtIn.enable);
printf("\n*** DeviceIoControl(code:IOCTL_GPIO_WRITE <0,
GPIO%d, %s, 0>)\n", (INT)portnum, (portval ? "HIGH" :
"LOW"));
objGpioReqtOut.port=0;
objGpioReqtOut.pins=(1<<portnum);
objGpioReqtOut.mode=(portval ? GPIO_HIGH : GPIO_LOW);
objGpioReqtOut.enable=0;
lpOutBuffer = (LPVOID)&objGpioReqtOut;
nOutBufferSize = sizeof(objGpioReqtOut);
lpInBuffer = (LPVOID)&objGpioReqtIn;
nInBufferSize = sizeof(objGpioReqtIn);
memset(lpInBuffer,0, nInBufferSize); // clear for in buffer
dwBytesReturned = 0;
lpOverlapped = NULL;
bRc = DeviceIoControl(hDevice,IOCTL_GPIO_WRITE,lpOutBuffer,
nOutBufferSize,lpInBuffer,nInBufferSize,
&dwBytesReturned,lpOverlapped);
if(bRc == TRUE)
{
printf(" Sucess DeviceIoControl\n");
printf(" dwBytesReturned = %ld, output buffer =
{port:%lx, pins:%lx, mode:%llx, enable:%lx}\n",
dwBytesReturned, objGpioReqtIn.port,
objGpioReqtIn.pins, objGpioReqtIn.mode,
objGpioReqtIn.enable);
}
}
}
if (bRc == FALSE)
{
errNum = GetLastError();
printf(" Failded DeviceIoControl
GetLastError:%d\n", (INT)errNum);
}