码迷,mamicode.com
首页 > 系统相关 > 详细

Linux USB HID Device 测试代码

时间:2015-02-08 10:22:49      阅读:531      评论:0      收藏:0      [点我收藏+]

标签:

/*****************************************************************
* Author:		DriverMonkey
* Mail:		bookworepeng@Hotmail.com
* Phone:		18575593141
* QQ:		196568501
* Blog:		http://blog.csdn.net/drivermonkey
* Date:		02/07/2015
 *****************************************************************/
#include <pthread.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define HID_MAX_PACKET_SIZE 64
#define HID_BUFFER_SIZE (10*1024*1024)// 10M bytes

typedef struct 
{
	char null_array[HID_MAX_PACKET_SIZE];
}buffer_offset_size_t;


static char hid_read_buffer[HID_BUFFER_SIZE];
static char hid_write_buffer[HID_BUFFER_SIZE];

static int hid_file_handle = 0;
static const char* hid_file_name = "/dev/hidg0";

static int hid_init(void);
static int hid_read(void* buffer, int buffer_size);
static int hid_write(void* buffer, int buffer_size);

/*****************************************************************
 * Function name: 			main
 * Author:				DriverMonkey
 * Function Description: 	main function just for hid temp testing
 * Input argv:
 * Output argv:
 * Return:
 * Be careful:
 *****************************************************************/
int main(void)
{
	int read_size = 0;
	int test_count = 100;
	hid_init();

	while(test_count--)
	{
		memset(hid_read_buffer, 0x00, HID_BUFFER_SIZE);
		read_size = hid_read(hid_read_buffer, HID_BUFFER_SIZE);
		//printf("getting report::%s \n", hid_read_buffer);

		memset(hid_write_buffer, 0x00, HID_BUFFER_SIZE);
		strcpy(hid_write_buffer, hid_read_buffer);
		hid_write(hid_write_buffer, read_size);
	}
	
	return 0;
}
/*****************************************************************
 * Function name: 			hid_init
 * Author:				DriverMonkey
 * Function Description: 	init HID
 * Input argv:
 * Output argv:
 * Return:				>= 0 - no error
 						< 0 - reading error
 * Be careful: Must be called befoore HID be used!
 *****************************************************************/
static int hid_init(void)
{
	if ((hid_file_handle = open(hid_file_name, O_RDWR, 0666)) < 0)
	{
		perror(hid_file_name);
		return hid_file_handle;
	}else
	{
		return hid_file_handle;
	}
}

/*****************************************************************
 * Function name: 			hid_read
 * Author:				DriverMonkey
 * Function Description: 	Read data form hid driver
 * Input argv:				buffer_size - buffer size 
 * Output argv:			buffer - buffer to save reading out data
 * Return:				>= 0 - read size
 						< 0 - reading error
 * Be careful: 
 *****************************************************************/
static int hid_read(void* buffer, int buffer_size)
{
	if(buffer == NULL)
	{
		perror("hid_read::pointer error!");
		return -1;
	}
	return read(hid_file_handle, buffer, buffer_size);
}

/*****************************************************************
 * Function name: 			hid_read
 * Author:				DriverMonkey
 * Function Description: 	Read data form hid driver
 * Input argv:				buffer_size - buffer size 
 * Output argv:			buffer - buffer to save reading out data
 * Return:				>= 0 - no error
 						< 0 - reading error
 * Be careful: 
 *****************************************************************/
static int hid_write(void* buffer, int buffer_size)
{
	int return_v = 0;
	int writting_count = buffer_size / HID_MAX_PACKET_SIZE;
	int remainding_size = buffer_size % HID_MAX_PACKET_SIZE;
	buffer_offset_size_t* buffer_offset = (buffer_offset_size_t*)buffer;
	
	if(buffer == NULL)
	{
		perror("hid_write::pointer error!");
		return -1;
	}

	while(writting_count--)
	{
		return_v = write(hid_file_handle, buffer_offset,HID_MAX_PACKET_SIZE);
		if(return_v < 0)
		{
			perror("hid_write::writting error!");
			return return_v;
		}
		buffer_offset++;
	}

	return_v = write(hid_file_handle, buffer_offset, remainding_size);

	return return_v;
}

Linux USB HID Device 测试代码

标签:

原文地址:http://blog.csdn.net/drivermonkey/article/details/43635083

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!