Index: dialin/dg/valves.py =================================================================== diff -u -r0ddc890d792da89bcea0237f349d3a9185b411a3 -r2c370e98212fa3497eddb50bdef4e1f1176577ab --- dialin/dg/valves.py (.../valves.py) (revision 0ddc890d792da89bcea0237f349d3a9185b411a3) +++ dialin/dg/valves.py (.../valves.py) (revision 2c370e98212fa3497eddb50bdef4e1f1176577ab) @@ -41,19 +41,20 @@ END_POS_VALVES_STATES = START_POS_VALVES_STATES + 2 # Valves States come in as a U16 value (2 bytes) # Valve IDs - VALVE_RESERVOIR_FILL = 0 # VRF - VALVE_RESERVOIR_INLET = 1 # VRI - VALVE_RESERVOIR_DRAIN = 2 # VRD - VALVE_RESERVOIR_OUTLET = 3 # VRO - VALVE_PRESSURE_OUTLET = 4 # VPO - VALVE_BYPASS_FILTER = 5 # VBF - VALVE_RECIRCULATE = 6 # VRC - VALVE_DRAIN = 7 # VDR - VALVE_PRESSURE_INLET = 8 # VPI - VALVE_SAMPLING_PORT = 9 # VSP - VALVE_RESERVOIR_1 = 10 # VR1 - VALVE_RESERVOIR_2 = 11 # VR2 - VALVE_PRODUCTION_DRAIN = 12 # VPD + VRF = 0 # Valve Reservoir Fill + VRI = 1 # Valve Reservoir Inlet + VRD = 2 # Valve Reservoir Drain + VRO = 3 # Valve Reservoir Outlet + VPO = 4 # Valve Pressure Outlet + VBF = 5 # Valve Bypass Filter + VRC = 6 # Valve Recirculate + VDR = 7 # Valve Drain + VPI = 8 # Valve Pressure Inlet + VSP = 9 # Valve Sampling Port + VR1 = 10 # Valve Reservoir 1, curr + VR2 = 11 # Valve Reservoir 2, curr + VPD = 12 # Valve Production Drain + NUMBER_OF_VALVES = 13 # Number of valves def __init__(self, can_interface=None): """ @@ -63,14 +64,15 @@ \returns DGValvesStates object. """ + self.can_interface = can_interface if self.can_interface is not None: channel_id = DenaliChannels.dg_sync_broadcast_ch_id msg_id = self.MSG_ID_DG_VALVES_STATES self.can_interface.register_receiving_publication_function(channel_id, msg_id, self.handler_valves_sync) - self.valve_states_all = 0x0000 + self.valves_states_all = 0x0000 self.valve_state_VRF = DEENERGIZED self.valve_state_VRI = DEENERGIZED self.valve_state_VRD = DEENERGIZED @@ -86,6 +88,11 @@ self.valve_state_VPD = DEENERGIZED def binary_to_valve_state(self, binary): + """ + + :param binary: 0 for DEENERGIZED and 1 for ENERGIZED + :return: DEENERGIZED or ENERGIZED states + """ if binary == 1: return ENERGIZED else: @@ -95,12 +102,12 @@ """ Handles published valves states message. - \param message: published valves states message + \param message: published valves states message \returns none """ vst = struct.unpack('H', bytearray(message['message'][self.START_POS_VALVES_STATES:self.END_POS_VALVES_STATES])) - self.valve_states_all = vst[0] + self.valves_states_all = vst[0] # Extract each valve state from U16 valves states using bit-masking self.valve_state_VRF = self.binary_to_valve_state(vst[0] & 0x0001) self.valve_state_VRI = self.binary_to_valve_state(vst[0] & 0x0002) @@ -126,19 +133,19 @@ \returns 1 if successful, zero otherwise \details valve IDs: \n - 0 = Valve Reservoir Fill - 1 = Valve Reservoir Inlet - 2 = Valve Reservoir Drain - 3 = Valve Reservoir Outlet - 4 = Valve Pressure Outlet - 5 = Valve Bypass Filter - 6 = Valve Recirculate - 7 = Valve Drain - 8 = Valve Pressure Inlet - 9 = Valve Sampling Port - 10 = Valve Reservoir 1 (spare for now including DG FPGA, as valve is of passive air relief type) - 11 = Valve Reservoir 2 (spare for now including DG FPGA, as valve is of passive air relief type) - 12 = Valve Production Drain + 0 = Valve Reservoir Fill (VRF) + 1 = Valve Reservoir Inlet (VRI) + 2 = Valve Reservoir Drain (VRD) + 3 = Valve Reservoir Outlet (VRO) + 4 = Valve Pressure Outlet (VPO) + 5 = Valve Bypass Filter (VBF) + 6 = Valve Recirculate (VRC) + 7 = Valve Drain (VDR) + 8 = Valve Pressure Inlet (VPI) + 9 = Valve Sampling Port (VSP) + 10 = Valve Reservoir 1 (VR1, spare for now including DG FPGA, as valve is of passive air relief type) + 11 = Valve Reservoir 2 (VR2, spare for now including DG FPGA, as valve is of passive air relief type) + 12 = Valve Production Drain (VPD) """ rst = integer_to_bytearray(reset) @@ -150,8 +157,6 @@ message_id=self.MSG_ID_DG_VALVE_STATE_OVERRIDE, payload=payload) - print("override valve state") - # Send message received_message = self.can_interface.send(message) @@ -160,19 +165,19 @@ # response payload is OK or not OK return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: - print("Timeout!!!!") + print("DG cmd_valve_override Timeout!!!") return False - def cmd_valve_broadcast_interval_override(self, ms, reset=NO_RESET): + def cmd_valve_broadcast_interval_override(self, s, reset=NO_RESET): """ Constructs and sends the valve state override command \param ms: unsigned int - broadcast interval (in ms) \param reset: integer - 1 to reset a previous override, 0 to override \returns 1 if successful, zero otherwise - """ + ms = s * 1000 rst = integer_to_bytearray(reset) ivl = integer_to_bytearray(ms) payload = rst + ivl @@ -181,7 +186,7 @@ message_id=self.MSG_ID_DG_VALVES_STATES_PUBLISH_INTERVAL_OVERRIDE, payload=payload) - print("override valves states publish interval") + print("Override default 500 ms valves states publish interval with", ms, "ms") # Send message received_message = self.can_interface.send(message) @@ -191,5 +196,5 @@ # Response payload is OK or not return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: - print("Timeout!!!!") + print("DG cmd_valve_broadcast_interval_override Timeout!!!") return False