`timescale 1ns/1ns

module pressure_switch_encoder	#(	
	// Switch Encoding
	parameter OPEN				= 1'b0,
	parameter CLOSED			= 1'b1,
	// Warning Encoding
	parameter NO_FAULT			= 2'b00,
	parameter DISCONNECTED		= 2'b01,
	parameter SHORTED			= 2'b10,
	parameter BAD_COMPARATOR	= 2'b11
)(
	input				comparator_3_i,
	input				comparator_2_i,
	input				comparator_1_i,
	output 	reg[1:0]	warning_o,
	output	reg			warning_occurred_o,
	output	reg			switch_position_o
);

always @* 
	case ({comparator_1_i, comparator_2_i, comparator_3_i})
		3'b000	:	assign {warning_o, warning_occurred_o, switch_position_o} = { DISCONNECTED,		1'b1, 1'b0};
		3'b001	:	assign {warning_o, warning_occurred_o, switch_position_o} = { NO_FAULT,			1'b0, OPEN};  
		3'b011	:	assign {warning_o, warning_occurred_o, switch_position_o} = { NO_FAULT,			1'b0, CLOSED};
		3'b111	:	assign {warning_o, warning_occurred_o, switch_position_o} = { SHORTED,			1'b1, 1'b0};
		default	:	assign {warning_o, warning_occurred_o, switch_position_o} = { BAD_COMPARATOR,	1'b1, 1'b0};
	endcase
endmodule