Skip to content

Commit

Permalink
Adding USB Support for dive computers (#2)
Browse files Browse the repository at this point in the history
Co-authored-by: Sebastian Schneider <sese.tailor@gmx.net>
  • Loading branch information
Ben1980 and Sese-Schneider authored Feb 28, 2024
1 parent 385bd8d commit 13b5dd1
Show file tree
Hide file tree
Showing 200 changed files with 1,126 additions and 289 deletions.
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

0 comments on commit 13b5dd1

Please sign in to comment.