コード例 #1
0
ファイル: main.c プロジェクト: hdekker/simplebot
int main(int argc, const char* argv[])
{
  signal(SIGINT, intHandler);
    
  sensors_initialize(&keep_running);
  motors_initialize();
  command_initialize();
  ball_initialize();
  for (int i=3; i>0; i--)
  {
    printf("Still %d seconds left to make your choice\n", i);
    sleep(1);
  }
  
  if (sensors_is_button_pressed(BUTTON_CODE_UP))
  { 
    //
    // Test scenario
    //
    if (sensors_is_button_pressed(BUTTON_CODE_LEFT))
    {
      execute(test_move);
    }
    else if (sensors_is_button_pressed(BUTTON_CODE_RIGHT))
    {
      execute(test_rotate);
    }
    else if (sensors_is_button_pressed(BUTTON_CODE_DOWN))
    {
      execute(test_shoot);
    }
    
  }
  else
  {
    //
    // Normal scenario
    //
    if (sensors_is_button_pressed(BUTTON_CODE_LEFT))
    {
      // Run through maze
      execute(maze_execute);
    }
    
    if (sensors_is_button_pressed(BUTTON_CODE_RIGHT))
    {
      // Throw balls
      execute(ball_execute);
    }
  }
  
  ball_terminate();
  command_terminate();
  motors_terminate();
  sensors_terminate(&keep_running);
  
  return 0;
}
コード例 #2
0
ファイル: hub.c プロジェクト: imobilis/uhub
struct hub_info* hub_start_service(struct hub_config* config)
{
	struct hub_info* hub = 0;
	int ipv6_supported;

	hub = hub_malloc_zero(sizeof(struct hub_info));
	if (!hub)
	{
		LOG_FATAL("Unable to allocate memory for hub");
		return 0;
	}

	hub->tm_started = time(0);
	ipv6_supported = net_is_ipv6_supported();
	if (ipv6_supported)
		LOG_DEBUG("IPv6 supported.");
	else
		LOG_DEBUG("IPv6 not supported.");

	hub->server = start_listening_socket(config->server_bind_addr, config->server_port, config->server_listen_backlog, hub);
	if (!hub->server)
	{
		hub_free(hub);
		LOG_FATAL("Unable to start hub service");
		return 0;
	}
	LOG_INFO("Starting " PRODUCT "/" VERSION ", listening on %s:%d...", net_get_local_address(hub->server->sd), config->server_port);

#ifdef SSL_SUPPORT
	if (!load_ssl_certificates(hub, config))
	{
		hub_free(hub);
		return 0;
	}
#endif

	hub->config = config;
	hub->users = NULL;
	hub->muxes = list_create();

	hub->users = uman_init();
	if (!hub->users)
	{
		net_con_close(hub->server);
		hub_free(hub);
		return 0;
	}

	if (event_queue_initialize(&hub->queue, hub_event_dispatcher, (void*) hub) == -1)
	{
		net_con_close(hub->server);
		uman_shutdown(hub->users);
		hub_free(hub);
		return 0;
	}

	hub->recvbuf = hub_malloc(MAX_RECV_BUF);
	hub->sendbuf = hub_malloc(MAX_SEND_BUF);
	if (!hub->recvbuf || !hub->sendbuf)
	{
		net_con_close(hub->server);
		hub_free(hub->recvbuf);
		hub_free(hub->sendbuf);
		uman_shutdown(hub->users);
		hub_free(hub);
		return 0;
	}

	hub->logout_info  = (struct linked_list*) list_create();
	server_alt_port_start(hub, config);

	hub->status = hub_status_running;

	g_hub = hub;

	if (net_backend_get_timeout_queue())
	{
		hub->stats.timeout = hub_malloc_zero(sizeof(struct timeout_evt));
		timeout_evt_initialize(hub->stats.timeout, hub_timer_statistics, hub);
		timeout_queue_insert(net_backend_get_timeout_queue(), hub->stats.timeout, TIMEOUT_STATS);
	}

	// Start the hub command sub-system
	hub->commands = command_initialize(hub);
	return hub;
}