Index: firmware/App/Services/FPGA.c =================================================================== diff -u -r16dfbeeca1bcf1d2115c2f7549999fdaae0700e9 -r0dec8744af40d0c87a6d7cd1923920c1c2bd1d2f --- firmware/App/Services/FPGA.c (.../FPGA.c) (revision 16dfbeeca1bcf1d2115c2f7549999fdaae0700e9) +++ firmware/App/Services/FPGA.c (.../FPGA.c) (revision 0dec8744af40d0c87a6d7cd1923920c1c2bd1d2f) @@ -1,20 +1,19 @@ -/**********************************************************************//** - * - * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. - * - * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN - * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. - * - * @file FPGA.c - * - * @date 21-Oct-2019 - * @author S. Nash - * - * @brief FPGA interface service module. Provides an interface to the FPGA. \n - * Various sensor readings are gathered and get functions provided for them. \n - * Various actuator settings are sent and set functions provided for them. - * - **************************************************************************/ +/************************************************************************** +* +* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* +* THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +* WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +* +* @file FPGA.c +* +* @author (last) Quang Nguyen +* @date (last) 21-Jul-2020 +* +* @author (original) Dara Navaei +* @date (original) 05-Nov-2019 +* +***************************************************************************/ #include // for memset(), memcpy() @@ -42,10 +41,11 @@ #define FPGA_PAGE_SIZE 256 #define FPGA_EXPECTED_ID 0x60 -#define FPGA_HEADER_START_ADDR 256 // TODO - update these after re-arranging w/ Randy -#define FPGA_BULK_READ_START_ADDR 262 -#define FPGA_BULK_WRITE_START_ADDR 2 +#define FPGA_HEADER_START_ADDR 0x0000 +#define FPGA_BULK_READ_START_ADDR 0x0100 +#define FPGA_BULK_WRITE_START_ADDR 0x000E + #define FPGA_WRITE_CMD_BUFFER_LEN (FPGA_PAGE_SIZE+8) #define FPGA_READ_CMD_BUFFER_LEN 8 #define FPGA_WRITE_RSP_BUFFER_LEN 8 @@ -75,81 +75,87 @@ #pragma pack(push,1) typedef struct { - U08 fpgaId; - U08 fpgaRev; + U08 fpgaId; ///< Reg 0. FPGA ID code. Checked against expected value at power up to verify basic FPGA communication and operation. + U08 fpgaRev; ///< Reg 1. FPGA revision being reported. } FPGA_HEADER_T; // read only on FPGA typedef struct // TODO - add all sensor readings to this structure per FPGA register map { - U32 fpgaLCA1; - U32 fpgaLCA2; - U32 fpgaADC1Temp; + U32 fpgaLCA1; ///< Reg 256. ADC1 channel 0 - load cell A1. + U32 fpgaLCB1; ///< Reg 260. ADC1 channel 1 - load cell B1. + U32 fpgaADC1Temp; ///< Reg 264. ADC1 channel 2 - internal temperature. - U32 fpgaLCB1; - U32 fpgaLCB2; - U32 fpgaADC2Temp; + U32 fpgaLCA2; ///< Reg 268. ADC2 channel 0 - load cell A2. + U32 fpgaLCB2; ///< Reg 272. ADC2 channel 1 - load cell B2. + U32 fpgaADC2Temp; ///< Reg 276. ADC2 channel 2 - internal temperature. - U32 fpgaCD1; - U32 fpgaCD2; - U32 fpgaTPiTemp; - U32 fpgaTPoTemp; - U32 fpgaRTDTemp; + U32 fpgaCD1Temp; ///< Reg 280. ADC RTD channel 0 - conductivity sensor 1 temperature. + U32 fpgaCD2Temp; ///< Reg 284. ADC RTD channel 1 - conductivity sensor 2 temperature. - U32 fpgaTHDo; - U32 fpgaTHDoTemp; + U32 fpgaTPoTemp; ///< Reg 288. ADC RTD channel 2 - conductivity sensor CPo temperature. + U32 fpgaTPiTemp; ///< Reg 292. ADC RTD channel 3 - conductivity sensor CPi temperature. + U32 fpgaRTDTemp; ///< Reg 296. ADC RTD channel 4 - internal temperature. - U32 fpgaTDi; - U32 fpgaTDiTemp; + U32 fpgaTHDo; ///< Reg 300. ADC THDo channel 0 - temperature. + U32 fpgaTHDoTemp; ///< Reg 304. ADC THDo channel 1 - internal temperature. - U32 fpgaCPoEc; - U32 fpgaCPoTds; + U32 fpgaTDi; ///< Reg 308. ADC TDi channel 0 - temperature. + U32 fpgaTDiTemp; ///< Reg 312. ADC TDi channel 1 - internal temperature. - U16 fpgaStatus; + U32 fpgaCPo; ///< Reg 316. Conductivity CPo. + U32 fpgaCPi; ///< Reg 320. Conductivity CPi. - U16 fpgaPrimaryHeaterIntTemp; - U16 fpgaPrimaryHeaterIntJunctionTemp; - U16 fpgaTrimmerHeaterIntTemp; - U16 fpgaTrimmerHeaterIntJunctionTemp; + U16 fpgaPrimaryHeaterIntTemp; ///< Reg 324. Primary heater temperature. + U16 fpgaPrimaryHeaterIntJunctionTemp; ///< Reg 326. Primary heater internal temperature. + U16 fpgaTrimmerHeaterIntTemp; ///< Reg 328. Trimmer heater temperature. + U16 fpgaTrimmerHeaterIntJunctionTemp; ///< Reg 330. Trimmer heater internal temperature. - U16 fpgaDrainPumpSpeed; - U16 fpgaROFlowRate; - U16 fpgaValveStates; + U16 fpgaDrainPumpSpeed; ///< Reg 332. Drain pump speed feedback. + U16 fpgaROFlowRate; ///< Reg 334. RO flow. - U08 fpgaIOErrorCntProcessor; - U08 fpgaIOErrorCntPC; - U08 fpgaADC1ReadCnt; - U08 fpgaADC1ErrorCnt; - U08 fpgaADC2ReadCnt; - U08 fpgaADC2ErrorCnt; - U08 fpgaRTDReadCnt; - U08 fpgaRTDErrorCnt; - U08 fpgaTHDoReadCnt; - U08 fpgaTHDoErrorCnt; - U08 fpgaTDiReadCnt; - U08 fpgaTDiErrorCnt; - U08 fpgaPrimaryHeaterFlags; - U08 fpgaPrimaryHeaterReadCnt; - U08 fpgaTrimmerHeaterFlags; - U08 fpgaTrimmerHeaterReadCnt; - U08 fpgaCPoTempConf; - U08 fpgaCPoSanityData; - U08 fpgaCPoReadCnt; - U08 fpgaCPoErrorCnt; + U16 accelX; ///< Reg 336. Accelerometer X axis data. + U16 accelY; ///< Reg 338. Accelerometer Y axis data. + U16 accelZ; ///< Reg 340. Accelerometer Z axis data. + U16 accelXMax; ///< Reg 342. Accelerometer X axis max data (since last read). + U16 accelYMax; ///< Reg 344. Accelerometer Y axis max data (since last read). + U16 accelZMax; ///< Reg 346. Accelerometer Z axis max data (since last read). + U16 accelFaultRegister; ///< Reg 348. Accelerometer fault register. + U16 accelSampleCounter; ///< Reg 350. Accelerometer sample count. + + U08 fpgaIOErrorCntProcessor; ///< Reg 352. + U08 fpgaIOErrorCntPC; ///< Reg 353. + U08 fpgaADC1ReadCnt; ///< Reg 354. + U08 fpgaADC1ErrorCnt; ///< Reg 355. + U08 fpgaADC2ReadCnt; ///< Reg 356. + U08 fpgaADC2ErrorCnt; ///< Reg 357. + U08 fpgaRTDReadCnt; ///< Reg 358. + U08 fpgaRTDErrorCnt; ///< Reg 359. + U08 fpgaTHDoReadCnt; ///< Reg 360. + U08 fpgaTHDoErrorCnt; ///< Reg 361. + U08 fpgaTDiReadCnt; ///< Reg 362. + U08 fpgaTDiErrorCnt; ///< Reg 363. + U08 fpgaPrimaryHeaterFlags; ///< Reg 364. + U08 fpgaPrimaryHeaterReadCnt; ///< Reg 365. + U08 fpgaTrimmerHeaterFlags; ///< Reg 366. + U08 fpgaTrimmerHeaterReadCnt; ///< Reg 367. + U08 fpgaCPoFault; ///< Reg 368. + U08 fpgaCPoReadCnt; ///< Reg 369. + U08 fpgaCPoErrorCnt; ///< Reg 370. + U08 fpgaCPiFault; ///< Reg 371. + U08 fpgaCPiReadCnt; ///< Reg 372. + U08 fpgaCPiErrorCnt; ///< Reg 373. + U08 fpgaCP1CP2Fault; ///< Reg 374. + U08 fpgaReserved1; ///< Reg 375. + + U16 fpgaValveStates; ///< Reg 376. } DG_FPGA_SENSORS_T; typedef struct { U16 fpgaCPoProbeType; + U16 fpgaCPiProbeType; U16 fpgaDrainPumpSetSpeed; U16 fpgaValveStates; - U08 fpgaID; - U08 fpgaRev; - U08 fpgaADC1Control; - U08 fpgaDiag; - U08 fpgaADC2Control; - U08 fpgaRTDControl; - U08 fpgaTHDoControl; - U08 fpgaTDiControl; } FPGA_ACTUATORS_T; #pragma pack(pop) @@ -219,6 +225,11 @@ memset( &fpgaSensorReadings, 0, sizeof(DG_FPGA_SENSORS_T) ); memset( &fpgaActuatorSetPoints, 0, sizeof(FPGA_ACTUATORS_T) ); + // TODO Remove the below line + // Initialize the valves + fpgaActuatorSetPoints.fpgaValveStates = 0x015F; + // TODO Remove the above line + // initialize fpga comm buffers memset( &fpgaWriteCmdBuffer, 0, FPGA_WRITE_CMD_BUFFER_LEN ); memset( &fpgaReadCmdBuffer, 0, FPGA_READ_CMD_BUFFER_LEN ); @@ -421,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 { @@ -471,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 { @@ -498,8 +509,8 @@ // construct read command to read 3 registers starting at address 0 fpgaReadCmdBuffer[ 0 ] = FPGA_READ_CMD_CODE; - fpgaReadCmdBuffer[ 1 ] = 0x06; // start at FPGA address 6 - fpgaReadCmdBuffer[ 2 ] = 0x00; + fpgaReadCmdBuffer[ 1 ] = GET_LSB_OF_WORD( FPGA_HEADER_START_ADDR ); + fpgaReadCmdBuffer[ 2 ] = GET_MSB_OF_WORD( FPGA_HEADER_START_ADDR ); fpgaReadCmdBuffer[ 3 ] = sizeof(FPGA_HEADER_T); crc = crc16( fpgaReadCmdBuffer, FPGA_READ_CMD_HDR_LEN ); fpgaReadCmdBuffer[ 4 ] = GET_MSB_OF_WORD( crc ); @@ -584,27 +595,31 @@ // construct bulk write command to write actuator data registers starting at address 3 (TODO - change address later) fpgaWriteCmdBuffer[ 0 ] = FPGA_WRITE_CMD_CODE; - fpgaWriteCmdBuffer[ 1 ] = 0x00; // start at FPGA address 0 - fpgaWriteCmdBuffer[ 2 ] = 0x00; + fpgaWriteCmdBuffer[ 1 ] = GET_LSB_OF_WORD( FPGA_BULK_WRITE_START_ADDR ); + fpgaWriteCmdBuffer[ 2 ] = GET_MSB_OF_WORD( FPGA_BULK_WRITE_START_ADDR ); fpgaWriteCmdBuffer[ 3 ] = sizeof(FPGA_ACTUATORS_T); 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 ] = 0x00; // start at FPGA address 0x100 (256) - fpgaReadCmdBuffer[ 2 ] = 0x01; + 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; @@ -724,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 ) } } @@ -764,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 ) } } @@ -804,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 ) } } @@ -844,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 ) } } @@ -901,9 +916,9 @@ * 7 - VDr.\n * 8 - VPi.\n * 9 - VSP.\n - * 10- VR1.\n - * 11- VR2.\n - * 12..15 - reserved or unused. + * 10..11 - reserved (spare).\n + * 12- VPd.\n + * 13..15 - reserved or unused. * @details * Inputs : none * Outputs : fpgaActuatorSetPoints.fpgaValveStates @@ -975,7 +990,7 @@ *************************************************************************/ U16 getFPGAStatus( void ) { - return fpgaSensorReadings.fpgaStatus; + return 0;//fpgaSensorReadings.fpgaStatus; } /*********************************************************************//** @@ -1089,7 +1104,7 @@ *************************************************************************/ U32 getFPGATPiTemp( void ) { - return ( fpgaSensorReadings.fpgaTPiTemp & MASK_OFF_U32_MSB ); + return fpgaSensorReadings.fpgaTPiTemp; } /*********************************************************************//** @@ -1104,11 +1119,160 @@ *************************************************************************/ U32 getFPGATPoTemp( void ) { - return ( fpgaSensorReadings.fpgaTPoTemp & MASK_OFF_U32_MSB ); + return fpgaSensorReadings.fpgaTPoTemp; } /*********************************************************************//** * @brief + * The getFPGATD1Temp function gets the latest conductivity sensor 1 \n + * temperature reading in ADC. + * @details + * Inputs : fpgaSensorReadings.fpgaCD1Temp + * Outputs : none + * @param none + * @return last conductivity sensor 1 outlet temperature reading + *************************************************************************/ +U32 getFPGACD1Temp( void ) +{ + return fpgaSensorReadings.fpgaCD1Temp; +} + +/*********************************************************************//** + * @brief + * The getFPGATD2Temp function gets the latest conductivity sensor 2 \n + * temperature reading in ADC. + * @details + * Inputs : fpgaSensorReadings.fpgaCD2Temp + * Outputs : none + * @param none + * @return last conductivity sensor 2 outlet temperature reading + *************************************************************************/ +U32 getFPGACD2Temp( void ) +{ + return fpgaSensorReadings.fpgaCD2Temp; +} + +/*********************************************************************//** + * @brief + * The getFPGARTDErrorCount function gets error count of the RTD. It covers \n + * all the four conductivity sensors which include temperature sensors + * @details + * Inputs : fpgaSensorReadings.fpgaRTDErrorCnt + * Outputs : none + * @param none + * @return Last error count of the RTD conductivity sensors + *************************************************************************/ +U08 getFPGARTDErrorCount( void ) +{ + return fpgaSensorReadings.fpgaRTDErrorCnt; +} + +/*********************************************************************//** + * @brief + * The getFPGARTDReadCount function gets the read count of the RTD \n + * conductivity sensors. It covers all the 4 conductivity sensors + * @details + * Inputs : fpgaSensorReadings.fpgaRTDReadCnt + * Outputs : none + * @param none + * @return Last read count of the RTC conductivity sensors + *************************************************************************/ +U08 getFPGARTDReadCount( void ) +{ + return fpgaSensorReadings.fpgaRTDReadCnt; +} + +/*********************************************************************//** + * @brief + * The getFPGATRoTemp function gets the latest redundant sensor outlet \n + * temperature reading in ADC. + * @details + * Inputs : fpgaSensorReadings.fpgaTHDoTemp + * Outputs : none + * @param none + * @return Last redundant sensor outlet temperature reading + *************************************************************************/ +U32 getFPGATHDoTemp( void ) +{ + return fpgaSensorReadings.fpgaTHDo; +} + +/*********************************************************************//** + * @brief + * The getFPGATHDoErrorCount gets the error count of the THDo (redundant) \n + * temperature sensor + * @details + * Inputs : fpgaSensorReadings.fpgaTHDoErrorCnt + * Outputs : none + * @param none + * @return Last redundant sensor outlet temperature error count + *************************************************************************/ +U08 getFPGATHDoErrorCount( void ) +{ + return fpgaSensorReadings.fpgaTHDoErrorCnt; +} + +/*********************************************************************//** + * @brief + * The getFPGATHDoReadCount gets the read count of the THDo (redundant) \n + * @details + * Inputs : fpgaSensorReadings.fpgaTHDoReadCnt + * Outputs : none + * @param none + * @return Last redundant sensor outlet temperature error count reading + *************************************************************************/ +U08 getFPGATHDoReadCount( void ) +{ + return fpgaSensorReadings.fpgaTHDoReadCnt; +} + +/*********************************************************************//** + * @brief + * The getFPGATDiTemp function gets the latest dialysate inlet \n + * temperature reading in ADC. + * @details + * Inputs : fpgaSensorReadings.fpgaTDiTemp + * Outputs : none + * @param none + * @return last primary heater outlet temperature reading + *************************************************************************/ +U32 getFPGATDiTemp( void ) +{ + return fpgaSensorReadings.fpgaTDi; +} + +/*********************************************************************//** + * @brief + * The getFPGATDiErrorCount function gets the latest dialysate inlet \n + * temperature error count. + * @details + * Inputs : fpgaSensorReadings.fpgaTDiErrorCnt + * Outputs : none + * @param none + * @return Last dialysate inlet error count + *************************************************************************/ +U08 getFPGATDiErrorCount( void ) +{ + return fpgaSensorReadings.fpgaTDiErrorCnt; +} + +/*********************************************************************//** + * @brief + * The getFPGATDiReadCount function gets the latest dialysate inlet \n + * temperature read count. + * @details + * Inputs : fpgaSensorReadings.fpgaTDiReadCnt + * Outputs : none + * @param none + * @return Last dialysate inlet read count + *************************************************************************/ +U08 getFPGATDiReadCount( void ) +{ + return fpgaSensorReadings.fpgaTDiReadCnt; +} + +/*********************************************************************//** + * @brief * The getFPGAPrimaryHeaterTemp function gets the latest primary heater \n * internal temperature reading. * @details @@ -1124,8 +1288,38 @@ /*********************************************************************//** * @brief + * The getFPGAPrimaryHeaterFlags function gets the latest primary heater \n + * internal temperature sensor flags read + * @details + * Inputs : fpgaSensorReadings.fpgaPrimaryHeaterFlags + * Outputs : none + * @param none + * @return Last primary heater internal temperature sensor flag read + *************************************************************************/ +U08 getFPGAPrimaryHeaterFlags( void ) +{ + return fpgaSensorReadings.fpgaPrimaryHeaterFlags; +} + +/*********************************************************************//** + * @brief + * The geetFPGAPrimaryHeaterReadCount function gets the latest primary heater \n + * internal temperature sensor read count + * @details + * Inputs : fpgaSensorReadings.fpgaPrimaryHeaterReadCnt + * Outputs : none + * @param none + * @return Last primary heater internal temperature sensor read count + *************************************************************************/ +U08 getFPGAPrimaryHeaterReadCount( void ) +{ + return fpgaSensorReadings.fpgaPrimaryHeaterReadCnt; +} + +/*********************************************************************//** + * @brief * The getFPGATrimmerHeaterTemp function gets the latest trimmer heater \n - * internal temperature reading. + * internal temperature sensor reading. * @details * Inputs : fpgaSensorReadings.fpgaTrimmerHeaterIntTemp * Outputs : none @@ -1136,3 +1330,151 @@ { return fpgaSensorReadings.fpgaTrimmerHeaterIntTemp; } + +/*********************************************************************//** + * @brief + * The getFPGATrimmerHeaterFlags function gets the latest trimmer heater \n + * internal temperature flags read. + * @details + * Inputs : fpgaSensorReadings.fpgaTrimmerHeaterFlags + * Outputs : none + * @param none + * @return Last trimmer heater internal temperature flags read + *************************************************************************/ +U08 getFPGATrimmerHeaterFlags( void ) +{ + return fpgaSensorReadings.fpgaTrimmerHeaterFlags; +} + +/*********************************************************************//** + * @brief + * The getFPGATrimmerHeaterReadCount function gets the latest trimmer heater \n + * internal temperature read count. + * @details + * Inputs : fpgaSensorReadings.fpgaTrimmerHeaterReadCnt + * Outputs : none + * @param none + * @return Last trimmer heater internal temperature read count + *************************************************************************/ +U08 getFPGATrimmerHeaterReadCount( void ) +{ + return fpgaSensorReadings.fpgaTrimmerHeaterReadCnt; +} + +/*********************************************************************//** + * @brief + * The getFPGAPRimaryColdJunctionTemp function gets primary cold junction + * temperature + * @details + * Inputs : fpgaSensorReadings.fpgaPrimaryHeaterIntJunctionTemp + * Outputs : none + * @param none + * @return Last primary cold junction temperature + *************************************************************************/ +U16 getFPGAPRimaryColdJunctionTemp ( void ) +{ + return fpgaSensorReadings.fpgaPrimaryHeaterIntJunctionTemp; +} + +/*********************************************************************//** + * @brief + * The getFPGATrimmerColdJunctionTemp function gets trimmer cold junction + * temperature + * @details + * Inputs : fpgaSensorReadings.fpgaTrimmerHeaterIntJunctionTemp + * Outputs : none + * @param none + * @return Last trimmer cold junction temperature + *************************************************************************/ +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; +}