Index: firmware/App/Services/NVMsgQ.h =================================================================== diff -u -r1e809a81cb8831f5aa5938bd333cc374920d5b87 -r45b03b9f23005c05fc75f69416595a155e250cbe --- firmware/App/Services/NVMsgQ.h (.../NVMsgQ.h) (revision 1e809a81cb8831f5aa5938bd333cc374920d5b87) +++ firmware/App/Services/NVMsgQ.h (.../NVMsgQ.h) (revision 45b03b9f23005c05fc75f69416595a155e250cbe) @@ -15,8 +15,9 @@ #ifndef _NV_MSG_Q_H_ #define _NV_MSG_Q_H_ +#include "NVDriver.h" #include "Common.h" -#indluce "DDDefs.h" +#include "DDDefs.h" #define MIN_JOBS_NEEDED_FOR_SECTOR_0 5U ///< Min queue count needed to erase and write all (5) records back in sector 0. #define DD_USAGE_INFO_START_ADDRESS 0x00000030 /* 48 */ ///< DG usage info start address in RTC RAM (48). @@ -28,31 +29,6 @@ #define SERVICE_RECORD_NV_MEM_START_ADDRESS (BANK7_SECTOR0_START_ADDRESS + BITS_12_FULL_SCALE) ///< Service record storage start address in NV memory. #define CAL_RECORD_NV_MEM_START_ADDRESS (SERVICE_RECORD_NV_MEM_START_ADDRESS + BITS_12_FULL_SCALE) ///< Calibration record storage start address in NV memory. -/// NVDataMgmt memory operation modes enumeration. -typedef enum NVDataMgmt_Operation -{ - NVDATAMGMT_NONE = 0, ///< Default mode to prevent any accidental ops. - NVDATAMGMT_WRITE, ///< Operation mode write. - NVDATAMGMT_READ, ///< Operation mode read. - NVDATAMGMT_ERASE_SECTOR, ///< Operation mode erase a sector (EEPROM). - NUM_OF_NVDATAMGMT_OPS_STATES ///< Total number of operation states. -} NVDATAMGMT_OPERATION_STATE_T; - -/// NVDataMgmt records' jobs states -typedef enum NVDataMgmt_Records_Jobs -{ - NVDATAMGMT_CALIBRATION_RECORD = 0, ///< NVDataMgmt process write calibration record. - NVDATAMGMT_SYSTEM_RECORD, ///< NVDataMgmt process write system record. - NVDATAMGMT_SERVICE_RECORD, ///< NVDataMgmt process service record. - NVDATAMGMT_SCHEDULED_RUNS_RECORD, ///< NVDataMgmt process scheduled runs record. - NVDATAMGMT_HEATERS_INFO_RECORD, ///< NVDataMgmt process heaters info record. - NVDATAMGMT_USAGE_INFO_RECORD, ///< NVDataMgmt process usage info record. -#ifndef _RELEASE_ - NVDATAMGMT_SW_CONFIG_RECORD, ///< NVDataMgmt process software record. -#endif - NUM_OF_NVDATMGMT_RECORDS_JOBS ///< Number of NVDataMgmt records jobs. -} RECORD_JOBS_STATE_T; - /// NVDataMgmt records read status typedef enum NVDataMgmt_NV_Records_Read_Status { @@ -63,41 +39,14 @@ NUM_OF_NVDATAMGMT_READ_RECORDS_STATES, ///< Number of NVDataMgmt read records states. } NVDATAMGMT_RECORDS_READ_STATUS_T; -/// Process records specifications structure -typedef struct -{ - U32 startAddress; ///< Jobs spec start address. - U32 sizeofJob; ///< Jobs spec size of job. - U32 maxWriteBufferSize; ///< Jobs max write allowed processing buffer size. - U32 maxReadBufferSize; ///< Jobs max read allowed processing buffer size. - U08* structAddressPtr; ///< Jobs structure address pointer. - U08* structCRCPtr; ///< Jobs structure CRC pointer. - DD_EVENT_ID_T nvEvent; ///< Jobs non-volatile DG event (i.e calibration, system). - -} PROCESS_RECORD_SPECS_T; - -// Process records specifications -const PROCESS_RECORD_SPECS_T RECORDS_SPECS[ NUM_OF_NVDATMGMT_RECORDS_JOBS ] = { - // Start address Size of the job Max write bytes per job Max read bytes per job Record structure pointer Record CRC pointer Event calibration record update - {CAL_RECORD_NV_MEM_START_ADDRESS, sizeof(DD_CALIBRATION_RECORD_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_CALIBRATION_RECORD_T), (U08*)&ddCalibrationRecord, (U08*)&ddCalibrationRecord.crc, DD_EVENT_CAL_RECORD_UPDATE }, // NVDATAMGMT_CALIBRATION_RECORD - {SYSTEM_RECORD_NV_MEM_START_ADDRESS, sizeof(DD_SYSTEM_GROUP_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_SYSTEM_GROUP_T), (U08*)&ddSystemGroup, (U08*)&ddSystemGroup.crc, DD_EVENT_SYSTEM_RECORD_UPDATE }, // NVDATAMGMT_SYSTEM_RECORD - {SERVICE_RECORD_NV_MEM_START_ADDRESS, sizeof(DD_SERVICE_GROUP_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_SERVICE_GROUP_T), (U08*)&ddServiceGroup, (U08*)&ddServiceGroup.crc, DD_EVENT_SERVICE_UPDATE }, // NVDATAMGMT_SERVICE_RECORD - {DD_SCHEDULED_RUNS_START_ADDRESS, sizeof(DD_SCHEDULED_RUNS_GROUP_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_SCHEDULED_RUNS_GROUP_T),(U08*)&ddScheduledRunsGroup, (U08*)&ddScheduledRunsGroup.crc, DD_EVENT_SCHEDULED_RUNS_UPDATE }, // NVDATAMGMT_SCHEDULER_RECORD - {DD_HEATERS_INFO_START_ADDRESS, sizeof(DD_HEATERS_INFO_GROUP_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_HEATERS_INFO_GROUP_T), (U08*)&ddHeatersInfoGroup, (U08*)&ddHeatersInfoGroup.crc, DD_EVENT_HEATERS_INFO_UPDATE }, // NVDATAMGMT_HEATERS_INFO_RECORD - {DD_USAGE_INFO_START_ADDRESS, sizeof(DD_USAGE_INFO_GROUP_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_USAGE_INFO_GROUP_T), (U08*)&ddUsageInfoGroup, (U08*)&ddUsageInfoGroup.crc, DD_EVENT_USAGE_INFO_UPDATE }, // NVDATAMGMT_USAGE_INFO_RECORD -#ifndef _RELEASE_ - {SW_CONFIGS_START_ADDRESS, sizeof(DD_SW_CONFIG_GROUP_T), MAX_EEPROM_WRITE_BUFFER_BYTES, sizeof(DD_SW_CONFIG_GROUP_T), (U08*)&ddSWConfigGroup, (U08*)&ddSWConfigGroup.crc, DD_EVENT_SW_CONFIG_UPDATE } // NVDATAMGMT_SW_CONFIG_RECORD -#endif -}; - void initNVMsgQ ( void ); void execNVDataMgmtProcessRecord( void ); // Record operations queue functions void enqueueRecordJob( NVDATAMGMT_OPERATION_STATE_T ops, RECORD_JOBS_STATE_T job ); void dequeueRecordJob( void ); -BOOL areResourcesAvailableForNextJob( void ); BOOL isRecordQueueEmpty( void ); +BOOL isRecordQueueFull( void ); U32 getAvailableRecordQueueCount( void ); BOOL enqueueSector0Records( void ); void enqueuePOSTReadRecords( void ); @@ -106,4 +55,10 @@ BOOL receiveRecordFromDialin( RECORD_JOBS_STATE_T job, U32 currentMessage, U32 totalMessages, U32 length, U08 *addressPtr ); BOOL isNewCalibrationRecordAvailable( void ); +void updateNewCalAvailableFlag( BOOL value ); +void updateRecordReadStatus( NVDATAMGMT_RECORDS_READ_STATUS_T status ); +void updateCalStartTimer( U32 value ); + +PROCESS_RECORD_JOB_T getCurrentProcessRecordJob ( void ); + #endif /* _NV_MSG_Q_H_ */