1
0
mirror of git://projects.qi-hardware.com/ben-blinkenlights.git synced 2024-07-01 02:44:32 +03:00

ubb-vga.c: a bit more cleanup

- ubb-vga.c: added more section titles
- ubb-vga.c (pick, pattern): grouped pixel-generating functions with
  image generation
- ubb-vga.c (usage, main): properly parse command-line options ("getopt"
  is a bit of overkill at the moment but will be needed later)
This commit is contained in:
Werner Almesberger 2011-04-24 19:43:26 -03:00
parent 554c6645d8
commit dae21696b3

View File

@ -226,7 +226,7 @@ static void until(uint16_t cycles)
}
/* ----- Interface --------------------------------------------------------- */
/* ----- Frame buffer output ----------------------------------------------- */
void setup(void)
@ -237,18 +237,6 @@ void setup(void)
}
static uint32_t pick(int set, int bit, uint32_t val)
{
return set == bit ? val >> 8 : 0;
}
static uint32_t pattern(int set, int r, int g, int b)
{
return pick(set, r, R) | pick(set, g, G) | pick(set, b, B);
}
static void line(const uint8_t *line, const uint8_t *fetch)
{
const uint8_t *p = line;
@ -317,6 +305,21 @@ static void frame(const uint8_t *f)
}
/* ----- Frame buffer image generation ------------------------------------- */
static uint32_t pick(int set, int bit, uint32_t val)
{
return set == bit ? val >> 8 : 0;
}
static uint32_t pattern(int set, int r, int g, int b)
{
return pick(set, r, R) | pick(set, g, G) | pick(set, b, B);
}
static void tricolor(uint32_t *f)
{
int i;
@ -377,7 +380,10 @@ static void grab(uint8_t *f)
}
static void session(int n)
/* ----- Command-line parsing and main loop -------------------------------- */
static void session(int frames)
{
uint8_t f[320*(240+1)];
int i;
@ -388,18 +394,45 @@ static void session(int n)
disable_interrupts();
for (i = 0; i != n; i++)
for (i = 0; i != frames; i++)
frame(f);
enable_interrupts();
}
int main(int argc, char **argv)
static void usage(const char *name)
{
thres = atoi(argv[2]);
fprintf(stderr, "usage: %s frames [threshold]\n", name);
exit(1);
}
int main(int argc, char *const *argv)
{
int frames;
int c;
while ((c = getopt(argc, argv, "")) != EOF)
switch (c) {
default:
usage(*argv);
}
switch (argc-optind) {
case 2:
thres = atoi(argv[optind+1]);
/* fall through */
case 1:
frames = atoi(argv[optind]);
break;
default:
usage(*argv);
}
setup();
session(atoi(argv[1]));
session(frames);
cleanup();
return 0;
}