SlimServerPSPskin
From SqueezeboxWiki
This page is obsolete. I'm currently working on a SlimServer skin for the PSP browser (firmware 2.70).
I will try to update this page periodically to keep you informed about the latest development.
Laurent (laurentvitalis at hotmail dot com)
Contents |
Update
June 22pm
Really depressing news. The PSP flash player does not support continuous connection and communication with the server using the XMLSocket feature. My interest is going down the drain. It seems the only way to produce a quality product is to code it homebrew style.
June 22
The Flash movie doesn't receive anything because it only respond to null-byte terminated strings and SlimServer sends LF terminated strings.
The Flash project will only work with SlimServer 6.5 who accepts null-byte as an End of Line.
June 21
After some research, it could be possible to do a fully real-time* interface using Macromedia Flash on the PSP talking two-way to the SlimServer CLI through the XmlSocket object.
I want to build a small proof-of-concept before entering my summer rush (moving to a new appartment and one-month trip to Europe).
If everything works well, I will first work on a Flash library to access and control everything the CLI provides. I'll then build a Flash application for the PSP and somebody else can start working on a skin for desktop computers !
*by real-time, I mean an application that receives changes to the status automatically when it happens (like the Moose application) without having to send requests all the time (like a web skin).
June 15 (2am)
3 hours since my last edit. Achieved to display status information in a Flash object via XML. Starting project from scratch, in Flash. I attached the unfinished html skin if someone wants to play with it.
June 14
Made some slow progress. Found some css optimizations to accelerate render.
I'm not able to reach the user interface quality I was targeting. Thinking about starting a flash XML skin...
June 7
I made some progress yesterday. After testing every possible way of changing lists dynamically, I decided to go with an iframe. Dynamic update is sadly too slow to be acceptable.
At first, the idea of the iframe was discarded because it break the clean DPAD navigation I want. But I found a way to keep the cursor flow clean even with the iframe.
I started to put extra work to support multiple language and future features (usign additionalLinks.browse instead of hardcoded links). I'm proud of the result.
Features
- Access to all usual functions (playlist, browse by, search, radio)
- Designed only for the PSP browser (480x272 display and unique browser controls).
- Buttons are specially laid out to allow very fast navigation using the DPAD, using few button presses.
- Since reloading is slow, important interface elements are loaded once (locally from the memory stick) and are dynamically updated.
- Multiple choices options (Repeat, Shuffle...) have been implemented with cycling buttons to avoid wasting space.
- Artwork display.
- Skin is designed to be compatible with any language.
- Multiple players support.
- Connected via Wifi to your SlimServer, you can control your players from anywhere in the house.
Preview
Todo
- Playlist buttons (play, add...)
- Browse by pages
- Search pages
- Radio pages
- Links to server settings pages
- Player switching
About the PSP browser
Here are some notes I gathered about javascript/html/css support in the PSP browser.
- DOM methods for dynamic content (appendChild and others) are not supported. InnerHTML is not supported but innerText is.
- Dynamically modifying content is really slow. I'm currently trying to find a way to change the display quickly. I did try displaying lists in an IFRAME, it's faster but navigation (movements with DPAD) is not smooth.
- Style.clip is not supported, it will be more difficult to scroll the now playing text if needed.
- Changing an image src dynamically displays ugly artifacts. Changing a background-image style properties is pretty much cleaner.
- The cursor snaps to the center of linkable elements. I had to hack a way to make the cursor point beautifully underneath the icons instead of hiding them.
- I plan to display the server settings pages in an IFrame aside the navigation.
- The cache is really exploited and it seems meta-expire is not respected. I had to add the current time at the end of my status.html url to get fresh up-to-date data.