build_amazon.go 848 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package hid
  2. import (
  3. "github.com/bettercap/bettercap/network"
  4. )
  5. const (
  6. amzFrameDelay = 5
  7. )
  8. type AmazonBuilder struct {
  9. }
  10. func (b AmazonBuilder) frameFor(cmd *Command) []byte {
  11. return []byte{0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
  12. 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
  13. 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
  14. 0x0f, 0, cmd.Mode, 0, cmd.HID, 0}
  15. }
  16. func (b AmazonBuilder) BuildFrames(dev *network.HIDDevice, commands []*Command) error {
  17. for i, cmd := range commands {
  18. if i == 0 {
  19. for j := 0; j < 5; j++ {
  20. cmd.AddFrame(b.frameFor(&Command{}), amzFrameDelay)
  21. }
  22. }
  23. if cmd.IsHID() {
  24. cmd.AddFrame(b.frameFor(cmd), amzFrameDelay)
  25. cmd.AddFrame(b.frameFor(&Command{}), amzFrameDelay)
  26. } else if cmd.IsSleep() {
  27. for i, num := 0, cmd.Sleep/10; i < num; i++ {
  28. cmd.AddFrame(b.frameFor(&Command{}), 10)
  29. }
  30. }
  31. }
  32. return nil
  33. }