Index: Accel.c =================================================================== diff -u -rcfa1142455dbcebceda091ae61e5d1f5e889fa6e -r343d278eb0278c79e00dee6151fb9ef21d2fda9c --- Accel.c (.../Accel.c) (revision cfa1142455dbcebceda091ae61e5d1f5e889fa6e) +++ Accel.c (.../Accel.c) (revision 343d278eb0278c79e00dee6151fb9ef21d2fda9c) @@ -363,18 +363,24 @@ { // publish accelerometer data on interval if ( ++accelDataPublicationTimerCounter >= getPublishAccelDataInterval() ) - { - F32 x = accelAvgVector[ ACCEL_AXIS_X ]; - F32 y = accelAvgVector[ ACCEL_AXIS_Y ]; - F32 z = accelAvgVector[ ACCEL_AXIS_Z ]; - F32 xm = getMaxAccelAxis( ACCEL_AXIS_X ); - F32 ym = getMaxAccelAxis( ACCEL_AXIS_Y ); - F32 zm = getMaxAccelAxis( ACCEL_AXIS_Z ); - F32 xt = accelTilt[ ACCEL_AXIS_X ]; - F32 yt = accelTilt[ ACCEL_AXIS_Y ]; - F32 zt = accelTilt[ ACCEL_AXIS_Z ]; + { + ACCEL_DATA_PAYLOAD_T accData; - broadcastAccelData( x, y, z, xm, ym, zm, xt, yt, zt ); + accData.x = accelAvgVector[ ACCEL_AXIS_X ]; + accData.y = accelAvgVector[ ACCEL_AXIS_Y ]; + accData.z = accelAvgVector[ ACCEL_AXIS_Z ]; + accData.xMax = getMaxAccelAxis( ACCEL_AXIS_X ); + accData.yMax = getMaxAccelAxis( ACCEL_AXIS_Y ); + accData.zMax = getMaxAccelAxis( ACCEL_AXIS_Z ); + accData.xTilt = accelTilt[ ACCEL_AXIS_X ]; + accData.yTilt = accelTilt[ ACCEL_AXIS_Y ]; + accData.zTilt = accelTilt[ ACCEL_AXIS_Z ]; + +#ifdef _DG_ + broadcastData( MSG_ID_DG_ACCELEROMETER_DATA, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&accData, sizeof( ACCEL_DATA_PAYLOAD_T ) ); +#else + broadcastData( MSG_ID_HD_ACCELEROMETER_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&accData, sizeof( ACCEL_DATA_PAYLOAD_T ) ); +#endif // Reset publication timer counter accelDataPublicationTimerCounter = 0; // Reset max axes @@ -486,14 +492,6 @@ SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_EXCESSIVE_TILT, x, y ) #endif } - } - else if ( ( TRUE == tiltErrorDetected ) && ( ( fabs( x ) > MAX_TILT_ANGLE_TO_CLEAR_ALARM ) || ( fabs( y ) > MAX_TILT_ANGLE_TO_CLEAR_ALARM ) ) ) - { -#ifdef _DG_ - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_DG_EXCESSIVE_TILT, x, y ) -#else - SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_EXCESSIVE_TILT, x, y ) -#endif } else if ( ( TRUE == tiltErrorDetected ) && ( ( fabs( x ) > MAX_TILT_ANGLE_TO_CLEAR_ALARM ) || ( fabs( y ) > MAX_TILT_ANGLE_TO_CLEAR_ALARM ) ) ) { @@ -502,7 +500,7 @@ #else SET_ALARM_WITH_2_F32_DATA( ALARM_ID_HD_EXCESSIVE_TILT, x, y ) #endif - } + } else if ( ( fabs( x ) <= MAX_TILT_ANGLE_TO_CLEAR_ALARM ) && ( fabs( y ) <= MAX_TILT_ANGLE_TO_CLEAR_ALARM ) ) { accelTiltErrorTimerCounter = 0; Index: MessageSupport.c =================================================================== diff -u -r706d450e92a86b9751fccce9e71aa0080798ea01 -r343d278eb0278c79e00dee6151fb9ef21d2fda9c --- MessageSupport.c (.../MessageSupport.c) (revision 706d450e92a86b9751fccce9e71aa0080798ea01) +++ MessageSupport.c (.../MessageSupport.c) (revision 343d278eb0278c79e00dee6151fb9ef21d2fda9c) @@ -1,4 +1,5 @@ +#include "MessageSupport.h" #include "SystemCommMessages.h" #include "Utilities.h" @@ -12,9 +13,9 @@ /*********************************************************************//** * @brief - * The broadcastData function broadcasts data. + * The broadcastData function queues a broadcast message for transmission. * @details Inputs: none - * @details Outputs: load cell data msg constructed and queued + * @details Outputs: broadcast data msg constructed and queued * @param msgID message ID of the data is broadcast * @param buffer comm buffer ID * @param dataPtr pointer to the start of the buffer @@ -32,7 +33,10 @@ msg.hdr.msgID = msgID; msg.hdr.payloadLen = length; - memcpy( payloadPtr, dataPtr, length ); + if ( ( length > 0 ) && ( dataPtr != 0 ) ) + { + memcpy( payloadPtr, dataPtr, length ); + } // serialize the message (w/ sync, CRC, and appropriate CAN padding) and add serialized message data to appropriate comm buffer result = serializeMessage( msg, buffer, ACK_NOT_REQUIRED ); Index: NVDataMgmt.c =================================================================== diff -u -rcc34fc9daceb298166e53e073f424524eb396278 -r343d278eb0278c79e00dee6151fb9ef21d2fda9c --- NVDataMgmt.c (.../NVDataMgmt.c) (revision cc34fc9daceb298166e53e073f424524eb396278) +++ NVDataMgmt.c (.../NVDataMgmt.c) (revision 343d278eb0278c79e00dee6151fb9ef21d2fda9c) @@ -2178,7 +2178,7 @@ writtenRecordStatus = NVDATAMGMT_RECORD_NOT_CHECKED; // Issue the write command - Fapi_issueProgrammingCommand( (U32*)memoryPtr, structPtr, jobSpecs.maxWriteBufferSize, 0x00, 0, Fapi_DataOnly ); + Fapi_issueProgrammingCommand ( (U32*)memoryPtr, structPtr, jobSpecs.maxWriteBufferSize, 0x00, 0, Fapi_DataOnly ); } } } Index: RTC.c =================================================================== diff -u -rcfa1142455dbcebceda091ae61e5d1f5e889fa6e -r343d278eb0278c79e00dee6151fb9ef21d2fda9c --- RTC.c (.../RTC.c) (revision cfa1142455dbcebceda091ae61e5d1f5e889fa6e) +++ RTC.c (.../RTC.c) (revision 343d278eb0278c79e00dee6151fb9ef21d2fda9c) @@ -23,10 +23,6 @@ #include "Timers.h" #include "Utilities.h" -#ifdef USE_LIBRARY_TIME_FUNCTIONS -#include // For epoch conversion functions mktime and gmtime -#endif - /** * @addtogroup RTC * @{ @@ -118,19 +114,8 @@ #define MAX_ALLOWED_RTC_RAM_ADDRESS 512U ///< Max allowed RTC RAM legal address (512) #define TEN 10U ///< Ten #define YEAR_2000 2000U ///< Year 2000 -#ifndef USE_LIBRARY_TIME_FUNCTIONS - #define EPOCH_BASE_YEAR 1970U ///< Reference year to calculate epoch (1970) -#else - #define EPOCH_BASE_YEAR 1900U ///< Reference year to calculate epoch (1900) - #define YEAR_1900_TO_1970_SECONDS_DIFF 2208988800U ///< Difference in seconds from 1/1/1900 to 1/1/1970 (2208988800) - /// Six hour offset is needed because TI library works in CST. - #define OFFSET_6_HRS (6 * MIN_PER_HOUR * SEC_PER_MIN) +#define EPOCH_BASE_YEAR 1970U ///< Reference year to calculate epoch (1970) - #ifdef _VECTORCAST_ - #define LOCAL_TO_GTM_TIME_CONVERSION 8U ///< Local time to GTM conversion for VectorCAST - #endif -#endif - #define SECS_IN_HOUR 3600 ///< Number of seconds in an hour. #define MONTHS_IN_YEAR 12 ///< Number of months in a year. #define LEAP_YEAR_MONTH ( 2 - 1 ) ///< Leap year month is February. Subtract 1 month for zero-based months. @@ -232,10 +217,6 @@ static U08 convertDecimal2BCD( U08 decimal ); static U32 convertDateTime2Epoch( RTC_TIMESTAMP_T dateTime ); static BOOL convertEpoch2DateTime( U32 epoch ); -#ifdef USE_LIBRARY_TIME_FUNCTIONS -static U32 convertTime2Epoch( void ); -static void convertEpoch2Time( U32 epoch ); -#endif static void updateReadTimestampStruct( void ); static BOOL setMibSPIBufferLength( U16 length ); static void prepBufferForReadCommand( U08 length ); // Puts the read command @@ -336,11 +317,7 @@ { BOOL result; -#ifndef USE_LIBRARY_TIME_FUNCTIONS result = convertEpoch2DateTime( epoch ); -#else - convertEpoch2Time( epoch ); -#endif result = setRTCTimestamp( RTCNewTimestampStruct.seconds, RTCNewTimestampStruct.minutes, RTCNewTimestampStruct.hours, @@ -918,76 +895,8 @@ return result; } -#ifdef USE_LIBRARY_TIME_FUNCTIONS /*********************************************************************//** * @brief - * The convertTime2Epoch converts the time into epoch (seconds from Jan 1 1970). - * @details Inputs: RTCTimestampStruct - * @details Outputs: none - * @return time in epoch as a U32 - *************************************************************************/ -static U32 convertTime2Epoch( void ) -{ - struct tm t; - time_t epochTime; - t.tm_sec = RTCTimestampStruct.seconds; - t.tm_min = RTCTimestampStruct.minutes; - t.tm_hour = RTCTimestampStruct.hours; - t.tm_mday = RTCTimestampStruct.days; - // In epoch conversion, the months are 0-11 - // so the months is decremented - t.tm_mon = RTCTimestampStruct.months - 1; - t.tm_year = RTCTimestampStruct.years + YEAR_2000 - EPOCH_BASE_YEAR; - // Disabled daylight saving - // If daylight saving is not disabled, MinGW in VectorCAST - // may or may not calculate the value right - t.tm_isdst= 0; - -#ifdef _VECTORCAST_ - // MinGW in VectorCAST assumes the time is local while - // the time is in GMT so 8 hours is subtracted from the hour - // to simulate GMT for VectorCAST - t.tm_hour = t.tm_hour - LOCAL_TO_GTM_TIME_CONVERSION; - epochTime = mktime(&t); -#else - epochTime = mktime(&t); - epochTime = epochTime - YEAR_1900_TO_1970_SECONDS_DIFF; -#endif - - return (U32)epochTime; -} -#endif - -#ifdef USE_LIBRARY_TIME_FUNCTIONS -/*********************************************************************//** - * @brief - * The convertEpoch2Time converts a given epoch date/time to a date/time - * structure that can be used to set the clock. - * @details Inputs: none - * @details Outputs: RTCNewTimestampStruct - * @param epoch epoch time stamp (seconds since 1/1/1970) - * @return none - *************************************************************************/ -static void convertEpoch2Time( U32 epoch ) -{ - struct tm *ptm; - - // Convert epoch to date/time structure - epoch += YEAR_1900_TO_1970_SECONDS_DIFF; - epoch -= OFFSET_6_HRS; // For some reason, TI works in CST time zone instead of GMT - ptm = gmtime( &epoch ); - // Copy date/time stamp to our structure - RTCNewTimestampStruct.years = ptm->tm_year + EPOCH_BASE_YEAR; // epoch is seconds from 1/1/1900. - RTCNewTimestampStruct.months = ptm->tm_mon + 1; // months from gmtime() are 0..11 - convert to 1..12. - RTCNewTimestampStruct.days = ptm->tm_mday; - RTCNewTimestampStruct.hours = ptm->tm_hour; - RTCNewTimestampStruct.minutes = ptm->tm_min; - RTCNewTimestampStruct.seconds = ptm->tm_sec; -} -#endif - -/*********************************************************************//** - * @brief * The updateReadTimestampStruct function updates the time structure * after every read. * @details Inputs: RTCTimestampStruct @@ -1319,13 +1228,13 @@ if ( isRTCFunctional() ) { updateReadTimestampStruct(); -#ifndef USE_LIBRARY_TIME_FUNCTIONS lastEpochTime = convertDateTime2Epoch( RTCTimestampStruct ); + timeCounter = 1; +#ifdef _DG_ + broadcastData( MSG_ID_RTC_EPOCH, COMM_BUFFER_OUT_CAN_DG_BROADCAST, (U08*)&lastEpochTime, sizeof( U32 ) ); #else - lastEpochTime = convertTime2Epoch(); + broadcastData( MSG_ID_RTC_EPOCH, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&lastEpochTime, sizeof( U32 ) ); #endif - timeCounter = 1; - broadcastRTCEpoch( lastEpochTime ); } result = RTC_EXEC_STATE_IDLE;