/* *------------------------------------------------------------------------------- * START *------------------------------------------------------------------------------- */ int main( int argc, char* argv[] ) { int rc=0,i,tmp,cmd; sub_int32_t tmp1; struct usb_device* dev; /* Init */ config.fpwm_duty[0]=config.fpwm_duty[1]=config.fpwm_duty[2]=-1; for( i=0; i<8; i++ ) config.pwm_duty[i] = -1; config.serno=-1; /* by default open first available device */ config.bb_i2c_ch=-1; config.bb_i2c_mode=BB_I2C_STD; /* Parse command line */ rc=parse_argv( argc, argv, OPTIONS_N ); if( rc ) return rc; dev = NULL; if( config.serno != -1 ) { char sn_buf[20]; int found = 0 ; while( ( dev = sub_find_devices( dev ) ) ) { fd = sub_open( dev ); if(!fd) { printf("ERROR: Cannot open handle to device\n" ); return -1; } rc = sub_get_serial_number( fd, sn_buf, sizeof(sn_buf) ); sub_close( fd ); if(rc<0) { printf("ERROR: Cannot obtain seral number: %d\n", rc ); return -1; } if( config.serno == strtoul(sn_buf, NULL, 16 ) ) { /* device found */ found = 1; break; } } if( !found ) { printf("ERROR: Device with SN=0x%04x not found\n", config.serno ); return -1; } } /* Open USB device */ fd = sub_open( dev ); if( !fd ) { printf("sub_open: %s\n", sub_strerror(sub_errno)); return -1; } /* * Command */ if( config.cmd_sz ) { rc = usb_transaction( fd, config.cmd, config.cmd_sz, config.cmd, config.resp_sz, config.usb_to_ms ); if( rc<0 ) { printf( "Transaction failed (%s)\n", sub_strerror( sub_errno ) ); } rc=0; } /* * todo */ for( cmd=0; cmd<config.todo_sz; cmd++ ) { switch( config.todo[cmd] ) { /* FIFO */ case 'a': rc = sub_fifo_read( fd, config.buf, config.sz, 10000 ); if( rc >= 0 ) { printf("%d byte(s) read from FIFO\n", rc ); hex_ascii_dump( config.buf, rc ); rc = 0; } break; case 'A': rc = sub_fifo_write( fd, config.buf, config.sz, 10000 ); if( rc >=0 ) { printf("%d byte(s) written to FIFO\n", rc ); rc = 0; } break; case 'B': rc = sub_control_request( fd, 0x40, 0x80, 0, 0, 0, 0, 1000 ); if( rc < 0 ) printf("Control Request failed\n"); else printf("Device in Boot Mode\n"); return rc; case 'b': rc = sub_i2c_freq( fd, &config.i2c_freq ); if( !rc ) #if (_MSC_VER==800) printf("I2C Frequency: %ld\n", config.i2c_freq); #else printf("I2C Frequency: %d\n", config.i2c_freq); #endif break; /* FIFO Config */ case 'c': rc = sub_fifo_config( fd, config.fifo_cfg ); break; case 'C': rc = sub_bb_i2c_config( fd, config.bb_i2c_mode, config.bb_i2c_stretch ); break; /* I2C Config */ case 'd': rc = sub_i2c_config( fd, config.i2c_sa, 0x00 ); break; case 'D': /* GPIO Config */ rc = sub_gpio_config( fd, config.gpio_val, &tmp1, config.gpio_mask ); if( !rc ) { printf("GPIO Config: val=%08X,mask=%08X\n", config.gpio_val, config.gpio_mask); printf("GPIO Config: %08X\n", tmp1 ); } break; case 'E': /* GPIOB Config */ rc = sub_gpiob_config( fd, config.gpiob_val, &tmp1, config.gpiob_mask ); if( !rc ) { printf("GPIOB Config: val=%02X,mask=%02X\n", config.gpiob_val, config.gpiob_mask); printf("GPIOB Config: %02X\n", tmp1 ); } break; case 'f': rc = sub_spi_config( fd, config.spi_config, 0 ); break; case 'G': rc = sub_spi_config( fd, 0, &tmp ); if( !rc ) printf("SPI Config: %02xh\n", tmp); break; case 'I': /* GPIO Read */ rc = sub_gpio_read( fd, &tmp1 ); if( !rc ) printf("GPIO: %08X\n", tmp1 ); break; case 'e': /* GPIOB Read */ rc = sub_gpiob_read( fd, &tmp1 ); if( !rc ) printf("GPIOB: %02X\n", tmp1 ); break; case 'i': { char id_buf[30]; rc = sub_get_product_id( fd, id_buf, 30 ); if( rc ) printf("Product ID: %s\n", id_buf); rc = !rc; } break; case 'K': /* PWM */ rc = sub_pwm_config( fd, config.pwm_res, config.pwm_limit ); break; case 'k': for( i=0; i<8; i++ ) { if( config.pwm_duty[i] != -1 ) { printf( "PWM%d: duty=%d\n", i, config.pwm_duty[i] ); rc = sub_pwm_set( fd, i, config.pwm_duty[i] ); config.pwm_duty[i] = -1; } } break; case 'L': /* LCD Write */ rc = sub_lcd_write( fd, config.lcd_str ); break; case 'M': /* Fast PWM */ printf("Fast PWM frequency: %lf Hz\n", config.fpwm_freq); rc = sub_fpwm_config( fd, config.fpwm_freq, config.fpwm_flags ); break; case 'm': for( i=0; i<3; i++ ) { if( config.fpwm_duty[i] != -1 ) { printf( "Fast PWM%d: %lf%%\n", i,config.fpwm_duty[i] ); rc = sub_fpwm_set( fd, i, config.fpwm_duty[i] ); config.fpwm_duty[i] = -1; break; } } break; case 'N': { char scan_buf[128]; int n_slave; if( config.bb_i2c_ch != -1 ) rc = sub_bb_i2c_scan( fd, config.bb_i2c_ch, &n_slave, scan_buf ); else rc = sub_i2c_scan( fd, &n_slave, scan_buf ); if( !rc ) { if( config.bb_i2c_ch != -1 ) printf( "I2Cx%d ",config.bb_i2c_ch ); printf("I2C Slaves(%d): ",n_slave); for( i=0; i<n_slave; i++ ) printf("0x%02X ", scan_buf[i] ); printf("\n"); } } break; case 'O': /* GPIO Write */ rc = sub_gpio_write( fd, config.gpio_val, &tmp1, config.gpio_mask ); if( !rc ) { printf("GPIO Write: val=%08X,mask=%08X\n", config.gpio_val, config.gpio_mask); printf("GPIO: %08X\n", tmp1 ); } break; case 'n': /* GPIOB Write */ rc = sub_gpiob_write( fd, config.gpiob_val, &tmp1, config.gpiob_mask ); if( !rc ) { printf("GPIOB Write: val=%02X,mask=%02X\n", config.gpiob_val, config.gpiob_mask); printf("GPIOB: %02X\n", tmp1 ); } break; case 'o': /* mdio */ if( (config.mdio_n == 1) && !config.mdio_channel ) { if( config.mdios[0].clause22.op & SUB_MDIO22 ) rc = sub_mdio22( fd, config.mdios[0].clause22.op, config.mdios[0].clause22.phyad, config.mdios[0].clause22.regad, config.mdios[0].clause22.data, &config.mdios[0].clause22.data ); else rc = sub_mdio45( fd, config.mdios[0].clause45.op, config.mdios[0].clause45.prtad, config.mdios[0].clause45.devad, config.mdios[0].clause45.data, &config.mdios[0].clause45.data ); } else if( config.mdio_n >= 1 ) { if( config.mdio_channel ) rc = sub_mdio_xfer_ex( fd, config.mdio_channel, config.mdio_n, config.mdios ); else rc = sub_mdio_xfer( fd, config.mdio_n, config.mdios ); } else break; if( !rc ) for( i=0; i<config.mdio_n; i++ ) printf( "MDIO[%d] data=0x%04X\n", i, config.mdios[i].clause45.data ); config.mdio_n=0; break; case 'P': rc = sub_i2c_stop( fd ); break; case 'R': if( config.bb_i2c_ch != -1 ) rc = sub_bb_i2c_read( fd, config.bb_i2c_ch, config.sa, config.ma, config.ma_sz, config.buf, config.sz ); else rc = sub_i2c_read( fd, config.sa, config.ma, config.ma_sz, config.buf, config.sz ); if( !rc ) hex_ascii_dump( config.buf, config.sz ); break; case 'r': if( config.rs_baud ) rc=sub_rs_set_config( fd, config.rs_config, config.rs_baud ); else rc=sub_rs_get_config( fd,&config.rs_config,&config.rs_baud ); if( !rc ) printf( "RS Config:0x%02X Baud=%d\n", config.rs_config, config.rs_baud ); break; case 'S': rc = sub_i2c_start( fd ); break; case 's': { char sn_buf[20]; rc = sub_get_serial_number( fd, sn_buf, 20 ); if( rc ) printf("Serial number: %s\n", sn_buf); rc = !rc; } break; case 't': /* SPI Read */ rc = sub_spi_transfer( fd, 0, config.buf, config.spi_in_sz, config.ss ); if( !rc ) hex_ascii_dump( config.buf, config.sz ); break; case 'T': /* SPI Write */ rc = sub_spi_transfer( fd, config.buf, config.buf, config.spi_in_sz, config.ss ); if( !rc ) hex_ascii_dump( config.buf, config.spi_in_sz ); break; case 'U': /* SPI SDIO */ rc = sub_sdio_transfer( fd, config.buf, config.buf, config.spi_out_sz, config.spi_in_sz, config.ss ); if( !rc && config.spi_in_sz ) hex_ascii_dump( config.buf, config.spi_in_sz ); break; case 'u': /* Set RS Timing */ rc = sub_rs_timing( fd, config.rs_flags, config.rs_tx_space, config.rs_rx_msg_to, config.rs_rx_byte_to ); break; case 'V': { const struct sub_version* sub_ver; sub_ver = sub_get_version( fd ); printf("DLL/Lib: %d.%d.%d.%d\n", sub_ver->dll.major,sub_ver->dll.minor, sub_ver->dll.micro,sub_ver->dll.nano); printf("Driver : %d.%d.%d.%d\n", sub_ver->driver.major,sub_ver->driver.minor, sub_ver->driver.micro,sub_ver->driver.nano); printf("SUB-20 : %d.%d.%d\n", sub_ver->sub_device.major, sub_ver->sub_device.minor, sub_ver->sub_device.micro); printf("Boot : %x.%x\n", sub_ver->sub_device.boot>>4, sub_ver->sub_device.boot&0x0F); } break; case 'v': { /* Get boot_cfg.vpd */ const struct sub_cfg_vpd* cfg_vpd; cfg_vpd = sub_get_cfg_vpd( fd ); if( !cfg_vpd ) rc = -1; else { printf("LCD Width : %d\n", cfg_vpd->lcd_w ); printf("LCD Lines : %d\n", cfg_vpd->lcd_h ); printf("Serial : %d\n", cfg_vpd->serial); printf("Buttons : %d\n", cfg_vpd->buttons); printf("IR Carrier : %d\n", cfg_vpd->ir_car); rc = 0; } } break; case 'W': if( config.bb_i2c_ch != -1 ) rc = sub_bb_i2c_write( fd, config.bb_i2c_ch, config.sa, config.ma, config.ma_sz, config.buf, config.sz ); else rc = sub_i2c_write( fd, config.sa, config.ma, config.ma_sz, config.buf, config.sz ); break; case 'X': /* RS Xfer */ rc = sub_rs_xfer( fd, config.buf, config.rs_tx_sz, config.buf, config.rs_rx_sz ); if( rc >= 0 ) { printf( "Resecived %d bytes\n", rc ); hex_ascii_dump( config.buf, rc ); rc = 0; } break; case 'Z': /* ADC Config */ rc = sub_adc_config( fd, config.adc_cfg ); break; case 'z': /* ADC Read */ { int ibuf[30]; rc = sub_adc_read( fd, ibuf, config.adc_mux, config.adc_reads ); if( !rc ) { printf( "Analog Input ADC Vref=5.0V Vref=3.3V Vref=2.56V\n" ); for( i=0; i<config.adc_reads; i++ ) adc_printf( ibuf[i], config.adc_mux[i] ); } } break; }/*end case*/ if( rc ) break; } if( rc ) { printf("Failed(rc=%d): %s\n", rc,sub_strerror(sub_errno)); if( rc == SE_I2C ) printf("I2C Status: %02x\n", sub_i2c_status ); } sub_close( fd ); return rc; }
qbs* WHATISMYIP(){ //changed name from FUNC_WHATISMYIP to WHATISMYIP qbs *tqbs; ptrszint tmp_long; int32 tmp_fileno; uint32 qbs_tmp_base=qbs_tmp_list_nexti; uint8 *tmp_mem_static_pointer=mem_static_pointer; uint32 tmp_cmem_sp=cmem_sp; //data.txt qbs *_FUNC_WHATISMYIP_STRING_WHATISMYIP=NULL; if (!_FUNC_WHATISMYIP_STRING_WHATISMYIP)_FUNC_WHATISMYIP_STRING_WHATISMYIP=qbs_new(0,0); float *_FUNC_WHATISMYIP_SINGLE_C=NULL; if(_FUNC_WHATISMYIP_SINGLE_C==NULL){ _FUNC_WHATISMYIP_SINGLE_C=(float*)mem_static_malloc(4); *_FUNC_WHATISMYIP_SINGLE_C=0; } qbs *_FUNC_WHATISMYIP_STRING_E=NULL; if (!_FUNC_WHATISMYIP_STRING_E)_FUNC_WHATISMYIP_STRING_E=qbs_new(0,0); qbs *_FUNC_WHATISMYIP_STRING_X=NULL; if (!_FUNC_WHATISMYIP_STRING_X)_FUNC_WHATISMYIP_STRING_X=qbs_new(0,0); byte_element_struct *byte_element_5276=NULL; if (!byte_element_5276){ if ((mem_static_pointer+=12)<mem_static_limit) byte_element_5276=(byte_element_struct*)(mem_static_pointer-12); else byte_element_5276=(byte_element_struct*)mem_static_malloc(12); } float *_FUNC_WHATISMYIP_SINGLE_T=NULL; if(_FUNC_WHATISMYIP_SINGLE_T==NULL){ _FUNC_WHATISMYIP_SINGLE_T=(float*)mem_static_malloc(4); *_FUNC_WHATISMYIP_SINGLE_T=0; } qbs *_FUNC_WHATISMYIP_STRING_A2=NULL; if (!_FUNC_WHATISMYIP_STRING_A2)_FUNC_WHATISMYIP_STRING_A2=qbs_new(0,0); qbs *_FUNC_WHATISMYIP_STRING_A=NULL; if (!_FUNC_WHATISMYIP_STRING_A)_FUNC_WHATISMYIP_STRING_A=qbs_new(0,0); float *_FUNC_WHATISMYIP_SINGLE_DOTS=NULL; if(_FUNC_WHATISMYIP_SINGLE_DOTS==NULL){ _FUNC_WHATISMYIP_SINGLE_DOTS=(float*)mem_static_malloc(4); *_FUNC_WHATISMYIP_SINGLE_DOTS=0; } float *_FUNC_WHATISMYIP_SINGLE_START=NULL; if(_FUNC_WHATISMYIP_SINGLE_START==NULL){ _FUNC_WHATISMYIP_SINGLE_START=(float*)mem_static_malloc(4); *_FUNC_WHATISMYIP_SINGLE_START=0; } float *_FUNC_WHATISMYIP_SINGLE_X=NULL; if(_FUNC_WHATISMYIP_SINGLE_X==NULL){ _FUNC_WHATISMYIP_SINGLE_X=(float*)mem_static_malloc(4); *_FUNC_WHATISMYIP_SINGLE_X=0; } double fornext_value5279; double fornext_finalvalue5279; double fornext_step5279; uint8 fornext_step_negative5279; byte_element_struct *byte_element_5280=NULL; if (!byte_element_5280){ if ((mem_static_pointer+=12)<mem_static_limit) byte_element_5280=(byte_element_struct*)(mem_static_pointer-12); else byte_element_5280=(byte_element_struct*)mem_static_malloc(12); } float *_FUNC_WHATISMYIP_SINGLE_A=NULL; if(_FUNC_WHATISMYIP_SINGLE_A==NULL){ _FUNC_WHATISMYIP_SINGLE_A=(float*)mem_static_malloc(4); *_FUNC_WHATISMYIP_SINGLE_A=0; } qbs *_FUNC_WHATISMYIP_STRING_IP=NULL; if (!_FUNC_WHATISMYIP_STRING_IP)_FUNC_WHATISMYIP_STRING_IP=qbs_new(0,0); if (new_error) goto exit_subfunc; mem_lock *sf_mem_lock; new_mem_lock(); sf_mem_lock=mem_lock_tmp; sf_mem_lock->type=3; *_FUNC_WHATISMYIP_SINGLE_C=func__openclient(qbs_new_txt_len("TCP/IP:80:www.qb64.net",22)); qbs_cleanup(qbs_tmp_base,0); if ((-(*_FUNC_WHATISMYIP_SINGLE_C== 0 ))||new_error){ goto exit_subfunc; } qbs_set(_FUNC_WHATISMYIP_STRING_E,qbs_add(func_chr( 13 ),func_chr( 10 ))); qbs_cleanup(qbs_tmp_base,0); qbs_set(_FUNC_WHATISMYIP_STRING_X,qbs_add(qbs_new_txt_len("GET /ip.php HTTP/1.1",20),_FUNC_WHATISMYIP_STRING_E)); qbs_cleanup(qbs_tmp_base,0); qbs_set(_FUNC_WHATISMYIP_STRING_X,qbs_add(qbs_add(_FUNC_WHATISMYIP_STRING_X,qbs_new_txt_len("Host: www.qb64.net",18)),_FUNC_WHATISMYIP_STRING_E)); qbs_cleanup(qbs_tmp_base,0); qbs_set(_FUNC_WHATISMYIP_STRING_X,qbs_add(qbs_add(_FUNC_WHATISMYIP_STRING_X,qbs_new_txt_len("",0)),_FUNC_WHATISMYIP_STRING_E)); qbs_cleanup(qbs_tmp_base,0); sub_put2(qbr(*_FUNC_WHATISMYIP_SINGLE_C),NULL,byte_element((uint64)_FUNC_WHATISMYIP_STRING_X->chr,_FUNC_WHATISMYIP_STRING_X->len,byte_element_5276),0); qbs_cleanup(qbs_tmp_base,0); *_FUNC_WHATISMYIP_SINGLE_T=func_timer(NULL,0); do{ if ((-((func_timer(NULL,0)-*_FUNC_WHATISMYIP_SINGLE_T)>( 5 )))||new_error){ sub_close(qbr(*_FUNC_WHATISMYIP_SINGLE_C),1); goto exit_subfunc; } sub__delay( 0.1E+0 ); sub_get2(qbr(*_FUNC_WHATISMYIP_SINGLE_C),NULL,_FUNC_WHATISMYIP_STRING_A2,0); qbs_cleanup(qbs_tmp_base,0); qbs_set(_FUNC_WHATISMYIP_STRING_A,qbs_add(_FUNC_WHATISMYIP_STRING_A,_FUNC_WHATISMYIP_STRING_A2)); qbs_cleanup(qbs_tmp_base,0); *_FUNC_WHATISMYIP_SINGLE_DOTS= 0 ; *_FUNC_WHATISMYIP_SINGLE_START= 0 ; fornext_value5279= 1 ; fornext_finalvalue5279=_FUNC_WHATISMYIP_STRING_A->len; fornext_step5279= 1 ; if (fornext_step5279<0) fornext_step_negative5279=1; else fornext_step_negative5279=0; if (new_error) goto fornext_error5279; goto fornext_entrylabel5279; while(1){ fornext_value5279=fornext_step5279+(*_FUNC_WHATISMYIP_SINGLE_X); fornext_entrylabel5279: *_FUNC_WHATISMYIP_SINGLE_X=fornext_value5279; qbs_cleanup(qbs_tmp_base,0); if (fornext_step_negative5279){ if (fornext_value5279<fornext_finalvalue5279) break; }else{ if (fornext_value5279>fornext_finalvalue5279) break; } fornext_error5279:; *_FUNC_WHATISMYIP_SINGLE_A=qbs_asc(_FUNC_WHATISMYIP_STRING_A,qbr(*_FUNC_WHATISMYIP_SINGLE_X)); qbs_cleanup(qbs_tmp_base,0); if (((-(*_FUNC_WHATISMYIP_SINGLE_A>= 48 ))&(-(*_FUNC_WHATISMYIP_SINGLE_A<= 57 )))||new_error){ if ((-(*_FUNC_WHATISMYIP_SINGLE_START== 0 ))||new_error){ *_FUNC_WHATISMYIP_SINGLE_START=*_FUNC_WHATISMYIP_SINGLE_X; } }else{ if (((-(*_FUNC_WHATISMYIP_SINGLE_A== 46 ))&(-(*_FUNC_WHATISMYIP_SINGLE_START!= 0 )))||new_error){ *_FUNC_WHATISMYIP_SINGLE_DOTS=*_FUNC_WHATISMYIP_SINGLE_DOTS+ 1 ; }else{ if ((-(*_FUNC_WHATISMYIP_SINGLE_DOTS== 3 ))||new_error){ qbs_set(_FUNC_WHATISMYIP_STRING_IP,func_mid(_FUNC_WHATISMYIP_STRING_A,qbr(*_FUNC_WHATISMYIP_SINGLE_START),qbr(*_FUNC_WHATISMYIP_SINGLE_X-*_FUNC_WHATISMYIP_SINGLE_START),1)); qbs_cleanup(qbs_tmp_base,0); goto dl_exit_5277; } *_FUNC_WHATISMYIP_SINGLE_START= 0 ; *_FUNC_WHATISMYIP_SINGLE_DOTS= 0 ; } } } fornext_exit_5278:; }while(1); dl_exit_5277:; sub_close(qbr(*_FUNC_WHATISMYIP_SINGLE_C),1); qbs_set(_FUNC_WHATISMYIP_STRING_WHATISMYIP,_FUNC_WHATISMYIP_STRING_IP); qbs_cleanup(qbs_tmp_base,0); exit_subfunc:; free_mem_lock(sf_mem_lock); //free.txt qbs_free(_FUNC_WHATISMYIP_STRING_E); qbs_free(_FUNC_WHATISMYIP_STRING_X); qbs_free(_FUNC_WHATISMYIP_STRING_A2); qbs_free(_FUNC_WHATISMYIP_STRING_A); qbs_free(_FUNC_WHATISMYIP_STRING_IP); if ((tmp_mem_static_pointer>=mem_static)&&(tmp_mem_static_pointer<=mem_static_limit)) mem_static_pointer=tmp_mem_static_pointer; else mem_static_pointer=mem_static; cmem_sp=tmp_cmem_sp; qbs_maketmp(_FUNC_WHATISMYIP_STRING_WHATISMYIP);return _FUNC_WHATISMYIP_STRING_WHATISMYIP; }