Index: leahi_dialin/common/dd_defs.py =================================================================== diff -u -r6996071cb459d86351b4b0f8bb69251d0704c7c3 -r79697500614904bafb56f3d33e368b954ba78f7d --- leahi_dialin/common/dd_defs.py (.../dd_defs.py) (revision 6996071cb459d86351b4b0f8bb69251d0704c7c3) +++ leahi_dialin/common/dd_defs.py (.../dd_defs.py) (revision 79697500614904bafb56f3d33e368b954ba78f7d) @@ -21,7 +21,7 @@ class DDOpModes(DialinEnum): MODE_FAUL = 0 # Fault Mode MODE_SERV = 1 # Service Mode - MODE_INIT = 2 # Initialization Mode + MODE_INIT = 2 # Initialization & POST Mode MODE_STAN = 3 # Standby Mode MODE_PREG = 4 # Pre-generate Dialysate Mode MODE_GEND = 5 # Generate Dialysate Mode @@ -283,45 +283,41 @@ @unique class DDPressureNames(DialinEnum): # Pressure Sensor IDs - M1_PRES = 0 # Water Inlet pressure before regulator (PRi) - M3_PRES = 1 # Water Inlet pressure after regulator (PRo) - D9_PRES = 2 # Hydraulics outlet pressure (PHo/Pn) - D66_PRES = 3 # Dry Bicarb pressure (PDB/PCb) - D51_PRES = 4 # Spent Dialysate pressure (PDs) - D18_PRES = 5 # Fresh Dialysate pressure (PDf) - D41_PRES = 6 # Transmembrane pressure (Ptm) - BARO_PRES = 7 # Barometric pressure sensor - NUM_OF_PRESSURE_SENSORS = 8 # Number of pressure sensors + D9_PRES = 0 # Hydraulics outlet pressure (PHo/Pn) + D66_PRES = 1 # Dry Bicarb pressure (PDB/PCb) + D51_PRES = 2 # Spent Dialysate pressure (PDs) + D18_PRES = 3 # Fresh Dialysate pressure (PDf) + D41_PRES = 4 # Transmembrane pressure (Ptm) + NUM_OF_PRESSURE_SENSORS = 5 # Number of pressure sensors @unique -class DDPressureAttributesEnum (DialinEnum): - PRES = 0 # Pressure Attribute for Pressure Sensors - TEMP = 1 # Temperature Attribute for Pressure Sensors - NUM_OF_PRES_SENSOR_ATTRIBUTES = 2 # Number of Pressure Sensor Attributes - -@unique class DDROPermeateStates(DialinEnum): NUM_OF_RO_PERMEATE_STATES = 0 # TODO: populate with RO Permeate states COND_SENSOR_INDEX_OFFSET = 6 # Conductivity Sensor Index Offset for the Temperature Sensors @unique class DDTemperaturesNames(DialinEnum): - D1_TEMP = 0 # Heat exchanger Inlet temperature sensor - X6_TEMP = 1 # Heat exchanger Outlet temperature sensor - D4_TEMP = 2 # Hydraulics primary heater temperature sensor - D50_TEMP = 3 # Trimmer heater temperature sensor - BRD_TEMP = 4 # Barometric temperature sensor - BARO_TEMP = 5 # DD board temperature sensor ( thermistor ) - D16_TEMP = 6 # D16 temperature value - D28_TEMP = 7 # D28 temperature value - D30_TEMP = 8 # D30 temperature value - D44_TEMP = 9 # D44 temperature value - D75_TEMP = 10 # D75 temperature value - D4_AVG_TEMP = 11 # D4 Filtered value - D50_AVG_TEMP = 12 # D50 Filtered value - D28_AVG_TEMP = 13 # D28 Filtered value - D30_AVG_TEMP = 14 # D30 Filtered value + D1_TEMP = 0 # Heat exchanger Inlet temperature sensor + D78_TEMP = 1 # Heat exchanger Outlet temperature sensor + D4_TEMP = 2 # Hydraulics primary heater temperature sensor + D50_TEMP = 3 # Trimmer heater temperature sensor + BRD_TEMP = 4 # Barometric temperature sensor + BARO_TEMP = 5 # DD board temperature sensor ( thermistor ) + D16_TEMP = 6 # D16 Conductivity sensor temperature value + D28_TEMP = 7 # D28 Conductivity sensor temperature value + D30_TEMP = 8 # D30 Conductivity sensor temperature value + D44_TEMP = 9 # D44 Conductivity sensor temperature value + D75_TEMP = 10 # D75 Conductivity sensor temperature value + D4_AVG_TEMP = 11 # D4 Filtered value + D50_AVG_TEMP = 12 # D50 Filtered value + D28_AVG_TEMP = 13 # D28 Filtered value + D30_AVG_TEMP = 14 # D30 Filtered value + D66_TEMP = 15 # D66 Pressure sensor temperature value + D51_TEMP = 16 # D51 Pressure sensor temperature value + D18_TEMP = 17 # D18 Pressure sensor temperature value + D41_TEMP = 18 # D41 Pressure sensor temperature value + NUM_OF_TEMP_SENSORS = 19 # Number of Temperature Sensors @unique class DDValveStates(DialinEnum): @@ -330,36 +326,52 @@ @unique class DDValveNames(DialinEnum): - D14_VALV = 0 # Valve Hydraulics Outlet (D14) - D52_VALV = 1 # Valve Thermal Disinfect (D52) - D8_VALV = 2 # Valve Hydraulics Bypass (D8) - D54_VALV = 3 # Valve Rinse Port (D54) - D53_VALV = 4 # Valve Drain (D53) - D34_VALV = 5 # Valve Dialyzer Bypass (D34) - D64_VALV = 6 # Valve Purge 1 (D64) - D31_VALV = 7 # Valve Pressure Test (D31) - D65_VALV = 8 # Valve DryBcarb Inlet (D65) - D35_VALV = 9 # Valve Dialyzer Inlet (D35) - D40_VALV = 10 # Valve Dialyzer Outlet (D40) - D47_VALV = 11 # Valve Dialysate Out Purge 2 (D47) - D3_VALV = 12 # Valve Hydraulics Inlet (D3) - M4_VALV = 13 # Valve Water Inlet (M4) - RSRVD_SPACE1 = 14 # This space has been reserved - RSRVD_SPACE2 = 15 # This space has been reserved - D23_VALV = 16 # Balancing chamber Valve 1 (D23) - D19_VALV = 17 # Balancing chamber Valve 2 (D19) - D25_VALV = 18 # Balancing chamber Valve 3 (D25) - D26_VALV = 19 # Balancing chamber Valve 7 (D26) - D24_VALV = 20 # Balancing chamber Valve 5 (D24) - D20_VALV = 21 # Balancing chamber Valve 6 (D20) - D21_VALV = 22 # Balancing chamber Valve 4 (D21) - D22_VALV = 23 # Balancing chamber Valve 8 (D22) - D69_VALV = 24 # Ultrafiltration Valve 1 Inlet (D69) - D71_VALV = 25 # Ultrafiltration Valve 2 Inlet (D71) - D70_VALV = 26 # Ultrafiltration Valve 1 Outlet (D70) - D72_VALV = 27 # Ultrafiltration Valve 2 Outlet (D72) - NUM_OF_DD_VALVES = 28 # Number of Valves for the DD + D14_VALV = 0 # Valve Hydraulics Outlet (D14) + D52_VALV = 1 # Valve Thermal Disinfect (D52) + D8_VALV = 2 # Valve Hydraulics Bypass (D8) + D54_VALV = 3 # Valve Rinse Port (D54) + D53_VALV = 4 # Valve Drain (D53) + D34_VALV = 5 # Valve Dialyzer Bypass (D34) + D64_VALV = 6 # Valve Purge 1 (D64) + D31_VALV = 7 # Valve Pressure Test (D31) + D65_VALV = 8 # Valve DryBcarb Inlet (D65) + D35_VALV = 9 # Valve Dialyzer Inlet (D35) + D40_VALV = 10 # Valve Dialyzer Outlet (D40) + D47_VALV = 11 # Valve Dialysate Out Purge 2 (D47) + D3_VALV = 12 # Valve Hydraulics Inlet (D3) + D80_VALV = 13 # Valve Dry Bicarb (D80) + D81_VALV = 14 # Valve De-scaler (D81) + RSRVD_SPACE1 = 15 # This space has been reserved + D23_VALV = 16 # Balancing chamber Valve 1 (D23) + D19_VALV = 17 # Balancing chamber Valve 2 (D19) + D25_VALV = 18 # Balancing chamber Valve 3 (D25) + D21_VALV = 19 # Balancing chamber Valve 4 (D21) + D24_VALV = 20 # Balancing chamber Valve 5 (D24) + D20_VALV = 21 # Balancing chamber Valve 6 (D20) + D26_VALV = 22 # Balancing chamber Valve 7 (D26) + D22_VALV = 23 # Balancing chamber Valve 8 (D22) + D79_PMP_VALV = 24 # D79 pump mapped to spare valve 0 + SPARE1_VALV = 25 # Spare Valve 1 + SPARE2_VALV = 26 # Spare Valve 2 + SPARE3_VALV = 27 # Spare Valve 3 + SPARE4_VALV = 28 # Spare Valve 4 + SPARE5_VALV = 29 # Spare Valve 5 + SPARE6_VALV = 30 # Spare Valve 6 + SPARE7_VALV = 31 # Spare Valve 7 + NUM_OF_DD_VALVES = 32 # Number of Valves for the DD @unique class DDNotLegalStates(DialinEnum): NUM_OF_NOT_LEGAL_STATES = 0 # TODO: populate with Not Legal states + +@unique +class DDMonitoredVoltages(DialinEnum): + MONITORED_LINE_1_2V = 0 # Processor voltage (1.2V) + MONITORED_LINE_3_3V = 1 # Logic voltage (3.3V) + MONITORED_LINE_5V_LOGIC = 2 # Logic voltage (5V) + MONITORED_LINE_24V_1 = 3 # Actuators voltage (24V) + MONITORED_LINE_24V_2 = 4 # Actuators regen voltage (24V) + MONITORED_LINE_FPGA_VCC_V = 5 # FPGA Vcc (3V) + MONITORED_LINE_FPGA_AUX_V = 6 # FPGA Vaux (3V) + MONITORED_LINE_FPGA_PVN_V = 7 # FPGA Vpvn (1V) + NUM_OF_MONITORED_VOLTAGE_LINES = 8 # Number of TD operation modes \ No newline at end of file Index: leahi_dialin/common/fp_defs.py =================================================================== diff -u -rbac0a2d09d57dc27cfa2f2a596d57fdcbed392ee -r79697500614904bafb56f3d33e368b954ba78f7d --- leahi_dialin/common/fp_defs.py (.../fp_defs.py) (revision bac0a2d09d57dc27cfa2f2a596d57fdcbed392ee) +++ leahi_dialin/common/fp_defs.py (.../fp_defs.py) (revision 79697500614904bafb56f3d33e368b954ba78f7d) @@ -153,16 +153,12 @@ @unique class FPPressureSensorNames(DialinEnum): - M1_PRES = 0 # Water inlet pressure before regulator - M3_PRES = 1 # Water inlet pressure after regulator - P8_PRES = 2 # Water inlet pressure before the conductivity sensor - P13_PRES = 3 # Pressure before the RO filter - P17_PRES = 4 # Pressure after the RO filter - X1_PRES = 5 # Pressure before RO pump - X2_PRES = 6 # Pressure of RO Concentrate - X3_PRES = 7 # Pressure after P32, concentrate drop - X4_PRES = 8 # Pressure Drain Drop - NUM_OF_FP_PRES_SENSORS = 9 # Number of Pressure Sensors + M1_PRES = 0 # Water inlet pressure before regulator + M3_PRES = 1 # Water inlet pressure after regulator + P8_PRES = 2 # Water inlet pressure before the conductivity sensor + P13_PRES = 3 # Pressure before the RO filter + P17_PRES = 4 # Pressure after the RO filter + NUM_OF_FP_PRES_SENSORS = 5 # Number of Pressure Sensors @unique class ROPumpNames(DialinEnum): @@ -184,20 +180,16 @@ @unique class FPTemperaturesNames(DialinEnum): - P10_TEMP = 0 # P10 temperature from inlet conductivity sensor. - P19_TEMP = 1 # P19 temperature from outlet conductivity sensor. - M1_TEMP = 2 # Temperature before pressure regulator (M1) - M3_TEMP = 3 # Temperature after pressure regulator (M3) - P8_TEMP = 4 # Temperature before inlet conductivity sensor (P8) - P13_TEMP = 5 # Temperature before RO filter (P13) - P17_TEMP = 6 # Temperature after RO filter (P17) - X1_TEMP = 7 # Temperature before RO pump (X1) - X2_TEMP = 8 # Temperature RO Concentrate - X3_TEMP = 9 # Temperature RO Concentrate drop - X4_TEMP = 10 # Temperature drain drop - P7_TEMP = 11 # Temperature at p7 flow meter - P16_TEMP = 12 # Temperature at p16 flow meter - NUM_OF_TEMPERATURE_SENSORS = 13 # Number of Temperature Sensors + M1_TEMP = 0 # Temperature before pressure regulator (M1) + M3_TEMP = 1 # Temperature after pressure regulator (M3) + P10_TEMP = 2 # P10 temperature from inlet conductivity sensor. + P19_TEMP = 3 # P19 temperature from outlet conductivity sensor. + P8_TEMP = 4 # Temperature before inlet conductivity sensor (P8) + P13_TEMP = 5 # Temperature before RO filter (P13) + P17_TEMP = 6 # Temperature after RO filter (P17) + P7_TEMP = 7 # Temperature at p7 flow meter + P16_TEMP = 8 # Temperature at p16 flow meter + NUM_OF_TEMPERATURE_SENSORS = 9 # Number of Temperature Sensors @unique class FPValveStates(DialinEnum): @@ -206,17 +198,15 @@ @unique class FPValveNames(DialinEnum): - M4_VALV = 0 # Valve (M4 VWi) - P39_VALV = 1 # Valve (P39 VROd) - P6_VALV = 2 # Valve (P6 VFF) - P11_VALV = 3 # Valve (P11 VPi) - P33_VALV = 4 # Valve (P33 VCr) - P34_VALV = 5 # Valve (P34 VCb) - P37_VALV = 6 # Valve (P37 VCd) - M7_VALV = 7 # Valve (M7) - P20_VALV = 8 # Valve (P20) - P43_VALV = 9 # Valve (P43) - NUM_OF_VALVES = 10 # Number of valves + M4_VALV = 0 # Valve (M4 VWi) + P11_VALV = 1 # Valve (P11 VPi) + P33_VALV = 2 # Valve (P33 VCr) + P34_VALV = 3 # Valve (P34 VCb) + P37_VALV = 4 # Valve (P37 VCd) + P39_VALV = 5 # Valve (P39 VROd) + P43_VALV = 6 # Valve (P43) + P6_VALV = 7 # Valve (P6 VFF) + NUM_OF_FP_VALVES = 8 # Number of valves @unique class FPPumpNames(DialinEnum): Index: leahi_dialin/dd/dialysate_delivery.py =================================================================== diff -u -rbac0a2d09d57dc27cfa2f2a596d57fdcbed392ee -r79697500614904bafb56f3d33e368b954ba78f7d --- leahi_dialin/dd/dialysate_delivery.py (.../dialysate_delivery.py) (revision bac0a2d09d57dc27cfa2f2a596d57fdcbed392ee) +++ leahi_dialin/dd/dialysate_delivery.py (.../dialysate_delivery.py) (revision 79697500614904bafb56f3d33e368b954ba78f7d) @@ -26,15 +26,16 @@ from .modules.gen_dialysate import DDGenDialysate from .modules.heaters import DDHeaters from .modules.levels import DDLevels -from .modules.piston_pump import DDPistonPumps from .modules.post_gen_dialysate import DDPostGenDialysate from .modules.pressure_sensors import DDPressureSensors from .modules.pre_gen_dialysate import DDPreGenDialysate +from .modules.rinse_pump import DDRinsePump from .modules.spent_chamber_fill import DDSpentChamberFill from .modules.temperature_sensors import DDTemperatureSensors from .modules.dd_test_configs import DDTestConfig from .modules.ultrafiltration import DDUltrafiltration from .modules.valves import DDValves +from .modules.voltages import DDVoltages from .proxies.ro_proxy import ROProxy from .proxies.td_proxy import TDProxy @@ -86,16 +87,18 @@ # register handler for DD operation mode broadcast messages if self.can_interface is not None: channel_id = DenaliChannels.dd_sync_broadcast_ch_id - msg_id = MsgIds.MSG_ID_DD_OP_MODE_DATA.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, + self.msg_id_dd_op_mode_data = MsgIds.MSG_ID_DD_OP_MODE_DATA.value + self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_op_mode_data, self._handler_dd_op_mode_sync) + self.msg_id_dd_version_response = MsgIds.MSG_ID_DD_VERSION_RESPONSE.value self.can_interface.register_receiving_publication_function(channel_id, - MsgIds.MSG_ID_DD_VERSION_RESPONSE.value, + self.msg_id_dd_version_response, self._handler_dd_version_response_sync) + self.msg_id_dd_debug_event = MsgIds.MSG_ID_DD_DEBUG_EVENT.value self.can_interface.register_receiving_publication_function(channel_id, - MsgIds.MSG_ID_DD_DEBUG_EVENT.value, + self.msg_id_dd_debug_event, self._handler_dd_debug_event_sync) # create properties @@ -123,21 +126,22 @@ self.gen_dialysate = DDGenDialysate(self.can_interface, self.logger) self.heaters = DDHeaters(self.can_interface, self.logger) self.levels = DDLevels(self.can_interface, self.logger) - self.piston_pumps = DDPistonPumps(self.can_interface, self.logger) self.post_gen_dialysate = DDPostGenDialysate(self.can_interface, self.logger) self.pressure_sensors = DDPressureSensors(self.can_interface, self.logger) self.pre_gen_dialysate = DDPreGenDialysate(self.can_interface, self.logger) + self.rinse_pump = DDRinsePump(self.can_interface, self.logger) self.spent_chamber_fill = DDSpentChamberFill(self.can_interface, self.logger) self.temperature_sensors = DDTemperatureSensors(self.can_interface, self.logger) self.test_configs = DDTestConfig(self.can_interface, self.logger) self.ultrafiltration = DDUltrafiltration(self.can_interface, self.logger) self.valves = DDValves(self.can_interface, self.logger) + self.voltages = DDVoltages(self.can_interface, self.logger) self.ro_proxy = ROProxy(self.can_interface, self.logger) self.td_proxy = TDProxy(self.can_interface, self.logger) - @publish(["dd_debug_events_timestamp","dd_debug_events"]) + @publish(["msg_id_dd_debug_event", "dd_debug_events_timestamp","dd_debug_events"]) def _handler_dd_debug_event_sync(self, message, timestamp = 0.0): payload = message['message'] @@ -168,7 +172,7 @@ """ self.dd_logged_in = logged_in - @publish(["dd_op_mode_timestamp","dd_operation_mode", "dd_operation_sub_mode"]) + @publish(["msg_id_dd_op_mode_data", "dd_op_mode_timestamp","dd_operation_mode", "dd_operation_sub_mode"]) def _handler_dd_op_mode_sync(self, message, timestamp = 0.0): """ Handles published DD operation mode messages. Current DD operation mode @@ -186,7 +190,7 @@ self.dd_operation_sub_mode = smode[0] self.dd_op_mode_timestamp = timestamp - @publish(["dd_version, dd_fpga_version"]) + @publish(["msg_id_dd_version_response", "dd_version, dd_fpga_version"]) def _handler_dd_version_response_sync(self,message, timestamp = 0.0): """ Handler for response from DD regarding its version. @@ -344,4 +348,4 @@ return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: self.logger.debug("Timeout!!!!") - return False \ No newline at end of file + return False Index: leahi_dialin/fp/filtration_purification.py =================================================================== diff -u -rbac0a2d09d57dc27cfa2f2a596d57fdcbed392ee -r79697500614904bafb56f3d33e368b954ba78f7d --- leahi_dialin/fp/filtration_purification.py (.../filtration_purification.py) (revision bac0a2d09d57dc27cfa2f2a596d57fdcbed392ee) +++ leahi_dialin/fp/filtration_purification.py (.../filtration_purification.py) (revision 79697500614904bafb56f3d33e368b954ba78f7d) @@ -22,6 +22,7 @@ from .modules.events import FPEvents from .modules.flow_sensors import FPFlowSensors from .modules.levels import FPLevels +from .modules.permeate_tank import FPPermeateTank from .modules.pressure_sensors import FPPressureSensors from .modules.ro_pump import FPROPump from .modules.temperatures import FPTemperatureSensors @@ -78,16 +79,18 @@ # register handler for FP operation mode broadcast messages if self.can_interface is not None: channel_id = DenaliChannels.fp_sync_broadcast_ch_id - msg_id = MsgIds.MSG_ID_FP_OP_MODE_DATA.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, + self.msg_id_fp_op_mode_data = MsgIds.MSG_ID_FP_OP_MODE_DATA.value + self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_op_mode_data, self._handler_fp_op_mode_sync) + self.msg_id_fp_version_response = MsgIds.MSG_ID_FP_VERSION_RESPONSE.value self.can_interface.register_receiving_publication_function(channel_id, - MsgIds.MSG_ID_FP_VERSION_RESPONSE.value, + self.msg_id_fp_version_response, self._handler_fp_version_response_sync) + self.msg_id_fp_debug_event = MsgIds.MSG_ID_FP_DEBUG_EVENT.value self.can_interface.register_receiving_publication_function(channel_id, - MsgIds.MSG_ID_FP_DEBUG_EVENT.value, + self.msg_id_fp_debug_event, self._handler_fp_debug_event_sync) # create properties @@ -112,14 +115,15 @@ self.flows = FPFlowSensors(self.can_interface, self.logger) self.fluid_pumps = FPPumps(self.can_interface, self.logger) self.levels = FPLevels(self.can_interface, self.logger) + self.permeate_tank = FPPermeateTank(self.can_interface, self.logger) self.pressures = FPPressureSensors(self.can_interface, self.logger) self.ro_pump = FPROPump(self.can_interface, self.logger) self.temperatures = FPTemperatureSensors(self.can_interface, self.logger) self.test_configs = FPTestConfig(self.can_interface, self.logger) self.valves = FPValves(self.can_interface, self.logger) self.dd_proxy = DDProxy(self.can_interface, self.logger) - @publish(["fp_debug_events_timestamp","fp_debug_events"]) + @publish(["msg_id_fp_debug_event", "fp_debug_events_timestamp","fp_debug_events"]) def _handler_fp_debug_event_sync(self, message, timestamp = 0.0): """ Callback for fp debug event messages @@ -155,7 +159,7 @@ """ self.fp_logged_in = logged_in - @publish(["fp_version, fp_fpga_version"]) + @publish(["msg_id_fp_version_response", "fp_version, fp_fpga_version"]) def _handler_fp_version_response_sync(self,message, timestamp = 0.0): """ Handler for response from FP regarding its version. @@ -193,7 +197,7 @@ self.fp_version_response_timestamp = timestamp - @publish(["fp_op_mode_timestamp","fp_operation_mode", "fp_operation_sub_mode"]) + @publish(["msg_id_fp_op_mode_data", "fp_op_mode_timestamp","fp_operation_mode", "fp_operation_sub_mode"]) def _handler_fp_op_mode_sync(self, message, timestamp = 0.0): """ Handles published FP operation mode messages. Current FP operation mode Index: leahi_dialin/protocols/CAN.py =================================================================== diff -u -re18326881971a5f9c31a26044b3849e8e91df2ce -r79697500614904bafb56f3d33e368b954ba78f7d --- leahi_dialin/protocols/CAN.py (.../CAN.py) (revision e18326881971a5f9c31a26044b3849e8e91df2ce) +++ leahi_dialin/protocols/CAN.py (.../CAN.py) (revision 79697500614904bafb56f3d33e368b954ba78f7d) @@ -289,7 +289,7 @@ DenaliChannels.td_sync_broadcast_ch_id: DenaliChannels.dialin_to_td_ch_id, DenaliChannels.dd_sync_broadcast_ch_id: DenaliChannels.dialin_to_dd_ch_id, DenaliChannels.fp_sync_broadcast_ch_id: DenaliChannels.dialin_to_fp_ch_id, - DenaliChannels.ui_to_td_ch_id: DenaliChannels.dialin_to_ui_ch_id, + DenaliChannels.ui_to_td_ch_id: DenaliChannels.td_to_ui_ch_id, DenaliChannels.ui_sync_broadcast_ch_id: DenaliChannels.dialin_to_ui_ch_id, DenaliChannels.td_to_dialin_ch_id: DenaliChannels.dialin_to_td_ch_id, DenaliChannels.dd_to_dialin_ch_id: DenaliChannels.dialin_to_dd_ch_id, Index: leahi_dialin/td/treatment_delivery.py =================================================================== diff -u -rbac0a2d09d57dc27cfa2f2a596d57fdcbed392ee -r79697500614904bafb56f3d33e368b954ba78f7d --- leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision bac0a2d09d57dc27cfa2f2a596d57fdcbed392ee) +++ leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision 79697500614904bafb56f3d33e368b954ba78f7d) @@ -81,20 +81,23 @@ # register handler for TD operation mode broadcast messages if self.can_interface is not None: channel_id = DenaliChannels.td_sync_broadcast_ch_id - msg_id = MsgIds.MSG_ID_TD_OP_MODE_DATA.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, + self.msg_id_td_op_mode_data = MsgIds.MSG_ID_TD_OP_MODE_DATA.value + self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_op_mode_data, self._handler_td_op_mode_sync) + self.msg_id_td_debug_event = MsgIds.MSG_ID_TD_DEBUG_EVENT.value self.can_interface.register_receiving_publication_function(channel_id, - MsgIds.MSG_ID_TD_DEBUG_EVENT.value, + self.msg_id_td_debug_event, self._handler_td_debug_event_sync) + self.msg_id_td_version_response = MsgIds.MSG_ID_TD_VERSION_RESPONSE.value self.can_interface.register_receiving_publication_function(channel_id, - MsgIds.MSG_ID_TD_VERSION_RESPONSE.value, + self.msg_id_td_version_response, self._handler_td_version_response_sync) + self.msg_id_ui_version_info_response = MsgIds.MSG_ID_UI_VERSION_INFO_RESPONSE.value self.can_interface.register_receiving_publication_function(DenaliChannels.ui_to_td_ch_id, - MsgIds.MSG_ID_UI_VERSION_INFO_RESPONSE.value, + self.msg_id_ui_version_info_response, self._handler_ui_version_response_sync) # create properties @@ -133,7 +136,7 @@ self.dd_proxy = DDProxy(self.can_interface, self.logger) self.ui_proxy = UIProxy(self.can_interface, self.logger) - @publish(["td_debug_events_timestamp","td_debug_events"]) + @publish(["msg_id_td_debug_event", "td_debug_events_timestamp","td_debug_events"]) def _handler_td_debug_event_sync(self, message, timestamp = 0.0): payload = message['message'] @@ -164,7 +167,7 @@ """ self.td_logged_in = logged_in - @publish(["td_op_mode_timestamp","td_operation_mode", "td_operation_sub_mode"]) + @publish(["msg_id_td_op_mode_data", "td_op_mode_timestamp","td_operation_mode", "td_operation_sub_mode"]) def _handler_td_op_mode_sync(self, message, timestamp = 0.0): """ Handles published TD operation mode messages. Current TD operation mode @@ -182,7 +185,7 @@ self.td_operation_sub_mode = smode[0] self.td_op_mode_timestamp = timestamp - @publish(["td_version, td_fpga_version"]) + @publish(["msg_id_td_version_response", "td_version, td_fpga_version"]) def _handler_td_version_response_sync(self,message, timestamp = 0.0): """ Handler for response from TD regarding its version. @@ -220,7 +223,7 @@ self.td_version_response_timestamp = timestamp - + @publish(["msg_id_ui_version_info_response", "ui_version", "ui_version_info_response_timestamp"]) def _handler_ui_version_response_sync(self,message, timestamp = 0.0): """ Handler for response from TD regarding its version. @@ -235,15 +238,15 @@ @return: None if not successful, the version string if unpacked successfully """ major = struct.unpack(' int: + """ + Constructs and sends a training test override request to the TD. + + @param value: integer - test value to override with + @param reset: integer - 1 to reset a previous override, 0 to override + @return: 1 if successful, zero otherwise + """ + + rst = integer_to_bytearray(reset) + val = integer_to_bytearray(value) + payload = rst + val + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_td_ch_id, + message_id=MsgIds.MSG_ID_TD_TRAINING_TEST_OVERRIDE_REQUEST.value, + payload=payload) + + self.logger.debug("Sending a training test override request to the TD.") + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + # self.logger.debug(received_message) + if reset == RESET: + str_res = "reset back to normal: " + else: + str_res = str(val) + " value: " + self.logger.debug("Training test value overridden to " + str_res + + str(received_message['message'][DenaliMessage.PAYLOAD_START_INDEX])) + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False + def cmd_op_mode_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the measured op mode broadcast interval override command