migrate
This commit is contained in:
139
app/pkg/device/report3/report3.go
Normal file
139
app/pkg/device/report3/report3.go
Normal file
@@ -0,0 +1,139 @@
|
||||
package report3
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"microjelly.com/beeon/app/pkg/device/keycodes"
|
||||
)
|
||||
|
||||
type State uint8
|
||||
|
||||
const (
|
||||
StateIdle = State(10)
|
||||
StateActive = State(20)
|
||||
StateUnset = State(255)
|
||||
)
|
||||
|
||||
func (r State) String() string {
|
||||
switch r {
|
||||
case StateActive:
|
||||
return "active"
|
||||
case StateIdle:
|
||||
return "idle"
|
||||
case StateUnset:
|
||||
return "unset"
|
||||
default:
|
||||
return "unknown"
|
||||
}
|
||||
}
|
||||
|
||||
type Mode uint8
|
||||
|
||||
const (
|
||||
ModeMouse = Mode(10)
|
||||
ModeKeyboard = Mode(20)
|
||||
ModeUnset = Mode(255)
|
||||
)
|
||||
|
||||
func (r Mode) String() string {
|
||||
switch r {
|
||||
case ModeMouse:
|
||||
return "mouse"
|
||||
case ModeKeyboard:
|
||||
return "keyboard"
|
||||
case ModeUnset:
|
||||
return "unset"
|
||||
default:
|
||||
return "unknown"
|
||||
}
|
||||
}
|
||||
|
||||
type Rate uint8
|
||||
|
||||
const (
|
||||
RateFast = Rate(1)
|
||||
RateNormal = Rate(8)
|
||||
RateSlow = Rate(16)
|
||||
RateExtraSlow = Rate(32)
|
||||
RateUnset = Rate(255)
|
||||
)
|
||||
|
||||
func (r Rate) String() string {
|
||||
switch r {
|
||||
case RateFast:
|
||||
return "fast"
|
||||
case RateNormal:
|
||||
return "normal"
|
||||
case RateSlow:
|
||||
return "slow"
|
||||
case RateExtraSlow:
|
||||
return "extra-slow"
|
||||
case RateUnset:
|
||||
return "unset"
|
||||
default:
|
||||
return fmt.Sprintf("custom (%d)", r)
|
||||
}
|
||||
}
|
||||
|
||||
type MouseMode uint8
|
||||
|
||||
const (
|
||||
MouseModeCircle = MouseMode(10)
|
||||
MouseModeRandom = MouseMode(20)
|
||||
MouseModeUnset = MouseMode(255)
|
||||
)
|
||||
|
||||
func (r MouseMode) String() string {
|
||||
switch r {
|
||||
case MouseModeCircle:
|
||||
return "circle"
|
||||
case MouseModeRandom:
|
||||
return "random"
|
||||
case MouseModeUnset:
|
||||
return "unset"
|
||||
default:
|
||||
return "unknown"
|
||||
}
|
||||
}
|
||||
|
||||
type Report struct {
|
||||
State State
|
||||
Mode Mode
|
||||
Rate Rate
|
||||
KeyCode keycodes.KeyCode
|
||||
MouseMode MouseMode
|
||||
}
|
||||
|
||||
func (r Report) String() string {
|
||||
switch r.Mode {
|
||||
case ModeMouse:
|
||||
return fmt.Sprintf("{Mode: %s, MouseMode: %s, Rate: %s, State: %s}", r.Mode, r.MouseMode, r.Rate, r.State)
|
||||
case ModeKeyboard:
|
||||
return fmt.Sprintf("{Mode: %s, KeyCode: %s, Rate: %s, State: %s}", r.Mode, r.KeyCode, r.Rate, r.State)
|
||||
case ModeUnset:
|
||||
return fmt.Sprintf("{Mode: %s, MouseMode: %s, KeyCode: %s, Rate: %s, State: %s}", r.Mode, r.MouseMode, r.KeyCode, r.Rate, r.State)
|
||||
default:
|
||||
return "{invalid}"
|
||||
}
|
||||
}
|
||||
|
||||
func New(b []byte) *Report {
|
||||
r := new(Report)
|
||||
r.State = State(b[1])
|
||||
r.Mode = Mode(b[2])
|
||||
r.Rate = Rate(b[3])
|
||||
r.KeyCode = keycodes.KeyCode(b[4])
|
||||
r.MouseMode = MouseMode(b[5])
|
||||
return r
|
||||
}
|
||||
|
||||
func (r Report) Bytes() []byte {
|
||||
b := make([]byte, 6)
|
||||
b[0] = 3
|
||||
b[1] = uint8(r.State)
|
||||
b[2] = uint8(r.Mode)
|
||||
b[3] = uint8(r.Rate)
|
||||
b[4] = uint8(r.KeyCode)
|
||||
b[5] = uint8(r.MouseMode)
|
||||
return b
|
||||
}
|
||||
Reference in New Issue
Block a user