High Level Design
Our device is used as follows. Holding the OEM remote control up to the sensor in our universal remote first programs it. The record button is pushed, then a button on our universal remote is pushed, and then the OEM equivalent of that button is pressed. Our device records the IR pulse sequence and stores it with the selected button.
Our software records the pulses by measuring times between transitions. It plays back recordings by creating pulses of the correct length in the correct order.
We have implemented an internal reset button. We made this button internal to prevent accidental reset. We also have 6 internal debug LEDs that show the state of our microcontroller throughout use.