module rc5_top (
  input [7:0] io_in,
  output [7:0] io_out
);
    
    wire clk = io_in[0];
    wire reset = io_in[1];
    wire ir = io_in[2];
    wire [6:0] led_out;
    assign io_out[6:0] = led_out;

    wire valid;
    wire [5:0] command;
    wire control;
    reg control_d;
    localparam [5:0] RC5_INCR_VOLUME=16;
    localparam [5:0] RC5_DECR_VOLUME=17;

    rc5 rc5(
        .i_clk(clk),
        .i_rst(reset),

        .i_rc5(ir),

        .o_valid(valid),
        .o_command(command),
        .o_control(control)
    );

    reg [3:0] counter;
    always @(posedge clk) begin
        if (reset) begin
            counter <= 0;
            control_d <= 1'b0;
        end else begin
            if (valid) begin
                control_d <= control;

                if (control != control_d) begin
                    if (command == RC5_INCR_VOLUME) begin
                        counter <= counter+1;
                    end else if (command == RC5_DECR_VOLUME) begin
                        counter <= counter-1;
                    end
                end
            end
        end
    end

    // instantiate segment display
    seg7 seg7(.counter(counter), .segments(led_out));

endmodule