Index: firmware/App/Drivers/BloodLeakDriver.c =================================================================== diff -u -rb2436685ec42e879781b0bc1348ba80f333196bb -ra05a0eb6d5aa38f5d026b9049a6284282e192172 --- firmware/App/Drivers/BloodLeakDriver.c (.../BloodLeakDriver.c) (revision b2436685ec42e879781b0bc1348ba80f333196bb) +++ firmware/App/Drivers/BloodLeakDriver.c (.../BloodLeakDriver.c) (revision a05a0eb6d5aa38f5d026b9049a6284282e192172) @@ -91,68 +91,8 @@ #define BLOOD_LEAK_FPGA_ERROR_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Blood leak embedded mode FPGA error timeout in milliseconds. #define BLOOD_LEAK_RXFIFO_COUNT_MASK 0x03FF ///< Mask high order bits of blood leak sensor rx count. +#define COMM_BUFFER_OUT_CAN_PC 15 -typedef enum BloodLeakStates -{ - BLOOD_LEAK_WAIT_FOR_POST_STATE = 0, ///< Blood leak wait for post state. - BLOOD_LEAK_CHECK_SET_POINT_STATE, ///< Blood leak check set point state. - BLOOD_LEAK_INIT_STATE, ///< Blood leak init state. - BLOOD_LEAK_CHECK_ZERO_AND_SELF_TEST_STATE, ///< Blood leak check for zero and self test commands state. - BLOOD_LEAK_VERIFY_INTENSITY_AFTER_ZEROING_STATE, ///< Blood leak verify intensity after zeroing state. - BLOOD_LEAK_NORMAL_STATE, ///< Blood leak normal state. - BLOOD_LEAK_RECOVER_BLOOD_DETECT_STATE, ///< Blood leak recover blood detect state. - NUM_OF_BLOOD_LEAK_STATES ///< Number of blood leak detector states. -} BLOOD_LEAK_STATE_T; - -/// Defined embedded states -typedef enum EmbStates -{ - BLOOD_LEAK_EMB_MODE_WAIT_FOR_COMAND_STATE = 0, ///< Blood leak embedded mode state wait for command state. - BLOOD_LEAK_EMB_MODE_SEND_COMMAND_STATE, ///< Blood leak embedded mode state send command state. - BLOOD_LEAK_EMB_MODE_WAIT_FOR_COMMAND_RESPONSE_STATE, ///< Blood leak embedded mode state wait for command response state. - NUM_OF_BLOOD_LEAK_EMB_MODE_STATES ///< Number of blood leak embedded mode states. -} BLOOD_LEAK_EMB_MODE_STATE_T; - -/// Blood leak detector embedded mode commands -typedef enum EmbCommands -{ - NU_EMB_MODE_CMD = 0, ///< Null command. - CS_EMB_MODE_CMD, ///< Control S command to switch to embedded mode. - SP_EMB_MODE_CMD, ///< Set point command to set the set point. - T_EMB_MODE_CMD, ///< Self test command. - G_EMB_MODE_CMD, ///< Get self test command. - I_EMB_MODE_CMD, ///< Intensity command. - V_EMB_MODE_CMD, ///< Blood detection level command. - Z_EMB_MODE_CMD, ///< Zero sensor command. - Q_EMB_MODE_CMD, ///< Zero sensor confirm command. - D_EMB_MODE_CMD, ///< Display blood detection command. - C_EMB_MODE_CMD, ///< Calibration sensor command. - NUM_OF_EMB_CMDS, ///< Number of embedded mode commands. -} BLOOD_LEAK_EMB_MODE_CMD_T; - -#pragma pack(push,1) -/// Embedded mode commands specifications -typedef struct -{ - U08 commandASCII; ///< Blood leak sensor command ID number in ASCII. - U08 expChar1; ///< Blood leak sensor expected response in character. - U08 expChar2; ///< Blood leak sensor expected response in character. - U32 length; ///< Blood leak sensor expected response length in bytes. - U32 timeoutMS; ///< Blood leak sensor receive timeout in milliseconds. - U32 commandResp; ///< Blood leak sensor command response back. - U08 commandRqstCount; ///< Blood leak sensor command request count. - BOOL isCmdRespRdy; ///< Blood leak sensor is command response ready flag. -} EMB_MODE_CMD_T; - -/// Blood leak embedded mode response command structure -typedef struct -{ - U08 command; ///< Blood leak command. - U32 responseLen; ///< Blood leak response length. - U08 responseBuffer[ BLOOD_LEAK_EMB_MODE_RESP_BUFFER_LEN ]; ///< Blood leak response buffer. -} BLOOD_LEAK_EMB_MODE_RESP_T; -#pragma pack(pop) - // ********** private data ********** static BLOOD_LEAK_STATE_T bloodLeakState; static U32 bloodLeakUARTCmdIndex; Index: firmware/App/Monitors/BloodLeak.c =================================================================== diff -u -rb2436685ec42e879781b0bc1348ba80f333196bb -ra05a0eb6d5aa38f5d026b9049a6284282e192172 --- firmware/App/Monitors/BloodLeak.c (.../BloodLeak.c) (revision b2436685ec42e879781b0bc1348ba80f333196bb) +++ firmware/App/Monitors/BloodLeak.c (.../BloodLeak.c) (revision a05a0eb6d5aa38f5d026b9049a6284282e192172) @@ -107,60 +107,6 @@ #define BLD_UPPER_INTENSITY_INTERVAL_MS ( 30 * SEC_PER_MIN * MS_PER_SECOND ) ///< Blood leak upper drift interval in milliseconds. #define BLD_ZERO_UPPER_RANGE_DRIFT_TIMEOUT_MS ( 60 * MS_PER_SECOND ) ///< Blood leak zero upper range drift timeout in milliseconds. -// Defined states for the blood leak detector state machine. -typedef enum BloodLeakStates -{ - BLOOD_LEAK_WAIT_FOR_POST_STATE = 0, ///< Blood leak wait for post state. - BLOOD_LEAK_CHECK_SET_POINT_STATE, ///< Blood leak check set point state. - BLOOD_LEAK_INIT_STATE, ///< Blood leak init state. - BLOOD_LEAK_CHECK_ZERO_AND_SELF_TEST_STATE, ///< Blood leak check for zero and self test commands state. - BLOOD_LEAK_VERIFY_INTENSITY_AFTER_ZEROING_STATE, ///< Blood leak verify intensity after zeroing state. - BLOOD_LEAK_NORMAL_STATE, ///< Blood leak normal state. - BLOOD_LEAK_RECOVER_BLOOD_DETECT_STATE, ///< Blood leak recover blood detect state. - NUM_OF_BLOOD_LEAK_STATES ///< Number of blood leak detector states. -} BLOOD_LEAK_STATE_T; - -/// Defined embedded states -typedef enum EmbStates -{ - BLOOD_LEAK_EMB_MODE_WAIT_FOR_COMAND_STATE = 0, ///< Blood leak embedded mode state wait for command state. - BLOOD_LEAK_EMB_MODE_SEND_COMMAND_STATE, ///< Blood leak embedded mode state send command state. - BLOOD_LEAK_EMB_MODE_WAIT_FOR_COMMAND_RESPONSE_STATE, ///< Blood leak embedded mode state wait for command response state. - NUM_OF_BLOOD_LEAK_EMB_MODE_STATES ///< Number of blood leak embedded mode states. -} BLOOD_LEAK_EMB_MODE_STATE_T; - -/// Blood leak detector embedded mode commands -typedef enum EmbCommands -{ - NU_EMB_MODE_CMD = 0, ///< Null command. - CS_EMB_MODE_CMD, ///< Control S command to switch to embedded mode. - SP_EMB_MODE_CMD, ///< Set point command to set the set point. - T_EMB_MODE_CMD, ///< Self test command. - G_EMB_MODE_CMD, ///< Get self test command. - I_EMB_MODE_CMD, ///< Intensity command. - V_EMB_MODE_CMD, ///< Blood detection level command. - Z_EMB_MODE_CMD, ///< Zero sensor command. - Q_EMB_MODE_CMD, ///< Zero sensor confirm command. - D_EMB_MODE_CMD, ///< Display blood detection command. - C_EMB_MODE_CMD, ///< Calibration sensor command. - NUM_OF_EMB_CMDS, ///< Number of embedded mode commands. -} BLOOD_LEAK_EMB_MODE_CMD_T; - -#pragma pack(push,1) -/// Embedded mode commands specifications -typedef struct -{ - U08 commandASCII; ///< Blood leak sensor command ID number in ASCII. - U08 expChar1; ///< Blood leak sensor expected response in character. - U08 expChar2; ///< Blood leak sensor expected response in character. - U32 length; ///< Blood leak sensor expected response length in bytes. - U32 timeoutMS; ///< Blood leak sensor receive timeout in milliseconds. - U32 commandResp; ///< Blood leak sensor command response back. - U08 commandRqstCount; ///< Blood leak sensor command request count. - BOOL isCmdRespRdy; ///< Blood leak sensor is command response ready flag. -} EMB_MODE_CMD_T; -#pragma pack(pop) - /// Blood leak zeroing status data structure typedef struct { @@ -1057,7 +1003,7 @@ response.responseLen = responseLen; memcpy( response.responseBuffer, responseBuffer, responseLen ); - result = sendMessage( MSG_ID_DD_SEND_BLOOD_LEAK_EMB_MODE_RESPONSE, COMM_BUFFER_OUT_CAN_PC, (U08*)&response, sizeof( BLOOD_LEAK_EMB_MODE_RESP_T ) ); + result = sendMessage( MSG_ID_DD_SEND_BLOOD_LEAK_EMB_MODE_RESPONSE, COMM_BUFFER_OUT_DD_CAN_PC, (U08*)&response, sizeof( BLOOD_LEAK_EMB_MODE_RESP_T ) ); return result; } Index: firmware/App/Monitors/BloodLeak.h =================================================================== diff -u -rb2436685ec42e879781b0bc1348ba80f333196bb -ra05a0eb6d5aa38f5d026b9049a6284282e192172 --- firmware/App/Monitors/BloodLeak.h (.../BloodLeak.h) (revision b2436685ec42e879781b0bc1348ba80f333196bb) +++ firmware/App/Monitors/BloodLeak.h (.../BloodLeak.h) (revision a05a0eb6d5aa38f5d026b9049a6284282e192172) @@ -18,7 +18,6 @@ #ifndef __BLOODLEAK_H__ #define __BLOODLEAK_H__ - #include "DDCommon.h" #include "DDDefs.h" @@ -33,6 +32,77 @@ * @{ */ +// ********** shared definitions (used by monitor + driver) ********** + +/// Enumeration of blood leak detector status. +typedef enum BloodLeakDetectorStatus +{ + BLOOD_LEAK_DETECTED = 0, ///< Blood leak detector senses blood. + BLOOD_LEAK_NOT_DETECTED, ///< Blood leak detector does not sense any blood. + NUM_OF_BLOOD_LEAK_STATUS ///< Number of blood leak detector status. +} BLOOD_LEAK_STATUS_T; + +/// Blood leak main state machine states. +typedef enum BloodLeakStates +{ + BLOOD_LEAK_WAIT_FOR_POST_STATE = 0, + BLOOD_LEAK_CHECK_SET_POINT_STATE, + BLOOD_LEAK_INIT_STATE, + BLOOD_LEAK_CHECK_ZERO_AND_SELF_TEST_STATE, + BLOOD_LEAK_VERIFY_INTENSITY_AFTER_ZEROING_STATE, + BLOOD_LEAK_NORMAL_STATE, + BLOOD_LEAK_RECOVER_BLOOD_DETECT_STATE, + NUM_OF_BLOOD_LEAK_STATES +} BLOOD_LEAK_STATE_T; + +/// Embedded mode internal states. +typedef enum EmbStates +{ + BLOOD_LEAK_EMB_MODE_WAIT_FOR_COMAND_STATE = 0, + BLOOD_LEAK_EMB_MODE_SEND_COMMAND_STATE, + BLOOD_LEAK_EMB_MODE_WAIT_FOR_COMMAND_RESPONSE_STATE, + NUM_OF_BLOOD_LEAK_EMB_MODE_STATES +} BLOOD_LEAK_EMB_MODE_STATE_T; + +/// Blood leak detector embedded mode commands. +typedef enum EmbCommands +{ + NU_EMB_MODE_CMD = 0, + CS_EMB_MODE_CMD, + SP_EMB_MODE_CMD, + T_EMB_MODE_CMD, + G_EMB_MODE_CMD, + I_EMB_MODE_CMD, + V_EMB_MODE_CMD, + Z_EMB_MODE_CMD, + Q_EMB_MODE_CMD, + D_EMB_MODE_CMD, + C_EMB_MODE_CMD, + NUM_OF_EMB_CMDS, +} BLOOD_LEAK_EMB_MODE_CMD_T; + +/// Embedded mode command specifications. +typedef struct +{ + U08 commandASCII; + U08 expChar1; + U08 expChar2; + U32 length; + U32 timeoutMS; + U32 commandResp; + U08 commandRqstCount; + BOOL isCmdRespRdy; +} EMB_MODE_CMD_T; + +/// Embedded mode response message. +typedef struct +{ + U08 command; + U32 responseLen; + U08 responseBuffer[ 5 ]; +} BLOOD_LEAK_EMB_MODE_RESP_T; + + // ********** public function prototypes ********** void initBloodLeak( void ); Index: firmware/App/Services/Messaging.c =================================================================== diff -u -rdb4ababe9942a6c755ffc11d25af50f598e8dba6 -ra05a0eb6d5aa38f5d026b9049a6284282e192172 --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision db4ababe9942a6c755ffc11d25af50f598e8dba6) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision a05a0eb6d5aa38f5d026b9049a6284282e192172) @@ -20,6 +20,7 @@ #include "reg_system.h" #include "BalancingChamber.h" #include "BloodLeak.h" +#include "BloodLeakDriver.h" #include "BoostPump.h" #include "Conductivity.h" #include "Compatible.h"