void elevator_init_pos(){ if(elev_get_floor_sensor_signal()==BETWEEN_FLOORS){ control_down(); while(elev_get_floor_sensor_signal()==BETWEEN_FLOORS) ; // wait } int floor = elev_get_floor_sensor_signal(); set_last_floor(floor); control_setcurpos(floor); control_stop(); }
int execute_command(enum COMMAND cmd) { switch (cmd) { case C_AHEAD: return control_goahead(4000); case C_GETCORNER: return control_getcorner(); case C_LEFT: return control_turnleft(); case C_RIGHT: return control_turnright(); case C_AROUND: return control_turnaround(); case C_BREAK: return control_break(); case C_START: return control_start(); case C_LETSWIN: return control_letswin(); case C_STOP: default: return control_stop(); } }
static void cleanup(void) { #ifdef DEBUG_MEMORY struct interface *ifp; int i; free(duid); free_options(if_options); if (ifaces) { while ((ifp = TAILQ_FIRST(ifaces))) { TAILQ_REMOVE(ifaces, ifp, next); free_interface(ifp); } free(ifaces); } for (i = 0; i < ifac; i++) free(ifav[i]); free(ifav); for (i = 0; i < ifdc; i++) free(ifdv[i]); free(ifdv); #endif if (!(options & DHCPCD_FORKED)) dev_stop(); if (linkfd != -1) close(linkfd); if (pidfd > -1) { if (options & DHCPCD_MASTER) { if (control_stop() == -1) syslog(LOG_ERR, "control_stop: %m"); } close(pidfd); unlink(pidfile); } #ifdef DEBUG_MEMORY free(pidfile); #endif if (options & DHCPCD_STARTED && !(options & DHCPCD_FORKED)) syslog(LOG_INFO, "exited"); }