コード例 #1
0
/*Poll functions (when we awaiting for finger)*/
void build_poll_cmd(struct et_cmd* cmd)
{
 memset(cmd,0,sizeof(*cmd));
 cmd->flag1=0x200;
 cmd->cmd=ECMD_READ_SHORT;
 cmd->flag2=0x1A00;
 cmd->flag4=0xB0;
 cmd->flag5=0x100;
 fill_init_cmd(cmd);
}
コード例 #2
0
ファイル: wimax.c プロジェクト: dark-ray/madwimax
static int init(void)
{
	unsigned char req_data[MAX_PACKET_LEN];
	int len;
	int r;

	alloc_transfers();

	wmlog_msg(2, "Continuous async read start...");
	CHECK_DISCONNECTED(libusb_submit_transfer(req_transfer));

	len = fill_protocol_info_req(req_data,
			USB_HOST_SUPPORT_SELECTIVE_SUSPEND | USB_HOST_SUPPORT_DL_SIX_BYTES_HEADER |
			USB_HOST_SUPPORT_UL_SIX_BYTES_HEADER | USB_HOST_SUPPORT_DL_MULTI_PACKETS);
	set_data(req_data, len);

	process_events_by_mask(500, WDS_PROTO_FLAGS);

	len = fill_mac_lowlevel_req(req_data);
	set_data(req_data, len);

	process_events_by_mask(500, WDS_OTHER);

	len = fill_init_cmd(req_data);
	set_data(req_data, len);

	len = fill_string_info_req(req_data);
	set_data(req_data, len);

	process_events_by_mask(500, WDS_CHIP | WDS_FIRMWARE);

	wmlog_msg(1, "Chip info: %s", wd_status.chip);
	wmlog_msg(1, "Firmware info: %s", wd_status.firmware);

	len = fill_diode_control_cmd(req_data, diode_on);
	set_data(req_data, len);

	len = fill_mac_req(req_data);
	set_data(req_data, len);

	process_events_by_mask(500, WDS_MAC);

	wmlog_msg(1, "MAC: %02x:%02x:%02x:%02x:%02x:%02x", wd_status.mac[0], wd_status.mac[1], wd_status.mac[2], wd_status.mac[3], wd_status.mac[4], wd_status.mac[5]);

	len = fill_string_info_req(req_data);
	set_data(req_data, len);

	process_events_by_mask(500, WDS_CHIP | WDS_FIRMWARE);

	len = fill_auth_policy_req(req_data);
	set_data(req_data, len);

	process_events_by_mask(500, WDS_OTHER);

	len = fill_auth_method_req(req_data);
	set_data(req_data, len);

	process_events_by_mask(500, WDS_OTHER);

	len = fill_auth_set_cmd(req_data, ssid);
	set_data(req_data, len);

	return 0;
}
コード例 #3
0
/*Enroll functions (When we capturing an image)*/
void build_enroll_cmd(struct et_cmd* cmd,int stage)
{
 memset(cmd,0,sizeof(*cmd));
 switch(stage)
 {
  case 1:
  cmd->cmd=ECMD_SETREG;
  cmd->flag2=0x20;
  cmd->flag3=0x8400;
  cmd->flag4=0x74;
  cmd->flag5=0x4110;
  break;
  
  case 2:
  case 3:
  case 4:
  case 34:
  case 39:
  cmd->flag1=0x600;
  cmd->cmd=ECMD_READ_LONG;
  cmd->flag2=0x21;
  cmd->flag4=0x3;
  break;
  
  case 5:
  case 6:
  case 7:
  case 8:
  case 9:
  case 10:
  case 11:
  case 12:
  case 13:
  case 14:
  case 15:
  cmd->cmd=ECMD_SETREG;
  cmd->flag2=0x20;
  cmd->flag3=0x8400;
  cmd->flag4=0x1074;
  cmd->flag5=0x4138;
  break;
  
  case 16:
  cmd->flag1=0x1800;
  cmd->cmd=ECMD_READ_LONG;
  cmd->flag2=0x21;
  cmd->flag4=0x0C;
  break;
  
  case 17:
  case 18:
  case 19:
  case 20:
  case 21:
  case 22:
  case 23:
  case 24:
  cmd->flag1=0xF000;
  cmd->cmd=ECMD_READ_LONG;
  cmd->flag2=0x21;
  cmd->flag4=0x78;
  break;
  
  case 25:
  cmd->flag1=0x200;
  cmd->cmd=ECMD_READ_SHORT;
  cmd->flag2=0x1300;
  cmd->flag3=0x300;
  cmd->flag5=0x100;
  break;
  
  case 26:
  cmd->flag1=0x200;
  cmd->cmd=ECMD_WRITE_SHORT;
  cmd->flag2=0x2300;
  cmd->flag3=0x300;
  cmd->flag5=0x100;
  break;
  
  case 27:
  case 32:
  case 37:
  cmd->flag1=0x200;
  cmd->cmd=ECMD_READ_SHORT;
  cmd->flag2=0x1200;
  cmd->flag4=0x21;
  cmd->flag5=0x100;
  break;
  
  case 28:
  cmd->flag1=0x200;
  cmd->cmd=ECMD_READ_SHORT;
  cmd->flag2=0x1300;
  cmd->flag3=0x300;
  cmd->flag4=0x05;
  cmd->flag5=0x100;
  break;
  
  case 29:
  cmd->flag1=0x200;
  cmd->cmd=ECMD_WRITE_SHORT;
  cmd->flag2=0x2300;
  cmd->flag3=0x300;
  cmd->flag4=0x05;
  cmd->flag5=0x100;
  break;
  
  case 30:
  cmd->flag1=0x200;
  cmd->cmd=ECMD_READ_SHORT;
  cmd->flag2=0x1300;
  cmd->flag3=0x300;
  cmd->flag4=0x04;
  cmd->flag5=0x100;
  break;
  
  case 31:
  cmd->flag1=0x200;
  cmd->cmd=ECMD_WRITE_SHORT;
  cmd->flag2=0x2300;
  cmd->flag3=0x300;
  cmd->flag4=0x04;
  cmd->flag5=0x100;
  break;
  
  case 33:
  case 38:
  cmd->cmd=ECMD_SETREG;
  cmd->flag2=0x20;
  cmd->flag3=0x8400;
  cmd->flag4=0x1074;
  cmd->flag5=0x4118;
  break;
  
  case 35:
  cmd->cmd=ECMD_SETREG;
  cmd->flag2=0x8128;
  cmd->flag3=0xC400;
  cmd->flag4=0x5D0;
  cmd->flag5=0xC0C0;
  break;
  
  case 36:
  case 41:
  cmd->flag1=0x200;
  cmd->cmd=ECMD_READ_SHORT;
  cmd->flag2=0x1A00;
  cmd->flag4=0xB0;
  cmd->flag5=0x100;
  break;
  
  case 40:
  cmd->cmd=ECMD_SETREG;
  cmd->flag2=0x8128;
  cmd->flag3=0xC400;
  cmd->flag4=0x5B0;
  cmd->flag5=0xC0C0;
  break;
 }
 fill_init_cmd(cmd);
}
コード例 #4
0
int et_write_init(struct fp_img_dev* dev,struct et_init* dinit,void* user_data)
{
 struct et_cmd ecmd;
 static struct init_data adata;
 int r;
 
 adata.init=dinit;
 adata.ssm=user_data;
 build_init_cmd(&ecmd,dinit->stage);
 fill_init_cmd(&ecmd);
 //Send command to device
 struct libusb_transfer* transfer=libusb_alloc_transfer(0);
 if(!transfer) return -ENOMEM;
 switch(dinit->stage)
 {
  case 3:
  case 36:
  ret_buf[0]=0x48;
  goto _evi_w;
  case 5:
  case 7:
  ret_buf[0]=0x0C;
  goto _evi_w;
  case 11:
  case 40:
  case 42:
  case 48:
  case 50:
  goto _evi_w;
  case 13:
  ret_buf[0]=0x23;
  goto _evi_w;
  case 15:
  case 44:
  ret_buf[0]=0x4D;
  goto _evi_w;
  case 17:
  ret_buf[0]=0x52;
  goto _evi_w;
  case 46:
  ret_buf[0]=0x42;
_evi_w:  
  if(!dinit->rstage)
   libusb_fill_bulk_transfer(transfer,dev->udev,EP_OUT,(char*)&cmd_buf,31,et_write_init_cb,&adata,BULK_TIMEOUT);
  else 
  { 
   //fp_dbg("ret_buf: 0x%02hhX",ret_buf[0]);
   libusb_fill_bulk_transfer(transfer,dev->udev,EP_OUT,(char*)&ret_buf,512,et_write_init_cb,&adata,BULK_TIMEOUT);
  }
  break;
  
  default:
  libusb_fill_bulk_transfer(transfer,dev->udev,EP_OUT,(char*)&cmd_buf,31,et_write_init_cb,&adata,BULK_TIMEOUT);
  break;
 }
 //fp_dbg("->: %s",print_cmd_buf());
 r=libusb_submit_transfer(transfer);
 if(r<0)
 {
  libusb_free_transfer(transfer);
  r=-EIO;
 }
 return r;
}