Index: firmware/App/Controllers/Switches.c =================================================================== diff -u -r901c8ee0edeef9c09ff74f8f5866aa0277ef8f33 -r73c7fed62a1ca2e4c3cc020a0d5f012c5128e592 --- firmware/App/Controllers/Switches.c (.../Switches.c) (revision 901c8ee0edeef9c09ff74f8f5866aa0277ef8f33) +++ firmware/App/Controllers/Switches.c (.../Switches.c) (revision 73c7fed62a1ca2e4c3cc020a0d5f012c5128e592) @@ -13,9 +13,6 @@ // ********** private definitions ********** #define SWITCHES_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the switches data is published on the CAN bus. -#define FLUID_DOOR_SWITCH_BIT_MASK 0x08 ///< Fluid door switch bit mask. -#define DIALYSATE_CAP_SWITCH_BIT_MASK 0x10 ///< Dialysate cap switch bit mask. -#define CONCENTRATE_CAP_SWITCH_BIT_MASK 0x1A ///< Concentrate cap switch bit mask. #define SWITCHES_FPGA_STATUS_CHECK_INTERVAL ( MS_PER_SECOND / ( 5 * TASK_GENERAL_INTERVAL ) ) ///< Switches FPGA status check interval. // ********** private data ********** @@ -56,20 +53,18 @@ /*********************************************************************//** * @brief * The execSwitches function executes the switches executive. - * @details Inputs: switchStatus - * @details Outputs: switchStatus + * @details Inputs: switchesFPGAStatusCheckCounter + * @details Outputs: switchStatus, switchesFPGAStatusCheckCounter * @return none *************************************************************************/ void execSwitches( void ) { if ( ++switchesFPGAStatusCheckCounter > SWITCHES_FPGA_STATUS_CHECK_INTERVAL ) { - U08 fpgaRegister = getFPGAGPIOCount(); + switchStatus[ CONCENTRATE_CAP ].data = (U32)( getFPGAGFluidDoorStatus() != 0 ? OPEN : CLOSED); // TODO change the logic orientation? + switchStatus[ DIALYSATE_CAP ].data = (U32)( getFPGADialysateCapStatus() != 0 ? OPEN : CLOSED); + switchStatus[ FLUID_DOOR ].data = (U32)( getFPGAConcentrateCapStatus() != 0 ? OPEN : CLOSED); - switchStatus[ CONCENTRATE_CAP ].data = (U32)( fpgaRegister & CONCENTRATE_CAP_SWITCH_BIT_MASK > 0 ? OPEN : CLOSED); - switchStatus[ DIALYSATE_CAP ].data = (U32)( fpgaRegister & DIALYSATE_CAP_SWITCH_BIT_MASK > 0 ? OPEN : CLOSED); - switchStatus[ FLUID_DOOR ].data = (U32)( fpgaRegister & FLUID_DOOR_SWITCH_BIT_MASK > 0 ? OPEN : CLOSED); - switchesFPGAStatusCheckCounter = 0; } @@ -146,7 +141,11 @@ return result; } +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + /*********************************************************************//** * @brief * The testSetSwitchesDataPublishIntervalOverride function overrides @@ -221,11 +220,7 @@ return result; } -/************************************************************************* - * TEST SUPPORT FUNCTIONS - *************************************************************************/ - /*********************************************************************//** * @brief * The testResetSwitchesStatusOverride function resets the override Index: firmware/App/Services/FPGA.c =================================================================== diff -u -rc55d371408bdf962de525a47bc8541d5b43414a3 -r73c7fed62a1ca2e4c3cc020a0d5f012c5128e592 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision c55d371408bdf962de525a47bc8541d5b43414a3) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 73c7fed62a1ca2e4c3cc020a0d5f012c5128e592) @@ -79,6 +79,11 @@ #define FPGA_FLUIDLEAK_STATE_MASK 0x0004 ///< Bit mask for fluid leak detector. +#define FLUID_DOOR_SWITCH_MASK 0x08 ///< Fluid door switch bit mask. +#define DIALYSATE_CAP_SWITCH_MASK 0x10 ///< Dialysate cap switch bit mask. +#define CONCENTRATE_CAP_SWITCH_MASK 0x1A ///< Concentrate cap switch bit mask. +#define FPGA_POWER_STATUS_MASK 0x40 ///< FPGA power status bit mask. + // FPGA header struct. #pragma pack(push,1) typedef struct @@ -1833,14 +1838,53 @@ /*********************************************************************//** * @brief - * The getFPGAGPIOCount function gets the FPGA GPIO register. + * The getFPGAGFluidDoorStatus function gets the FPGA fluid door status + * bit. * @details Inputs: fpgaSensorReadings * @details Outputs: none - * @return FPGA GPIO register value + * @return fluid door status bit *************************************************************************/ -U08 getFPGAGPIOCount( void ) +U08 getFPGAGFluidDoorStatus( void ) { - return fpgaSensorReadings.fpgaGPIO; + return ( fpgaSensorReadings.fpgaGPIO & FLUID_DOOR_SWITCH_MASK ); } +/*********************************************************************//** + * @brief + * The getFPGADialysateCapStatus function gets the FPGA dialysate cap status + * bit. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return dialysate cap status bit + *************************************************************************/ +U08 getFPGADialysateCapStatus( void ) +{ + return ( fpgaSensorReadings.fpgaGPIO & DIALYSATE_CAP_SWITCH_MASK ); +} + +/*********************************************************************//** + * @brief + * The getFPGAConcentrateCapStatus function gets the FPGA concentrate cap + * status bit. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return concentrate cap status bit + *************************************************************************/ +U08 getFPGAConcentrateCapStatus( void ) +{ + return ( fpgaSensorReadings.fpgaGPIO & CONCENTRATE_CAP_SWITCH_MASK ); +} + +/*********************************************************************//** + * @brief + * The getFPGAPowerStatus function gets the FPGA power status bit. + * @details Inputs: fpgaSensorReadings + * @details Outputs: none + * @return FPGA power status bit + *************************************************************************/ +U08 getFPGAPowerStatus( void ) +{ + return ( fpgaSensorReadings.fpgaGPIO & FPGA_POWER_STATUS_MASK ); +} + /**@}*/ Index: firmware/App/Services/FPGA.h =================================================================== diff -u -rc55d371408bdf962de525a47bc8541d5b43414a3 -r73c7fed62a1ca2e4c3cc020a0d5f012c5128e592 --- firmware/App/Services/FPGA.h (.../FPGA.h) (revision c55d371408bdf962de525a47bc8541d5b43414a3) +++ firmware/App/Services/FPGA.h (.../FPGA.h) (revision 73c7fed62a1ca2e4c3cc020a0d5f012c5128e592) @@ -134,8 +134,12 @@ BOOL noFPGAFluidLeakDetected( void ); -U08 getFPGAGPIOCount( void ); +U08 getFPGAGFluidDoorStatus( void ); +U08 getFPGADialysateCapStatus( void ); +U08 getFPGAConcentrateCapStatus( void ); +U08 getFPGAPowerStatus( void ); + /**@}*/ #endif Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rc55d371408bdf962de525a47bc8541d5b43414a3 -r73c7fed62a1ca2e4c3cc020a0d5f012c5128e592 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision c55d371408bdf962de525a47bc8541d5b43414a3) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision 73c7fed62a1ca2e4c3cc020a0d5f012c5128e592) @@ -1231,7 +1231,7 @@ memcpy( payloadPtr, switchesData, sizeof( SWITCHES_DATA_T ) ); // serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer - result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_DG_2_UI, ACK_NOT_REQUIRED ); + result = serializeMessage( msg, COMM_BUFFER_OUT_CAN_DG_BROADCAST, ACK_NOT_REQUIRED ); return result; }