5 Commits

38 changed files with 113 additions and 82 deletions

View File

@@ -53,8 +53,8 @@ nfpms:
{{- else }}{{.Arch}}
{{- end }}
description: "Companion daemon for the InfiniTime firmware on the PineTime smartwatch"
homepage: 'https://gitea.arsenm.dev/Arsen6331/itd'
maintainer: 'Arsen Musyaelyan <arsen@arsenm.dev>'
homepage: 'https://gitea.elara.ws/Elara6331/itd'
maintainer: 'Elara Musayelyan <elara@elara.ws>'
license: GPLv3
formats:
- apk
@@ -74,10 +74,10 @@ nfpms:
mode: 0755
aurs:
- name: itd-bin
homepage: 'https://gitea.arsenm.dev/Arsen6331/itd'
homepage: 'https://gitea.elara.ws/Elara6331/itd'
description: "Companion daemon for the InfiniTime firmware on the PineTime smartwatch"
maintainers:
- 'Arsen Musyaelyan <arsen@arsenm.dev>'
- 'Elara Musayelyan <elara@elara.ws>'
license: GPLv3
private_key: '{{ .Env.AUR_KEY }}'
git_url: 'ssh://aur@aur.archlinux.org/itd-bin.git'
@@ -105,11 +105,11 @@ aurs:
install -Dm644 "./LICENSE" "${pkgdir}/usr/share/licenses/itd/LICENSE"
release:
gitea:
owner: Arsen6331
owner: Elara6331
name: itd
gitea_urls:
api: 'https://gitea.arsenm.dev/api/v1/'
download: 'https://gitea.arsenm.dev'
api: 'https://gitea.elara.ws/api/v1/'
download: 'https://gitea.elara.ws'
skip_tls_verify: false
checksum:
name_template: 'checksums.txt'

View File

