Exemplo n.º 1
0
void initialize_car(struct car* c) {
    read_car_state(c);
    (c->motor).left = 0;
    (c->motor).right = 0;
    c->speed = 0;
    c->direction = 0;
    c->state = STATE_STANDBY;
    c->laps = 0;
    c->lap_timer = LAP_DELAY;
    c->track_direction = DIRECTION_UNKNOWN;
    c->temperature = 0;
    c->magnet = 0;
    recorder_init(&c->recorder);
    write_car_state(c);
}
Exemplo n.º 2
0
int main(int argc, char ** argv)
  {
  int ret = EXIT_FAILURE;
  bg_mediaconnector_t conn;
  gavl_time_t delay_time = GAVL_TIME_SCALE / 100;
  gavl_metadata_t m;
  gavftools_block_sigpipe();
  bg_mediaconnector_init(&conn);
  
  gavftools_init();
  
  /* Create plugin regsitry */
  
  /* Initialize streams */
  recorder_init(&rec);

  bg_cmdline_arg_set_parameters(global_options, "-aud", rec.as.parameters);
  bg_cmdline_arg_set_parameters(global_options, "-vid", rec.vs.parameters);

  gavftools_set_cmdline_parameters(global_options);
  
    
  /* Handle commandline options */
  bg_cmdline_init(&app_data);
  bg_cmdline_parse(global_options, &argc, &argv, NULL);

  out_plug = gavftools_create_out_plug();
    
  /* Open plugins */
  if(!recorder_open(&rec, &conn))
    {
    bg_log(BG_LOG_ERROR, LOG_DOMAIN, "Opening recorder plugins failed");
    goto the_end;
    }

  gavl_metadata_init(&m);
  gavftools_set_output_metadata(&m);

  /* Open output plug */
  if(!bg_plug_open_location(out_plug, gavftools_out_file,
                            (const gavl_metadata_t *)0,
                            (const gavl_chapter_list_t*)0))
    goto the_end;
  
  gavl_metadata_free(&m);

  /* Initialize output plug */
  if(!bg_plug_setup_writer(out_plug, &conn))
    {
    bg_log(BG_LOG_ERROR, LOG_DOMAIN, "Setting up plug writer failed");
    goto the_end;
    }
  
  /* Initialize threads */
  bg_mediaconnector_start(&conn);
  bg_mediaconnector_create_threads(&conn, 0);
  bg_mediaconnector_threads_init_separate(&conn);

  bg_mediaconnector_threads_start(&conn);
  
  /* Main loop */
  while(1)
    {
    if(gavftools_stop() ||
       bg_mediaconnector_done(&conn) ||
       bg_plug_got_error(out_plug))
      break;
    gavl_time_delay(&delay_time);
    }

  bg_mediaconnector_threads_stop(&conn);
  
  /* Cleanup */
  
  ret = EXIT_SUCCESS;
  the_end:
  bg_log(BG_LOG_INFO, LOG_DOMAIN, "Cleaning up");

  bg_mediaconnector_free(&conn);

  if(out_plug)
    bg_plug_destroy(out_plug);

  recorder_cleanup(&rec);
  
  gavftools_cleanup();

  if(audio_section)
    bg_cfg_section_destroy(audio_section);
  if(video_section)
    bg_cfg_section_destroy(video_section);
  
  return ret;
  }
Exemplo n.º 3
0
void sim_start(int argc, char** argv) {
  int c;
  int index;
  uint8_t time_scale = DEFAULT_TIME_SCALE;

  while ((c = getopt_long (argc, argv, shortopts, opts, &index)) != -1)
    switch (c) {
    case 'q':
      verbose = 0;
      break;
    case 'g':
      trace_gcode = 1;
      break;
    case 'p':
      trace_pos = 1;
      break;
    case 'v':
      verbose += 1;
      break;
    case 't':
      time_scale = (uint8_t) atoi(optarg);
      break;
    case 'o':
      recorder_init(optarg ? optarg : "datalog.out");
      break;
    default:
      sim_error("Unexpected result in getopt_long handler");
    }

  // Record the command line arguments to the datalog, if active
  record_raw("# commandline:   ");
  for (index = 0; index < argc; index++) {
    record_raw(argv[index]);
    record_raw(" ") ;
  }
  record_raw("\n");

  // Store remaining arguments list for serial sim
  g_argc = argc - optind + 1;
  g_argv = argv + optind - 1;

  if (argc < 2) usage(argv[0]);

  // Initialize timer
  sim_timer_init(time_scale);

  // Record pin names in datalog
#define NAME_PIN_AXES(x) \
  add_trace_var(#x "_X" , TRACE_##x + 0); \
  add_trace_var(#x "_Y" , TRACE_##x + 1); \
  add_trace_var(#x "_Z" , TRACE_##x + 2); \
  add_trace_var(#x "_E" , TRACE_##x + 3);
  NAME_PIN_AXES(POS);

#define NAME_PIN(x) add_trace_var(#x , TRACE_PINS + x);
  NAME_PIN(X_STEP_PIN);
  NAME_PIN(X_DIR_PIN);
  NAME_PIN(X_MIN_PIN);
  NAME_PIN(X_ENABLE_PIN);
  NAME_PIN(Y_STEP_PIN);
  NAME_PIN(Y_DIR_PIN);
  NAME_PIN(Y_MIN_PIN);
  NAME_PIN(Y_ENABLE_PIN);
  NAME_PIN(Z_STEP_PIN);
  NAME_PIN(Z_DIR_PIN);
  NAME_PIN(Z_MIN_PIN);
  NAME_PIN(Z_ENABLE_PIN);
  NAME_PIN(E_STEP_PIN);
  NAME_PIN(E_DIR_PIN);
  NAME_PIN(E_ENABLE_PIN);

  NAME_PIN(STEPPER_ENABLE_PIN);
}