This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
laforge gerrit-no-reply at lists.osmocom.orglaforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/simtrace2/+/16681 )
Change subject: simtrace2-remsim: Better semi-automatic interface matching
......................................................................
simtrace2-remsim: Better semi-automatic interface matching
Now it's sufficient to specify only the minimum required parameters
to uniquely identify the USB device and/or interface to use
* the program knows which VendorId/ProductId is supported
* if more than one device are found, you need to specify
the USB path like '-H 1-2.1' to disambiguate
* if more than one matching interface are found in the device,
you need to specify if like '-I 1'
Change-Id: Icbcb5e8a00d189859310117880a763864b72b6c3
---
M host/src/simtrace2-remsim.c
1 file changed, 58 insertions(+), 14 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/simtrace2 refs/changes/81/16681/1
diff --git a/host/src/simtrace2-remsim.c b/host/src/simtrace2-remsim.c
index 7d5ecd3..7abaa79 100644
--- a/host/src/simtrace2-remsim.c
+++ b/host/src/simtrace2-remsim.c
@@ -43,7 +43,11 @@
#include <osmocom/simtrace2/simtrace_prot.h>
#include <osmocom/simtrace2/apdu_dispatch.h>
#include <osmocom/simtrace2/gsmtap.h>
+#include <osmocom/simtrace2/usb_util.h>
+#include <osmocom/simtrace2/simtrace_usb.h>
+#include <osmocom/core/logging.h>
+#include <osmocom/core/application.h>
#include <osmocom/core/utils.h>
#include <osmocom/core/socket.h>
#include <osmocom/core/msgb.h>
@@ -274,6 +278,14 @@
}
}
+static const struct log_info_cat log_categories[] = {
+};
+
+static const struct log_info log_info = {
+ .cat = log_categories,
+ .num_cat = ARRAY_SIZE(log_categories),
+};
+
int main(int argc, char **argv)
{
struct osmo_st2_transport *transp = ci->slot->transp;
@@ -291,6 +303,7 @@
struct osim_card_hdl *card;
print_welcome();
+ osmo_init_logging2(NULL, &log_info);
while (1) {
int option_index = 0;
@@ -342,11 +355,6 @@
}
}
- if (!remote_udp_host && (vendor_id < 0 || product_id < 0)) {
- fprintf(stderr, "You have to specify the vendor and product ID\n");
- goto do_exit;
- }
-
transp->udp_fd = -1;
ci->card_prof = &osim_uicc_sim_cic_profile;
@@ -395,15 +403,51 @@
do {
if (transp->udp_fd < 0) {
- struct usb_interface_match _ifm, *ifm = &_ifm;
- ifm->vendor = vendor_id;
- ifm->product = product_id;
- ifm->configuration = config_id;
- ifm->interface = if_num;
- ifm->altsetting = altsetting;
- ifm->addr = addr;
- if (path)
- osmo_strlcpy(ifm->path, path, sizeof(ifm->path));
+ struct usb_interface_match if_matches[16];
+ struct usb_interface_match *ifm = NULL;
+ struct dev_id user_dev_ids[2] = {
+ { vendor_id, product_id },
+ { 0, 0 }
+ };
+ const struct dev_id *dev_ids = osmo_st2_compatible_dev_ids;
+ libusb_device *dev;
+ int i;
+
+ if (vendor_id != -1 || product_id != -1)
+ dev_ids = user_dev_ids;
+ dev = osmo_libusb_find_matching_dev_path(NULL, dev_ids, path);
+ if (!dev)
+ goto close_exit;
+
+ rc = osmo_libusb_dev_find_matching_interfaces(dev, USB_CLASS_PROPRIETARY,
+ SIMTRACE_CARDEM_USB_SUBCLASS, -1,
+ if_matches, sizeof(if_matches));
+ if (rc < 1) {
+ fprintf(stderr, "can't find matching USB interface at device\n");
+ goto close_exit;
+ } else if (rc == 1) {
+ ifm = if_matches;
+ } else if (rc > 1) {
+ if (if_num == -1) {
+ fprintf(stderr, "found %d matching USB interfaces, you "
+ "have to specify the interface number (try "
+ "simtrace2-list)\n", rc);
+ goto close_exit;
+ }
+ for (i = 0; i < rc; i++) {
+ if (if_matches[i].interface == if_num) {
+ ifm = &if_matches[i];
+ break;
+ }
+ /* FIXME: match altsetting */
+ }
+ }
+ if (!ifm) {
+ fprintf(stderr, "Couldn't find matching interface\n");
+ goto close_exit;
+ }
+ /* FIXME: we may need to switch configuration, if found interface has different config */
+
transp->usb_devh = osmo_libusb_open_claim_interface(NULL, NULL, ifm);
if (!transp->usb_devh) {
fprintf(stderr, "can't open USB device\n");
--
To view, visit https://gerrit.osmocom.org/c/simtrace2/+/16681
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: simtrace2
Gerrit-Branch: master
Gerrit-Change-Id: Icbcb5e8a00d189859310117880a763864b72b6c3
Gerrit-Change-Number: 16681
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20191226/9783c0b7/attachment.htm>