// License: Apache 2.0. See LICENSE file in root directory. // Copyright(c) 2020 Intel Corporation. All Rights Reserved. namespace Intel.RealSense { using System; using System.Runtime.InteropServices; public class FirmwareLogsDevice : Device { internal FirmwareLogsDevice(IntPtr dev) : base(dev) { } /// <summary> /// Create an <see cref="FirmwareLogsDevice"/> from existing <see cref="Device"/> /// </summary> /// <param name="dev">a device that supports <see cref="Extension.FirmwareLogger"/></param> /// <returns>a new <see cref="FirmwareLogsDevice"/></returns> /// <exception cref="ArgumentException">Thrown when <paramref name="dev"/> does not support <see cref="Extension.FirmwareLogger"/></exception> public static FirmwareLogsDevice FromDevice(Device dev) { object error; if (NativeMethods.rs2_is_device_extendable_to(dev.Handle, Extension.FirmwareLogger, out error) == 0) { throw new ArgumentException($"Device does not support {nameof(Extension.FirmwareLogger)}"); } return Device.Create<FirmwareLogsDevice>(dev.Handle); } public FwLog CreateFwLog() { object error; return FwLog.Create(NativeMethods.rs2_create_fw_log_message(Handle, out error)); } public FwParsedLog CreateFwParsedLog() { object error; return FwParsedLog.Create(NativeMethods.rs2_create_fw_log_parsed_message(Handle, out error)); } public uint GetNumberOfFwLogs() { object error; return NativeMethods.rs2_get_number_of_fw_logs(Handle, out error); } public bool GetFwLog(ref FwLog fwLog) { object error; bool result = Convert.ToBoolean(NativeMethods.rs2_get_fw_log(Handle, fwLog.Handle, out error)); return result; } public bool GetFlashLog(ref FwLog fwLog) { object error; bool result = Convert.ToBoolean(NativeMethods.rs2_get_flash_log(Handle, fwLog.Handle, out error)); return result; } public bool InitParser(string xml_content) { object error; bool result = Convert.ToBoolean(NativeMethods.rs2_init_fw_log_parser(Handle, xml_content, out error)); return result; } public bool ParseFwLog(FwLog fwLog, ref FwParsedLog fwParsedLog) { object error; bool result = Convert.ToBoolean(NativeMethods.rs2_parse_firmware_log(Handle, fwLog.Handle, fwParsedLog.Handle, out error)); return result; } } }