@@ -1,9 +1,9 @@
# ITD
## InfiniTime Daemon
`itd` is a daemon that uses my infinitime [library](https://go.arsenm.dev/infinitime) to interact with the [PineTime](https://www.pine64.org/pinetime/) running [InfiniTime](https://infinitime.io).
`itd` is a daemon that uses my infinitime [library](https://go.elara.ws/infinitime) to interact with the [PineTime](https://www.pine64.org/pinetime/) running [InfiniTime](https://infinitime.io).
[![status-badge](https://ci.arsenm.dev/api/badges/Arsen6331/itd/status.svg)](https://ci.arsenm.dev/Arsen6331/itd)
[![status-badge](https://ci.elara.ws/api/badges/Elara6331/itd/status.svg)](https://ci.elara.ws/Elara6331/itd)
[![itd-git AUR package](https://img.shields.io/aur/version/itd-git?label=itd-git&logo=archlinux)](https://aur.archlinux.org/packages/itd-git/)
[![itd-bin AUR package](https://img.shields.io/aur/version/itd-bin?label=itd-bin&logo=archlinux)](https://aur.archlinux.org/packages/itd-bin/)

View File

@@ -4,8 +4,8 @@ import (
"io"
"net"
"go.arsenm.dev/drpc/muxconn"
"go.arsenm.dev/itd/internal/rpc"
"go.elara.ws/drpc/muxconn"
"go.elara.ws/itd/internal/rpc"
"storj.io/drpc"
)

View File

@@ -3,7 +3,7 @@ package api
import (
"context"
"go.arsenm.dev/itd/internal/rpc"
"go.elara.ws/itd/internal/rpc"
)
type DFUProgress struct {

View File

@@ -5,7 +5,7 @@ import (
"errors"
"io"
"go.arsenm.dev/itd/internal/rpc"
"go.elara.ws/itd/internal/rpc"
)
type FSClient struct {

View File

@@ -3,7 +3,7 @@ package api
import (
"context"
"go.arsenm.dev/itd/internal/rpc"
"go.elara.ws/itd/internal/rpc"
)
func (c *Client) HeartRate(ctx context.Context) (uint8, error) {

View File

@@ -3,7 +3,7 @@ package api
import (
"context"
"go.arsenm.dev/itd/internal/rpc"
"go.elara.ws/itd/internal/rpc"
)
func (c *Client) Notify(ctx context.Context, title, body string) error {

View File

@@ -3,8 +3,8 @@ package api
import (
"context"
"go.arsenm.dev/infinitime"
"go.arsenm.dev/itd/internal/rpc"
"go.elara.ws/infinitime"
"go.elara.ws/itd/internal/rpc"
)
type ResourceOperation uint8

View File

@@ -4,7 +4,7 @@ import (
"context"
"time"
"go.arsenm.dev/itd/internal/rpc"
"go.elara.ws/itd/internal/rpc"
)
func (c *Client) SetTime(ctx context.Context, t time.Time) error {

View File

@@ -3,7 +3,7 @@ package api
import (
"context"
"go.arsenm.dev/itd/internal/rpc"
"go.elara.ws/itd/internal/rpc"
)
func (c *Client) WeatherUpdate(ctx context.Context) error {

View File

@@ -3,7 +3,7 @@ package api
import (
"context"
"go.arsenm.dev/itd/internal/rpc"
"go.elara.ws/itd/internal/rpc"
)
func (c *Client) WatchHeartRate(ctx context.Context) (<-chan uint8, error) {

View File

@@ -5,9 +5,9 @@ import (
"sync"
"github.com/godbus/dbus/v5"
"go.arsenm.dev/infinitime"
"go.arsenm.dev/itd/internal/utils"
"go.arsenm.dev/logger/log"
"go.elara.ws/infinitime"
"go.elara.ws/itd/internal/utils"
"go.elara.ws/logger/log"
)
func initCallNotifs(ctx context.Context, wg WaitGroup, dev *infinitime.Device) error {
@@ -71,6 +71,17 @@ func initCallNotifs(ctx context.Context, wg WaitGroup, dev *infinitime.Device) e
continue
}
// Get direction of call object using method call connection
direction, err := getDirection(conn, callObj)
if err != nil {
log.Error("Error getting call direction").Err(err).Send()
continue
}
if direction != MMCallDirectionIncoming {
continue
}
// Send call notification to InfiniTime
resCh, err := dev.NotifyCall(phoneNum)
if err != nil {
@@ -131,6 +142,25 @@ func getPhoneNum(conn *dbus.Conn, callObj dbus.BusObject) (string, error) {
return out, nil
}
type MMCallDirection int
const (
MMCallDirectionUnknown MMCallDirection = iota
MMCallDirectionIncoming
MMCallDirectionOutgoing
)
// getDirection gets the direction of a call object using a DBus connection
func getDirection(conn *dbus.Conn, callObj dbus.BusObject) (MMCallDirection, error) {
var out MMCallDirection
// Get number property on DBus object and store return value in out
err := callObj.StoreProperty("org.freedesktop.ModemManager1.Call.Direction", &out)
if err != nil {
return 0, err
}
return out, nil
}
// getPhoneNum accepts a call using a DBus connection
func acceptCall(ctx context.Context, conn *dbus.Conn, callObj dbus.BusObject) error {
// Call Accept() method on DBus object

View File

@@ -7,8 +7,8 @@ import (
"github.com/cheggaaa/pb/v3"
"github.com/urfave/cli/v2"
"go.arsenm.dev/itd/api"
"go.arsenm.dev/logger/log"
"go.elara.ws/itd/api"
"go.elara.ws/logger/log"
)
func fwUpgrade(c *cli.Context) error {

View File

@@ -8,9 +8,9 @@ import (
"time"
"github.com/urfave/cli/v2"
"go.arsenm.dev/itd/api"
"go.arsenm.dev/logger"
"go.arsenm.dev/logger/log"
"go.elara.ws/itd/api"
"go.elara.ws/logger"
"go.elara.ws/logger/log"
)
var client *api.Client

View File

@@ -6,7 +6,7 @@ import (
"github.com/cheggaaa/pb/v3"
"github.com/urfave/cli/v2"
"go.arsenm.dev/infinitime"
"go.elara.ws/infinitime"
)
func resourcesLoad(c *cli.Context) error {

View File

@@ -9,7 +9,7 @@ import (
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/storage"
"fyne.io/fyne/v2/widget"
"go.arsenm.dev/itd/api"
"go.elara.ws/itd/api"
)
func firmwareTab(ctx context.Context, client *api.Client, w fyne.Window) fyne.CanvasObject {

View File

@@ -11,8 +11,8 @@ import (
"fyne.io/fyne/v2/storage"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
"go.arsenm.dev/infinitime"
"go.arsenm.dev/itd/api"
"go.elara.ws/infinitime"
"go.elara.ws/itd/api"
)
func fsTab(ctx context.Context, client *api.Client, w fyne.Window, opened chan struct{}) fyne.CanvasObject {

View File

@@ -11,7 +11,7 @@ import (
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/theme"
"fyne.io/x/fyne/widget/charts"
"go.arsenm.dev/itd/api"
"go.elara.ws/itd/api"
_ "modernc.org/sqlite"
)

View File

@@ -6,7 +6,7 @@ import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"go.arsenm.dev/itd/api"
"go.elara.ws/itd/api"
)
func infoTab(ctx context.Context, client *api.Client, w fyne.Window) fyne.CanvasObject {

View File

@@ -6,7 +6,7 @@ import (
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"go.arsenm.dev/itd/api"
"go.elara.ws/itd/api"
)
func main() {

View File

@@ -7,7 +7,7 @@ import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
"go.arsenm.dev/itd/api"
"go.elara.ws/itd/api"
)
func motionTab(ctx context.Context, client *api.Client, w fyne.Window) fyne.CanvasObject {

View File

@@ -7,7 +7,7 @@ import (
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/widget"
"go.arsenm.dev/itd/api"
"go.elara.ws/itd/api"
)
func notifyTab(ctx context.Context, client *api.Client, w fyne.Window) fyne.CanvasObject {

View File

@@ -8,7 +8,7 @@ import (
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/widget"
"go.arsenm.dev/itd/api"
"go.elara.ws/itd/api"
)
func timeTab(ctx context.Context, client *api.Client, w fyne.Window) fyne.CanvasObject {

View File

@@ -9,8 +9,8 @@ import (
"github.com/knadh/koanf/providers/confmap"
"github.com/knadh/koanf/providers/env"
"github.com/knadh/koanf/providers/file"
"go.arsenm.dev/logger"
"go.arsenm.dev/logger/log"
"go.elara.ws/logger"
"go.elara.ws/logger/log"
)
var cfgDir string

View File

@@ -6,9 +6,9 @@ import (
"github.com/hanwen/go-fuse/v2/fs"
"github.com/hanwen/go-fuse/v2/fuse"
"go.arsenm.dev/infinitime"
"go.arsenm.dev/itd/internal/fusefs"
"go.arsenm.dev/logger/log"
"go.elara.ws/infinitime"
"go.elara.ws/itd/internal/fusefs"
"go.elara.ws/logger/log"
)
func startFUSE(ctx context.Context, wg WaitGroup, dev *infinitime.Device) error {

8
go.mod
View File

@@ -1,4 +1,4 @@
module go.arsenm.dev/itd
module go.elara.ws/itd
go 1.18
@@ -15,9 +15,9 @@ require (
github.com/mattn/go-isatty v0.0.17
github.com/mozillazg/go-pinyin v0.19.0
github.com/urfave/cli/v2 v2.23.7
go.arsenm.dev/drpc v0.0.0-20230328202554-c1f2aa71e794
go.arsenm.dev/infinitime v0.0.0-20230104230015-512d48bc2469
go.arsenm.dev/logger v0.0.0-20230104225304-d706171ea6df
go.elara.ws/drpc v0.0.0-20230421021209-fe4c05460a3d
go.elara.ws/infinitime v0.0.0-20230421025334-f2640203e9e9
go.elara.ws/logger v0.0.0-20230421022458-e80700db2090
golang.org/x/text v0.5.0
google.golang.org/protobuf v1.28.1
modernc.org/sqlite v1.20.1

11
go.sum
View File

@@ -529,12 +529,13 @@ github.com/yuin/goldmark v1.5.3/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5ta
github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=
github.com/zeebo/errs v1.3.0 h1:hmiaKqgYZzcVgRL1Vkc1Mn2914BbzB0IBxs+ebeutGs=
github.com/zeebo/errs v1.3.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4=
go.arsenm.dev/drpc v0.0.0-20230328202554-c1f2aa71e794 h1:8KQpRoQmCTgDvyHFStaIiz5NUNNqMHqVlZoGvIk+OwQ=
go.arsenm.dev/drpc v0.0.0-20230328202554-c1f2aa71e794/go.mod h1:K5cFls42m5q1RIphTVojRdXLaoCknq/kBqQt8Ow3XuA=
go.arsenm.dev/infinitime v0.0.0-20230104230015-512d48bc2469 h1:LsJHg+8rQSYnTE1sSCjBCACxUUVMZIOQani8J6wF2/E=
go.arsenm.dev/infinitime v0.0.0-20230104230015-512d48bc2469/go.mod h1:scUyDmLmCHn6CanGbau8yjTjzyhUbLJcsjmDCCKMIII=
go.arsenm.dev/logger v0.0.0-20230104225304-d706171ea6df h1:8mBHvEe7BJmpOeKSMA5YLqrGo9dCpePocTeR0C1+/2w=
go.arsenm.dev/logger v0.0.0-20230104225304-d706171ea6df/go.mod h1:RV2qydKDdoyaRkhAq8JEGvojR8eJ6bjq5WnSIlH7gYw=
go.elara.ws/drpc v0.0.0-20230421021209-fe4c05460a3d h1:ANb8YPtcxPipwKgmnW688e5PGpNaLh+22nO2LBpIPOU=
go.elara.ws/drpc v0.0.0-20230421021209-fe4c05460a3d/go.mod h1:NDprjiVqKXQKVGzX7jp2g/jctsUbvOxz1nN15QOBEGk=
go.elara.ws/infinitime v0.0.0-20230421025334-f2640203e9e9 h1:HczkQCAHHmOHHdzTxFC1tEGzBJ7F/fuOWNUGrYQhMOg=
go.elara.ws/infinitime v0.0.0-20230421025334-f2640203e9e9/go.mod h1:fu3+jGNBBtRQ1lcywtdZzoQgDFtqvvxBHvLw+XgPrFg=
go.elara.ws/logger v0.0.0-20230421022458-e80700db2090 h1:RVC8XvWo6Yw4HUshqx4TSzuBDScDghafU6QFRJ4xPZg=
go.elara.ws/logger v0.0.0-20230421022458-e80700db2090/go.mod h1:qng49owViqsW5Aey93lwBXONw20oGbJIoLVscB16mPM=
go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A=
go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=

View File

@@ -9,9 +9,9 @@ import (
"github.com/hanwen/go-fuse/v2/fs"
"github.com/hanwen/go-fuse/v2/fuse"
"go.arsenm.dev/infinitime"
"go.arsenm.dev/infinitime/blefs"
"go.arsenm.dev/logger/log"
"go.elara.ws/infinitime"
"go.elara.ws/infinitime/blefs"
"go.elara.ws/logger/log"
)
type ITProperty struct {

View File

@@ -3,7 +3,7 @@ package fusefs
import (
"syscall"
"go.arsenm.dev/infinitime/blefs"
"go.elara.ws/infinitime/blefs"
)
func syscallErr(err error) syscall.Errno {

View File

@@ -34,9 +34,9 @@ import (
"github.com/gen2brain/dlgs"
"github.com/knadh/koanf"
"github.com/mattn/go-isatty"
"go.arsenm.dev/infinitime"
"go.arsenm.dev/logger"
"go.arsenm.dev/logger/log"
"go.elara.ws/infinitime"
"go.elara.ws/logger"
"go.elara.ws/logger/log"
)
var k = koanf.New(".")

View File

@@ -5,9 +5,9 @@ import (
"strings"
"github.com/godbus/dbus/v5"
"go.arsenm.dev/infinitime"
"go.arsenm.dev/itd/internal/utils"
"go.arsenm.dev/logger/log"
"go.elara.ws/infinitime"
"go.elara.ws/itd/internal/utils"
"go.elara.ws/logger/log"
)
const (

View File

@@ -7,8 +7,8 @@ import (
"time"
"go.arsenm.dev/infinitime"
"go.arsenm.dev/logger/log"
"go.elara.ws/infinitime"
"go.elara.ws/logger/log"
_ "modernc.org/sqlite"
)

View File

@@ -6,7 +6,7 @@ import (
"sync"
"github.com/godbus/dbus/v5"
"go.arsenm.dev/itd/internal/utils"
"go.elara.ws/itd/internal/utils"
)
var (

View File

@@ -22,10 +22,10 @@ import (
"context"
"go.arsenm.dev/infinitime"
"go.arsenm.dev/itd/mpris"
"go.arsenm.dev/itd/translit"
"go.arsenm.dev/logger/log"
"go.elara.ws/infinitime"
"go.elara.ws/itd/mpris"
"go.elara.ws/itd/translit"
"go.elara.ws/logger/log"
)
func initMusicCtrl(ctx context.Context, wg WaitGroup, dev *infinitime.Device) error {

View File

@@ -23,10 +23,10 @@ import (
"fmt"
"github.com/godbus/dbus/v5"
"go.arsenm.dev/infinitime"
"go.arsenm.dev/itd/internal/utils"
"go.arsenm.dev/itd/translit"
"go.arsenm.dev/logger/log"
"go.elara.ws/infinitime"
"go.elara.ws/itd/internal/utils"
"go.elara.ws/itd/translit"
"go.elara.ws/logger/log"
)
func initNotifRelay(ctx context.Context, wg WaitGroup, dev *infinitime.Device) error {

View File

@@ -28,11 +28,11 @@ import (
"time"
"go.arsenm.dev/drpc/muxserver"
"go.arsenm.dev/infinitime"
"go.arsenm.dev/infinitime/blefs"
"go.arsenm.dev/itd/internal/rpc"
"go.arsenm.dev/logger/log"
"go.elara.ws/drpc/muxserver"
"go.elara.ws/infinitime"
"go.elara.ws/infinitime/blefs"
"go.elara.ws/itd/internal/rpc"
"go.elara.ws/logger/log"
"storj.io/drpc/drpcmux"
)

View File

@@ -3,7 +3,7 @@ package main
import (
"sync"
"go.arsenm.dev/logger/log"
"go.elara.ws/logger/log"
)
type WaitGroup struct {

View File

@@ -12,9 +12,9 @@ import (
"time"
"go.arsenm.dev/infinitime"
"go.arsenm.dev/infinitime/weather"
"go.arsenm.dev/logger/log"
"go.elara.ws/infinitime"
"go.elara.ws/infinitime/weather"
"go.elara.ws/logger/log"
)
// METResponse represents a response from