Hide Ledger's “191-warning” on both Linux & MacOSX

This commit is contained in:
Sebastien Mondet 2018-11-21 15:29:10 -05:00 committed by Benjamin Canou
parent cb038afa42
commit c994428f77

View File

@ -315,12 +315,28 @@ let find_ledgers ?id () =
log_info "Found %d Ledger(s)" (List.length ledgers) ; log_info "Found %d Ledger(s)" (List.length ledgers) ;
filter_map_s begin fun device_info -> filter_map_s begin fun device_info ->
log_info "Processing Ledger at path [%s]" device_info.Hidapi.path ; log_info "Processing Ledger at path [%s]" device_info.Hidapi.path ;
match Hidapi.(open_path device_info.path) with (* HID interfaces get the number 0
| None -> return_none (cf. https://github.com/LedgerHQ/ledger-nano-s/issues/48)
| Some h -> *BUT* on MacOSX the Hidapi library does not report the interface-number
Lwt.finalize so we look at the usage-page (which is even more unspecified but used by
(fun () -> Ledger.of_hidapi ?id device_info h) prominent Ledger users:
(fun () -> Hidapi.close h ; Lwt.return_unit) https://github.com/LedgerHQ/ledgerjs/commit/333ade0d55dc9c59bcc4b451cf7c976e78629681).
*)
if
(device_info.Hidapi.interface_number = 0)
||
(device_info.Hidapi.interface_number = -1
&& device_info.Hidapi.usage_page = 0xffa0)
then
begin match Hidapi.(open_path device_info.path) with
| None -> return_none
| Some h ->
Lwt.finalize
(fun () -> Ledger.of_hidapi ?id device_info h)
(fun () -> Hidapi.close h ; Lwt.return_unit)
end
else
return_none
end ledgers end ledgers
let with_ledger id f = let with_ledger id f =