handle message from the android tv device
(raw []byte)
| 159 | |
| 160 | // handle message from the android tv device |
| 161 | func (c *Command) handleData(raw []byte) { |
| 162 | data := pb.RemoteMessage{} |
| 163 | err := proto.Unmarshal(raw, &data) |
| 164 | if err != nil { |
| 165 | // ignore invalid protobuf messages |
| 166 | return |
| 167 | } |
| 168 | |
| 169 | switch { |
| 170 | case data.RemoteSetActive != nil: |
| 171 | err = c.write(pb.RemoteMessage{ |
| 172 | RemoteSetActive: &pb.RemoteSetActive{ |
| 173 | Active: 622, |
| 174 | }, |
| 175 | }) |
| 176 | case data.RemotePingRequest != nil: |
| 177 | err = c.write(pb.RemoteMessage{ |
| 178 | RemotePingResponse: &pb.RemotePingResponse{ |
| 179 | Val1: data.RemotePingRequest.Val1, |
| 180 | }, |
| 181 | }) |
| 182 | case data.RemoteImeKeyInject != nil: |
| 183 | c.RemoteData.App.CurrentApp = data.RemoteImeKeyInject.AppInfo.AppPackage |
| 184 | c.RemoteData.App.UpdateDate = time.Now() |
| 185 | case data.RemoteStart != nil: |
| 186 | c.RemoteData.Powered.Powered = data.RemoteStart.Started |
| 187 | c.RemoteData.Powered.UpdateDate = time.Now() |
| 188 | case data.RemoteSetVolumeLevel != nil: |
| 189 | c.RemoteData.Volume.Level = data.RemoteSetVolumeLevel.VolumeLevel |
| 190 | c.RemoteData.Volume.Maximum = data.RemoteSetVolumeLevel.VolumeMax |
| 191 | c.RemoteData.Volume.Muted = data.RemoteSetVolumeLevel.VolumeMuted |
| 192 | c.RemoteData.Volume.PlayerModel = data.RemoteSetVolumeLevel.PlayerModel |
| 193 | c.RemoteData.Volume.UpdateDate = time.Now() |
| 194 | case data.RemoteConfigure != nil: |
| 195 | c.RemoteData.Device.Model = data.RemoteConfigure.DeviceInfo.Model |
| 196 | c.RemoteData.Device.Vendor = data.RemoteConfigure.DeviceInfo.Vendor |
| 197 | c.RemoteData.Device.Version = data.RemoteConfigure.DeviceInfo.AppVersion |
| 198 | c.RemoteData.Device.UpdateDate = time.Now() |
| 199 | } |
| 200 | |
| 201 | if err != nil { |
| 202 | c.Error = err |
| 203 | } |
| 204 | } |
| 205 | |
| 206 | // Return informations on the current android tv device |
| 207 | func (c *Command) GetData() (RemoteData, error) { |