int fullbenchmark(struct fullbenchmark *self) { if (self->first) { self->first = 0; goto first; } inner: if (benchmark(&self->subrepeat_index, &self->time, &self->num_subrepeats, PREFERRED_TIME)) { return 1; } statistics_update(&self->stats, self->time); ++self->repeat_index; first: if (self->repeat_index < self->num_repeats) { self->subrepeat_index = (size_t)(-1); self->time = mysecond(); goto inner; } return 0; }
int main (int argc, char **argv) { int ch; /*char uptimeInfo[15], lightInfo[15], timebuf[15];*/ /*int lightlevel;*/ int ocontrast = 40; /* Contrast defaults to 40 */ screen_t *sc; sensor_t sensors; led_t displed; extern char *optarg; extern int optind;/*, opterr, optopt;*/ while ((ch = getopt(argc, argv, "lDvc:")) != -1) { switch (ch) { case 'l': led_on_darkness=1; break; case 'D': dodaemon=1; break; case 'v': verbose_mode=1; break; case 'c': ocontrast = atoi(optarg); break; default: usage(); } } argc -= optind; argv += optind; if (dodaemon) { daemon(1, 0); } openlog("pcd8544", LOG_PID|LOG_PERROR, LOG_LOCAL0); /* print infos */ syslog(LOG_LOCAL0|LOG_INFO, "pilab"); if ((sc = screen_init(DIN_PIN, SCLK_PIN, DC_PIN, RST_PIN, CS_PIN, ocontrast)) == NULL) { syslog(LOG_LOCAL0|LOG_INFO, "failed to init screen"); err(3, "failed to init screen"); } /* check wiringPi setup */ delay(2000); if (verbose_mode) syslog(LOG_LOCAL0|LOG_DEBUG, "initialisation of screen led"); led_init(&displed, DISP_LED_GPIO); if (verbose_mode) syslog(LOG_LOCAL0|LOG_DEBUG, "initialisation of screen led - bringing up"); led_setstate(&displed, LED_UP); for (;;) { /* clear lcd */ LCDclear(); if (sensors_read(&sensors) < 0) syslog(LOG_LOCAL0|LOG_INFO, "failed to read data from sensors"); if (led_on_darkness) { if (sensors.sens_light < 50 && displed.l_state != LED_UP) { if (verbose_mode) syslog(LOG_LOCAL0|LOG_DEBUG, "bringing screen led up"); led_setstate(&displed, LED_UP); } else if (sensors.sens_light > 50 && displed.l_state == LED_UP) led_setstate(&displed, LED_DOWN); } if (statistics_update(sc, &sensors) < 0) syslog(LOG_LOCAL0|LOG_INFO, "failed to update statistics"); if (screen_include(sc) < 0) syslog(LOG_LOCAL0|LOG_INFO, "failed to include file line"); /* build screen */ screen_update(sc); sleep(5); } return 0; }