Index: dialin/ui/dg_simulator.py =================================================================== diff -u -r32e628abcbbd3fd70866505d9f2836a6f732ef06 -rdc550a1bfd0d33f2e64cf9038372e0cecccb3673 --- dialin/ui/dg_simulator.py (.../dg_simulator.py) (revision 32e628abcbbd3fd70866505d9f2836a6f732ef06) +++ dialin/ui/dg_simulator.py (.../dg_simulator.py) (revision dc550a1bfd0d33f2e64cf9038372e0cecccb3673) @@ -262,35 +262,72 @@ self.can_interface.send(message, 0) - def cmd_set_dg_heaters_data(self, main_primary_dc: int, small_primary_dc: int, trimmer_dc: int, - primary_target_temp : float, trimmer_target_temp : float, - primary_heater_state: float, trimmer_heater_state: float, - primary_efficiency : float, primary_calc_target_temp:float, - trimmer_calc_current_temp: float, trimmer_use_last_dc:float) -> None: + def cmd_set_dg_heaters_data(self, + mMainPrimayHeaterDC : float , + mSmallPrimaryHeaterDC : float , + mTrimmerHeaterDC : float , + mPrimaryTargetTemp : float , + mTrimmerTargetTemp : float , + mPrimaryHeaterState : int , + mTrimmerHeaterState : int , + mPrimaryEfficiency : float , + mPrimaryCalcTargetTemp : float , + mTrimmerCalcCurrentTemp : float , + mTrimmerUseLastDC : int , + mTrimmerPreviousFlow : float , + mTrimmerContolCounter : int ) -> None: """ the DG Heaters Data message setter/sender method - | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | #1:(U32) | #2:(U32) | #3:(U32) | - |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: |:--: |:--: |:--: | - |0x2C00| 0x080 | 8 | 2 Hz | N | DG | All | DG Heaters Data | \ref Data::mMainPrimaryDC | \ref Data::mSmallPrimaryDC | \ref Data::mTrimmerDC | - - @param main_primary_dc: integer - Main PriMary DC - @param small_primary_dc: integer - Small Primary DC - @param trimmer_dc: integer - Trimmer DC + | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | + |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: | + |0x2C00| 0x080 | 8 | 2 Hz | N | DG | All | DG Heaters Data | + + | Payload || + | || + | # 1:(F32) | \ref Data::mMainPrimayHeaterDC | + | # 2:(F32) | \ref Data::mSmallPrimaryHeaterDC | + | # 3:(F32) | \ref Data::mTrimmerHeaterDC | + | # 4:(F32) | \ref Data::mPrimaryTargetTemp | + | # 5:(F32) | \ref Data::mTrimmerTargetTemp | + | # 6:(U32) | \ref Data::mPrimaryHeaterState | + | # 7:(U32) | \ref Data::mTrimmerHeaterState | + | # 8:(F32) | \ref Data::mPrimaryEfficiency | + | # 9:(F32) | \ref Data::mPrimaryCalcTargetTemp | + | #10:(F32) | \ref Data::mTrimmerCalcCurrentTemp | + | #11:(U32) | \ref Data::mTrimmerUseLastDC | + | #12:(F32) | \ref Data::mTrimmerPreviousFlow | + | #13:(U32) | \ref Data::mTrimmerContolCounter | + + @param mMainPrimayHeaterDC : ( float ) Main primary heater DC + @param mSmallPrimaryHeaterDC : ( float ) Small primary heater DC + @param mTrimmerHeaterDC : ( float ) Trimmer heater DC + @param mPrimaryTargetTemp : ( float ) Primary heater target temperature + @param mTrimmerTargetTemp : ( float ) Trimmer heater target temperature + @param mPrimaryHeaterState : ( int ) Primary heater state + @param mTrimmerHeaterState : ( int ) Trimmer heater state + @param mPrimaryEfficiency : ( float ) Primary heater efficiency + @param mPrimaryCalcTargetTemp : ( float ) Primary heater calculated target temperature + @param mTrimmerCalcCurrentTemp : ( float ) Trimmer heater calculated current temperature + @param mTrimmerUseLastDC : ( int ) Trimmer heater use last duty cycle + @param mTrimmerPreviousFlow : ( float ) Trimmer previous flow + @param mTrimmerContolCounter : ( int ) Trimmer control counter @return: none """ - payload = integer_to_bytearray(main_primary_dc) - payload += integer_to_bytearray(small_primary_dc) - payload += integer_to_bytearray(trimmer_dc) - payload += integer_to_bytearray(primary_target_temp) - payload += integer_to_bytearray(trimmer_target_temp) - payload += integer_to_bytearray(primary_heater_state) - payload += integer_to_bytearray(trimmer_heater_state) - payload += integer_to_bytearray(primary_efficiency) - payload += integer_to_bytearray(primary_calc_target_temp) - payload += integer_to_bytearray(trimmer_calc_current_temp) - payload += integer_to_bytearray(trimmer_use_last_dc) - + payload = float_to_bytearray ( mMainPrimayHeaterDC ) + payload += float_to_bytearray ( mSmallPrimaryHeaterDC ) + payload += float_to_bytearray ( mTrimmerHeaterDC ) + payload += float_to_bytearray ( mPrimaryTargetTemp ) + payload += float_to_bytearray ( mTrimmerTargetTemp ) + payload += integer_to_bytearray ( mPrimaryHeaterState ) + payload += integer_to_bytearray ( mTrimmerHeaterState ) + payload += float_to_bytearray ( mPrimaryEfficiency ) + payload += float_to_bytearray ( mPrimaryCalcTargetTemp ) + payload += float_to_bytearray ( mTrimmerCalcCurrentTemp ) + payload += integer_to_bytearray ( mTrimmerUseLastDC ) + payload += float_to_bytearray ( mTrimmerPreviousFlow ) + payload += integer_to_bytearray ( mTrimmerContolCounter ) + message = DenaliMessage.build_message(channel_id=DenaliChannels.dg_sync_broadcast_ch_id, message_id=MsgIds.MSG_ID_DG_HEATERS_DATA.value, payload=payload) Index: dialin/ui/hd_simulator.py =================================================================== diff -u -r04e36e91fc475f2c510d8e872b587e97034275d1 -rdc550a1bfd0d33f2e64cf9038372e0cecccb3673 --- dialin/ui/hd_simulator.py (.../hd_simulator.py) (revision 04e36e91fc475f2c510d8e872b587e97034275d1) +++ dialin/ui/hd_simulator.py (.../hd_simulator.py) (revision dc550a1bfd0d33f2e64cf9038372e0cecccb3673) @@ -890,7 +890,7 @@ @return: none """ - payload = integer_to_bytearray(accepted) + payload = integer_to_bytearray(accepted) payload += integer_to_bytearray(reason) payload += float_to_bytearray(volume) payload += integer_to_bytearray(duration) @@ -979,88 +979,140 @@ self.can_interface.send(message, 0) - def cmd_set_treatment_ultrafiltration_outlet_flow_data(self, ref_uf_vol: float, measured_uf_vol: float, - rot_speed: float, mot_speed: float, mc_speed: float, - mc_current: float, pwm: float, dop_corr_offset: float, - dop_calc_rate: float, uf_calc_rate: float, rotor_hall: int, - current_set_uf_rate: float) -> None: + def cmd_set_treatment_ultrafiltration_outlet_flow_data(self, + mRefUFVol : float , + mMeasUFVol : float , + mRotorSpeed : float , + mMotorSpeed : float , + mMotorCtlSpeed : float , + mMotorCtlCurrent : float , + mPWMDtCycle : float , + mDopCorrOffset : float , + mDopCalcRate : float , + mUfCalcRate : float , + mRotorHall : int , + mCurrentSetUFRate : float , + mDialOutPumpState : int ) -> None: """ the Outlet Flow Data message setter/sender method - | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | #1:(F32) | #2:(F32) | #3:(F32) | #4:(F32) | #5:(F32) | #6:(F32) | #7:(F32) | - |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: |:--: |:--: |:--: |:--: |:--: |:--: |:--: | - |0x0B00| 0x040 | 7 | 1 Hz | N | HD | All | Outlet Flow Data | \ref Data::mRefUFVol | \ref Data::mMeasUFVol | \ref Data::mRotorSpeed | \ref Data::mMotorSpeed | \ref Data::mMotorCtlSpeed | \ref Data::mMotorCtlCurrent | \ref Data::mPWMDtCycle | + | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | + |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: | + |0x0B00| 0x040 | 7 | 1 Hz | N | HD | All | Outlet Flow Data | + | Payload || + | || + | #01:(F32) | \ref Data::mRefUFVol | + | #02:(F32) | \ref Data::mMeasUFVol | + | #03:(F32) | \ref Data::mRotorSpeed | + | #04:(F32) | \ref Data::mMotorSpeed | + | #05:(F32) | \ref Data::mMotorCtlSpeed | + | #06:(F32) | \ref Data::mMotorCtlCurrent | + | #07:(F32) | \ref Data::mPWMDtCycle | + | #08:(F32) | \ref Data::mDopCorrOffset | + | #09:(F32) | \ref Data::mDopCalcRate | + | #10:(F32) | \ref Data::mUfCalcRate | + | #11:(U32) | \ref Data::mRotorHall | + | #12:(F32) | \ref Data::mCurrentSetUFRate| + | #13:(U32) | \ref Data::mDialOutPumpState| - @param ref_uf_vol: (float) Ref UF Volume - @param measured_uf_vol: (float) Measured UF Volume - @param rot_speed: (float) Rot Speed - @param mot_speed: (float) Motor Speed - @param mc_speed: (float) MC Speed - @param mc_current: (float) MC Current - @param pwm: (float) PWM - @param dop_corr_offset: (float) correction offset - @param dop_calc_rate: (float) calculated dop flow rate - @param uf_calc_rate: (float) calculated uf flow rate - @param rotor_hall: (int) rotor hall sensor - @param current_set_uf_rate: (float) set UF rate + @param mRefUFVol : ( float ) Reference UF Volume + @param mMeasUFVol : ( float ) Measured UF Volume + @param mRotorSpeed : ( float ) Rotor Speed + @param mMotorSpeed : ( float ) Motor Speed + @param mMotorCtlSpeed : ( float ) Motor Controller Speed + @param mMotorCtlCurrent : ( float ) Motor Controller Current + @param mPWMDtCycle : ( float ) PWM Duty Cycle in % + @param mDopCorrOffset : ( float ) + @param mDopCalcRate : ( float ) + @param mUfCalcRate : ( float ) + @param mRotorHall : ( int ) + @param mCurrentSetUFRate : ( float ) Current Set UF Rate + @param mDialOutPumpState : ( int ) Dialout pump state @return: none """ - payload = float_to_bytearray(ref_uf_vol) - payload += float_to_bytearray(measured_uf_vol) - payload += float_to_bytearray(rot_speed) - payload += float_to_bytearray(mot_speed) - payload += float_to_bytearray(mc_speed) - payload += float_to_bytearray(mc_current) - payload += float_to_bytearray(pwm) - payload += float_to_bytearray(dop_corr_offset) - payload += float_to_bytearray(dop_calc_rate) - payload += float_to_bytearray(uf_calc_rate) - payload += integer_to_bytearray(rotor_hall) - payload += float_to_bytearray(current_set_uf_rate) + payload = float_to_bytearray (mRefUFVol ) + payload += float_to_bytearray (mMeasUFVol ) + payload += float_to_bytearray (mRotorSpeed ) + payload += float_to_bytearray (mMotorSpeed ) + payload += float_to_bytearray (mMotorCtlSpeed ) + payload += float_to_bytearray (mMotorCtlCurrent ) + payload += float_to_bytearray (mPWMDtCycle ) + payload += float_to_bytearray (mDopCorrOffset ) + payload += float_to_bytearray (mDopCalcRate ) + payload += float_to_bytearray (mUfCalcRate ) + payload += integer_to_bytearray (mRotorHall ) + payload += float_to_bytearray (mCurrentSetUFRate ) + payload += integer_to_bytearray (mDialOutPumpState ) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_sync_broadcast_ch_id, message_id=MsgIds.MSG_ID_DIALYSATE_OUT_FLOW_DATA.value, payload=payload) self.can_interface.send(message, 0) - def cmd_set_pressure_occlusion_data(self, arterial_prs: float, venous_prs: float, blood_pump_occlusion: int, - pressure_state: int, art_min_limit: int, art_max_limit: int, - ven_min_limit: int, ven_max_limit: int - , filtered_arterial_prs: float, - filtered_venous_prs : float + def cmd_set_pressure_occlusion_data(self, + mArterialPressure : float , + mVenousPressure : float , + mBloodPumpOcclusion : int , + mPressureLimitState : int , + mArterialLimitLow : int , + mArterialLimitHigh : int , + mVenousLimitLow : int , + mVenousLimitHigh : int , + mArtLongFilter : float , + mVenousLongFilter : float , + mBloodOcclLongFilter : float , + mPartialOcclBaseline : float ) -> None: """ the Pressure/Occlusion Data messages setter/sender method - | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | #1:(F32) | #2:(F32) | #3:(U32) | #4:(U32) | #5:(U32) | - |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: |:--: |:--: |:--: |:--: |:--: | - |0x0900| 0x040 | 7 | 1 Hz | N | HD | All | PressureOcclusion Data | \ref Data::mArterialPressure | \ref Data::mVenousPressure | \ref Data::mBloodPumpOcclusion | \ref Data::mDialysateInletPumpOcclusion | \ref Data::mDialysateOutletPumpOcclusion | - - @param arterial_prs: (float) Arterial Pressure - @param venous_prs: (float) Venous Pressure - @param blood_pump_occlusion: (uint) Blood Pump Occlusion - @param pressure_state: (uint) Pressure state - @param art_min_limit: (int) arterial minimum limit - @param art_max_limit: (int) arterial maximum limit - @param ven_min_limit: (int) venous minimum limit - @param ven_max_limit: (int) venous maximum limit - # @param filtered_arterial_prs: (float) filtered arterial pressure - # @param filtered_venous_prs: (float) filtered venous pressure + | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | + |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: | + |0x0900| 0x040 | 7 | 1 Hz | N | HD | All | PressureOcclusion Data | + | Payload || + | || + | #1: (F32) | \ref Data::mArterialPressure | + | #2: (F32) | \ref Data::mVenousPressure | + | #3: (U32) | \ref Data::mBloodPumpOcclusion | + | #4: (U32) | \ref Data::mPressureLimitState | + | #5: (S32) | \ref Data::mArterialLimitLow | + | #6: (S32) | \ref Data::mArterialLimitHigh | + | #7: (S32) | \ref Data::mVenousLimitLow | + | #8: (S32) | \ref Data::mVenousLimitHigh | + | #9: (F32) | \ref Data::mArtLongFilter | + | #10:(F32) | \ref Data::mVenousLongFilter | + | #11:(F32) | \ref Data::mBloodOcclLongFilter | + | #12:(F32) | \ref Data::mPartialOcclBaseline | + + @param mArterialPressure : ( float ) Latest arterial pressure (mmHg) + @param mVenousPressure : ( float ) Latest venous pressure (mmHg) + @param mBloodPumpOcclusion : ( int ) Latest BP occlusion (no units) + @param mPressureLimitState : ( int ) Current pressure limits state (enum-stabilization or stable) + @param mArterialLimitLow : ( int ) Current arterial minimum pressure limit (mmHg) + @param mArterialLimitHigh : ( int ) Current arterial maximum pressure limit (mmHg) + @param mVenousLimitLow : ( int ) Current venous minimum pressure limit (mmHg) + @param mVenousLimitHigh : ( int ) Current venous maximum pressure limit (mmHg) + @param mArtLongFilter : ( float ) Arterial long filter (mmHg) + @param mVenousLongFilter : ( float ) Venous long filter (mmHg) + @param mBloodOcclLongFilter : ( float ) Blood pump occlusion long filter + @param mPartialOcclBaseline : ( float ) Partial Occlusion base line @return: none """ - payload = float_to_bytearray(arterial_prs) - payload += float_to_bytearray(venous_prs) - payload += integer_to_bytearray(blood_pump_occlusion) - payload += integer_to_bytearray(pressure_state) - payload += integer_to_bytearray(art_min_limit) - payload += integer_to_bytearray(art_max_limit) - payload += integer_to_bytearray(ven_min_limit) - payload += integer_to_bytearray(ven_max_limit) - payload += float_to_bytearray(filtered_arterial_prs) - payload += float_to_bytearray(filtered_venous_prs) + payload = float_to_bytearray (mArterialPressure ) + payload += float_to_bytearray (mVenousPressure ) + payload += integer_to_bytearray (mBloodPumpOcclusion ) + payload += integer_to_bytearray (mPressureLimitState ) + payload += integer_to_bytearray (mArterialLimitLow ) + payload += integer_to_bytearray (mArterialLimitHigh ) + payload += integer_to_bytearray (mVenousLimitLow ) + payload += integer_to_bytearray (mVenousLimitHigh ) + payload += float_to_bytearray (mArtLongFilter ) + payload += float_to_bytearray (mVenousLongFilter ) + payload += float_to_bytearray (mBloodOcclLongFilter ) + payload += float_to_bytearray (mPartialOcclBaseline ) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_sync_broadcast_ch_id, message_id=MsgIds.MSG_ID_PRESSURE_OCCLUSION_DATA.value, @@ -2167,16 +2219,35 @@ self.can_interface.send(message, 0) - def cmd_send_hd_air_trap_data(self, lower_level: int, upper_level: int) -> None: + def cmd_send_hd_air_trap_data(self, + mAirTrapLowerLevel : int , + mAirTrapUpperLevel : int , + mAirTrapRawLowerLevel : int , + mAirTrapRawUpperLevel : int ) -> None: + """ + | MSG | CAN ID | Type | Ack | Src | Dst | Description | + |:----:|:------:|:------:|:---:|:---:|:---:|:-----------: | + |0x3E00| 0x040 | 1 Hz | N | HD | All | HD Air Trap Data | + | Payload || + | || + | #1:(U32) | \ref Data::mAirTrapLowerLevel | + | #2:(U32) | \ref Data::mAirTrapUpperLevel | + | #3:(U32) | \ref Data::mAirTrapRawLowerLevel | + | #4:(U32) | \ref Data::mAirTrapRawUpperLevel | + A simulated HD broadcast message of air trap data. - @param lower_level: (int) Air trap lower level - @param upper_level: (int) Air trap upper level + @param mAirTrapLowerLevel : ( int ) Lower Level + @param mAirTrapUpperLevel : ( int ) Upper Level + @param mAirTrapRawLowerLevel : ( int ) Raw Lower Level + @param mAirTrapRawUpperLevel : ( int ) Raw Upper Level @return: None """ - payload = unsigned_integer_to_bytearray(lower_level) - payload += unsigned_integer_to_bytearray(upper_level) + payload = unsigned_integer_to_bytearray(mAirTrapLowerLevel ) + payload += unsigned_integer_to_bytearray(mAirTrapUpperLevel ) + payload += unsigned_integer_to_bytearray(mAirTrapRawLowerLevel ) + payload += unsigned_integer_to_bytearray(mAirTrapRawUpperLevel ) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_sync_broadcast_ch_id, message_id=MsgIds.MSG_ID_HD_AIR_TRAP_DATA.value,