1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-10-18 19:49:40 +00:00

comms/nanovna-saver: Fixed incorrect /dev/cua* to umodem number mapping

Linux has an ioctl that directly retrieves information about the usb serial
port on (FreeBSD) I have to find the umodem dev that the usb serial port
is reference then use a sysctl to find the needed for nanovna-saver to
work correctly.
Originally I assumed a 1-1 mapping of devices. I was wrong.

PR:		ports/264272
Reported by:	jeffpc@josefsipek.net
This commit is contained in:
Diane Bruce 2022-06-06 16:00:38 -04:00
parent 87d17cc776
commit 1ae8d833d6
2 changed files with 15 additions and 7 deletions

View File

@ -1,7 +1,7 @@
PORTNAME= nanovna-saver
DISTVERSIONPREFIX= v
DISTVERSION= 0.3.10
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= comms hamradio
MAINTAINER= hamradio@FreeBSD.org

View File

@ -1,4 +1,5 @@
import re
import os
from ctypes import *
from ctypes.util import find_library
@ -15,9 +16,16 @@ def posix_sysctlbyname(name):
return _mem.value
def usb_vid_pid(name):
digit = (re.search(r'\d',name)).group()
result = (posix_sysctlbyname(b'dev.umodem.'+bytes(digit,'ascii')+b'.%pnpinfo')).decode('ascii')
items=result.split(' ')
vendor=int(items[0].split('=')[1],0)
product=int(items[1].split('=')[1],0)
return([vendor,product])
dev = bytes(name[8:],'ascii')
for i in range(len(os.listdir('/dev/usb'))):
try:
found_dev = posix_sysctlbyname(b'dev.umodem.'+bytes(str(i),'ascii')+b'.ttyname')
if dev == found_dev:
result = (posix_sysctlbyname(b'dev.umodem.'+bytes(str(i),'ascii')+b'.%pnpinfo')).decode('ascii')
items=result.split(' ')
vendor=int(items[0].split('=')[1],0)
product=int(items[1].split('=')[1],0)
return([vendor,product])
except:
pass
return [-1,-1]