Skip to content
This repository has been archived by the owner on Jul 2, 2024. It is now read-only.

Commit

Permalink
Use gomobile to build native libraries
Browse files Browse the repository at this point in the history
  • Loading branch information
SanmerDev committed Jun 29, 2023
1 parent 7aa7162 commit e1d755c
Show file tree
Hide file tree
Showing 16 changed files with 194 additions and 488 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ jobs:
local-cache: true

- name: Build Golang library
run: python3 app/src/main/golang/build.py -m 26 -a all -d
run: go generate app/src/main/golang/Geomag.go
env:
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}

- name: Set up Gradle
uses: gradle/gradle-build-action@v2
Expand Down
18 changes: 0 additions & 18 deletions app/src/main/cpp/CMakeLists.txt

This file was deleted.

33 changes: 0 additions & 33 deletions app/src/main/cpp/geomag.cpp

This file was deleted.

19 changes: 0 additions & 19 deletions app/src/main/cpp/geomag.h

This file was deleted.

31 changes: 0 additions & 31 deletions app/src/main/cpp/igrf-jni.cpp

This file was deleted.

14 changes: 0 additions & 14 deletions app/src/main/cpp/logging.h

This file was deleted.

37 changes: 0 additions & 37 deletions app/src/main/cpp/wmm-jni.cpp

This file was deleted.

67 changes: 67 additions & 0 deletions app/src/main/golang/Geomag.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package geomag

//go:generate bash -c "if [ ! -d libs ]; then mkdir libs; fi"
//go:generate gomobile bind -target android -androidapi 26 -javapkg go -trimpath -v -o libs/geomag.aar

import (
"github.com/proway2/go-igrf/igrf"
"github.com/westphae/geomag/pkg/egm96"
"github.com/westphae/geomag/pkg/wmm"
"time"
)

//export igrf
func IGRF(lat, lon, alt, date float64) *MagneticField {
data := igrf.New()
mag, _ := data.IGRF(lat, lon, alt, date)

return newMagneticField(
mag.Declination,
mag.DeclinationSV,
mag.Inclination,
mag.InclinationSV,
mag.HorizontalIntensity,
mag.HorizontalSV,
mag.NorthComponent,
mag.NorthSV,
mag.EastComponent,
mag.EastSV,
mag.VerticalComponent,
mag.VerticalSV,
mag.TotalIntensity,
mag.TotalSV,
)
}

//export wmm
func WMM(lat, lon, alt, date float64) *MagneticField {
tt := wmm.DecimalYear(date)
loc := egm96.NewLocationGeodetic(lat, lon, alt)
mag, _ := wmm.CalculateWMMMagneticField(loc, tt.ToTime())
x, y, z, dx, dy, dz := mag.Ellipsoidal()

return newMagneticField(
mag.D(),
mag.DD(),
mag.I(),
mag.DI(),
mag.H(),
mag.DH(),
x,
dx,
y,
dy,
z,
dz,
mag.F(),
mag.DF(),
)
}

//export toDecimalYears
func ToDecimalYears(year, month, day, hour, min, sec, nsec int) float64 {
dateTime := time.Date(year, time.Month(month), day,
hour, min, sec, nsec, time.UTC)

return float64(wmm.TimeToDecimalYears(dateTime))
}
45 changes: 45 additions & 0 deletions app/src/main/golang/MagneticField.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package geomag

type MagneticField struct {
Declination float64
DeclinationSV float64
Inclination float64
InclinationSV float64
HorizontalIntensity float64
HorizontalSV float64
NorthComponent float64
NorthSV float64
EastComponent float64
EastSV float64
VerticalComponent float64
VerticalSV float64
TotalIntensity float64
TotalSV float64
}

func newMagneticField(
declination, declinationSV,
inclination, inclinationSV,
horizontalIntensity, horizontalSV,
northComponent, northSV,
eastComponent, eastSV,
verticalComponent, verticalSV,
totalIntensity, totalSV float64,
) *MagneticField {
return &MagneticField{
Declination: declination,
DeclinationSV: declinationSV,
Inclination: inclination,
InclinationSV: inclinationSV,
HorizontalIntensity: horizontalIntensity,
HorizontalSV: horizontalSV,
NorthComponent: northComponent,
NorthSV: northSV,
EastComponent: eastComponent,
EastSV: eastSV,
VerticalComponent: verticalComponent,
VerticalSV: verticalSV,
TotalIntensity: totalIntensity,
TotalSV: totalSV,
}
}
Loading

0 comments on commit e1d755c

Please sign in to comment.