Jackson, Bruce wrote:
We are experiencing a problem, when trying to build a ContentDirectory which
can be seen by an Xbox 360.
We are aware that the Xbox uses a "modified" UPnP implementation, and having
taken this into account, the Xbox can see the UPnP device, (that is, it requests the
device description xml) but never does anything else. Thus, we believe that there is
something we have set incorrectly in the device xml.
In order to debug this problem, we have a correct xml capture from a Windows Media Center
which does work with the Xbox. We realised from this, that we could not make our
ContentDirectory "look like" the MS media center, because the device
xml/service/event URLs are machine generated, and cannot be prefixed by the ID field.
Can you post the XML section that you are referring to of the captured XML?
I don't actually think this is the problem, but I was wondering why the id
field is ignored, rather than being prefixed, since the method:
private static void buildDevice(String id,Device parent, ServiceReference sr)
actually contains the line:
devUPnP.setLocation(id+"/gen-desc.xml");
... But the calling function only passes an empty String as id.
Looking at the code the id should never be empty, because the function
is called as follow:
String localId = new
StringBuffer(id).append("/device/").append(i).toString();
buildDevice(localId,devUPnP,aux[0]);
and as you can see the localId can't be an empty String.
BTW, inspecting again the code it seems to me that either the line:
dd.setDescriptionURI(id+"/gen-des
devUPnP.setLocation(id+"/gen-desc.xml");
inside the method buildDevice should be removed. I can't perform any
test now so if you want to remove those line from the method and check
if something changes.
Ciao,
Stefano "Kismet" Lenzi