private static DiscoverResult ParseFindSwAck(byte[] buf, IPEndPoint remoteEp) { if (SwApiCommand.GetApiId(buf) != SwApiId.FindSwAck) { return(null); } var ack = SwApiCommand.FromBytes <SwApiFindSwAck>(buf); if (ack == null) { return(null); } var result = new DiscoverResult { FindSwAck = ack, DisplayNameString = Encoding.UTF8.GetString(ack.DisplayName).TrimEnd('\0'), Address = remoteEp.Address }; Debug.WriteLine($"Device found. Name='{result.DisplayNameString}' IP={result.Address} PreviewPort={result.FindSwAck.Preview} ControlPort={result.FindSwAck.Command} GeneralPort={result.FindSwAck.Tcp}"); return(result); }
private static SwApiCommand ParseGeneralCommand(byte[] buf) { var apiId = SwApiCommand.GetApiId(buf); switch (apiId) { case SwApiId.SwBasicInfo: // SwApi_SwBasicInfo return(SwApiCommand.FromBytes <SwApiSwBasicInfo>(buf)); case SwApiId.FileList: // SwApi_FileList return(SwApiCommand.FromBytes <SwApiFileList>(buf)); case SwApiId.ChromaPreviewResult: // SwApi_ChromaPreviewResult return(SwApiCommand.FromBytes <SwApiChromaPreviewResult>(buf)); case SwApiId.LiveBroadcastStateResult: // SwApi_LiveBroadcastState return(SwApiCommand.FromBytes <SwApiLiveBroadcastState>(buf)); case SwApiId.UploadFileResult: // SwApi_UploadFileResult return(SwApiCommand.FromBytes <SwApiUploadFileResult>(buf)); case SwApiId.ExternalStorageInputStateResult: // SwApi_ExternalStorageInputStateResult return(SwApiCommand.FromBytes <SwApiExternalStorageInputStateResult>(buf)); case SwApiId.EthernetSettingResult: case SwApiId.WiFiNetworkSettingResult: case SwApiId.ApSettingResult: // SwApi_NetworkSettingResult return(SwApiCommand.FromBytes <SwApiNetworkSettingResult>(buf)); case SwApiId.MountNotify: // SwApi_MountNotify return(SwApiCommand.FromBytes <SwApiMountNotify>(buf)); case SwApiId.RecordingResult: // SwApi_RecordingState return(SwApiCommand.FromBytes <SwApiRecordingState>(buf)); case SwApiId.RecordSetting: case SwApiId.PreviewSetting: // SwApi_CameraSetting return(SwApiCommand.FromBytes <SwApiCameraSetting>(buf)); case SwApiId.FirmwareUpdateResult: // SwApi_DoFirmwareUpdateResult return(SwApiCommand.FromBytes <SwApiDoFirmwareUpdateResult>(buf)); case SwApiId.StatusNetworkAddress: // SwApi_NetworkAddress return(SwApiCommand.FromBytes <SwApiNetworkAddress>(buf)); case SwApiId.File: case SwApiId.ChangeProgramOutSetting: case SwApiId.TcpHeartBeat: case SwApiId.SetTimeResult: case SwApiId.ChangePreviewOutOsd: case SwApiId.ChangePreviewOutFormat: case SwApiId.GetFileError: // Do nothing return(null); default: Debug.WriteLine($"Unsupported GeneralCommand({apiId})"); return(null); } }
private static SwApiCommand ParseControlCommand(byte[] buf) { var apiId = SwApiCommand.GetApiId(buf); switch (apiId) { case SwApiId.StateMode: // SwApi_State_Mode return(SwApiCommand.FromBytes <SwApiStateMode>(buf)); case SwApiId.StateRecording: // SwApi_State_Recording return(SwApiCommand.FromBytes <SwApiStateRecording>(buf)); case SwApiId.StateFadeToDefaultColor: // SwApi_State_FadeToDefaultColor return(SwApiCommand.FromBytes <SwApiStateFadeToDefaultColor>(buf)); case SwApiId.StateExternalInput: // SwApi_State_ExternalInput return(SwApiCommand.FromBytes <SwApiStateExternalInput>(buf)); case SwApiId.StateProgramOut: // SwApi_State_ProgramOut return(SwApiCommand.FromBytes <SwApiStateProgramOut>(buf)); case SwApiId.StatePreviewOut: // SwApi_State_PreviewOut return(SwApiCommand.FromBytes <SwApiStatePreviewOut>(buf)); case SwApiId.StateDefaultBackgroundColor: // SwApi_State_DefaultBackgroundColor return(SwApiCommand.FromBytes <SwApiStateDefaultBackgroundColor>(buf)); case SwApiId.StateExternalStorage: // SwApi_State_ExternalStorage return(SwApiCommand.FromBytes <SwApiStateExternalStorage>(buf)); case SwApiId.StatePreviewMode: // SwApi_State_PreviewMode return(SwApiCommand.FromBytes <SwApiStatePreviewMode>(buf)); case SwApiId.StateTcpConnected: // no payload return(SwApiCommand.FromBytes <SwApiCommand>(buf)); case SwApiId.StatusAudioMixer: // SwApi_ChangeAudioMixer return(SwApiCommand.FromBytes <SwApiChangeAudioMixer>(buf)); case SwApiId.StatusAudioMixerAll: // SwApi_ChangeAudioMixerAll return(SwApiCommand.FromBytes <SwApiChangeAudioMixerAll>(buf)); case SwApiId.StatusAudioPeak: // SwApi_Status_AudioPeak return(SwApiCommand.FromBytes <SwApiStatusAudioPeak>(buf)); case SwApiId.StatusVideoSwitcher: // SwApi_VideoSwitcherStatus return(SwApiCommand.FromBytes <SwApiVideoSwitcherStatus>(buf)); case SwApiId.StatusVideoSwitcherAuto: // SwApi_VideoSwitcherStatus return(SwApiCommand.FromBytes <SwApiVideoSwitcherStatus>(buf)); case SwApiId.StatusSetPinpGeometry: // SwApi_VideoSetPinpGeometry return(SwApiCommand.FromBytes <SwApiVideoSetPinpGeometry>(buf)); case SwApiId.StatusSetPinpBorder: // SwApi_VideoSetBorder return(SwApiCommand.FromBytes <SwApiVideoSetBorder>(buf)); case SwApiId.StatusSetChromaRange: // SwApi_VideoSetChromaRange return(SwApiCommand.FromBytes <SwApiVideoSetChromaRange>(buf)); case SwApiId.StatusSetSubMode: // SwApi_VideoSetSubMode return(SwApiCommand.FromBytes <SwApiVideoSetSubMode>(buf)); case SwApiId.StatusNetworkAddress: // SwApi_NetworkAddress return(SwApiCommand.FromBytes <SwApiNetworkAddress>(buf)); case SwApiId.StatusUpdater: // SwApi_DoFirmwareUpdateResult return(SwApiCommand.FromBytes <SwApiDoFirmwareUpdateResult>(buf)); case SwApiId.EthernetSettingResult: case SwApiId.ApSettingResult: case SwApiId.WiFiNetworkSettingResult: // SwApi_NetworkSettingResult return(SwApiCommand.FromBytes <SwApiNetworkSettingResult>(buf)); case SwApiId.MountNotify: // SwApi_MountNotify return(SwApiCommand.FromBytes <SwApiMountNotify>(buf)); case SwApiId.LiveBroadcastStateResult: // SwApi_LiveBroadcastState return(SwApiCommand.FromBytes <SwApiLiveBroadcastState>(buf)); default: Debug.WriteLine($"Unsupported ControlCommand({apiId})"); return(null); } }