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; }
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(); } }
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; }