[질문]redhat 7.0 에서 usb 관련 usb_get_report 사용해보신분..
지금 usb 모듈을 작성중에 있는데..
usb_set_report를 이용하여.. 장치로 명령을 보내는 것은 되는데
이상하게도 usb_get_report를 사용하여 내린명령에 대한 상태정보를 가져오려고하나 아무런 데이터도 넘어오지 않습니다.
장치에게 상태정보를 가져오라는 메시지를 usb_set_report함수를 이용하여 보내고 usb_get_report함수로 정보를 가져오는 것이 맞는 듯한데... 사용해 보신분 제가 사용하는 형식이 맞는지 가르쳐주세요... 부탁드립니다.
33 static int adf_ioctl(struct inode *inode,
34 struct file *file, unsigned int cmd, unsigned long arg)
35 {
36 void *dp = NULL;
37 int i;
38 char *tmp;
39
40 info("command = %d", cmd);
41
42 dp = (void *)kmalloc(16, GFP_KERNEL);
43 memset(dp, 0x09, 16);
44
45 tmp = (char *)dp;
46 switch(cmd) {
47 case ADF_GET_REPORT:
48 info("USB_GET_REPORT LENGTH = %d",
49 usb_get_report(&g_dev, g_ifnum, 0x01, 0x00, dp, 16));
50
51 for(i=0; i<16; i++){
52 printk( "%d:%x ",i,tmp[i]);
53 }
54 info("");
55 return 0;
56
57 case ADF_SET_REPORT:
58
59 copy_from_user(dp, (void *)arg, 16);
60
61 info("USB_SET_REPORT LENGTH = %d",
62 usb_set_report(&g_dev, g_ifnum, 0x01, 0x00, dp, 16));
63 return 0;
64
65 default:
66 err("IOCTL invalid command");
67 return -1;
68
69 }
70 return -1;
71 }
댓글 달기