[ci skip] 1. dropped channels in ITProperty
This commit is contained in:
		| @@ -1,61 +0,0 @@ | ||||
| package fusefs | ||||
|  | ||||
| import ( | ||||
| 	"go.arsenm.dev/infinitime" | ||||
| 	"context" | ||||
| 	"strconv" | ||||
| ) | ||||
|  | ||||
| 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 | ||||
| } | ||||
|  | ||||
| func converter1String(ctx context.Context, in string) <-chan []byte { | ||||
| 	out := make(chan []byte, 2) | ||||
| 	out <- []byte(in + "\n") | ||||
| 	close(out) | ||||
| 	return out | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -10,13 +10,13 @@ import ( | ||||
| 	"github.com/hanwen/go-fuse/v2/fuse" | ||||
| 	"io" | ||||
| 	"bytes" | ||||
| 	"strconv" | ||||
| ) | ||||
|  | ||||
| type ITProperty struct { | ||||
| 	name string | ||||
| 	Ino uint64 | ||||
| 	oneshot bool | ||||
| 	gen func(context.Context) (<-chan []byte, error) | ||||
| 	gen func() ([]byte, error) | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -55,40 +55,35 @@ func BuildRootNode(dev *infinitime.Device) (*ITNode, error) { | ||||
| var properties = make([]ITProperty, 6) | ||||
|  | ||||
| func BuildProperties(dev *infinitime.Device) { | ||||
| 	properties[0] = ITProperty{"heartrate", 2, true, | ||||
| 		func(ctx context.Context) (<-chan []byte, error) { | ||||
| 			ans, err := dev.WatchHeartRate(ctx) | ||||
| 			return converterU8(ctx, ans), err | ||||
| 	properties[0] = ITProperty{"heartrate", 2, | ||||
| 		func() ([]byte, error) { | ||||
| 			ans, err := dev.HeartRate() | ||||
| 			return []byte(strconv.Itoa(int(ans)) + "\n"), err | ||||
| 	}} | ||||
| 	properties[1] = ITProperty{"battery", 3, true, | ||||
| 		func(ctx context.Context) (<-chan []byte, error) { | ||||
| 			ans, err := dev.WatchBatteryLevel(ctx) | ||||
| 			return converterU8(ctx, ans), err | ||||
| 	properties[1] = ITProperty{"battery", 3, | ||||
| 		func() ([]byte, error) { | ||||
| 			ans, err := dev.BatteryLevel() | ||||
| 			return []byte(strconv.Itoa(int(ans)) + "\n"), err | ||||
| 	}} | ||||
| 	properties[2] = ITProperty{"motion", 4, true, | ||||
| 		func(ctx context.Context) (<-chan []byte, error) { | ||||
| 			ans, err := dev.WatchMotion(ctx) | ||||
| 			return converterMotionValues(ctx, ans), err | ||||
| 	properties[2] = ITProperty{"motion", 4, | ||||
| 		func() ([]byte, error) { | ||||
| 			ans, err := dev.Motion() | ||||
| 			return []byte(strconv.Itoa(int(ans.X)) + " " + strconv.Itoa(int(ans.Y)) + " " + strconv.Itoa(int(ans.Z)) + "\n"), err | ||||
| 	}} | ||||
| 	properties[3] = ITProperty{"motion", 5, true, | ||||
| 		func(ctx context.Context) (<-chan []byte, error) { | ||||
| 			ans, err := dev.WatchMotion(ctx) | ||||
| 			return converterMotionValues(ctx, ans), err | ||||
| 	properties[3] = ITProperty{"stepcount", 6, | ||||
| 		func() ([]byte, error) { | ||||
| 			ans, err := dev.StepCount() | ||||
| 			return []byte(strconv.Itoa(int(ans)) + "\n"), err | ||||
| 	}} | ||||
| 	properties[4] = ITProperty{"stepcount", 6, true, | ||||
| 		func(ctx context.Context) (<-chan []byte, error) { | ||||
| 			ans, err := dev.WatchStepCount(ctx) | ||||
| 			return converterU32(ctx, ans), err | ||||
| 	}} | ||||
| 	properties[5] = ITProperty{"version", 7, true, | ||||
| 		func(ctx context.Context) (<-chan []byte, error) { | ||||
| 	properties[4] = ITProperty{"version", 7, | ||||
| 		func() ([]byte, error) { | ||||
| 			ans, err := dev.Version() | ||||
| 			return converter1String(ctx, ans), err | ||||
| 			return []byte(ans + "\n"), err | ||||
| 	}} | ||||
| 	properties[6] = ITProperty{"address", 8, true, | ||||
| 		func(ctx context.Context) (<-chan []byte, error) { | ||||
| 	properties[5] = ITProperty{"address", 8, | ||||
| 		func() ([]byte, error) { | ||||
| 			ans := dev.Address() | ||||
| 			return converter1String(ctx, ans), nil | ||||
| 			return []byte(ans + "\n"), nil | ||||
| 	}} | ||||
|  | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user