LCD configuration » fbfill.cpp
1 |
/**
|
---|---|
2 |
* \file fbfill.cpp
|
3 |
* very simple VGA frame buffer pattern fill
|
4 |
* to compile:
|
5 |
* /usr/local/angstrom/arm/bin/arm-angstrom-linux-gnueabi-g++ -o fbfill fbfill.cpp
|
6 |
*
|
7 |
* 2010 (c) Critical Link LLC. This file is licensed under
|
8 |
* the terms of the GNU General Public License version 2. This program
|
9 |
* is licensed "as is" without any warranty of any kind, whether express
|
10 |
* or implied.
|
11 |
*
|
12 |
*/
|
13 |
#include <stdio.h>
|
14 |
|
15 |
int main(int argc, char** argv) |
16 |
{
|
17 |
|
18 |
int w = 640; |
19 |
int h = 480; |
20 |
int s = h/(8 *sizeof(unsigned short)); |
21 |
unsigned short bitlane = 0; |
22 |
const char* devname = "/dev/fb"; |
23 |
|
24 |
FILE* fp = NULL; |
25 |
// un-blank the display
|
26 |
fp = fopen("/sys/devices/platform/da8xx_lcdc.0/graphics/fb0/blank", "w"); |
27 |
if(fp) |
28 |
{
|
29 |
fwrite("1\n",2,1,fp); |
30 |
fclose(fp); |
31 |
}
|
32 |
|
33 |
printf("opening %s\n",devname); |
34 |
fp = fopen(devname,"w"); |
35 |
if (!fp) |
36 |
{
|
37 |
perror(devname); |
38 |
return(2); |
39 |
}
|
40 |
unsigned short* pdata = new unsigned short[w]; |
41 |
for (int xx = 0; xx < (w); ++xx) |
42 |
{
|
43 |
pdata[xx] = 0xFFFF; |
44 |
}
|
45 |
fwrite(pdata,2,w,fp); |
46 |
for (int yy = 1; yy < (h-1); ++yy) |
47 |
{
|
48 |
pdata[0] = 0xFFFF; |
49 |
for (int xx = 1; xx < (w-1); ++xx) |
50 |
{
|
51 |
pdata[xx] = 1 << bitlane; |
52 |
}
|
53 |
pdata[w-1] = 0xFFFF; |
54 |
fwrite(pdata,2,w,fp); |
55 |
if (yy && (yy%s == 0)) |
56 |
++bitlane; |
57 |
}
|
58 |
for (int xx = 0; xx < (w); ++xx) |
59 |
{
|
60 |
pdata[xx] = 0xFFFF; |
61 |
}
|
62 |
fwrite(pdata,2,w,fp); |
63 |
delete [] pdata; |
64 |
return 0; |
65 |
}
|