1
0
mirror of git://projects.qi-hardware.com/ben-blinkenlights.git synced 2024-11-24 00:40:36 +02: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) 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) static void line(const uint8_t *line, const uint8_t *fetch)
{ {
const uint8_t *p = line; 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) static void tricolor(uint32_t *f)
{ {
int i; 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)]; uint8_t f[320*(240+1)];
int i; int i;
@ -388,18 +394,45 @@ static void session(int n)
disable_interrupts(); disable_interrupts();
for (i = 0; i != n; i++) for (i = 0; i != frames; i++)
frame(f); frame(f);
enable_interrupts(); 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(); setup();
session(atoi(argv[1])); session(frames);
cleanup(); cleanup();
return 0; return 0;
} }