I got the input control working on the receiver and managed to come up with a coding system that matches the X10 MouseRemote enough that when I push the buttons while it's in PC mode I get different codes. Reprogrammed my TiVo remote so it sends a power code for a brand I don't own. Now I have 2 macros in my daemon so when I push Power on the TiVo remote, the receiver and the TV turn on and the input changes to the TiVo. When I push power on the X10 remote, it does the same thing except switches the input to the MythTV box. This works because both the receiver and the TV can be told to be "on" without having to send a toggle.
But I can't turn anything off.
I still need to add Tcl macros to the daemon. Then I can make the macro check the state of the receiver. If the receiver is off, turn it on. If the input is wrong switch it. If the receiver is already on and the input is already correct, turn everything off. Then I will just need the TiVo remote and the X10 remote and everything will work just like I was using a tuner built into the TV. But to add the Tcl stuff I have to figure out how the Tcl can get status back from the receiver when the receiver works asynchronously.
I also need to add more error detection to the receiver module. The RX-V1000 seems to have semi buggy firmware and will ignore the serial commands occasionally. Gotta do something so if I send it a command and it doesn't do it, the module retries until it does what it's been told. Again, it's a little tricky because the receiver is asynchronous. I can't just block and wait for the receiver to respond since all the receiver input is handled in a different thread.
Oh yah, and earlier today I added a "swirly" command to the ICM7218 module. Now I can tell it to run a swirly a certain number of times. What's a swirly? It's a little animation where the outer segments of the LED are lit in sequence, so it looks like a little snake is running around in a circle. Maybe if I ever get a free C-Band satellite, I can have the swirly run while the computer is repositioning the satellite? Dunno, guess it depends on if the satellite IRD can send any feedback to the computer. Not sure what use it is right now, but it looks cool!