2010-06-16, 06:01
6. Upd Broadcast
//*******************************************************************************************
SOCKETRECEIVE FbUdp
{
STRING Sbuffer[16392];
INTEGER RcvLength, iEvent, iEventLevel, F[5];
Delay(5);
Sbuffer = FbUdp.SocketRxBuf;
ClearBuffer(FbUdp.SocketRxBuf);
If(Find(XbmcIp, Sbuffer) = 0) Terminateevent;
RcvLength = Len(Sbuffer);
print("\nUdp = %s\n\n", Sbuffer);
If(Find("OnAction", Sbuffer) > 0)
{
F[0] = Find(":", Sbuffer);
F[1] = Find(";", Sbuffer, F[0]);
If(F[1] = 0) F[1] = F[0];
F[2] = Find("<", Sbuffer, F[1]);
iEvent = Atoi(Mid(Sbuffer, F[0]+1, F[1]-F[0]-1));
iEventLevel = Atoi(Mid(Sbuffer, F[1]+1, F[2]-F[1]-1));
// print("iEvent = %u iEventLevel = %u\n", iEvent, iEventLevel);
}
Else If(Find("OnPlayBackStarted", Sbuffer) > 0)
{
PauseFb=0; StopFb=0; PlayFb=1; PlaySpeed=1; TransportIcon=1;
Makestring(PlayingSpeed$, "%ux", PlaySpeed);
Wait(100) { Call Connect("getcurrentlyplaying", 0); }
If(ActiveWindow = 10502) { Wait(150) { Call Connect("ExecBuiltIn(ActivateWindow(12006))", 0); } }
Wait(200) { Call Connect("getGUIStatus", 0); HaltSelect = 0;}
}
Else If(Find("OnPlayBackPaused", Sbuffer) > 0) {StopFb=0; PlayFb=0; PauseFb=1; PlayingSpeed$ = ""; TransportIcon=3; }
Else If(Find("OnPlayBackEnded", Sbuffer) > 0)
{
StopFb=1; PlayFb=0; PauseFb=0; PlayingSpeed$ = ""; TransportIcon=3;
ActiveWindow = 10025;
CurrXbmcWindow = 10025;
Call ClearCurrPlay();
Wait(200) { Call Connect("getGUIStatus", 0); HaltSelect = 0;}
}
Else If(Find("OnPlayBackResumed", Sbuffer) > 0)
{
PauseFb=0; StopFb=0; PlayFb=1; PlaySpeed=1; TransportIcon=1;
Makestring(PlayingSpeed$, "%ux", PlaySpeed);
HaltSelect = 1;
Wait(100) { Call Connect("getcurrentlyplaying", 0); }
If(ActiveWindow = 10502) { Wait(150) { Call Connect("ExecBuiltIn(ActivateWindow(12006))", 0); } }
Wait(200) { Call Connect("getGUIStatus", 0); HaltSelect = 0;}
}
Else If(Find("OnPlayBackStopped", Sbuffer) > 0)
{
PauseFb=0; PlayFb=0; StopFb=1; PlaySpeed=1; PlayingSpeed$ = ""; TransportIcon=2;
ActiveWindow = 10025;
CurrXbmcWindow = 10025;
Call ClearCurrPlay();
Wait(200) { Call Connect("getGUIStatus", 0); HaltSelect = 0;}
}
Else If(Find("StartUp", Sbuffer) > 0)//StartUp
{
Print("XbmcStarted\n");
Delay(300);
Call ClearCurrPlay();
Call Connect("ExecBuiltIn(ActivateWindow(12600))", 5);
}
Switch(iEventLevel)
{
Case(2): ;
}
}
7. Wakeup on Lan:
//*******************************************************************************************
FUNCTION WakeUpPC()
{
If(Enable)
{
If(PcPowerOffWaitFlag = 0)
{
PcPowerOffWaitFlag = 1;
Wait(300, PcPowerOffWait)
{
SocketUDP_Enable(WolSck, "255.255.255.255", 7);
If(Enable) SOCKETSEND(WolSck, WolPacket);
Delay(10);
SocketUDP_Disable(WolSck);
PcPowerOffWaitFlag = 0;
}
}
}
}
8. EventServer
#DEFINE_CONSTANT EventServerHeader "\x58\x42\x4D\x43\x02\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x01\x00"
#DEFINE_CONSTANT EventServerMid "\x4C\x17\x04\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
#DEFINE_CONSTANT BtnPress 1
#DEFINE_CONSTANT BtnRelease 2
#DEFINE_CONSTANT ActionCmd 3
#DEFINE_CONSTANT PingCmd 4
//*******************************************************************************************/
Function SendEventServer(String Info, Integer Stat)//KeyboardStat_cpp XBMC-xbmcclient_py.mht
{
String SendBuffer[255];
String sLen[1], sFlag[1];
sLen = Chr(Len(Info)+10);
sFlag = "\x03";
Switch(Stat)
{
Case(BtnPress):
{
Makestring(SendBuffer, "%s%s%s%s\x00\x00KB\x00%s\x00", EventServerHeader, sLen, EventServerMid, sFlag, Info);
SOCKETSEND (EventServerUpd, SendBuffer);
// print("SendEventServer=%s\n",SendBuffer);
Call Connect("getGUIStatus", 0);
Delay(5);
sFlag = "\x05";
Makestring(SendBuffer, "%s%s%s%s\x00\x00KB\x00%s\x00", EventServerHeader, sLen, EventServerMid, sFlag, Info);
SOCKETSEND (EventServerUpd, SendBuffer);
}
}
}
//*******************************************************************************************
SOCKETRECEIVE FbUdp
{
STRING Sbuffer[16392];
INTEGER RcvLength, iEvent, iEventLevel, F[5];
Delay(5);
Sbuffer = FbUdp.SocketRxBuf;
ClearBuffer(FbUdp.SocketRxBuf);
If(Find(XbmcIp, Sbuffer) = 0) Terminateevent;
RcvLength = Len(Sbuffer);
print("\nUdp = %s\n\n", Sbuffer);
If(Find("OnAction", Sbuffer) > 0)
{
F[0] = Find(":", Sbuffer);
F[1] = Find(";", Sbuffer, F[0]);
If(F[1] = 0) F[1] = F[0];
F[2] = Find("<", Sbuffer, F[1]);
iEvent = Atoi(Mid(Sbuffer, F[0]+1, F[1]-F[0]-1));
iEventLevel = Atoi(Mid(Sbuffer, F[1]+1, F[2]-F[1]-1));
// print("iEvent = %u iEventLevel = %u\n", iEvent, iEventLevel);
}
Else If(Find("OnPlayBackStarted", Sbuffer) > 0)
{
PauseFb=0; StopFb=0; PlayFb=1; PlaySpeed=1; TransportIcon=1;
Makestring(PlayingSpeed$, "%ux", PlaySpeed);
Wait(100) { Call Connect("getcurrentlyplaying", 0); }
If(ActiveWindow = 10502) { Wait(150) { Call Connect("ExecBuiltIn(ActivateWindow(12006))", 0); } }
Wait(200) { Call Connect("getGUIStatus", 0); HaltSelect = 0;}
}
Else If(Find("OnPlayBackPaused", Sbuffer) > 0) {StopFb=0; PlayFb=0; PauseFb=1; PlayingSpeed$ = ""; TransportIcon=3; }
Else If(Find("OnPlayBackEnded", Sbuffer) > 0)
{
StopFb=1; PlayFb=0; PauseFb=0; PlayingSpeed$ = ""; TransportIcon=3;
ActiveWindow = 10025;
CurrXbmcWindow = 10025;
Call ClearCurrPlay();
Wait(200) { Call Connect("getGUIStatus", 0); HaltSelect = 0;}
}
Else If(Find("OnPlayBackResumed", Sbuffer) > 0)
{
PauseFb=0; StopFb=0; PlayFb=1; PlaySpeed=1; TransportIcon=1;
Makestring(PlayingSpeed$, "%ux", PlaySpeed);
HaltSelect = 1;
Wait(100) { Call Connect("getcurrentlyplaying", 0); }
If(ActiveWindow = 10502) { Wait(150) { Call Connect("ExecBuiltIn(ActivateWindow(12006))", 0); } }
Wait(200) { Call Connect("getGUIStatus", 0); HaltSelect = 0;}
}
Else If(Find("OnPlayBackStopped", Sbuffer) > 0)
{
PauseFb=0; PlayFb=0; StopFb=1; PlaySpeed=1; PlayingSpeed$ = ""; TransportIcon=2;
ActiveWindow = 10025;
CurrXbmcWindow = 10025;
Call ClearCurrPlay();
Wait(200) { Call Connect("getGUIStatus", 0); HaltSelect = 0;}
}
Else If(Find("StartUp", Sbuffer) > 0)//StartUp
{
Print("XbmcStarted\n");
Delay(300);
Call ClearCurrPlay();
Call Connect("ExecBuiltIn(ActivateWindow(12600))", 5);
}
Switch(iEventLevel)
{
Case(2): ;
}
}
7. Wakeup on Lan:
//*******************************************************************************************
FUNCTION WakeUpPC()
{
If(Enable)
{
If(PcPowerOffWaitFlag = 0)
{
PcPowerOffWaitFlag = 1;
Wait(300, PcPowerOffWait)
{
SocketUDP_Enable(WolSck, "255.255.255.255", 7);
If(Enable) SOCKETSEND(WolSck, WolPacket);
Delay(10);
SocketUDP_Disable(WolSck);
PcPowerOffWaitFlag = 0;
}
}
}
}
8. EventServer
#DEFINE_CONSTANT EventServerHeader "\x58\x42\x4D\x43\x02\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x01\x00"
#DEFINE_CONSTANT EventServerMid "\x4C\x17\x04\x91\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
#DEFINE_CONSTANT BtnPress 1
#DEFINE_CONSTANT BtnRelease 2
#DEFINE_CONSTANT ActionCmd 3
#DEFINE_CONSTANT PingCmd 4
//*******************************************************************************************/
Function SendEventServer(String Info, Integer Stat)//KeyboardStat_cpp XBMC-xbmcclient_py.mht
{
String SendBuffer[255];
String sLen[1], sFlag[1];
sLen = Chr(Len(Info)+10);
sFlag = "\x03";
Switch(Stat)
{
Case(BtnPress):
{
Makestring(SendBuffer, "%s%s%s%s\x00\x00KB\x00%s\x00", EventServerHeader, sLen, EventServerMid, sFlag, Info);
SOCKETSEND (EventServerUpd, SendBuffer);
// print("SendEventServer=%s\n",SendBuffer);
Call Connect("getGUIStatus", 0);
Delay(5);
sFlag = "\x05";
Makestring(SendBuffer, "%s%s%s%s\x00\x00KB\x00%s\x00", EventServerHeader, sLen, EventServerMid, sFlag, Info);
SOCKETSEND (EventServerUpd, SendBuffer);
}
}
}