Added FUSE support #55
69
fuse.go
69
fuse.go
@ -43,6 +43,50 @@ func (i Device) VersionBytes() ([]byte, error) {
|
|||||||
return []byte(v + "\n"), err
|
return []byte(v + "\n"), err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func converterU8(ctx context.Context, in <-chan uint8) <-chan []byte {
|
||||||
|
out := make(chan []byte, 2)
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <- ctx.Done():
|
||||||
|
return
|
||||||
|
case event := <-in:
|
||||||
|
out <- []byte(strconv.Itoa(int(event)) + "\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
func converterU32(ctx context.Context, in <-chan uint32) <-chan []byte {
|
||||||
|
out := make(chan []byte, 2)
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <- ctx.Done():
|
||||||
|
return
|
||||||
|
case event := <-in:
|
||||||
|
out <- []byte(strconv.Itoa(int(event)) + "\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
func converterMotionValues(ctx context.Context, in <-chan infinitime.MotionValues) <-chan []byte {
|
||||||
|
out := make(chan []byte, 2)
|
||||||
|
go func() {
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <- ctx.Done():
|
||||||
|
return
|
||||||
|
case event := <-in:
|
||||||
|
out <- []byte(strconv.Itoa(int(event.X)) + " " + strconv.Itoa(int(event.Y)) + " " + strconv.Itoa(int(event.Z)) + "\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
type ITProperty struct {
|
type ITProperty struct {
|
||||||
name string
|
name string
|
||||||
@ -559,15 +603,22 @@ func startFuse(ctx context.Context, dev *infinitime.Device) error {
|
|||||||
Str("target", k.String("fuse.mountpoint")).
|
Str("target", k.String("fuse.mountpoint")).
|
||||||
Send()
|
Send()
|
||||||
|
|
||||||
mydev := Device{dev : dev};
|
properties[0].gen = func(ctx context.Context) (<-chan []byte, error) {
|
||||||
|
ans, err := dev.WatchHeartRate(ctx)
|
||||||
properties[0].gen = mydev.dev.WatchHeartRate;
|
return converterU8(ctx, ans), err
|
||||||
// properties[0].f = mydev.HeartRateBytes;
|
}
|
||||||
// properties[1].f = mydev.BatteryLevelBytes;
|
properties[1].gen = func(ctx context.Context) (<-chan []byte, error) {
|
||||||
// properties[2].f = mydev.MotionBytes;
|
ans, err := dev.WatchBatteryLevel(ctx)
|
||||||
// properties[3].f = mydev.StepCountBytes;
|
return converterU8(ctx, ans), err
|
||||||
// properties[4].f = mydev.VersionBytes;
|
}
|
||||||
// properties[5].f = mydev.AddressBytes;
|
properties[2].gen = func(ctx context.Context) (<-chan []byte, error) {
|
||||||
|
ans, err := dev.WatchMotion(ctx)
|
||||||
|
return converterMotionValues(ctx, ans), err
|
||||||
|
}
|
||||||
|
properties[3].gen = func(ctx context.Context) (<-chan []byte, error) {
|
||||||
|
ans, err := dev.WatchStepCount(ctx)
|
||||||
|
return converterU32(ctx, ans), err
|
||||||
|
}
|
||||||
|
|
||||||
myfs, err = dev.FS()
|
myfs, err = dev.FS()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user