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();
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();
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")
{
{
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);
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))
{
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;
}
}