Index: firmware/App/Services/FPGA.c =================================================================== diff -u -ra7bf3ca23ea37a61000379facae628a31b3ecc59 -r5cfa1f3d17db625f92f046868812717e3f1f51c3 --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision a7bf3ca23ea37a61000379facae628a31b3ecc59) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 5cfa1f3d17db625f92f046868812717e3f1f51c3) @@ -44,7 +44,7 @@ #define FPGA_HEADER_START_ADDR 0x0000 #define FPGA_BULK_READ_START_ADDR 0x0100 -#define FPGA_BULK_WRITE_START_ADDR 0x000C +#define FPGA_BULK_WRITE_START_ADDR 0x000E #define FPGA_WRITE_CMD_BUFFER_LEN (FPGA_PAGE_SIZE+8) #define FPGA_READ_CMD_BUFFER_LEN 8 @@ -432,7 +432,7 @@ default: if ( fpgaState >= NUM_OF_FPGA_STATES ) { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_FPGA_INVALID_IN_STATE, fpgaState ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_FPGA_INVALID_IN_STATE, fpgaState ) } else { @@ -482,7 +482,7 @@ default: if ( fpgaState >= NUM_OF_FPGA_STATES ) { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_FPGA_INVALID_OUT_STATE, fpgaState ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_FPGA_INVALID_OUT_STATE, fpgaState ) } else { @@ -601,21 +601,25 @@ memcpy( &( fpgaWriteCmdBuffer[ FPGA_WRITE_CMD_HDR_LEN ] ), &fpgaActuatorSetPoints, sizeof( FPGA_ACTUATORS_T ) ); crc = crc16( fpgaWriteCmdBuffer, FPGA_WRITE_CMD_HDR_LEN + sizeof( FPGA_ACTUATORS_T ) ); fpgaWriteCmdBuffer[ FPGA_WRITE_CMD_HDR_LEN + sizeof( FPGA_ACTUATORS_T ) ] = GET_MSB_OF_WORD( crc ); - fpgaWriteCmdBuffer[ FPGA_WRITE_CMD_HDR_LEN + sizeof( FPGA_ACTUATORS_T ) + 1 ] = GET_LSB_OF_WORD( crc ); + fpgaWriteCmdBuffer[ FPGA_WRITE_CMD_HDR_LEN + sizeof( FPGA_ACTUATORS_T ) + 1 ] = GET_LSB_OF_WORD( crc ); + // construct bulk read command to read sensor data registers starting at address 8 fpgaReadCmdBuffer[ 0 ] = FPGA_READ_CMD_CODE; fpgaReadCmdBuffer[ 1 ] = GET_LSB_OF_WORD( FPGA_BULK_READ_START_ADDR ); fpgaReadCmdBuffer[ 2 ] = GET_MSB_OF_WORD( FPGA_BULK_READ_START_ADDR ); fpgaReadCmdBuffer[ 3 ] = sizeof(DG_FPGA_SENSORS_T); crc = crc16( fpgaReadCmdBuffer, FPGA_READ_CMD_HDR_LEN ); fpgaReadCmdBuffer[ 4 ] = GET_MSB_OF_WORD( crc ); - fpgaReadCmdBuffer[ 5 ] = GET_LSB_OF_WORD( crc ); + fpgaReadCmdBuffer[ 5 ] = GET_LSB_OF_WORD( crc ); + // prep DMA for sending the bulk write cmd and receiving its response setupDMAForWriteCmd( FPGA_WRITE_CMD_HDR_LEN + sizeof( FPGA_ACTUATORS_T ) + FPGA_CRC_LEN ); - setupDMAForWriteResp( FPGA_WRITE_RSP_HDR_LEN + FPGA_CRC_LEN ); + setupDMAForWriteResp( FPGA_WRITE_RSP_HDR_LEN + FPGA_CRC_LEN ); + // prep DMA for sending the bulk read cmd and receiving its response setupDMAForReadCmd( FPGA_READ_CMD_HDR_LEN + FPGA_CRC_LEN ); - setupDMAForReadResp( FPGA_READ_RSP_HDR_LEN + sizeof( DG_FPGA_SENSORS_T ) + FPGA_CRC_LEN ); + setupDMAForReadResp( FPGA_READ_RSP_HDR_LEN + sizeof( DG_FPGA_SENSORS_T ) + FPGA_CRC_LEN ); + // set fpga comm flags for bulk write cmd and follow-up bulk read command fpgaWriteCommandInProgress = TRUE; fpgaBulkWriteAndReadInProgress = TRUE; @@ -735,7 +739,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_FPGA_WRITE_CMD_TOO_MUCH_DATA, bytes2Transmit ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_FPGA_WRITE_CMD_TOO_MUCH_DATA, bytes2Transmit ) } } @@ -775,7 +779,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_FPGA_WRITE_RSP_TOO_MUCH_DATA, bytes2Receive ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_FPGA_WRITE_RSP_TOO_MUCH_DATA, bytes2Receive ) } } @@ -815,7 +819,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_FPGA_READ_CMD_TOO_MUCH_DATA, bytes2Transmit ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_FPGA_READ_CMD_TOO_MUCH_DATA, bytes2Transmit ) } } @@ -855,7 +859,7 @@ } else { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_SOFTWARE_FAULT, SW_FAULT_ID_FPGA_READ_RSP_TOO_MUCH_DATA, bytes2Receive ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_FPGA_READ_RSP_TOO_MUCH_DATA, bytes2Receive ) } } @@ -1385,4 +1389,92 @@ U16 getFPGATrimmerColdJunctionTemp ( void ) { return fpgaSensorReadings.fpgaTrimmerHeaterIntJunctionTemp; -} +} + +/************************************************************************* + * @brief + * The getFPGACPiReadCount function gets inlet water conductivity sensor + * read count + * @details + * Inputs : fpgaSensorReadings.fpgaCPiReadCnt + * Outputs : none + * @param none + * @return Last inlet water conductivity sensor read count + *************************************************************************/ +U08 getFPGACPiReadCount ( void ) +{ + return fpgaSensorReadings.fpgaCPiReadCnt; +} + +/************************************************************************* + * @brief + * The getFPGACPiErrorCount function gets inlet water conductivity sensor + * error count + * @details + * Inputs : fpgaSensorReadings.fpgaCPiErrorCnt + * Outputs : none + * @param none + * @return Inlet water conductivity sensor read error count + *************************************************************************/ +U08 getFPGACPiErrorCount ( void ) +{ + return fpgaSensorReadings.fpgaCPiErrorCnt; +} + +/************************************************************************* + * @brief + * The getFPGACPi function gets inlet water conductivity value + * @details + * Inputs : fpgaSensorReadings.fpgaCPi + * Outputs : none + * @param none + * @return Last inlet water conductivity value + *************************************************************************/ +U32 getFPGACPi ( void ) +{ + return fpgaSensorReadings.fpgaCPi; +} + +/************************************************************************* + * @brief + * The getFPGACPoReadCount function gets outlet water conductivity sensor + * read count + * @details + * Inputs : fpgaSensorReadings.fpgaCPoReadCnt + * Outputs : none + * @param none + * @return Last outlet water conductivity sensor read count + *************************************************************************/ +U08 getFPGACPoReadCount ( void ) +{ + return fpgaSensorReadings.fpgaCPoReadCnt; +} + +/************************************************************************* + * @brief + * The getFPGACPoErrorCount function gets outlet water conductivity sensor + * error count + * @details + * Inputs : fpgaSensorReadings.fpgaCPoErrorCnt + * Outputs : none + * @param none + * @return Outlet water conductivity sensor read error count + *************************************************************************/ +U08 getFPGACPoErrorCount ( void ) +{ + return fpgaSensorReadings.fpgaCPoErrorCnt; +} + +/************************************************************************* + * @brief + * The getFPGACPo function gets outlet water conductivity value + * @details + * Inputs : fpgaSensorReadings.fpgaCPo + * Outputs : none + * @param none + * @return Last Outlet water conductivity value + *************************************************************************/ +U32 getFPGACPo ( void ) +{ + return fpgaSensorReadings.fpgaCPo; +}