Example #1
0
int main(int argc, char *argv[])
{
    char data[253];
    int i;
    lnp_tx_result result;
    unsigned char len;
    int count = 0;

    for (i=0;i<sizeof(data);i++) data[i] = i;

    if ( lnp_init(0,0,0,0,0) )
    {
    	perror("lnp_init");	
    	exit(1);
    }

    else fprintf(stderr,"init OK\n");

    lnp_addressing_set_handler (MY_PORT_1, addr_handler_1);
    lnp_addressing_set_handler (MY_PORT_2, addr_handler_2);
    lnp_integrity_set_handler (int_handler);

    while (1)
    {
    	//sleep(1000);
    	//continue;
	    len = LEN; //random() % 252 + 1;
		result = lnp_addressing_write(data,len ,DEST_ADDR,MY_PORT_1);
		switch (result)
		{
        	case TX_SUCCESS:
        		printf("Tansmitted %d : %d\n",len,count++);
    			break;
    		case TX_FAILURE:
    			printf("Collision\n");
        		break;
        	default:
        		perror("Transmit error");
        		exit(1);
        }
	}

    return 0;
}
Example #2
0
File: kmain.c Project: abbrev/xs
void kmain(void)
{
  int reset_after_shutdown=0;
#ifdef CONF_DKEY
  int c;
#endif

  /* Install the text.hi segment in the correct place.  The
   * firmware loader puts it in the bss segment, we copy it 
   * to it's final location.
   */
  memcpy(&__text_hi, &__bss, &__etext_hi - &__text_hi);

  reset_vector = rom_reset_vector;

  /* Turn off motor, since writing to hitext manipulates motors */
  motor_controller = 0;
  
  memset(&__bss, 0, &__bss_end - &__bss);

#ifdef CONF_MM
  mm_init();
#endif

  while (1) {
    power_init();

#ifdef CONF_AUTOSHUTOFF
    shutoff_init();
#endif

    lcd_init();

#ifdef CONF_DSOUND
    dsound_init();
#endif
#ifdef CONF_TIME
    systime_init();
#endif
#ifdef CONF_DSENSOR
    ds_init();
#endif
#ifdef CONF_DMOTOR
    dm_init();
#endif
#ifdef CONF_LNP
    lnp_init();
    lnp_logical_init();
#endif
#ifdef CONF_TM
    tm_init();
#endif
#ifdef CONF_PROGRAM
    program_init();
#endif

    show_on();

    // wait till power key released
    //
#ifdef CONF_DKEY
    dkey_multi=KEY_ANY;
    while((c=dkey_multi) & KEY_ONOFF);
#else
    while (PRESSED(dbutton(), BUTTON_ONOFF));
    delay(100);
#endif

    cls();
#ifndef CONF_PROGRAM
    lcd_show(man_run);
#ifndef CONF_LCD_REFRESH
    lcd_refresh();
#endif
#endif

    // run app
    //
#ifdef CONF_TM
#ifndef CONF_PROGRAM
    execi(&main,0,0,PRIO_NORMAL,DEFAULT_STACK_SIZE);
#endif
    tm_start();
#else
    main(0,0);
#endif

    show_off();

    // ON/OFF + PROGRAM -> erase firmware
#ifdef CONF_DKEY
    while((c=dkey_multi) & KEY_ONOFF)
      if(c&KEY_PRGM)
        reset_after_shutdown=1;
#else
    while (PRESSED(dbutton(), BUTTON_ONOFF))
      if (PRESSED(dbutton(), BUTTON_PROGRAM))
        reset_after_shutdown=1;
#endif

#ifdef CONF_PROGRAM
    program_shutdown();
#endif
#ifdef CONF_LNP
    lnp_logical_shutdown();
#endif
#ifdef CONF_DMOTOR
    dm_shutdown();
#endif
#ifdef CONF_DSENSOR
    ds_shutdown();
#endif
#ifdef CONF_TIME
    systime_shutdown();
#endif

    if (reset_after_shutdown)
      rom_reset();

    lcd_clear();
    lcd_power_off();

    power_off();
  }
}
Example #3
0
int main(int argc, char **argv) {
  lx_t lx;    	    // the brickOS executable
  char *filename;
  int opt,option_index;
    
  unsigned char buffer[256+3];

  while((opt=getopt_long(argc, argv, "r:p:s:v",
                        long_options, &option_index) )!=-1) {
    switch(opt) {
      case 'r':
	sscanf(optarg,"%x",&rcxaddr);
        break;
      case 'p':
	sscanf(optarg,"%x",&prog);
        break;
      case 's':
	sscanf(optarg,"%x",&srcport);
        break;
      case 'v':
	verbose_flag=1;
	break;
    }
  }           
  
  // validate parms
  if(prog < 1 || prog > 8) {
    fprintf(stderr,"Error: -p%d Invalid. BrickOS Supports [1-8].\n",prog);
    return -1;
  } else {
	prog--;
  }
  // load executable
  //      
  if(argc-optind<1) {
    fprintf(stderr,"usage: %s file.lx\n"
	           "[-rrcxaddress -pprogramnumber -ssrcport -v]\n",
	           argv[0]);
    return -1;
  }
  filename=argv[optind++];
  if(lx_read(&lx,filename)) {
    fprintf(stderr,"unable to load brickOS executable from %s.\n",filename);
    return -1;
  }
      
  if (lnp_init(0,0,0,0,0))
  {
  	fprintf(stderr,"unable to connect Tower\n");
  	return -1;
  }

  lnp_addressing_set_handler(0,ahandler);


  if(verbose_flag)
    fputs("\ndelete ",stderr);
  buffer[0]=CMDdelete;
  buffer[1]=prog; //       prog 0
  if(lnp_assured_write(buffer,2,rcxaddr,srcport)) {
    fputs("error deleting program\n",stderr);
    return -1;
  }

  if(verbose_flag)
    fputs("\ncreate ",stderr);
  buffer[ 0]=CMDcreate;
  buffer[ 1]=prog; //       prog 0
  buffer[ 2]=lx.text_size>>8;
  buffer[ 3]=lx.text_size & 0xff;
  buffer[ 4]=lx.data_size>>8;
  buffer[ 5]=lx.data_size & 0xff;
  buffer[ 6]=lx.bss_size>>8;
  buffer[ 7]=lx.bss_size & 0xff;
  buffer[ 8]=lx.stack_size>>8;
  buffer[ 9]=lx.stack_size & 0xff;
  buffer[10]=lx.offset >> 8;  	// start offset from text segment
  buffer[11]=lx.offset & 0xff; 
  buffer[12]=DEFAULT_PRIORITY;
  if(lnp_assured_write(buffer,13,rcxaddr,srcport)) {
    fputs("error creating program\n",stderr);
    return -1;
  }

  // relocation target address in relocate_to
  //
  lx_relocate(&lx,relocate_to);

  lnp_download(&lx);

#if 0
    if(verbose_flag)
      fputs("\nrun ",stderr);
    buffer[0]=CMDrun;
    buffer[1]=prog; //       prog 0
    if(lnp_assured_write(buffer,2,rcxaddr,srcport)) {
      fputs("error running program\n",stderr);
      return -1;
    }
#endif
      
  return 0;
}