Index: dialin/common/msg_defs.py =================================================================== diff -u -r5d509ca990537206f53e7c3c7f21c88ebe9b8881 -rbf3f26db920b3ec4d8d11ad6a9efbffa0b5d53b0 --- dialin/common/msg_defs.py (.../msg_defs.py) (revision 5d509ca990537206f53e7c3c7f21c88ebe9b8881) +++ dialin/common/msg_defs.py (.../msg_defs.py) (revision bf3f26db920b3ec4d8d11ad6a9efbffa0b5d53b0) @@ -106,8 +106,6 @@ MSG_ID_UI_TX_END_CMD = 0x57 # UI end treatment sub-mode user request MSG_ID_HD_TX_END_CMD_RESPONSE = 0x58 # HD end treatment sub-mode user request response - - MSG_ID_CAN_ERROR_COUNT = 0x999 # test code in support of EMC testing # service/test CAN messages @@ -253,7 +251,6 @@ REQUEST_REJECT_REASON_SALINE_BOLUS_NOT_IN_PROGRESS = 22 NUM_OF_REQUEST_REJECT_REASONS = 23 - class MsgFieldPositions: # Generic response msg field byte positions (where 32-bit data fields are used) START_POS_FIELD_1 = DenaliMessage.PAYLOAD_START_INDEX Index: dialin/ui/hd_simulator.py =================================================================== diff -u -r5d509ca990537206f53e7c3c7f21c88ebe9b8881 -rbf3f26db920b3ec4d8d11ad6a9efbffa0b5d53b0 --- dialin/ui/hd_simulator.py (.../hd_simulator.py) (revision 5d509ca990537206f53e7c3c7f21c88ebe9b8881) +++ dialin/ui/hd_simulator.py (.../hd_simulator.py) (revision bf3f26db920b3ec4d8d11ad6a9efbffa0b5d53b0) @@ -747,13 +747,13 @@ self.can_interface.send(message, 0) - def cmd_set_treatment_blood_flow_rate(self, vFlowSetPt, vMeasFlow, vRotSpd, vMotSpd, vMCSpd, vMCCurr, vPWM): + def cmd_set_treatment_blood_flow_rate(self, vFlowSetPt, vMeasFlow, vRotSpd, vMotSpd, vMCSpd, vMCCurr, vPWM, vSigStrngth): """ The Blood Flow Data message setter/sender method - | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | #1:(S32) | #2:(F32) | #3:(F32) | #4:(F32) | #5:(F32) | #6:(F32) | #7:(F32) | - |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: |:--: |:--: |:--: |:--: |:--: |:--: |:--: | - |0x0500| 0x040 | 7 | 1 Hz | N | HD | All | Blood Flow Data | \ref Data::mFlowSetPoint | \ref Data::mMeasuredFlow | \ref Data::mRotorSpeed | \ref Data::mMotorSpeed | \ref Data::mMotorCtlSpeed | \ref Data::mMotorCtlCurrent | \ref Data::mPWMDutyCycle | + | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | #1:(S32) | #2:(F32) | #3:(F32) | #4:(F32) | #5:(F32) | #6:(F32) | #7:(F32) | #8:(F32) | + |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: |:--: |:--: |:--: |:--: |:--: |:--: |:--: |:--: | + |0x0500| 0x040 | 7 | 1 Hz | N | HD | All | Blood Flow Data | \ref Data::mFlowSetPoint | \ref Data::mMeasuredFlow | \ref Data::mRotorSpeed | \ref Data::mMotorSpeed | \ref Data::mMotorCtlSpeed | \ref Data::mMotorCtlCurrent | \ref Data::mPWMDutyCycle | \ref Data::mSigStrenght | :param vFlowSetPt: (signed int) Flow Set Point :param vMeasFlow: (float) Measured Flow @@ -762,6 +762,7 @@ :param vMCSpd: (float) MC Speed :param vMCCurr: (float) MC Current :param vPWM: (float) PWM + :param vSigStrength: (float) Signal strength in percent :return: None """ @@ -772,20 +773,21 @@ payload += float_to_bytearray(vMCSpd) payload += float_to_bytearray(vMCCurr) payload += float_to_bytearray(vPWM) + payload += float_to_bytearray(vSigStrength) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_sync_broadcast_ch_id, message_id=MsgIds.MSG_ID_BLOOD_FLOW_DATA.value, payload=payload) self.can_interface.send(message, 0) - def cmd_set_treatment_dialysate_flow_rate(self, vFlowSetPt, vMeasFlow, vRotSpd, vMotSpd, vMCSpd, vMCCurr, vPWM): + def cmd_set_treatment_dialysate_flow_rate(self, vFlowSetPt, vMeasFlow, vRotSpd, vMotSpd, vMCSpd, vMCCurr, vPWM, vSigStrength): """ The Dialysate Flow Data message setter/sender method - | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | #1:(S32) | #2:(F32) | #3:(F32) | #4:(F32) | #5:(F32) | #6:(F32) | #7:(F32) | - |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: |:--: |:--: |:--: |:--: |:--: |:--: |:--: | - |0x0800| 0x040 | 7 | 1 Hz | N | HD | All | Dialysate Flow Data | mFlowSetPoint | mMeasuredFlow | mRotorSpeed | mMotorSpeed | mMotorCtlSpeed | mMotorCtlCurrent | mPWMDutyCycle | + | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | #1:(S32) | #2:(F32) | #3:(F32) | #4:(F32) | #5:(F32) | #6:(F32) | #7:(F32) | #8:(F32) | + |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: |:--: |:--: |:--: |:--: |:--: |:--: |:--: |:--: | + |0x0800| 0x040 | 7 | 1 Hz | N | HD | All | Dialysate Flow Data | mFlowSetPoint | mMeasuredFlow | mRotorSpeed | mMotorSpeed | mMotorCtlSpeed | mMotorCtlCurrent | mPWMDutyCycle | \ref Data::mSigStrenght | :param vFlowSetPt: (signed int) Flow Set Point :param vMeasFlow: (float) Measured Flow @@ -794,6 +796,7 @@ :param vMCSpd: (float) MC Speed :param vMCCurr: (float) MC Current :param vPWM: (float) PWM + :param vSigStrength: (float) Signal strength in percent :return: None """ @@ -804,6 +807,7 @@ payload += float_to_bytearray(vMCSpd) payload += float_to_bytearray(vMCCurr) payload += float_to_bytearray(vPWM) + payload += float_to_bytearray(vSigStrength) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_sync_broadcast_ch_id, message_id=MsgIds.MSG_ID_DIALYSATE_FLOW_DATA.value, @@ -1705,3 +1709,154 @@ self.can_interface.send(message, 0) + def cmd_send_acccelerometer_hd_data(self, vX, vY, vZ, vXMax, vYMax, vZMax, vXTilt, vYTilt, vZTilt ): + """ + the acccelerometer hd data message method + | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | + |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: | + |0x3300| 0x040 | 7 | 1Hz | N | HD | UI | HD Accelerometer data | + + | #1:(F32) | #2:(F32) | #3:(U32) | + |:--: |:--: |:--: | + | \ref Data::mX | \ref Data::mY | \ref Data::mX | + + | #4:(F32) | #5:(F32) | #6:(U32) | + |:--: |:--: |:--: | + | \ref Data::mXMax | \ref Data::mYMax | \ref Data::mXMax | + + | #7:(F32) | #8:(F32) | #9:(U32) | + |:--: |:--: |:--: | + | \ref Data::mXTilt | \ref Data::mYTilt | \ref Data::mXTilt | + + :param vX: x axis + :param vY: y axis + :param vZ: z axis + :param vXMax: x axis max + :param vYMax: y axis max + :param vZMax: z axis max + :param vXTilt: x axis tilt + :param vYTilt: y axis tilt + :param vZTilt: z axis tilt + :return: None + """ + + payload = float_to_bytearray(vX) + payload += float_to_bytearray(vY) + payload += float_to_bytearray(vZ) + payload += float_to_bytearray(vXMax) + payload += float_to_bytearray(vYMax) + payload += float_to_bytearray(vZMax) + payload += float_to_bytearray(vXTilt) + payload += float_to_bytearray(vYTilt) + payload += float_to_bytearray(vZTilt) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, + message_id=MsgIds.MSG_ID_HD_ACCELEROMETER_DATA.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_acccelerometer_dg_data(self, vX, vY, vZ, vXMax, vYMax, vZMax, vXTilt, vYTilt, vZTilt ): + """ + the acccelerometer dg data message method + | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | + |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: | + |0x3400| 0x080 | 8 | 1Hz | N | HD | UI | DG Accelerometer data | + + | #1:(F32) | #2:(F32) | #3:(U32) | + |:--: |:--: |:--: | + | \ref Data::mX | \ref Data::mY | \ref Data::mX | + + | #4:(F32) | #5:(F32) | #6:(U32) | + |:--: |:--: |:--: | + | \ref Data::mXMax | \ref Data::mYMax | \ref Data::mXMax | + + | #7:(F32) | #8:(F32) | #9:(U32) | + |:--: |:--: |:--: | + | \ref Data::mXTilt | \ref Data::mYTilt | \ref Data::mXTilt | + + :param vX: x axis + :param vY: y axis + :param vZ: z axis + :param vXMax: x axis max + :param vYMax: y axis max + :param vZMax: z axis max + :param vXTilt: x axis tilt + :param vYTilt: y axis tilt + :param vZTilt: z axis tilt + :return: None + """ + + payload = float_to_bytearray(vX) + payload += float_to_bytearray(vY) + payload += float_to_bytearray(vZ) + payload += float_to_bytearray(vXMax) + payload += float_to_bytearray(vYMax) + payload += float_to_bytearray(vZMax) + payload += float_to_bytearray(vXTilt) + payload += float_to_bytearray(vYTilt) + payload += float_to_bytearray(vZTilt) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dg_to_ui_ch_id, + message_id=MsgIds.MSG_ID_DG_ACCELEROMETER_DATA.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_version_hd_data(self, vMajor, vMinor, vMicro, vBuild, vFPGA_id, vFPGA_Major, vFPGA_Minor, vFPGA_Lab ): + """ + the hd version response message method + :param vMajor: Major version number + :param vMinor: Minor version number + :param vMicro: Micro version number + :param vBuild: Build version number + :param vFPGA_id: FPGA id version number + :param vFPGA_Major: FPGA Major version number + :param vFPGA_Minor: FPGA Minor version number + :param vFPGA_Lab: FPGA Lab version number + :return: None + """ + + payload = integer_to_bytearray(vMajor) + payload += integer_to_bytearray(vMinor) + payload += integer_to_bytearray(vMicro) + payload += integer_to_bytearray(vBuild) + payload += integer_to_bytearray(vFPGA_id) + payload += integer_to_bytearray(vFPGA_Major) + payload += integer_to_bytearray(vFPGA_Minor) + payload += integer_to_bytearray(vFPGA_Lab) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_to_ui_ch_id, + message_id=MsgIds.MSG_ID_HD_VERSION.value, + payload=payload) + + self.can_interface.send(message, 0) + + def cmd_send_version_dg_data(self, vMajor, vMinor, vMicro, vBuild, vFPGA_id, vFPGA_Major, vFPGA_Minor, vFPGA_Lab ): + """ + the dg version response message method + :param vMajor: Major version number + :param vMinor: Minor version number + :param vMicro: Micro version number + :param vBuild: Build version number + :param vFPGA_id: FPGA id version number + :param vFPGA_Major: FPGA Major version number + :param vFPGA_Minor: FPGA Minor version number + :param vFPGA_Lab: FPGA Lab version number + :return: None + """ + + payload = integer_to_bytearray(vMajor) + payload += integer_to_bytearray(vMinor) + payload += integer_to_bytearray(vMicro) + payload += integer_to_bytearray(vBuild) + payload += integer_to_bytearray(vFPGA_id) + payload += integer_to_bytearray(vFPGA_Major) + payload += integer_to_bytearray(vFPGA_Minor) + payload += integer_to_bytearray(vFPGA_Lab) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dg_to_ui_ch_id, + message_id=MsgIds.MSG_ID_DG_VERSION.value, + payload=payload) + + self.can_interface.send(message, 0)