コード例 #1
0
ファイル: beanstalkd.c プロジェクト: brosner/beanstalkd
int
main(int argc, char **argv)
{
    int r;

    progname = argv[0];
    opts(argc, argv);

    job_init();
    prot_init();

    r = make_server_socket(host_addr, port);
    if (r == -1) twarnx("make_server_socket()"), exit(111);

    if (user) su(user);
    if (detach) daemonize();
    event_init();
    set_sig_handlers();
    nudge_fd_limit();

    unbrake((evh) h_accept);

    event_dispatch();
    twarnx("got here for some reason");
    return 0;
}
コード例 #2
0
ファイル: stepper.c プロジェクト: fretboardfreak/cmpe490
void aim( motorStatus azimuth, motorStatus elevation ){
  /*
    - get angle difference between azimuthStatus and azimuth
    - calc the number of steps to achive the required angle delta
    - if angle is neg then set the CW/CCW line LEFT or DOWN
    - set enable line to high
    - call step
    - if braked is false then set enable line to low
    - repeat for elevation
   */
  int azi_delta, ele_delta;
  
  azi_delta = azimuth.steps - azimuthStatus.steps;
  ele_delta = elevation.steps - elevationStatus.steps;
  
  if ( azi_delta < 0 )
    setDirection( AZI, LEFT );
  else
    setDirection( AZI, RIGHT );
  
  brake( AZI );

  accelStep( abs(azi_delta), AZI );

  if ( ele_delta < 0 )
    setDirection( ELE, DOWN );
  else
    setDirection( ELE, UP );
  
  brake( ELE );

  accelStep( abs(ele_delta), ELE );
  //step( abs(ele_delta), ELE );
  
  if ( azimuth.braked == 0 )
    unbrake( AZI );
  if ( elevation.braked == 0)
    unbrake( ELE );
  
  //update the current status of the motors
  azimuthStatus = azimuth;
  elevationStatus = elevation;
  return;
}
コード例 #3
0
ファイル: beanstalkd.c プロジェクト: rainly/beanstalkd
int
main(int argc, char **argv)
{
    int r, l;
    struct event_base *ev_base;
    struct job binlog_jobs = {};

    progname = argv[0];
    opts(argc, argv);

    if (detach && binlog_dir) {
        if (binlog_dir[0] != '/') {
            warnx("The -b option requires an absolute path when used with -d.");
            usage("Path is not absolute", binlog_dir);
        }
    }

    job_init();
    prot_init();

    /* We want to make sure that only one beanstalkd tries to use the binlog
     * directory at a time. So acquire a lock now and never release it. */
    if (binlog_dir) {
        r = binlog_lock();
        if (!r) twarnx("failed to lock binlog dir %s", binlog_dir), exit(10);
    }

    r = make_server_socket(host_addr, port);
    if (r == -1) twarnx("make_server_socket()"), exit(111);
    l = r;

    if (user) su(user);
    ev_base = event_init();
    set_sig_handlers();
    nudge_fd_limit();

    r = listen(l, 1024);
    if (r == -1) twarn("listen()");
    accept_handler = (evh)h_accept;
    unbrake();

    binlog_jobs.prev = binlog_jobs.next = &binlog_jobs;
    binlog_init(&binlog_jobs);
    prot_replay_binlog(&binlog_jobs);

    if (detach) {
        daemonize();
        event_reinit(ev_base);
    }

    event_dispatch();
    twarnx("event_dispatch error");
    binlog_shutdown();
    return 0;
}
コード例 #4
0
void autom_10ms (void)
{

        static uint16_t compteur = 0;
        static uint8_t  evitement_en_cours = OFF;
        static uint8_t compteur_moyenne_evitement = 0;
        static uint8_t timer_delai_evitement = 0;

        /**********************************************************************/
        /******************************* Autom ********************************/
        /**********************************************************************/

        //fonction qui definit les actions
        switch (FLAG_ACTION)
        {
            case NE_RIEN_FAIRE:
                break;
                
            default :
                break;
        }

        /**********************************************************************/
        /**************************** Evitement *******************************/
        /**********************************************************************/


        //Fonction permettant de lancer la fonction d'évitement
        if(EVITEMENT_ADV_AVANT == ON)
        {
            if ( (CAPT_US_GAUCHE == 1 || CAPT_US_BALISE == 1 || CAPT_US_DROIT == 1) )
            {
                if ( DETECTION == OFF)
                {
                    compteur = 0;
                    compteur_moyenne_evitement = 0;
                    timer_delai_evitement = COMPTEUR_TEMPS_MATCH;
                    DETECTION = ON;
                    evitement_en_cours = OFF;
                    if(STRATEGIE_EVITEMENT != EVITEMENT_BACKUP) //On ne veut pas le lancer maintenant pour ce type d'évitement
                        FLAG_ASSERV.erreur = EVITEMENT;
                    brake();
                    son_evitement(49);
                }
                else
                    son_evitement(2);
            }
            if (DETECTION == ON && STRATEGIE_EVITEMENT == STOP)
            {
                compteur ++;
                if (compteur > 100)
                {
                    compteur = 100;
                    if (CAPT_US_GAUCHE == 0 && CAPT_US_BALISE == 0 && CAPT_US_DROIT == 0)
                    {
                        DETECTION = OFF;
                        unbrake();
                    }
                }
            }
            else if(DETECTION == ON && STRATEGIE_EVITEMENT == EVITEMENT_BACKUP)
            {
                if (CAPT_US_GAUCHE == 0 && CAPT_US_BALISE == 0 && CAPT_US_DROIT == 0)
                    compteur_moyenne_evitement++;		//Si les capteurs ne voient rien après 10ms alors on incrémente
                else
                    compteur_moyenne_evitement = 0;

                if(compteur_moyenne_evitement > 50)	
                {			//Si on ne voit rien durant 1s complete alors on relance
                    DETECTION = OFF;
                    unbrake();
                }
                
                if((COMPTEUR_TEMPS_MATCH - timer_delai_evitement) > 3)
                {//Si on dépasse le temps d'attente et qu'il y a toujours l'adversaire en face on change de strat
                    FLAG_ASSERV.erreur = EVITEMENT;
                    fin_deplacement();
                }
            }
        }
        
        
        else if (EVITEMENT_ADV_ARRIERE == ON)
        {
            if ( (CAPT_IR_ARRIERE_CENTRE == 0 || CAPT_IR_ARRIERE_DROIT == 0 || CAPT_IR_ARRIERE_GAUCHE == 0)  && DETECTION == OFF)
            {
                compteur = 0;
                compteur_moyenne_evitement = 0;
                timer_delai_evitement = COMPTEUR_TEMPS_MATCH;
                DETECTION = ON;
                evitement_en_cours = OFF;
                if(STRATEGIE_EVITEMENT != EVITEMENT_BACKUP) //On ne veut pas le lancer maintenant pour ce type d'évitement
                    FLAG_ASSERV.erreur = EVITEMENT;
                brake();
            }
            
            
            if (DETECTION == ON && STRATEGIE_EVITEMENT == STOP)
            {
                compteur ++;
                if (compteur > 100)
                {
                    compteur = 100;
                    if (CAPT_IR_ARRIERE_CENTRE == 1 && CAPT_IR_ARRIERE_DROIT == 1 && CAPT_IR_ARRIERE_GAUCHE == 1)
                    {
                        DETECTION = OFF;
                        unbrake();
                    }
                }
            }
            
            else if(DETECTION == ON && STRATEGIE_EVITEMENT == EVITEMENT_BACKUP)
            {
                if ((CAPT_IR_ARRIERE_CENTRE == 0 && CAPT_IR_ARRIERE_DROIT == 0 && CAPT_IR_ARRIERE_GAUCHE == 0))
                    compteur_moyenne_evitement++;
                else
                    compteur_moyenne_evitement = 0;

                if(compteur_moyenne_evitement > 50)
                {
                    DETECTION = OFF;
                    unbrake();
                }

                if((COMPTEUR_TEMPS_MATCH - timer_delai_evitement) > 3)
                {//Si on dépasse le temps d'attente et qu'il y a toujours l'adversaire en face on change de strat
                    FLAG_ASSERV.erreur = EVITEMENT;
                    fin_deplacement();
                }
            }
        }
        
        
        else if (DETECTION == ON)
        {
            DETECTION = OFF;
            unbrake();
        }

}