mirror of
https://github.com/brmlab/edubrm.git
synced 2025-06-08 04:43:59 +02:00
remove unused test.c
This commit is contained in:
parent
97c797cb46
commit
8218ba6b93
1 changed files with 0 additions and 183 deletions
183
firmware/test.c
183
firmware/test.c
|
@ -1,183 +0,0 @@
|
|||
/*
|
||||
* generic_hid.c
|
||||
*
|
||||
* Created on: Jan 30, 2011
|
||||
* Author: Jan Axelson
|
||||
*
|
||||
* Demonstrates communicating with generic HID-class USB devices
|
||||
* using libusb-1.0 (libusb.org).
|
||||
* Sends and receives 2-byte reports.
|
||||
* Requires: an attached HID-class device that supports 2-byte
|
||||
* Input, Output, and Feature reports.
|
||||
* The device firmware should respond to a received report by sending a report.
|
||||
* Change VENDOR_ID and PRODUCT_ID to match your device's Vendor ID and Product ID.
|
||||
* See Lvr.com/hidpage.htm for example device firmware.
|
||||
* This firmware is adapted from code provided by Xiaofan.
|
||||
* Note: libusb error codes are negative numbers.
|
||||
* Compile with the -lusb option.
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <libusb-1.0/libusb.h>
|
||||
|
||||
// Change these as needed to match idVendor and idProduct in your device's device descriptor.
|
||||
|
||||
static const int VENDOR_ID = 0x1fc9;
|
||||
static const int PRODUCT_ID = 0x1337;
|
||||
|
||||
// Values for bmRequestType in the Setup transaction's Data packet.
|
||||
|
||||
static const int INSIZE = 64;
|
||||
static const int OUTSIZE = 64;
|
||||
static const int INTERFACE_NUMBER = 0;
|
||||
|
||||
// Uses interrupt endpoint 1 IN and OUT:
|
||||
|
||||
static const int INTERRUPT_IN_ENDPOINT = 0x81;
|
||||
static const int INTERRUPT_OUT_ENDPOINT = 0x01;
|
||||
static const int TIMEOUT_MS = 5000;
|
||||
|
||||
int exchange_input_and_output_reports_via_interrupt_transfers(libusb_device_handle *devh);
|
||||
|
||||
int main(void)
|
||||
{
|
||||
struct libusb_device_handle *devh = NULL;
|
||||
int hid_ready = 0;
|
||||
int result = 1;
|
||||
|
||||
result = libusb_init(NULL);
|
||||
if (result >= 0)
|
||||
{
|
||||
devh = libusb_open_device_with_vid_pid(NULL, VENDOR_ID, PRODUCT_ID);
|
||||
|
||||
if (devh != NULL)
|
||||
{
|
||||
// The HID has been detected.
|
||||
// Detach the hidusb driver from the HID to enable using libusb.
|
||||
|
||||
libusb_detach_kernel_driver(devh, 0);
|
||||
result = libusb_set_configuration(devh, 1);
|
||||
if (result >= 0)
|
||||
{
|
||||
result = libusb_claim_interface(devh, 0);
|
||||
if (result >= 0)
|
||||
{
|
||||
hid_ready = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "libusb_claim_interface error %d\n", result);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "libusb_set_configuration error %d\n", result);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "Unable to find the HID.\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "Unable to initialize libusb.\n");
|
||||
}
|
||||
|
||||
if (hid_ready)
|
||||
{
|
||||
// Send and receive reports.
|
||||
|
||||
exchange_input_and_output_reports_via_interrupt_transfers(devh);
|
||||
|
||||
// Finished using the HID.
|
||||
|
||||
libusb_release_interface(devh, 0);
|
||||
}
|
||||
libusb_close(devh);
|
||||
libusb_exit(NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Uses interrupt transfers to write an Output report to the HID
|
||||
// and receive an Input report from the HID.
|
||||
// Returns - zero on success, libusb error code on failure.
|
||||
|
||||
int exchange_input_and_output_reports_via_interrupt_transfers(libusb_device_handle *devh)
|
||||
{
|
||||
int bytes_transferred;
|
||||
unsigned char data_in[INSIZE-1];
|
||||
unsigned char data_out[OUTSIZE-1];
|
||||
int i = 0;;
|
||||
int result = 0;;
|
||||
|
||||
// Store data in the output buffer for sending.
|
||||
|
||||
for (i=0;i<OUTSIZE; i++)
|
||||
{
|
||||
data_out[i] = 0x40+i;
|
||||
}
|
||||
// Write an Output report to the device.
|
||||
|
||||
result = libusb_interrupt_transfer(
|
||||
devh,
|
||||
INTERRUPT_OUT_ENDPOINT,
|
||||
data_out,
|
||||
OUTSIZE,
|
||||
&bytes_transferred,
|
||||
TIMEOUT_MS);
|
||||
|
||||
if (result >= 0)
|
||||
{
|
||||
printf("Output report data sent via interrupt transfer:\n");
|
||||
for(i = 0; i < OUTSIZE; i++)
|
||||
{
|
||||
printf("%02x ",data_out[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
// Read an Input report from the device.
|
||||
|
||||
result = libusb_interrupt_transfer(
|
||||
devh,
|
||||
INTERRUPT_IN_ENDPOINT,
|
||||
data_in,
|
||||
INSIZE,
|
||||
&bytes_transferred,
|
||||
TIMEOUT_MS);
|
||||
|
||||
if (result >= 0)
|
||||
{
|
||||
if (bytes_transferred == INSIZE)
|
||||
{
|
||||
printf("Input report received via interrupt transfer:\n");
|
||||
for(i = 0; i < INSIZE; i++)
|
||||
{
|
||||
printf("%02x ",data_in[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "Error: not all data received in interrupt transfer (%d)\n", result);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "Error receiving Input report via interrupt transfer %d\n", result);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
fprintf(stderr, "Error sending Output report via interrupt transfer %d\n", result);
|
||||
return result;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue