2021-08-20 00:41:09 +00:00
# InfiniTime
This is a go library for interfacing with InfiniTime firmware
over BLE on Linux.
2021-08-20 00:59:38 +00:00
[![Go Reference ](https://pkg.go.dev/badge/go.arsenm.dev/infinitime.svg )](https://pkg.go.dev/go.arsenm.dev/infinitime)
2021-08-20 00:41:09 +00:00
---
2021-08-20 01:04:23 +00:00
### Importing
This library's import path is `go.arsenm.dev/infinitime` .
---
2021-08-20 00:41:09 +00:00
### Dependencies
2021-11-25 00:51:42 +00:00
This library requires `dbus` , `bluez` , and `pactl` to function. These allow the library to use bluetooth, control media, control volume, etc.
2021-08-20 00:41:09 +00:00
#### Arch
```shell
2021-11-25 00:50:35 +00:00
sudo pacman -S dbus bluez libpulse --needed
2021-08-20 00:41:09 +00:00
```
#### Debian/Ubuntu
```shell
2021-11-25 00:50:35 +00:00
sudo apt install dbus bluez pulseaudio-utils
2021-08-20 00:41:09 +00:00
```
#### Fedora
```shell
2021-11-25 00:50:35 +00:00
sudo dnf install dbus bluez pulseaudio-utils
2021-08-20 00:41:09 +00:00
```
---
### Features
This library currently supports the following features:
- Notifications
- Heart rate monitoring
- Setting time
- Battery level
- Music control
- OTA firmware upgrades
Added Navigation service (#5)
InfiniTime implements a [Navigation Service](https://github.com/InfiniTimeOrg/InfiniTime/blob/develop/doc/NavigationService.md). This pull request will add it to the go library by defining a function
```go
func (i *Device) Navigation(flag string, narrative string, dist string, progress uint8) error {
...
}
```
From the InfiniTime manual
* `flag`: the graphic instruction as provided by [Pure Maps](https://github.com/rinigus/pure-maps/tree/master/qml/icons/navigation). A list of valid instruction icons can be found [here](https://github.com/rinigus/pure-maps/tree/master/qml/icons/navigation)
* `narrative`: the instruction in words, eg. "At the roundabout take the first exit".
* `dist`: a short string describing the distance to the upcoming instruction such as "50 m".
* `progress`: the percent complete in a `uint8`
Adding this to the `itd` daemon is straightforward
```patch
diff --git a/api/types.go b/api/types.go
index 281a85b..14c84de 100644
--- a/api/types.go
+++ b/api/types.go
@@ -22,6 +22,13 @@ type FwUpgradeData struct {
Files []string
}
+type NavigationData struct {
+ Flag string
+ Narrative string
+ Dist string
+ Progress uint8
+}
+
type NotifyData struct {
Title string
Body string
diff --git a/socket.go b/socket.go
index 6fcba5c..91b37c0 100644
--- a/socket.go
+++ b/socket.go
@@ -204,6 +204,10 @@ func (i *ITD) Address(_ *server.Context) string {
return i.dev.Address()
}
+func (i *ITD) Navigation(_ *server.Context, data api.NavigationData) error {
+ return i.dev.Navigation(data.Flag, data.Narrative, data.Dist, data.Progress)
+}
+
func (i *ITD) Notify(_ *server.Context, data api.NotifyData) error {
return i.dev.Notify(data.Title, data.Body)
}
```
Co-authored-by: Yannick Ulrich <yannick.ulrich@durham.ac.uk>
Reviewed-on: https://gitea.arsenm.dev/Arsen6331/infinitime/pulls/5
Co-authored-by: yannickulrich <yannick.ulrich@protonmail.com>
Co-committed-by: yannickulrich <yannick.ulrich@protonmail.com>
2022-11-03 19:09:06 +00:00
- Navigation
2021-08-20 00:41:09 +00:00
---
### Mentions
The DFU process used in this library was created with the help of [siglo ](https://github.com/alexr4535/siglo )'s source code. Specifically, this file: [ble_dfu.py ](https://github.com/alexr4535/siglo/blob/main/src/ble_dfu.py )