Author: titmuss
Date: Tue May 6 14:05:29 2008
New Revision: 2425
URL: http://svn.slimdevices.com?rev=2425&root=Jive&view=rev
Log:
Bug: N/A
Description:
Simple test applet to allow connection to SqueezeCenter for local playback.
Added:
7.2/trunk/squeezeplay/src/squeezeplay/share/applets/TestPlayback/
7.2/trunk/squeezeplay/src/squeezeplay/share/applets/TestPlayback/TestPlaybackApplet.lua
7.2/trunk/squeezeplay/src/squeezeplay/share/applets/TestPlayback/TestPlaybackMeta.lua
Modified:
7.2/trunk/squeezeplay/src/squeezeplay/share/jive/net/SlimProto.lua
7.2/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/TestDecode/TestDecodeApplet.lua
Added:
7.2/trunk/squeezeplay/src/squeezeplay/share/applets/TestPlayback/TestPlaybackApplet.lua
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/share/applets/TestPlayback/TestPlaybackApplet.lua?rev=2425&root=Jive&view=auto
==============================================================================
---
7.2/trunk/squeezeplay/src/squeezeplay/share/applets/TestPlayback/TestPlaybackApplet.lua
(added)
+++
7.2/trunk/squeezeplay/src/squeezeplay/share/applets/TestPlayback/TestPlaybackApplet.lua
Tue May 6 14:05:29 2008
@@ -1,0 +1,155 @@
+
+
+-- stuff we use
+local pairs, setmetatable, tostring, tonumber = pairs, setmetatable,
tostring, tonumber
+
+local oo = require("loop.simple")
+local string = require("string")
+local table = require("jive.utils.table")
+
+local Applet = require("jive.Applet")
+local SlimServers = require("jive.slim.SlimServers")
+
+local Framework = require("jive.ui.Framework")
+local Checkbox = require("jive.ui.Checkbox")
+local Label = require("jive.ui.Label")
+local SimpleMenu = require("jive.ui.SimpleMenu")
+local Window = require("jive.ui.Window")
+local Textarea = require("jive.ui.Textarea")
+local Textinput = require("jive.ui.Textinput")
+local Popup = require("jive.ui.Popup")
+local Icon = require("jive.ui.Icon")
+
+local SlimProto = require("jive.net.SlimProto")
+local Playback = require("jive.audio.Playback")
+
+local debug = require("jive.utils.debug")
+local log = require("jive.utils.log").logger("applets.setup")
+
+local jnt = jnt
+local jiveMain = jiveMain
+local appletManager = appletManager
+
+
+module(..., Framework.constants)
+oo.class(_M, Applet)
+
+
+local CONNECT_TIMEOUT = 30
+
+
+-- main setting menu
+function settingsShow(self)
+
+ local window = Window("window", self:string("TEST_PLAYBACK"))
+ local menu = SimpleMenu("menu", items)
+ menu:setComparator(SimpleMenu.itemComparatorWeightAlpha)
+ window:addWidget(menu)
+
+
+ self.sdApplet = appletManager:getAppletInstance("SlimDiscovery")
+ if not self.sdApplet then
+ return window:tieAndShowWindow()
+ end
+
+
+ self.serverMenu = menu
+ self.serverWindow = window
+
+
+ -- Discover slimservers in this window
+ self.sdApplet:discover()
+ window:addTimer(1000, function() self.sdApplet:discover() end)
+
+
+ -- slimservers on the poll list
+ local poll = self.sdApplet:pollList()
+ for address,_ in pairs(poll) do
+ if address ~= "255.255.255.255" then
+ self:_addServerItem(nil, address)
+ end
+ end
+
+
+ -- discovered slimservers
+ for _,server in self.sdApplet:allServers() do
+ self:_addServerItem(server)
+ end
+
+ -- Store the applet settings when the window is closed
+ window:addListener(EVENT_WINDOW_POP,
+ function()
+ self:storeSettings()
+ end
+ )
+
+ self:tieAndShowWindow(window)
+end
+
+
+function _addServerItem(self, server, address)
+ log:debug("_addServerItem ", server, " " , port)
+
+ local id = server or address
+
+ -- new entry
+ local item = {
+ text = server and server:getName() or address,
+ sound = "WINDOWSHOW",
+ callback = function()
+ self:_connectToServer(server)
+ self.serverWindow:hide()
+ end,
+ weight = 1,
+ }
+
+ self.serverMenu:addItem(item)
+end
+
+
+function _connectToServer(self, server)
+ local ip = server:getIpPort()
+
+ local slimProto = SlimProto(jnt, ip, {
+ opcode = "HELO",
+ deviceID = "4",
+ revision = "0",
+ })
+
+ self.id = slimProto:getId()
+
+ Playback(jnt, slimProto)
+ slimProto:connect()
+
+
+ for id, player in self.sdApplet:allPlayers() do
+ if self.id == id then
+ self.sdApplet:setCurrentPlayer(player)
+ return
+ end
+ end
+
+ jnt:subscribe(self)
+end
+
+
+function notify_playerNew(self, player)
+ if self.id == player:getId() then
+ self.sdApplet:setCurrentPlayer(player)
+ jnt:unsubscribe(self)
+ end
+end
+
+
+
+--[[
+
+=head1 LICENSE
+
+Copyright 2007 Logitech. All Rights Reserved.
+
+This file is subject to the Logitech Public Source License Version 1.0. Please
see the LICENCE file for details.
+
+=cut
+--]]
+
Added:
7.2/trunk/squeezeplay/src/squeezeplay/share/applets/TestPlayback/TestPlaybackMeta.lua
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/share/applets/TestPlayback/TestPlaybackMeta.lua?rev=2425&root=Jive&view=auto
==============================================================================
---
7.2/trunk/squeezeplay/src/squeezeplay/share/applets/TestPlayback/TestPlaybackMeta.lua
(added)
+++
7.2/trunk/squeezeplay/src/squeezeplay/share/applets/TestPlayback/TestPlaybackMeta.lua
Tue May 6 14:05:29 2008
@@ -1,0 +1,39 @@
+
+local oo = require("loop.simple")
+
+local AppletMeta = require("jive.AppletMeta")
+
+local appletManager = appletManager
+local jiveMain = jiveMain
+
+
+module(...)
+oo.class(_M, AppletMeta)
+
+
+function jiveVersion(self)
+ return 1, 1
+end
+
+
+function defaultSettings(self)
+ return { }
+end
+
+
+function registerApplet(self)
+ jiveMain:addItem(self:menuItem('testPlayback', 'home', "TEST_PLAYBACK",
function(applet, ...) applet:settingsShow(...) end, 1))
+end
+
+
+--[[
+
+=head1 LICENSE
+
+Copyright 2007 Logitech. All Rights Reserved.
+
+This file is subject to the Logitech Public Source License Version 1.0. Please
see the LICENCE file for details.
+
+=cut
+--]]
+
Modified: 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/net/SlimProto.lua
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/share/jive/net/SlimProto.lua?rev=2425&root=Jive&r1=2424&r2=2425&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/net/SlimProto.lua
(original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/share/jive/net/SlimProto.lua Tue May
6 14:05:29 2008
@@ -123,11 +123,11 @@
local opcodes = {
HELO = function(self, data)
assert(data.revision)
-
- local uuid, mac = self.jnt:getUUID()
+ assert(data.mac)
+ assert(data.uuid)
local macp = {}
- for v in string.gmatch(data.mac or mac, "(%x%x)") do
+ for v in string.gmatch(data.mac, "(%x%x)") do
macp[#macp + 1] = string.char(tonumber(v, 16))
end
@@ -286,6 +286,11 @@
-- helo packet sent on connection
obj.heloPacket = heloPacket
+
+ local uuid, mac = jnt:getUUID()
+ obj.heloPacket.mac = string.lower(mac)
+ obj.heloPacket.uuid = uuid
+
obj.statusCallback = _defaultStatusCallback
-- opcode subscriptions
@@ -305,6 +310,12 @@
-- Return the server ip address
function getServerIp(self)
return self.serverip
+end
+
+
+-- Return this player's id
+function getId(self)
+ return self.heloPacket.mac
end
Modified:
7.2/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/TestDecode/TestDecodeApplet.lua
URL:
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/TestDecode/TestDecodeApplet.lua?rev=2425&root=Jive&r1=2424&r2=2425&view=diff
==============================================================================
---
7.2/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/TestDecode/TestDecodeApplet.lua
(original)
+++
7.2/trunk/squeezeplay/src/squeezeplay_desktop/share/applets/TestDecode/TestDecodeApplet.lua
Tue May 6 14:05:29 2008
@@ -54,28 +54,6 @@
local menu = SimpleMenu("menu",
{
---[[
- { text = "VolUp",
- callback = function()
- sp:send({
- opcode = "IR ",
- format = 1,
- noBits = 1,
- code = 0x7689807f,
- })
- end,
- },
- { text = "VolDown",
- callback = function()
- sp:send({
- opcode = "IR ",
- format = 1,
- noBits = 1,
- code = 0x768900ff,
- })
- end,
- },
---]]
{ text = "State:", icon = values[1] },
{ text = "Decode:", icon = values[2] },
{ text = "Output:", icon = values[3] },
@@ -107,20 +85,13 @@
end
},
- { text = "Decode WMA",
- sound = "WINDOWSHOW",
- callback = function(event, menuItem)
- Decode:start(
- string.byte('w'), 0, 0, 0, 0,
0, 0
- )
- end
- },
{ text = "Decode Tone Multitone",
sound = "WINDOWSHOW",
callback = function(event, menuItem)
Decode:start(
string.byte('t'), 0, 0, 0, 0,
0, 1
)
+ Decode:resume()
end
},
{ text = "Decode Tone Sine 44.1k",
@@ -129,6 +100,7 @@
Decode:start(
string.byte('t'), 0, 0, 0, 0,
0, 10
)
+ Decode:resume()
end
},
{ text = "Decode Tone Sine 48k",
@@ -137,6 +109,7 @@
Decode:start(
string.byte('t'), 0, 0, 0, 0,
0, 11
)
+ Decode:resume()
end
},
{ text = "Decode Tone Sine 88.2k",
@@ -145,6 +118,7 @@
Decode:start(
string.byte('t'), 0, 0, 0, 0,
0, 12
)
+ Decode:resume()
end
},
{ text = "Decode Tone Sine 96k",
@@ -153,6 +127,7 @@
Decode:start(
string.byte('t'), 0, 0, 0, 0,
0, 13
)
+ Decode:resume()
end
},
_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins