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

Adding USB Support for dive computers #2

Merged
merged 34 commits into from
Feb 28, 2024
Merged
Show file tree
Hide file tree
Changes from 33 commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
e284550
Build from source (#1)
Ben1980 Jan 29, 2024
306fd94
Update dive_computer_ffi.dart
Ben1980 Jan 29, 2024
98ec792
Extracting hardware interfaces into own utility class
Ben1980 Jan 29, 2024
21e085a
usb.h and .c added. Bindings extended
Ben1980 Jan 29, 2024
3782658
Update dive_computer_ffi_bindings_generated.dart
Ben1980 Jan 29, 2024
41ca423
usbhid added
Ben1980 Jan 29, 2024
b60e629
Update CMakeLists.txt
Ben1980 Jan 29, 2024
220a724
backup
Ben1980 Jan 29, 2024
41a1ed6
Merge branch 'develop' into usb-support
Sese-Schneider Jan 29, 2024
1434aef
Merge branch 'usb-support' of https://github.com/Ben1980/dive_compute…
Ben1980 Jan 30, 2024
9dd3c6e
Update dive_computer_interfaces.dart
Ben1980 Jan 30, 2024
3f93792
adding defines
Ben1980 Feb 1, 2024
553e091
hidapi submodule added
Ben1980 Feb 2, 2024
08db24c
Update CMakeLists.txt
Ben1980 Feb 2, 2024
39e9c46
macos is creating usbhid iterator
Ben1980 Feb 2, 2024
a3ba3a1
libusb added as submodule
Ben1980 Feb 6, 2024
5aea268
Update pubspec.yaml
Ben1980 Feb 6, 2024
b3d22b9
getting macos compiling
Ben1980 Feb 6, 2024
9094209
ios classes added
Ben1980 Feb 12, 2024
f548774
ble added to libdive config
Ben1980 Feb 12, 2024
394519f
bluez submodule added
Ben1980 Feb 12, 2024
b3b46d3
ble
Ben1980 Feb 12, 2024
02adc84
Create bluez
Ben1980 Feb 12, 2024
4ff9362
cleanup
Ben1980 Feb 14, 2024
4a6a9b4
Update README.md
Ben1980 Feb 14, 2024
bf56213
Update config.h
Ben1980 Feb 14, 2024
bb8fd97
Update hid.c
Ben1980 Feb 14, 2024
d9a905a
Update Podfile.lock
Ben1980 Feb 14, 2024
d652784
fixing xcode project settings
Ben1980 Feb 14, 2024
72315eb
adding USB and USBHID
Ben1980 Feb 14, 2024
14195eb
small cleanup
Ben1980 Feb 14, 2024
1181727
config moved
Ben1980 Feb 14, 2024
6bf838c
formating fixed
Ben1980 Feb 15, 2024
25b2108
reverted changes
Ben1980 Feb 20, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
[submodule "src/libdivecomputer"]
path = src/libdivecomputer
url = https://github.com/libdivecomputer/libdivecomputer.git
[submodule "src/hidapi"]
path = src/hidapi
url = https://github.com/libusb/hidapi.git
[submodule "src/libusb"]
path = src/libusb
url = https://github.com/libusb/libusb.git
8 changes: 8 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ This plugin automatically spawns its own isolate for communication with the dive

Please refer to the example app for a minimalistic example usage.

# macOS

This plugin supports USB and Serial connection on macOS. On macOS you need to make sure the app has access to the USB connection granted. To do so add the following snippet to info.plist and make sure you grant USB access in xcode via `Signing & Capabilities -> Hardware -> USB`.
```
<key>NSUSBPeripheralUsageDescription</key>
<string>Your explanation here</string>
```

---

### Acknowledgements
Expand Down
2 changes: 2 additions & 0 deletions android/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ add_library(dive_computer SHARED
"../src/libdivecomputer/src/timer.c"
"../src/libdivecomputer/src/parser.c"
"../src/libdivecomputer/src/serial_posix.c"
"../src/libdivecomputer/src/usb.c"
"../src/libdivecomputer/src/usbhid.c"

"../src/libdivecomputer/src/atomics_cobalt.c"
"../src/libdivecomputer/src/atomics_cobalt_parser.c"
Expand Down
4 changes: 2 additions & 2 deletions example/macos/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral

SPEC CHECKSUMS:
dive_computer: d73377c895d5cc0bdb48eb85667b314cf47841d9
dive_computer: e512b5b2b343092ee9551c845b8f84ad38a019c7
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24

PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367

COCOAPODS: 1.14.3
COCOAPODS: 1.15.2
12 changes: 7 additions & 5 deletions example/macos/Runner.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@
33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
CDF727C5C51DE46A62037ED3 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8833DC8D350DF77B2F889694 /* Pods_RunnerTests.framework */; };
D85A387C2B49ED9F0078351E /* libdivecomputer.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D85A387B2B49ED9F0078351E /* libdivecomputer.0.dylib */; settings = {ATTRIBUTES = (Weak, ); }; };
D85A387D2B49EDA50078351E /* libdivecomputer.0.dylib in Bundle Framework */ = {isa = PBXBuildFile; fileRef = D85A387B2B49ED9F0078351E /* libdivecomputer.0.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
D85A387C2B49ED9F0078351E /* (null) in Frameworks */ = {isa = PBXBuildFile; settings = {ATTRIBUTES = (Weak, ); }; };
D85A387D2B49EDA50078351E /* (null) in Bundle Framework */ = {isa = PBXBuildFile; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
Expand All @@ -57,7 +57,7 @@
dstPath = "";
dstSubfolderSpec = 10;
files = (
D85A387D2B49EDA50078351E /* libdivecomputer.0.dylib in Bundle Framework */,
D85A387D2B49EDA50078351E /* (null) in Bundle Framework */,
);
name = "Bundle Framework";
runOnlyForDeploymentPostprocessing = 0;
Expand Down Expand Up @@ -107,7 +107,7 @@
buildActionMask = 2147483647;
files = (
262E412DF37AA4627DE9CE94 /* Pods_Runner.framework in Frameworks */,
D85A387C2B49ED9F0078351E /* libdivecomputer.0.dylib in Frameworks */,
D85A387C2B49ED9F0078351E /* (null) in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -205,7 +205,6 @@
D73912EC22F37F3D000D13A0 /* Frameworks */ = {
isa = PBXGroup;
children = (
D85A387B2B49ED9F0078351E /* libdivecomputer.0.dylib */,
866168B11938ECFE46CFB139 /* Pods_Runner.framework */,
8833DC8D350DF77B2F889694 /* Pods_RunnerTests.framework */,
);
Expand Down Expand Up @@ -574,6 +573,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited)";
LIBRARY_SEARCH_PATHS = (
Expand Down Expand Up @@ -703,6 +703,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited)";
LIBRARY_SEARCH_PATHS = (
Expand All @@ -726,6 +727,7 @@
CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
INFOPLIST_FILE = Runner/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited)";
LIBRARY_SEARCH_PATHS = (
Expand Down
2 changes: 2 additions & 0 deletions example/macos/Runner/DebugProfile.entitlements
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
<true/>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.device.usb</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
</dict>
Expand Down
2 changes: 2 additions & 0 deletions example/macos/Runner/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,7 @@
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSUSBPeripheralUsageDescription</key>
<string>Your explanation here</string>
</dict>
</plist>
2 changes: 2 additions & 0 deletions example/macos/Runner/Release.entitlements
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,7 @@
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.device.usb</key>
<true/>
</dict>
</plist>
2 changes: 2 additions & 0 deletions ffigen.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ headers:
- 'src/libdivecomputer/include/libdivecomputer/iterator.h'
- 'src/libdivecomputer/include/libdivecomputer/serial.h'
- 'src/libdivecomputer/include/libdivecomputer/parser.h'
- 'src/libdivecomputer/include/libdivecomputer/usb.h'
- 'src/libdivecomputer/include/libdivecomputer/usbhid.h'
preamble: |
// ignore_for_file: always_specify_types, unused_field, unused_element
// ignore_for_file: camel_case_types
Expand Down
1 change: 0 additions & 1 deletion ios/Classes/array.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/atomics_cobalt.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/atomics_cobalt_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/citizen_aqualand.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/citizen_aqualand_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/cochran_commander.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/cochran_commander_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/cressi_ady_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/cressi_edy.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/cressi_goa.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/cressi_goa_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/cressi_leonardo.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/cressi_leonardo_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/deepblu_cosmiq.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/deepblu_cosmiq_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/deepsix_excursion.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/deepsix_excursion_parser.c

This file was deleted.

16 changes: 0 additions & 16 deletions ios/Classes/dive_computer.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/diverite_nitekq.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/diverite_nitekq_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/divesoft_freedom.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/divesoft_freedom_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/divesystem_idive.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/divesystem_idive_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/hdlc.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/hw_frog.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/hw_ostc.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/hw_ostc3.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/hw_ostc_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/ihex.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/liquivision_lynx.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/liquivision_lynx_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/mares_common.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/mares_darwin.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/mares_darwin_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/mares_iconhd.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/mares_iconhd_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/mares_nemo.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/mares_nemo_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/mares_puck.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/mclean_extreme.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/mclean_extreme_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/oceanic_atom2.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/oceanic_atom2_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/oceanic_common.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/oceanic_veo250.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/oceanic_veo250_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/oceans_s1.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/oceans_s1_common.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/oceans_s1_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/ocenic_vtpro.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/ocenic_vtpro_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/reefnet_sensus.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/reefnet_sensus_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/reefnet_sensuspro.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/reefnet_sensuspro_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/reefnet_sensusultra.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/reefnet_sensusultra_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/seac_screen.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/seac_screen_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/serial_posix.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/shearwater_common.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/shearwater_petrel.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/shearwater_predator.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/shearwater_predator_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/sporasub_sp2.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/sporasub_sp2_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/suunto_common.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/suunto_common2.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/suunto_d9.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/suunto_d9_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/suunto_eon.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/suunto_eon_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/suunto_eonsteel.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/suunto_eonsteel_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/suunto_solution.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/suunto_solution_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/suunto_vyper.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/suunto_vyper2.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/suunto_vyper_parser.c

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/tecdiving_divecomputereu.c

This file was deleted.

Loading
Loading