From: <be...@us...> - 2009-07-08 23:53:24
|
Revision: 2993 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=2993&view=rev Author: belcom Date: 2009-07-08 23:53:08 +0000 (Wed, 08 Jul 2009) Log Message: ----------- - iMON USB plugin: making old DOS device working again. - iMON USB abstract mapping: all buttons work now, some mappings changed. Modified Paths: -------------- trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Imon USB Receivers/Imon USB Receivers.cs trunk/plugins/IR Server Suite/IR Server Suite/Input Service/Input Service/Abstract Remote Maps/iMon USB/Imon PAD.xml Modified: trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Imon USB Receivers/Imon USB Receivers.cs =================================================================== --- trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Imon USB Receivers/Imon USB Receivers.cs 2009-07-07 00:34:56 UTC (rev 2992) +++ trunk/plugins/IR Server Suite/IR Server Suite/IR Server Plugins/Imon USB Receivers/Imon USB Receivers.cs 2009-07-08 23:53:08 UTC (rev 2993) @@ -57,12 +57,31 @@ private const uint IOCTL_IMON_READ2 = 0x00222034; // function 0x80D - ??? read (8 bytes) private const uint IOCTL_IMON_WRITE = 0x00222018; // function 0x806 - write data (8 bytes) to device - private static readonly byte[][] SetDosRemotePAD = new byte[][] + private static readonly byte[][] SetDosRemotePADold = new byte[][] { + new byte[] {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00}, + new byte[] {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x02}, + new byte[] {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x04}, + new byte[] {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x06}, + new byte[] {0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x08}, + new byte[] {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0A} + }; + private static readonly byte[][] SetDosRemoteMCEold = new byte[][] + { + new byte[] {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00}, + new byte[] {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x02}, + new byte[] {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x04}, + new byte[] {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x06}, + new byte[] {0x20, 0x20, 0x20, 0x20, 0x01, 0x00, 0x00, 0x08}, + new byte[] {0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0A} + }; + + private static readonly byte[][] SetDosRemotePADnew = new byte[][] + { new byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02} }; - private static readonly byte[][] SetDosRemoteMCE = new byte[][] + private static readonly byte[][] SetDosRemoteMCEnew = new byte[][] { new byte[] {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02} }; @@ -389,6 +408,7 @@ private RemoteHandler _remoteHandler; private byte _remoteToggle; + private uint firmwareVersion = 0; #endregion Global Variables @@ -506,6 +526,14 @@ byte[] dataBytes = new byte[bytesRead]; Marshal.Copy(deviceBufferPtr, dataBytes, 0, bytesRead); + if ((dataBytes[0] == 0xFF) && + (dataBytes[1] == 0xFF) && + (dataBytes[2] == 0xFF) && + (dataBytes[3] == 0xFF) && + (dataBytes[4] == 0xFF) && + (dataBytes[5] == 0xFF)) + firmwareVersion = (uint)dataBytes[6] + 2; + // Rubbish data: // FF, FF, FF, FF, FF, FF, 9F, FF, // 00, 00, 00, 00, 00, 00, 00, F0, @@ -556,11 +584,11 @@ switch (mode) { case RemoteMode.iMON: - modeData = SetDosRemotePAD; + modeData = (firmwareVersion < 0x9a) ? SetDosRemotePADold : SetDosRemotePADnew; break; case RemoteMode.MCE: - modeData = SetDosRemoteMCE; + modeData = (firmwareVersion < 0x9a) ? SetDosRemoteMCEold : SetDosRemoteMCEnew; break; } SetDos(modeData); @@ -876,6 +904,12 @@ } else { + _processReceiveThread = true; + _receiveThread = new Thread(ReceiveThread); + _receiveThread.Name = "iMon Receive Thread"; + _receiveThread.IsBackground = true; + _receiveThread.Start(); + if (_remoteMode == RemoteMode.iMON) { DebugWriteLine("Configured Hardware Mode: {0}", _remoteMode); @@ -886,13 +920,7 @@ DebugWriteLine("Configured Hardware Mode: {0}\n", _remoteMode); } - SetDos(_remoteMode); - - _processReceiveThread = true; - _receiveThread = new Thread(ReceiveThread); - _receiveThread.Name = "iMon Receive Thread"; - _receiveThread.IsBackground = true; - _receiveThread.Start(); + SetDos(_remoteMode); } } Modified: trunk/plugins/IR Server Suite/IR Server Suite/Input Service/Input Service/Abstract Remote Maps/iMon USB/Imon PAD.xml =================================================================== --- trunk/plugins/IR Server Suite/IR Server Suite/Input Service/Input Service/Abstract Remote Maps/iMon USB/Imon PAD.xml 2009-07-07 00:34:56 UTC (rev 2992) +++ trunk/plugins/IR Server Suite/IR Server Suite/Input Service/Input Service/Abstract Remote Maps/iMon USB/Imon PAD.xml 2009-07-08 23:53:08 UTC (rev 2993) @@ -30,8 +30,8 @@ <RemoteTable RawCode="1136" AbstractButton="Number8" /> <RemoteTable RawCode="1160" AbstractButton="Number9" /> <RemoteTable RawCode="1034" AbstractButton="OK" /> - <RemoteTable RawCode="1096" AbstractButton="Imon" /> - <RemoteTable RawCode="1056" AbstractButton="Imon" /> + <RemoteTable RawCode="1096" AbstractButton="Star" /> + <RemoteTable RawCode="1056" AbstractButton="Hash" /> <RemoteTable RawCode="1082" AbstractButton="Music" /> <RemoteTable RawCode="1224" AbstractButton="Pictures" /> <RemoteTable RawCode="1200" AbstractButton="Videos" /> @@ -52,5 +52,7 @@ <RemoteTable RawCode="1226" AbstractButton="LeftClick" /> <RemoteTable RawCode="1228" AbstractButton="RightClick" /> <RemoteTable RawCode="1060" AbstractButton="Info" /> - <RemoteTable RawCode="1124" AbstractButton="Teletext" /> + <RemoteTable RawCode="1124" AbstractButton="Info" /> + <RemoteTable RawCode="1008" AbstractButton="Teletext" /> + <RemoteTable RawCode="1188" AbstractButton="Snapshot" /> </DocumentElement> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |