* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. *
***************************************************************************/
/* Versaloon is a programming tool for multiple MCUs.
/* malloc buffer size for tap */
tap_buffer_size = versaloon_interface.usb_setting.buf_size / 2 - 32;
vsllink_free_buffer();
- tdi_buffer = (uint8_t *)malloc(tap_buffer_size);
- tdo_buffer = (uint8_t *)malloc(tap_buffer_size);
- tms_buffer = (uint8_t *)malloc(tap_buffer_size);
+ tdi_buffer = malloc(tap_buffer_size);
+ tdo_buffer = malloc(tap_buffer_size);
+ tms_buffer = malloc(tap_buffer_size);
if ((NULL == tdi_buffer) || (NULL == tdo_buffer) || (NULL == tms_buffer)) {
vsllink_quit();
return ERROR_FAIL;
return ERROR_OK;
}
+COMMAND_HANDLER(vsllink_handle_usb_serial_command)
+{
+ if (CMD_ARGC > 1)
+ return ERROR_COMMAND_SYNTAX_ERROR;
+
+ free(versaloon_interface.usb_setting.serialstring);
+
+ if (CMD_ARGC == 1)
+ versaloon_interface.usb_setting.serialstring = strdup(CMD_ARGV[0]);
+ else
+ versaloon_interface.usb_setting.serialstring = NULL;
+
+ return ERROR_OK;
+}
+
COMMAND_HANDLER(vsllink_handle_usb_bulkin_command)
{
if (CMD_ARGC != 1)
if (NULL == buff) {
buf_size = 256;
- buff = (char *)malloc(buf_size);
+ buff = malloc(buf_size);
if (NULL == buff) {
ret = 0;
goto free_and_return;
}
strcpy(buff, "");
- len = usb_get_string_simple(usb, stringidx, (char *)buff, buf_size);
- if ((len < 0) || (len != ((int)strlen((const char *)buff)))) {
+ len = usb_get_string_simple(usb, stringidx, buff, buf_size);
+ if ((len < 0) || ((size_t)len != strlen(buff))) {
ret = 0;
goto free_and_return;
}
buff[len] = '\0';
- if ((string != NULL) && strcmp((const char *)buff, string)) {
+ if ((string != NULL) && strcmp(buff, string)) {
ret = 0;
goto free_and_return;
}
return ret;
}
-static usb_dev_handle *find_usb_device(uint16_t VID, uint16_t PID,
- uint8_t interface, int8_t serialindex, char *serialstring,
- int8_t productindex, char *productstring)
+static usb_dev_handle *find_usb_device(uint16_t VID, uint16_t PID, uint8_t interface,
+ char *serialstring, char *productstring)
{
usb_dev_handle *dev_handle = NULL;
struct usb_bus *busses;
}
/* check description string */
- if (((productstring != NULL) && (productindex >= 0)
- && !usb_check_string(dev_handle, productindex,
- productstring, NULL, 0))
- || ((serialstring != NULL) && (serialindex >= 0)
- && !usb_check_string(dev_handle, serialindex,
- serialstring, NULL, 0))) {
+ if ((productstring != NULL && !usb_check_string(dev_handle,
+ dev->descriptor.iProduct, productstring, NULL, 0))
+ || (serialstring != NULL && !usb_check_string(dev_handle,
+ dev->descriptor.iSerialNumber, serialstring, NULL, 0))) {
usb_close(dev_handle);
dev_handle = NULL;
continue;
dev = find_usb_device(versaloon_interface.usb_setting.vid,
versaloon_interface.usb_setting.pid,
versaloon_interface.usb_setting.interface,
- 0, NULL, 2, "Versaloon");
+ versaloon_interface.usb_setting.serialstring, "Versaloon");
if (NULL == dev)
return NULL;
.handler = &vsllink_handle_usb_pid_command,
.mode = COMMAND_CONFIG,
},
+ {
+ .name = "vsllink_usb_serial",
+ .handler = &vsllink_handle_usb_serial_command,
+ .mode = COMMAND_CONFIG,
+ },
{
.name = "vsllink_usb_bulkin",
.handler = &vsllink_handle_usb_bulkin_command,