Index: Accel.c =================================================================== diff -u -r409e885c34d148bf23f9d6928befa0523202f547 -rf7c61d2d14b40cfbbd2fa8e0968a1f972a39e4e0 --- Accel.c (.../Accel.c) (revision 409e885c34d148bf23f9d6928befa0523202f547) +++ Accel.c (.../Accel.c) (revision f7c61d2d14b40cfbbd2fa8e0968a1f972a39e4e0) @@ -30,18 +30,18 @@ // ********** private definitions ********** -#define ACCEL_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval (ms/task time) at which the accelerometer data is published on the CAN bus -#define SIZE_OF_ROLLING_AVG ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Vector for tilt is filtered w/ moving average -#define G_PER_LSB ( 0.00390625 ) ///< Conversion from counts (LSB) to gravities -#define NO_NEW_ACCEL_SAMPLES_TIMEOUT ( 100 / TASK_PRIORITY_INTERVAL ) ///< Maximum time w/o new accelerometer sample from FPGA -#define NOMINAL_ACCEL_VECTOR_LENGTH ( 1.0 ) ///< Expect unit vector length when system is stable -#define MAX_ACCEL_VECTOR_LENGTH_ERROR ( 0.1 ) ///< POST test looks at vector length at presumably stable moment - should be 1 +/- 0.1 -#define MAX_TILT_ANGLE ( 7.0 ) ///< Maximum tilt of system before alarm -#define MIN_TILT_ANGLE_TO_CLEAR_ALARM ( 5.0 ) ///< Minimum tilt of system before alarm is cleared -#define MAX_TILT_PERSISTENCE ( 1 * MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Maximum time (in task intervals) that a tilt in excess of limit can persist before alarm -#define MAX_SHOCK_ACCELERATION ( 2.0 ) ///< Maximum shock (acceleration) measured on any axis before alarm -#define MAX_TILT_G ( 1.0 ) ///< Maximum tilt (in g) -#define MAX_TILT_ANGLE_DEG ( 90.0 ) ///< Maximum tilt angle (in degrees) +#define ACCEL_DATA_PUB_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Interval (ms/task time) at which the accelerometer data is published on the CAN bus +#define SIZE_OF_ROLLING_AVG ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Vector for tilt is filtered w/ moving average +#define G_PER_LSB ( 0.00390625 ) ///< Conversion from counts (LSB) to gravities +#define NO_NEW_ACCEL_SAMPLES_TIMEOUT ( 100 / TASK_PRIORITY_INTERVAL ) ///< Maximum time w/o new accelerometer sample from FPGA +#define NOMINAL_ACCEL_VECTOR_LENGTH ( 1.0 ) ///< Expect unit vector length when system is stable +#define MAX_ACCEL_VECTOR_LENGTH_ERROR ( 0.1 ) ///< POST test looks at vector length at presumably stable moment - should be 1 +/- 0.1 +#define MAX_TILT_ANGLE ( 7.0 ) ///< Maximum tilt of system before alarm +#define MIN_TILT_ANGLE_TO_CLEAR_ALARM ( 5.0 ) ///< Minimum tilt of system before alarm is cleared +#define MAX_TILT_PERSISTENCE ( 1 * MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Maximum time (in task intervals) that a tilt in excess of limit can persist before alarm +#define MAX_SHOCK_ACCELERATION ( 2.0 ) ///< Maximum shock (acceleration) measured on any axis before alarm +#define MAX_TILT_G ( 1.0 ) ///< Maximum tilt (in g) +#define MAX_TILT_ANGLE_DEG ( 90.0 ) ///< Maximum tilt angle (in degrees) /// Enumeration of accelerometer monitor states. typedef enum Accelerometer_States Index: NVDataMgmt.c =================================================================== diff -u -r2da9d757cef985b4ad1e8adee3e19fa3430cc4fb -rf7c61d2d14b40cfbbd2fa8e0968a1f972a39e4e0 --- NVDataMgmt.c (.../NVDataMgmt.c) (revision 2da9d757cef985b4ad1e8adee3e19fa3430cc4fb) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision f7c61d2d14b40cfbbd2fa8e0968a1f972a39e4e0) @@ -136,7 +136,7 @@ { NVDATAMGMT_OPERATION_STATE_T memoryOperation; ///< Memory operation NVDATAMGMT_LOCATION_STATE_T memoryLocation; ///< Memory location - U32* startAddress; ///< Operation start address + U32 startAddress; ///< Operation start address U08 buffer [ MAX_JOB_DATA_SIZE_BYTES ]; ///< Buffer READ_DATA_T* externalAddress; ///< External address of a buffer U32 length; ///< Length of a buffer @@ -1235,20 +1235,20 @@ dequeue(); NVDATAMGMT_OPERATION_STATE_T ops = currentJob.memoryOperation; NVDATAMGMT_LOCATION_STATE_T location = currentJob.memoryLocation; - U32* startAddress = currentJob.startAddress; + U32 startAddress = currentJob.startAddress; U32 length = currentJob.length; if ( ops == NVDATAMGMT_WRITE && location == NVDATAMGMT_EEPROM ) { currentTime = getMSTimerCount(); - Fapi_issueProgrammingCommand ( startAddress, currentJob.buffer, length, + Fapi_issueProgrammingCommand ( (U32*)startAddress, currentJob.buffer, length, 0x00, 0, Fapi_DataOnly ); state = NVDATAMGMT_EXEC_STATE_WRITE_TO_EEPROM; } else if ( ops == NVDATAMGMT_READ && location == NVDATAMGMT_EEPROM ) { currentTime = getMSTimerCount(); - Fapi_doMarginRead ( startAddress, (U32*)( currentJob.externalAddress->externalBuffer ), + Fapi_doMarginRead ( (U32*)startAddress, (U32*)( currentJob.externalAddress->externalBuffer ), length, Fapi_NormalRead ); // Change the status to in progress until the read operation is done currentJob.externalAddress->status = NVDATAMGMT_READ_IN_PROGRESS; @@ -1257,15 +1257,15 @@ else if ( ops == NVDATAMGMT_ERASE_SECTOR ) { currentTime = getMSTimerCount(); - Fapi_issueAsyncCommandWithAddress ( Fapi_EraseSector, startAddress ); + Fapi_issueAsyncCommandWithAddress ( Fapi_EraseSector, (U32*)startAddress ); state = NVDATAMGMT_EXEC_STATE_ERASE_EEPROM; } else if ( ops == NVDATAMGMT_WRITE && location == NVDATAMGMT_RTC ) { if ( getRTCRAMState() == RTC_RAM_STATE_READY ) { currentTime = getMSTimerCount(); - writeToRAM ( (U32)startAddress, currentJob.buffer, length ); + writeToRAM ( startAddress, currentJob.buffer, length ); state = NVDATAMGMT_EXEC_STATE_WRITE_TO_RTC; } @@ -1275,7 +1275,7 @@ if ( getRTCRAMState() == RTC_RAM_STATE_READY ) { currentTime = getMSTimerCount(); - readFromRAM( (U32)startAddress, length ); + readFromRAM( startAddress, length ); currentJob.externalAddress->status = NVDATAMGMT_READ_IN_PROGRESS; state = NVDATAMGMT_EXEC_STATE_READ_FROM_RTC; } @@ -1435,7 +1435,7 @@ jobQueue [ myAddIndex ].memoryOperation = ops; jobQueue [ myAddIndex ].memoryLocation = location; - jobQueue [ myAddIndex ].startAddress = (U32*)startAddress; + jobQueue [ myAddIndex ].startAddress = startAddress; jobQueue [ myAddIndex ].length = length; jobQueue [ myAddIndex ].externalAddress = extAddress; Index: RTC.c =================================================================== diff -u -r2da9d757cef985b4ad1e8adee3e19fa3430cc4fb -rf7c61d2d14b40cfbbd2fa8e0968a1f972a39e4e0 --- RTC.c (.../RTC.c) (revision 2da9d757cef985b4ad1e8adee3e19fa3430cc4fb) +++ RTC.c (.../RTC.c) (revision f7c61d2d14b40cfbbd2fa8e0968a1f972a39e4e0) @@ -259,6 +259,7 @@ BOOL setRTCTimestamp( U08 secs, U08 mins, U08 hours, U08 days, U08 months, U32 years ) { BOOL isDataOk = TRUE; + if ( secs > MAX_ALLOWED_SECONDS ) { isDataOk = FALSE; @@ -448,6 +449,7 @@ { RTC_RAM_STATUS_T status = RTCRAMStatus; U16 castedAddress = (U16)( address & MASK_OFF_MSW ); + if ( status == RTC_RAM_STATUS_IDLE ) { if ( castedAddress > MAX_ALLOWED_RTC_RAM_ADDRESS ) @@ -461,6 +463,7 @@ else { U08 i; + RTCRAMStatus = status = RTC_RAM_STATUS_IN_PROGRESS; RTCRAMState = RTC_RAM_STATE_BUSY; hasWriteToRAMRequested = TRUE; @@ -500,6 +503,7 @@ { RTC_RAM_STATUS_T status = RTCRAMStatus; U16 castedAddress = (U16)( address & MASK_OFF_MSW ); + if ( status == RTC_RAM_STATUS_IDLE ) { if ( castedAddress > MAX_ALLOWED_RTC_RAM_ADDRESS ) @@ -513,6 +517,7 @@ else { U08 i; + status = RTCRAMStatus = RTC_RAM_STATUS_IN_PROGRESS; RTCRAMState = RTC_RAM_STATE_BUSY; hasReadFromRAMRequested = TRUE;