Exemplo n.º 1
0
void KSGTaskCollDeviceState::CollDeviceState::Visit(KSGDeviceNode& node)
{
	char devphy_no[9] = "";
	if(dev_start_ >= sizeof(dev_state_buf_))
	{
		// 发送心跳
		if(send_state())
		{
			ACE_DEBUG((LM_ERROR,"发送心跳失败!"));
			return;
		}
		else
			dev_start_ = 0;
	}
	if(!node.Accept(*this))
		return;
	int state = 0;
	ACE_Time_Value now_time = ACE_OS::gettimeofday();
	now_time -= node.get_update_time();
	if(now_time.sec() > 60 * 8)
		state = 1;
	if(node.get_vendor() == KSG_HD_DEV)
	{
		encode_hd_sn(node.GetPhyId().c_str(),devphy_no);
	}
	else
		ACE_OS::strncpy(devphy_no,node.GetPhyId().c_str(),8);
	ACE_OS::sprintf(&dev_state_buf_[dev_start_],"%s%02X",devphy_no,state);
	dev_start_ += s_dev_state_len_;
}
Exemplo n.º 2
0
void fsm_left_button(){
    switch (g_state) {
        case STATE_MENU:
            if(menu_home()){
                play_melody(MENU_SOUND);
            }
			g_state = STATE_MENU;
            break;
        case STATE_GAME:
			menu_home();
			g_state = STATE_MENU;
            play_melody(MENU_SOUND);
			_delay_ms(50);
			send_state(g_state);
            break;
        case STATE_GAME_OVER:
			break;
		case STATE_CALIBRATE:
            menu_home();
			g_state = STATE_MENU;
            break;
        case STATE_DEBUG:
            menu_home();
			g_state = STATE_MENU;
            break;
        case STATE_PID:
            break;
        default:
            break;
    }
}
Exemplo n.º 3
0
void *threadSttRover(void *sArg){
	int time0 = 0, time1;
	sInfos inf2send;
	sArgThrdSttCom* arg = (sArgThrdSttCom*)sArg;
	
	memcpy(arg, sArg, sizeof(sArgThrdSttCom));
	
	while(arg->clt_sock > 0){
		time1 = millisec();
		if((time1 - time0) > T_INFOS){
			time0 = time1;
			/*printf("arg->sinf.num = %d\n"
			       "arg->sinf.bat = %d\n"
			       "arg->sinf.son = %.2f\n"
			       "arg->sinf.pos = (%.2f; %.2f)\n"
			       "arg->sinf.ang = %.2f\n", arg->sinf.num, arg->sinf.bat, arg->sinf.son, arg->sinf.pos.x, arg->sinf.pos.y, arg->sinf.ang);
			*/      
			inf2send.num = arg->sinf.num;
			inf2send.bat = arg->sinf.bat;
			inf2send.son = arg->sinf.son;
			inf2send.pos = arg->sinf.pos;
			inf2send.ang = arg->sinf.ang;
			send_state(inf2send, arg->clt_sock);
		}
	}
	pthread_exit(NULL);
}
Exemplo n.º 4
0
static void new_game(uint8_t controller){
	g_state  = STATE_GAME;
	g_game_controller = controller;
	send_controller(g_game_controller);
	play_melody(g_game_melody);
	reset_score();
	print_score();
	send_state(g_state);
}
Exemplo n.º 5
0
void fsm_right_button(){
    switch (g_state) {
        case STATE_MENU:
			if(menu_next()){
                play_melody(MENU_SOUND);
			}
			_delay_ms(50);
  
            if(menu_get_index() == 0){
                if(menu_get_arrow_position == 2){
                    oled_print_pong();
                }
                else if(menu_get_arrow_position() == 3){
                    oled_print_game_over();
                }
            }
            else if(menu_get_index() == 4){
                g_state = STATE_CALIBRATE;
            }
            else if(menu_get_index() == 6){
                g_state = STATE_DEBUG;
            }
            else if(menu_get_index() == 7){
                g_game_melody = menu_get_arrow_position();
                play_melody(g_game_melody);
            }
            else if(menu_get_index() == 2){
                new_game(JOYSTICK);
            }
            else if(menu_get_index() == 3){
                new_game(PLAYSTATION);
            }
            break;
        case STATE_GAME: // Send pulse to solenoid
            set_bit(DDRD, PD4);
            _delay_ms(200);
            clear_bit(DDRD,PD4);
            break;
        case STATE_GAME_OVER:
			break;
		case STATE_CALIBRATE:
			joy_calibrate();
            break;
        case STATE_DEBUG:
            if(menu_get_arrow_position() == 1){
                send_state(STATE_DEBUG);
                printf("Debug Mode\n");
            }
            break;
        case STATE_PID:
            
            break;
        default:
            break;
    }
}
Exemplo n.º 6
0
int main(int argc, char *argv[])
{
	struct display *display;
	char buf[256], *p;
	int ret, fd;

	display = malloc(sizeof *display);
	assert(display);

	display->display = wl_display_connect(NULL);
	assert(display->display);

	display->registry = wl_display_get_registry(display->display);
	wl_registry_add_listener(display->registry,
				 &registry_listener, display);
	wl_display_dispatch(display->display);
	wl_display_dispatch(display->display);

	fd = 0;
	p = getenv("TEST_SOCKET");
	if (p)
		fd = strtol(p, NULL, 0);

	while (1) {
		ret = read(fd, buf, sizeof buf);
		if (ret == -1) {
			fprintf(stderr, "test-client: read error: fd %d, %m\n",
				fd);
			return -1;
		}

		fprintf(stderr, "test-client: got %.*s\n", ret - 1, buf);

		if (strncmp(buf, "bye\n", ret) == 0) {
			return 0;
		} else if (strncmp(buf, "create-surface\n", ret) == 0) {
			create_surface(fd, display);
		} else if (strncmp(buf, "send-state\n", ret) == 0) {
			send_state(fd, display);
		} else if (strncmp(buf, "send-button-state\n", ret) == 0) {
			send_button_state(fd, display);
		} else if (strncmp(buf, "send-keyboard-state\n", ret) == 0) {
			send_keyboard_state(fd, display);
		} else {
			fprintf(stderr, "test-client: unknown command %.*s\n",
				ret, buf);
			return -1;
		}
	}

	assert(0);
}
Exemplo n.º 7
0
void fsm_joy_right(){
    switch (g_state) {
        case STATE_MENU:
            if(menu_next()){
                play_melody(MENU_SOUND);
			}
            if(menu_get_index() == 0){
                if(menu_get_arrow_position == 2){
                    oled_print_pong();
                }
                else if(menu_get_arrow_position() == 3){
                    oled_print_game_over();
                }
            }
            else if(menu_get_index() == 4){
                g_state = STATE_CALIBRATE;
            }
			else if(menu_get_index() == 6){
				g_state = STATE_DEBUG;
			}
			else if(menu_get_index() == 7){
				g_game_melody = menu_get_arrow_position();
				play_melody(g_game_melody);
			}
			else if(menu_get_index() == 2){
				new_game(JOYSTICK);
			}
			else if(menu_get_index() == 3){
				new_game(PLAYSTATION);
			}
            break;
        case STATE_GAME:
            break;
        case STATE_GAME_OVER:
			break;
		case STATE_CALIBRATE:
            break;
        case STATE_DEBUG:
			if(menu_get_arrow_position() == 1){
				send_state(STATE_DEBUG);
				printf("Debug Mode\n");
			}
            break;
        case STATE_PID:
            
            break;
        default:
            break;
    }
}
void motion(bool enable, int velocity_left, int velocity_right) {
  //ROS_INFO("ENTER motion()");

  if (enable!=last_state)
    send_state(enable);
  send_vel(velocity_left, velocity_right); 

  if (-1==gettimeofday(&last_motion, NULL)) {
    perror("motion:gettimeofday()");
    exit(1);
  }

  //ROS_INFO("RETURN motion()");
}
Exemplo n.º 9
0
void PFDigitalPin::handle_message()
{
    zmqpp::message_t msg;
    std::string frame1;
    sock_.receive(msg);

    msg >> frame1;
    bool ok = false;
    if (frame1 == "ON")
        ok = turn_on(&msg);
    else if (frame1 == "OFF")
        ok = turn_off();
    else if (frame1 == "TOGGLE")
        ok = toggle();
    else if (frame1 == "STATE")
        return send_state();
    else // invalid cmd
        ERROR("Invalid command received (" << frame1 << "). Potential missconfiguration !");
    sock_.send(ok ? "OK" : "KO");
}
Exemplo n.º 10
0
void motors_init(void) {
  // Original (IdMind)
  // char init1[] = "di\rencres 2064\ransw 0\rapl 0\rsor 0\rsp 30000\rlcc 5000\rlpc 8000\rac 30000\rpor16\rI30\rcontmod\rv0\r";
  //char init2[] = "diprog\rprogseq\rseta1\ra1\rdelay80\rjpe2\rseta1\rdi\rjmp1\ra2\rdajnz3\ren\rseta2\rjmp1\ra3\rseta2\rjmp1\rend\renprog\r";
  // Modified (yoda)
  char init1[1024];
  char init2[] = "diprog\rprogseq\rseta1\ra1\rdelay25\rjpe2\rseta1\rdi\rjmp1\ra2\rdajnz3\ren\rseta2\rjmp1\ra3\rseta2\rjmp1\rend\renprog\r";

  sprintf(init1, "di\rencres 2064\ransw 0\rapl 0\rsor 0\rsp 30000\rlcc 5000\rlpc 8000\rac %d\rpor16\rI30\rcontmod\rv0\reepsav\r", accel);

  // p[0].name = "/dev/ttyS0";
  // p[1].name = "/dev/ttyS1";

  for (int i=0 ; i<NP ; i++) {
    port_open(i);
    port_send(i, init1);
    port_send(i, init2);
    // BUG: port_send(i, "AC15\r");
  }
  send_state(true);
}
Exemplo n.º 11
0
int					/* O - Exit status */
main(int  argc,				/* I - Number of command-line arguments */
     char *argv[])			/* I - Command-line arguments */
{
  int		i;			/* Looping var */
  int		num_defaults;		/* Number of default options */
  cups_option_t	*defaults;		/* Default options */
  char		line[256],		/* Command string */
		command,		/* Command code */
		*dest,			/* Pointer to destination */
		*list,			/* Pointer to list */
		*agent,			/* Pointer to user */
		status;			/* Status for client */
  socklen_t	hostlen;		/* Size of client address */
  http_addr_t	hostaddr;		/* Address of client */
  char		hostname[256],		/* Name of client */
		hostip[256],		/* IP address */
		*hostfamily;		/* Address family */
  int		hostlookups;		/* Do hostname lookups? */
#ifdef __APPLE__
  vproc_transaction_t vtran = vproc_transaction_begin(NULL);
#endif /* __APPLE__ */


 /*
  * Don't buffer the output...
  */

  setbuf(stdout, NULL);

 /*
  * Log things using the "cups-lpd" name...
  */

  openlog("cups-lpd", LOG_PID, LOG_LPR);

 /*
  * Scan the command-line for options...
  */

  num_defaults = 0;
  defaults     = NULL;
  hostlookups  = 1;

  for (i = 1; i < argc; i ++)
    if (argv[i][0] == '-')
    {
      switch (argv[i][1])
      {
        case 'h' : /* -h hostname[:port] */
            if (argv[i][2])
	      cupsSetServer(argv[i] + 2);
	    else
	    {
	      i ++;
	      if (i < argc)
	        cupsSetServer(argv[i]);
	      else
	        syslog(LOG_WARNING, "Expected hostname string after -h option!");
	    }
	    break;

	case 'o' : /* Option */
	    if (argv[i][2])
	      num_defaults = cupsParseOptions(argv[i] + 2, num_defaults,
	                                      &defaults);
	    else
	    {
	      i ++;
	      if (i < argc)
		num_defaults = cupsParseOptions(argv[i], num_defaults,
		                                &defaults);
              else
        	syslog(LOG_WARNING, "Expected option string after -o option!");
            }
	    break;

        case 'n' : /* Don't do hostname lookups */
	    hostlookups = 0;
	    break;

	default :
	    syslog(LOG_WARNING, "Unknown option \"%c\" ignored!", argv[i][1]);
	    break;
      }
    }
    else
      syslog(LOG_WARNING, "Unknown command-line option \"%s\" ignored!",
             argv[i]);

 /*
  * Get the address of the client...
  */

  hostlen = sizeof(hostaddr);

  if (getpeername(0, (struct sockaddr *)&hostaddr, &hostlen))
  {
    syslog(LOG_WARNING, "Unable to get client address - %s", strerror(errno));
    strlcpy(hostname, "unknown", sizeof(hostname));
  }
  else
  {
    httpAddrString(&hostaddr, hostip, sizeof(hostip));

    if (hostlookups)
      httpAddrLookup(&hostaddr, hostname, sizeof(hostname));
    else
      strlcpy(hostname, hostip, sizeof(hostname));

#ifdef AF_INET6
    if (hostaddr.addr.sa_family == AF_INET6)
      hostfamily = "IPv6";
    else
#endif /* AF_INET6 */
    hostfamily = "IPv4";

    syslog(LOG_INFO, "Connection from %s (%s %s)", hostname, hostfamily,
           hostip);
  }

  num_defaults = cupsAddOption("job-originating-host-name", hostname,
                               num_defaults, &defaults);

 /*
  * RFC1179 specifies that only 1 daemon command can be received for
  * every connection.
  */

  if (smart_gets(line, sizeof(line), stdin) == NULL)
  {
   /*
    * Unable to get command from client!  Send an error status and return.
    */

    syslog(LOG_ERR, "Unable to get command line from client!");
    putchar(1);

#ifdef __APPLE__
    vproc_transaction_end(NULL, vtran);
#endif /* __APPLE__ */

    return (1);
  }

 /*
  * The first byte is the command byte.  After that will be the queue name,
  * resource list, and/or user name.
  */

  if ((command = line[0]) == '\0')
    dest = line;
  else
    dest = line + 1;

  if (command == 0x02)
    list = NULL;
  else
  {
    for (list = dest; *list && !isspace(*list & 255); list ++);

    while (isspace(*list & 255))
      *list++ = '\0';
  }

 /*
  * Do the command...
  */

  switch (command)
  {
    default : /* Unknown command */
        syslog(LOG_ERR, "Unknown LPD command 0x%02X!", command);
        syslog(LOG_ERR, "Command line = %s", line + 1);
	putchar(1);

        status = 1;
	break;

    case 0x01 : /* Print any waiting jobs */
        syslog(LOG_INFO, "Print waiting jobs (no-op)");
	putchar(0);

        status = 0;
	break;

    case 0x02 : /* Receive a printer job */
        syslog(LOG_INFO, "Receive print job for %s", dest);
        /* recv_print_job() sends initial status byte */

        status = (char)recv_print_job(dest, num_defaults, defaults);
	break;

    case 0x03 : /* Send queue state (short) */
        syslog(LOG_INFO, "Send queue state (short) for %s %s", dest, list);
	/* no status byte for this command */

        status = (char)send_state(dest, list, 0);
	break;

    case 0x04 : /* Send queue state (long) */
        syslog(LOG_INFO, "Send queue state (long) for %s %s", dest, list);
	/* no status byte for this command */

        status = (char)send_state(dest, list, 1);
	break;

    case 0x05 : /* Remove jobs */
        if (list)
	{
	 /*
	  * Grab the agent and skip to the list of users and/or jobs.
	  */

	  agent = list;

	  for (; *list && !isspace(*list & 255); list ++);
	  while (isspace(*list & 255))
	    *list++ = '\0';

	  syslog(LOG_INFO, "Remove jobs %s on %s by %s", list, dest, agent);

	  status = (char)remove_jobs(dest, agent, list);
        }
	else
	  status = 1;

	putchar(status);
	break;
  }

  syslog(LOG_INFO, "Closing connection");
  closelog();

#ifdef __APPLE__
  vproc_transaction_end(NULL, vtran);
#endif /* __APPLE__ */

  return (status);
}
Exemplo n.º 12
0
void loop() {

  recieve_commands();
  
  if (!docking && !auto_cover) {
    execute_move();
    interaction();
  }
  
  if (move_time == 0) {

    if (stream)   // @t
      stream_data();

    if (exp_auto) // @a
      feb_experiment_scanning();//katie_auto();

    if (auto_on )   // @u
      katie_auto();

    // if (auto_cover){ /// send state message at a regular interval during script
    //   int diff = millis() - picture_timer;
    //   if (diff > 3000) {
    //     send_state("picture timer");
    //     picture_timer = millis();
    //   }
    // }

    if (exp_stream )  // @e
      // arduino_hub_stream(); // experiment_dec_2013

    if (debug_stream )   // @g
      stream_debug_sensors();
  }

  BUTTONS_STATE = COIFetchSingleSensor(BUTTONS);
  if (PLAY_BUTTON(BUTTONS_STATE) == HIGH) {
      delay(200);
      COIChangeMode(CMD_MODE_PASSIVE);
      play_toggle = true;
      send_response("SAFE MODE ON", 1);
    }

  if ((CHARGING_SOURCE_STATE == 1  || CHARGING_SOURCE_STATE == 2) && play_toggle == true ) {
    charge_toggle = true;
    play_toggle = false;
    send_response("CHARGING SOURCE DETECTED", 1);
  }

  if ((CHARGING_SOURCE_STATE == 0) && (OI_MODE_STATE == OI_PASSIVE) && (charge_toggle == true) && (play_toggle == false)){
    COIChangeMode(CMD_MODE_FULL);
    charge_toggle = false;
    send_response("FULL MODE ON", 1);
  }

  update_battery_sensors();
  charger();

  if (!digitalRead(INPUT_20) && !auto_cover ) { // check to see if not in script so command does not interfere
    //update_create_fast_sensors(); // so that collision detection works
    BUMPS_WHEEL_DROPS_STATE         = COIFetchSingleSensor(BUMPS_WHEELS);
    //charger();  // detects charger (once this works move make nest it deeper in framework)
  }

   if ((BUMPS_WHEEL_DROPS_STATE > 0 && BUMPS_WHEEL_DROPS_STATE < 4) && bp == false) {
          bp = true;
          send_state("collision detected");
        }
   if ((BUMPS_WHEEL_DROPS_STATE == 0) && bp == true) {
          bp = false;
          send_state("bumper released");
        }

  //heading = update_header(heading, COIFetchSingleSensor(ANGLE_SINCE_LAST); // Mostly for testing, for now
  delay(20); // serial gets overrun if no delay

}
Exemplo n.º 13
0
main(int argc, char *argv[]) {
	char *pgm;
	char *server;
	int   i, j;
	int   id, nc;
	int   nstep   = 10;
	int   nmodule = 5;
	int   running[MAX_MODULES], runstate[MAX_MODULES], nrunning;

	pgm = argv[0];
	++argv; --argc;

	if (!argc) {
		fprintf(stderr, "usage: %s server [nstep] [nmodule]\n", pgm);
		exit(1);
	}
	server = argv[0];
	++argv; --argc;

	if (argc) {
		nstep = atoi(argv[0]);
		++argv; --argc;
	}

	if (argc) {
		nmodule = atoi(argv[0]);
		++argv; --argc;
	}

	if (argc) {
		fprintf(stderr, "usage: %s server [nstep] [nmodule]\n", pgm);
		exit(1);
	}

	event_verbose(0);
	efi_init();

	id = event_join(server, &nc);
	if (!id) {
		fprintf(stderr, "%s: couldn't join server %s\n", pgm, server);
		exit(1);
	}
	fprintf(stderr, "%s: Joined %s as client id %d (%d clients)\n",
		pgm, server, id, nc);

	/* Don't receive any events */
	event_select_type(0, 0, ET_MAX);
	event_receive_enable(0);

	/* Send loaded messages */
	for (i = 0; i < nmodule; ++i) {
		send_state(i, 2);
		event_sleep(irand(100, 1000));
	}

	/* Send an idle messages */
	for (i = 0; i < nmodule; ++i) {
		send_state(i, 3);
		event_sleep(irand(100, 1000));
	}

	/* Cycle run-send-idle for each step */
	for (i = 0; i < nstep; ++i) {
		/* Set all modules to IDLE */
		for (j = 0; j < nmodule; ++j) {
			running[j]  = j;
			runstate[j] = 3;
		}
		nrunning = nmodule;

		/* Randomly cycle a module */
		while (nrunning) {
			j = irand(0, nrunning-1);

			if (runstate[j] == 5) runstate[j] = 3;
			else ++runstate[j];

			send_state(running[j], runstate[j]);

			/* Remove modules that have gone idle */
			if (runstate[j] == 3) {
				running[j]  = running[nrunning-1];
				runstate[j] = runstate[nrunning-1];
				nrunning--;
			}

			event_sleep(irand(100, 2000));
		}
		send_frame(i+1, nstep);
		printf("Finished frame %d\n", i);
	}

	/* Send an unload messages */
	for (i = 0; i < nmodule; ++i) {
		send_state(i, 1);
		event_sleep(irand(100, 1000));
	}

}