Index: firmware/App/Controllers/AirPump.c =================================================================== diff -u -r7e5ca49a3c7862c1650eebff83224f8a5e5912d8 -r52c71d1f7ca375d7d08829a92ccf3f6363fe22a2 --- firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision 7e5ca49a3c7862c1650eebff83224f8a5e5912d8) +++ firmware/App/Controllers/AirPump.c (.../AirPump.c) (revision 52c71d1f7ca375d7d08829a92ccf3f6363fe22a2) @@ -234,6 +234,8 @@ data.h12State = getAirPumpState(); data.h12Power = currentAirPumpPowerLevel; data.h12Rpm = (U32)currentAirPumpRPM; + //TODO:remove after validating pump speed + data.fpgah12Rpm = getH12AirPumpMotorRPM(); broadcastData( MSG_ID_TD_AIR_PUMP_DATA, COMM_BUFFER_OUT_CAN_TD_BROADCAST, (U08*)&data, sizeof( AIR_PUMP_PAYLOAD_T ) ); airPumpDataPublicationTimerCounter = 0; Index: firmware/App/Controllers/AirPump.h =================================================================== diff -u -r7e5ca49a3c7862c1650eebff83224f8a5e5912d8 -r52c71d1f7ca375d7d08829a92ccf3f6363fe22a2 --- firmware/App/Controllers/AirPump.h (.../AirPump.h) (revision 7e5ca49a3c7862c1650eebff83224f8a5e5912d8) +++ firmware/App/Controllers/AirPump.h (.../AirPump.h) (revision 52c71d1f7ca375d7d08829a92ccf3f6363fe22a2) @@ -40,6 +40,8 @@ U32 h12State; ///< Air pump state status F32 h12Power; ///< Air pump power level setting in duty cycle percentage U32 h12Rpm; ///< Air pump speed in RPM. + //TODO: remove after validating air pump speed + U32 fpgah12Rpm; ///< Air pump fpga speed in RPM. } AIR_PUMP_PAYLOAD_T; #pragma pack(pop) Index: firmware/App/Controllers/AirTrap.c =================================================================== diff -u -rf48a62ac25425ea9f3b49bec3ef5a538a7834a11 -r52c71d1f7ca375d7d08829a92ccf3f6363fe22a2 --- firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision f48a62ac25425ea9f3b49bec3ef5a538a7834a11) +++ firmware/App/Controllers/AirTrap.c (.../AirTrap.c) (revision 52c71d1f7ca375d7d08829a92ccf3f6363fe22a2) @@ -43,18 +43,14 @@ #define AIR_PUMP_ON_DELAY_TIME_MS ( 10 * MS_PER_SECOND ) ///< Delay between air pump On (in ms). #define AIR_PUMP_STOP_TIME_MS ( 1 * MS_PER_SECOND ) ///< Maximum air pump turn on time -//#define AIR_PUMP_ON_ERROR_MAX_CNT 6 ///< Maximum number of air pump on events within time window before alarm triggered. Do not exceed MAX_TIME_WINDOWED_COUNT. -//#define AIR_PUMP_ON_ERROR_TIME_WIN_MS ( 60 * MS_PER_SECOND ) ///< Time window for Air Pump on count error. #define AIR_TRAP_ILLEGAL_LEVELS_TIMEOUT_MS ( 2 * MS_PER_SECOND ) ///< Air trap illegal values timeout (in ms) #define DATA_PUBLISH_COUNTER_START_COUNT 7 ///< Data publish counter start count. /// Air pump on delay after fill adjustment static const U32 AIR_PUMP_ON_DELAY_ADJUST_AFTER_FILL = ( AIR_PUMP_ON_DELAY_TIME_MS - ( 1 * MS_PER_SECOND ) ); -#define AIR_PUMP_MOTOR_FILL_PWM 58.8F ///< Power level setting (PWM) in percentage for H12 air pump to fill (raise level) the air trap. -#define AIR_PUMP_MOTOR_LOWER_PWM 23.5F ///< Power level setting (PWM) in percentage for H12 air pump to lower the level of the air trap. -#define AIR_PUMP_MOTOR_MIN_PWM_OVERRIDE 60 ///< Air pump motor minimum PWM to override. -#define AIR_PUMP_MOTOR_MAX_PWM_OVERRIDE 250 ///< Air pump motor maximum PWM to override. +#define AIR_PUMP_MOTOR_FILL_PWM 60.0F ///< Power level setting (PWM) in percentage for H12 air pump to fill (raise level) the air trap. +#define AIR_PUMP_MOTOR_LOWER_PWM 24.0F ///< Power level setting (PWM) in percentage for H12 air pump to lower the level of the air trap. /// LDT-2384 test formula for air trap lower events for air pump duty cycle based on venous pressure /// air pump duty cycle (% PWM) = 0.0002x^2 + 0.0925x + 25.467, where x is long filtered (60 sec) H14 venous pressure in mmHg before air trap lower event #define QUADRATIC_COEFFICIENT 0.0002F ///< X2 quadratic coefficient Index: firmware/App/Drivers/GLXferPump.c =================================================================== diff -u -re6831fb6922ce22771e28b9c13dc2a9145c35ee6 -r52c71d1f7ca375d7d08829a92ccf3f6363fe22a2 --- firmware/App/Drivers/GLXferPump.c (.../GLXferPump.c) (revision e6831fb6922ce22771e28b9c13dc2a9145c35ee6) +++ firmware/App/Drivers/GLXferPump.c (.../GLXferPump.c) (revision 52c71d1f7ca375d7d08829a92ccf3f6363fe22a2) @@ -63,7 +63,7 @@ * @details \b Message \b Sent: MSG_ID_TD_EVENT if changing air pump power level. * @details \b Inputs: none * @details \b Outputs: currentAirPumpMotorPowerLevel - * @param power Power level for air pump (0..2=off, 3..100=lower to higher power level). + * @param power Power level for air pump (0=off, 1..100=lower to higher power level). * @return none. *************************************************************************/ void setAirPumpMotorPower( F32 power ) @@ -111,7 +111,7 @@ } else { - realRPM = ( ( ( F32 )AIR_PUMP_RPM_FACTOR ) / ( F32 )( fpgaRPM * 1e-6 ) ); + realRPM = ( ( ( F32 )AIR_PUMP_RPM_FACTOR ) / ( F32 )( fpgaRPM * 1e-6F ) ); } return ( U16 )realRPM; @@ -132,8 +132,8 @@ // Clamp input to 0-100% power = RANGE( percentage, AIR_PUMP_DUTY_CYCLE_MIN, AIR_PUMP_DUTY_CYCLE_MAX ); - // Calculate 0-250 value (250 * power / 100) - return (U08)( ceilf ( ( ( power * (F32)AIR_PUMP_MAX_PWM ) / FRACTION_TO_PERCENT_FACTOR ) ) ); + // Calculate 0-250 scalar value = ( power / 100 ) * 250 + return (U08)( ceilf ( ( ( power / FRACTION_TO_PERCENT_FACTOR ) / (F32)AIR_PUMP_MAX_PWM ) ) ); }