Reverse Engineering HME v49

Discussion in 'Developers Corner' started by davidblackledge, Dec 21, 2010.

  1. davidblackledge

    davidblackledge Registered lÜser

    563
    36
    Sep 9, 2008
    NM

    Advertisements

    Well, starting with wmcbrine's discovery and subsequent documentation we now know that HME works differently if you report a higher version number... in this case, minor version 49.

    After enabling it, I found the app I was working on stopped working. I'm now getting invalid parameter errors for a simple createStream call, I believe it is. The errors stop when I go back to V40.

    Apparently we now have a full-on reverse engineering job ahead of us. We "can" support the TiVo Slide Remote and USB Keyboards fully... but until we get more documentation we can't have all the old functionality working. If I had the time, I'd work it, but I know this is a challenge some of you enjoy and hopefully have some time for.... So, please have at it, and keep us informed (and ideally, post results on the Wiki ;] )
     
  2. davidblackledge

    davidblackledge Registered lÜser

    563
    36
    Sep 9, 2008
    NM
    Wait a minute... I gave up on Java SDK 1.4.1e a long time ago, but it does implement v45 instead of v40, and does add some sort of map of parameters for stream resources... maybe that's all I'm looking for. Can anybody verify this?
     
  3. wmcbrine

    wmcbrine Well-Known Mumbler

    11,744
    829
    Aug 2, 2003
    Yeah, that's the only other difference I'm seeing so far -- if I report the version as 0.49 and tack an empty dictionary onto the end of the stream creation command, it seems to work fine. Needs more testing, though.

    I have to imagine that there are meaningful protocol changes in each numbered version, but who knows if we can ever discover them?
     
  4. davidblackledge

    davidblackledge Registered lÜser

    563
    36
    Sep 9, 2008
    NM
    Thanks.
    By the way... in case you never perused this part of the Java SDK 1.4.1e, a little hint is there on the use of the dictionary in the stream creation:
    Code:
         * The parameters necessary to play the stream, once it has 
         * been located. Most commonly, this includes authentication keys.
    
     
  5. wmcbrine

    wmcbrine Well-Known Mumbler

    11,744
    829
    Aug 2, 2003

    Advertisements

    A very little hint, yes. Really small. :) Unless you got more out of that passage than I did?

    I did see it before. I'd previously decided not to bump the HME level reported by HME for Python, since I had no data on the new stream parameters and didn't know what else might have changed. This keyboard support is the first thing that motivates me to do it.
     
  6. davidblackledge

    davidblackledge Registered lÜser

    563
    36
    Sep 9, 2008
    NM
    Well, the one thing I infer from it is streams using a URL that expects authentication (and would fail before) would probably work if credentials were passed via the map as (probably) "username" and "password"

    It's not a situation I've run into yet, but it'd be fun to try it out.

    I would hope that any needed header parameters in a connection request could be passed that way, too, but that's probably just wishful thinking.
     

Share This Page

spam firewall

Advertisements