Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VID/PID are strings? #108

Open
aykevl opened this issue Jun 17, 2021 · 1 comment
Open

VID/PID are strings? #108

aykevl opened this issue Jun 17, 2021 · 1 comment
Labels
2.0 Breaking changes scheduled for v2.0 release enhancement

Comments

@aykevl
Copy link

aykevl commented Jun 17, 2021

I was pleasantly surprised the enumerator subpackage supports USB VID/PID numbers so it's possible to filter serial ports on them.
However, I found that VID and PID are stored as strings? That doesn't make a lot of sense to me, as these are 16-bit numbers and we have a Go type for this: uint16. strconv.ParseUint works, but requires extra error handling and in general seems less reliable. Example code:

for _, p := range portsList {
	if !p.IsUSB {
		continue
	}
	if p.VID != "" && p.PID != "" {
		vid, vidErr := strconv.ParseUint(p.VID, 16, 16)
		pid, pidErr := strconv.ParseUint(p.PID, 16, 16)
		if vidErr == nil && pidErr == nil {
			// check for VID/PID match
		}
	}
}

Maybe this ship has sailed already (because of API breakage) but in my opinion changing this to use uint16 would make the API easier to use.

For reference: tinygo-org/tinygo#1956

@cmaglie
Copy link
Member

cmaglie commented Jun 29, 2021

Maybe this ship has sailed already (because of API breakage)

Yes, that's a big problem... maybe in a future major release we may change them, but in the meantime, it's a nice idea to use uint16 so I'll probably add the "integer" fields together with the already existing ones...

May you want to open a PR for that?

@cmaglie cmaglie added 2.0 Breaking changes scheduled for v2.0 release enhancement labels Sep 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2.0 Breaking changes scheduled for v2.0 release enhancement
Projects
None yet
Development

No branches or pull requests

2 participants