cec: extracted CecSharpTypes.h in LibCecSharp. LibCecSharp is now in the CecSharp...
[deb_libcec.git] / src / CecSharpTester / CecSharpClient.cs
index 3d8ec32c4588ae593750f7a463f21944a072f67e..a86d6fb0865f08e264ab6b17c9b666e68786165a 100644 (file)
 
 using System;
 using System.Collections.Generic;
-using System.Linq;
 using System.Text;
+using CecSharp;
 
 namespace CecSharpClient
 {
-  class CecSharpClient
+  class CecSharpClient : CecCallbackMethods
   {
     public CecSharpClient()
     {
@@ -50,6 +50,47 @@ namespace CecSharpClient
       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();
@@ -154,17 +195,15 @@ namespace CecSharpClient
 
     public void MainLoop()
     {
-      Lib.PowerOnDevices(CecLogicalAddress.Tv);
-      FlushLog();
+      Lib.EnableCallbacks(this);
 
+      Lib.PowerOnDevices(CecLogicalAddress.Tv);
       Lib.SetActiveSource(CecDeviceType.PlaybackDevice);
-      FlushLog();
 
       bool bContinue = true;
       string command;
       while (bContinue)
       {
-        FlushLog();
         Console.WriteLine("waiting for input");
 
         command = Console.ReadLine();
@@ -283,11 +322,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 +334,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,7 +383,6 @@ namespace CecSharpClient
       {
         Console.WriteLine("Could not open a connection to the CEC adapter");
       }
-      p.FlushLog();
     }
 
     private int         LogLevel;