forked from PAWPAW-Mirror/lib_xua
xmos_dfu now uses list of PIDs, makes adding one easier.. Added --listdevices command
This commit is contained in:
@@ -44,7 +44,7 @@ unsigned int XMOS_DFU_IF = 0;
|
|||||||
|
|
||||||
static libusb_device_handle *devh = NULL;
|
static libusb_device_handle *devh = NULL;
|
||||||
|
|
||||||
static int find_xmos_device(unsigned int id)
|
static int find_xmos_device(unsigned int id, unsigned int list)
|
||||||
{
|
{
|
||||||
libusb_device *dev;
|
libusb_device *dev;
|
||||||
libusb_device **devs;
|
libusb_device **devs;
|
||||||
@@ -64,7 +64,7 @@ static int find_xmos_device(unsigned int id)
|
|||||||
{
|
{
|
||||||
for(int j = 0; j < sizeof(pidList)/sizeof(unsigned short); j++)
|
for(int j = 0; j < sizeof(pidList)/sizeof(unsigned short); j++)
|
||||||
{
|
{
|
||||||
if(desc.idProduct == pidList[j])
|
if(desc.idProduct == pidList[j] && !list)
|
||||||
{
|
{
|
||||||
foundDev = 1;
|
foundDev = 1;
|
||||||
break;
|
break;
|
||||||
@@ -287,6 +287,7 @@ int main(int argc, char **argv) {
|
|||||||
unsigned int revert = 0;
|
unsigned int revert = 0;
|
||||||
unsigned int save = 0;
|
unsigned int save = 0;
|
||||||
unsigned int restore = 0;
|
unsigned int restore = 0;
|
||||||
|
unsigned int listdev = 0;
|
||||||
|
|
||||||
char *firmware_filename = NULL;
|
char *firmware_filename = NULL;
|
||||||
|
|
||||||
@@ -322,6 +323,10 @@ int main(int argc, char **argv) {
|
|||||||
{
|
{
|
||||||
restore = 1;
|
restore = 1;
|
||||||
}
|
}
|
||||||
|
else if(strcmp(argv[1], "--listdevices") == 0)
|
||||||
|
{
|
||||||
|
listdev = 1;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
fprintf(stderr, "Invalid option passed to dfu application\n");
|
fprintf(stderr, "Invalid option passed to dfu application\n");
|
||||||
return -1;
|
return -1;
|
||||||
@@ -335,10 +340,15 @@ int main(int argc, char **argv) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = find_xmos_device(0);
|
r = find_xmos_device(0, listdev);
|
||||||
if (r < 0) {
|
if (r < 0)
|
||||||
fprintf(stderr, "Could not find/open device\n");
|
{
|
||||||
return -1;
|
if(!listdev)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Could not find/open device\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = libusb_claim_interface(devh, XMOS_DFU_IF);
|
r = libusb_claim_interface(devh, XMOS_DFU_IF);
|
||||||
@@ -357,7 +367,7 @@ int main(int argc, char **argv) {
|
|||||||
{
|
{
|
||||||
xmos_dfu_restore_state(XMOS_DFU_IF);
|
xmos_dfu_restore_state(XMOS_DFU_IF);
|
||||||
}
|
}
|
||||||
else
|
else if(!listdev)
|
||||||
{
|
{
|
||||||
|
|
||||||
printf("Detaching device from application mode.\n");
|
printf("Detaching device from application mode.\n");
|
||||||
@@ -374,7 +384,7 @@ int main(int argc, char **argv) {
|
|||||||
|
|
||||||
// NOW IN DFU APPLICATION MODE
|
// NOW IN DFU APPLICATION MODE
|
||||||
|
|
||||||
r = find_xmos_device(0);
|
r = find_xmos_device(0, 0);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
fprintf(stderr, "Could not find/open device\n");
|
fprintf(stderr, "Could not find/open device\n");
|
||||||
return -1;
|
return -1;
|
||||||
|
|||||||
Reference in New Issue
Block a user