# New Hme SDK for .NET



## jbcooley

I've been holding on to this HME sdk I wrote a while back. I thought I'd publish it in case anyone was interested

http://code.google.com/p/tivo-sdks/downloads/list


----------



## wmcbrine

Hey, cool. I'm not a .Net guy myself, but it's nice to see more HME implementations. Why sit on it, BTW?

Oh, BTW... did you find that the Tivo ever actually returned an EVT_FONT_INFO? According to the spec, it's supposed to be generated when a font resource is created, but I'm not seeing that.


----------



## jbcooley

wmcbrine said:


> Hey, cool. I'm not a .Net guy myself, but it's nice to see more HME implementations. Why sit on it, BTW?


Because I didn't think it was ready. I also wanted to include a higher level UI toolkit. I may still do that, but I'm not sure it's as valuable as earlier thought.



> Oh, BTW... did you find that the Tivo ever actually returned an EVT_FONT_INFO? According to the spec, it's supposed to be generated when a font resource is created, but I'm not seeing that.


I believe so. I've got some sample code that is a port of the java sdk samples. In there I receive an EVT_FONT_INFO event.


----------



## wmcbrine

Yeah, I know about the sample app. But I'm just not getting those events back from the Tivo. (I'm in the process of implementing HME for Python.) I was speculating that the event was faked by the Java SDK. Either that, or it takes something more than CMD_RSRC_ADD_FONT to elicit it?


----------



## jbcooley

I've added the sample project to that link. I'm not faking the font event and do receive that after adding a font.

If you look in the Sample project in FontInfo.cs there is a method in the FontView class called application_TextStyleCreated. That is fired when you specify a new combination of font name (actually requires a number), font style (ie bold, italic, etc), and font weight.


----------



## wmcbrine

OK, I see the problem now, with the help of debug mode in the simulator: you have to ask for the event in the command's flags. Of course this isn't documented in the HME Protocol Specification. (Heck, even the existence of a "flags" field for CMD_RSRC_ADD_FONT isn't documented.)

P.S. Sorry to have sidetracked your thread...


----------



## s2kdave

wmcbrine said:


> Hey, cool. I'm not a .Net guy myself, but it's nice to see more HME implementations. Why sit on it, BTW?
> 
> Oh, BTW... did you find that the Tivo ever actually returned an EVT_FONT_INFO? According to the spec, it's supposed to be generated when a font resource is created, but I'm not seeing that.


If I remember correctly it will generate those events, but only after you register to listen for the events. In Java, that would be when you call Resource.addHandler on the font resource.

David


----------



## jbcooley

wmcbrine said:


> OK, I see the problem now, with the help of debug mode in the simulator: you have to ask for the event in the command's flags. Of course this isn't documented in the HME Protocol Specification. (Heck, even the existence of a "flags" field for CMD_RSRC_ADD_FONT isn't documented.)
> 
> P.S. Sorry to have sidetracked your thread...


No problem. I had forgotten about the undocumented bits. There are a few of those. I struggled for a while figuring out the exact discovery mechanism necessary to get an application automatically recognized.


----------



## raianoat

Thanks for creating this! Hopefully, this will help to get more TiVo HME applications developed.


----------



## jbcooley

raianoat said:


> Thanks for creating this! Hopefully, this will help to get more TiVo HME applications developed.


Thank you for sharing the announcement on your blog. I hope to contribute to the pool of hme applications.


----------



## wmcbrine

Something was nagging at me since you posted... hadn't I seen this before? It turns out I was thinking of this:

http://www.bytebuilder.com/Company/Downloads/TivoHME.aspx


----------



## jbcooley

Yes, I saw that about half way through development of my library. Since it didn't seem to be active any more, and I was having fun, I decided to continue work on mine.

I'm hoping for more community involvement by hosting it on code.google.com, but the only feedback I've gotten has been on this board. I suspect that's partially due to a bug that may have prevented most people from even seeing the samples run on a tivo.


----------



## MasterCephus

What .NET version is this built against? 1.1 or 2.0?


----------



## jbcooley

It's built with 2.0. This is mostly for language/runtime features rather than framework features. I make use of generics in particular. And the animate sample uses an anonymous delegate.

I also ran MoMA to see if it should run on mono and it passed.
http://www.mono-project.com/MoMA

I've yet to actually run it on mono though.


----------



## jbcooley

Updated with bug fixes for the missing icon file. Also packaged sample executable in an ready to run folder. Make sure you install bonjour to get the sample to run.

http://code.google.com/p/tivo-sdks/

Please share any feedback good or otherwise. You can leave a note on this thread or send me an email to the address listed on the project site.


----------



## jbcooley

I've published a new release with several bug fixes and a couple of enhancements. As usual, make sure you install bonjour to run samples.

See change log


----------



## jbcooley

Published 1.2 with a few bug fixes. Also published disk usage sample inspired by this forum post (and many others like it).
Viewing your Free Disk Space

The disk usage app also includes a small Tivo.Hmo library to get the information for calculating the free space. It is not written for use by other applications but may develop further if interest develops.


----------



## dgk

I just bought a TiVo from Woot. I have a ton of stuff to learn about before I even get it activated, but since I'm a programmer in dotnet (mostly VB) I got curious to see what you're up to. I haven't spent much time looking at anything to do with HME, in fact, I don't know what HME stands for.

So I guess that the SDK is useful for developing PC apps that interact with TiVo. Does that include my HD version?

A quick glance at the HME page says that you can't interact with the scheduler or playback or such. Can we do such things as grab a recorded show and bring it to the PC in some HD format? Hmm. Just what is an HD format anyway. I read that the Tivo Desktop app (not TivoToGo) allows sort of HD copying, mpeg4. But that maxs out at 720, not 1080?

I'm looking forward to playing with it anyway.


----------



## jbcooley

dgk said:


> I just bought a TiVo from Woot. I have a ton of stuff to learn about before I even get it activated, but since I'm a programmer in dotnet (mostly VB) I got curious to see what you're up to. I haven't spent much time looking at anything to do with HME, in fact, I don't know what HME stands for.


Home Media Engine



> So I guess that the SDK is useful for developing PC apps that interact with TiVo. Does that include my HD version?


Yes, you can develop applications that run on a pc and display the user interface on the tv. That includes your HD version with standard resolution or 720 hd.



> A quick glance at the HME page says that you can't interact with the scheduler or playback or such. Can we do such things as grab a recorded show and bring it to the PC in some HD format? Hmm. Just what is an HD format anyway. I read that the Tivo Desktop app (not TivoToGo) allows sort of HD copying, mpeg4. But that maxs out at 720, not 1080?


You can grab recorded shows using the HMO protocol. It is an xml based protocol and much simpler than the HME protocol. I've got the beginnings of an HMO protocol library, but it's likely to be completely rewritten before it's really usable.



> I'm looking forward to playing with it anyway.


Let me know if you have any questions are would like some changes to the library. I'm definitely looking for feedback. In particular, what version of the .NET framework are you using?


----------



## dgk

2.0 for production stuff but I'm using VS2008 so anything up to 3.5 is fine.


----------



## jbcooley

I've updated the .NET sdk to support streaming video.

I've also released a preview of a hosting service for running HME applications as a service on Windows. Please check the readme in the HmeApplicationServer directory for basic installation instructions.


----------

