A better SDK with more features and more consistency

This commit is contained in:
2026-09-15 13:19:48 +01:00
parent 047deb65e7
commit a7fbf74f0a
10 changed files with 583 additions and 65 deletions
+60
View File
@@ -0,0 +1,60 @@
package main
import (
"fmt"
"log"
"log/slog"
"os"
"time"
bngsdk "github.com/ESilva15/gobngsdk"
)
func main() {
fmt.Println("Example of how to read a binary file with the SDK")
output, err := os.OpenFile("./output.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o755)
if err != nil {
log.Fatalf("Failed to open log file: %+v", err)
}
logger := slog.New(
slog.NewTextHandler(output, &slog.HandlerOptions{
Level: slog.LevelDebug,
}),
)
sdk, err := bngsdk.NewBngSDK(bngsdk.Options{
Logger: logger.With("service", "bngsdk"),
SourceType: bngsdk.BinaryFile,
BinSourcePath: "../../sunburstManual.bin",
ExportData: true,
ExportDataType: bngsdk.UDPData,
ExportUDPAddress: "127.0.0.1",
ExportUDPPort: 4444,
Loop: true,
})
if err != nil {
log.Fatalf("failed to open the sdk: %+v", err)
}
defer sdk.Close()
ticker := time.NewTicker(time.Second / 60)
defer ticker.Stop()
for {
select {
case <-ticker.C:
_, err := sdk.Update()
if err != nil {
log.Fatalf("failed to update data: %+v", err)
}
fmt.Printf("\033[?25l\033[2J\033[H")
fmt.Printf(
"Gear: %d, RPM: %f, Speed: %f\n",
sdk.Data.Gear, sdk.Data.RPM, sdk.Data.Speed,
)
}
}
}
+56
View File
@@ -0,0 +1,56 @@
package main
import (
"fmt"
"log"
"log/slog"
"os"
"time"
bngsdk "github.com/ESilva15/gobngsdk"
)
func main() {
fmt.Println("Example of how to read from the socket with the SDK")
output, err := os.OpenFile("./output.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0o755)
if err != nil {
log.Fatalf("Failed to open log file: %+v", err)
}
logger := slog.New(
slog.NewTextHandler(output, &slog.HandlerOptions{
Level: slog.LevelDebug,
}),
)
sdk, err := bngsdk.NewBngSDK(bngsdk.Options{
Logger: logger.With("service", "bngsdk"),
SourceType: bngsdk.UDPData,
ImportUDPAddress: "127.0.0.1",
ImportUDPPort: 4444,
})
if err != nil {
log.Fatalf("failed to open the sdk: %+v", err)
}
defer sdk.Close()
ticker := time.NewTicker(time.Second / 60)
defer ticker.Stop()
for {
select {
case <-ticker.C:
_, err := sdk.Update()
if err != nil {
log.Fatalf("failed to update data: %+v", err)
}
fmt.Printf("\033[?25l\033[2J\033[H")
fmt.Printf(
"Gear: %d, RPM: %f, Speed: %f\n",
sdk.Data.Gear, sdk.Data.RPM, sdk.Data.Speed,
)
}
}
}