X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FCecSharpTester%2FCecSharpClient.cs;h=061a992047877beebe9b9ec6fd1d7bbc22c19579;hb=10c03f2c2ee8de84829e5b38e655a0a7b14c737a;hp=3d8ec32c4588ae593750f7a463f21944a072f67e;hpb=8d4c47d9bc28d1e909aaab47238832878a54c8c4;p=deb_libcec.git diff --git a/src/CecSharpTester/CecSharpClient.cs b/src/CecSharpTester/CecSharpClient.cs index 3d8ec32..061a992 100644 --- a/src/CecSharpTester/CecSharpClient.cs +++ b/src/CecSharpTester/CecSharpClient.cs @@ -32,24 +32,68 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Text; +using CecSharp; namespace CecSharpClient { - class CecSharpClient + class CecSharpClient : CecCallbackMethods { public CecSharpClient() { - CecDeviceTypeList types = new CecDeviceTypeList(); - types.Types[0] = CecDeviceType.RecordingDevice; + Config = new LibCECConfiguration(); + Config.DeviceTypes.Types[0] = CecDeviceType.RecordingDevice; + Config.DeviceName = "CEC Tester"; + Config.ClientVersion = CecClientVersion.Version1_5_0; + Config.SetCallbacks(this); + LogLevel = (int)CecLogLevel.All; - Lib = new LibCecSharp("CEC Tester", types); - LogLevel = (int) CecLogLevel.All; + Lib = new LibCecSharp(Config); Console.WriteLine("CEC Parser created - libcec version " + Lib.GetLibVersionMajor() + "." + Lib.GetLibVersionMinor()); } + public override int ReceiveCommand(CecCommand command) + { + return 1; + } + + public override int ReceiveKeypress(CecKeypress key) + { + return 1; + } + + public override int ReceiveLogMessage(CecLogMessage message) + { + if (((int)message.Level & LogLevel) == (int)message.Level) + { + string strLevel = ""; + switch (message.Level) + { + case CecLogLevel.Error: + strLevel = "ERROR: "; + break; + case CecLogLevel.Warning: + strLevel = "WARNING: "; + break; + case CecLogLevel.Notice: + strLevel = "NOTICE: "; + break; + case CecLogLevel.Traffic: + strLevel = "TRAFFIC: "; + break; + case CecLogLevel.Debug: + strLevel = "DEBUG: "; + break; + default: + break; + } + string strLog = string.Format("{0} {1,16} {2}", strLevel, message.Time, message.Message); + Console.WriteLine(strLog); + } + return 1; + } + void FlushLog() { CecLogMessage message = Lib.GetNextLogMessage(); @@ -155,16 +199,12 @@ namespace CecSharpClient public void MainLoop() { Lib.PowerOnDevices(CecLogicalAddress.Tv); - FlushLog(); - Lib.SetActiveSource(CecDeviceType.PlaybackDevice); - FlushLog(); bool bContinue = true; string command; while (bContinue) { - FlushLog(); Console.WriteLine("waiting for input"); command = Console.ReadLine(); @@ -218,7 +258,7 @@ namespace CecSharpClient else if (splitCommand[0] == "pa") { if (splitCommand.Length > 1) - Lib.SetPhysicalAddress(short.Parse(splitCommand[1], System.Globalization.NumberStyles.HexNumber)); + Lib.SetPhysicalAddress(ushort.Parse(splitCommand[1], System.Globalization.NumberStyles.HexNumber)); } else if (splitCommand[0] == "osd") { @@ -283,11 +323,9 @@ namespace CecSharpClient { Console.WriteLine("closing the connection"); Lib.Close(); - FlushLog(); Console.WriteLine("opening a new connection"); Connect(10000); - FlushLog(); Console.WriteLine("setting active source"); Lib.SetActiveSource(CecDeviceType.PlaybackDevice); @@ -297,7 +335,7 @@ namespace CecSharpClient Console.WriteLine("CEC bus information"); Console.WriteLine("==================="); CecLogicalAddresses addresses = Lib.GetActiveDevices(); - for (int iPtr = 0; iPtr < addresses.Addresses.Count(); iPtr++) + for (int iPtr = 0; iPtr < addresses.Addresses.Length; iPtr++) { CecLogicalAddress address = (CecLogicalAddress)iPtr; if (!addresses.IsSet(address)) @@ -346,10 +384,10 @@ namespace CecSharpClient { Console.WriteLine("Could not open a connection to the CEC adapter"); } - p.FlushLog(); } - private int LogLevel; - private LibCecSharp Lib; + private int LogLevel; + private LibCecSharp Lib; + private LibCECConfiguration Config; } }