Index: firmware/App/Drivers/PAL.c =================================================================== diff -u --- firmware/App/Drivers/PAL.c (revision 0) +++ firmware/App/Drivers/PAL.c (revision 01892698468068bb97a80a84c96a6d7c5d6fde9b) @@ -0,0 +1,80 @@ +/************************************************************************** +* +* Copyright (c) 2024-2024 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 PAL.c +* +* @author (last) Sean +* @date (last) 07-Aug-2024 +* +* @author (original) Sean +* @date (original) 07-Aug-2024 +* +***************************************************************************/ + +#include "reg_system.h" +#include "reg_crc.h" + +#include "PAL.h" + +/** + * @addtogroup PAL + * @{ + */ + +// ********** private definitions ********** + +/*********************************************************************//** + * @brief + * The setSystemREG1_SYSECR function sets the SYSECR register to a given value. + * @details Inputs: none + * @details Outputs: SYSECR register set to given value + * @return none + *************************************************************************/ +void setSystemREG1_SYSECR( U32 regval ) +{ + systemREG1->SYSECR = regval; +} + +/*********************************************************************//** + * @brief + * The getSystemREG1_SYSECR function gets the current value of the SYSECR register. + * @details Inputs: SYSECR register + * @details Outputs: none + * @return Value of the SYSECR register + *************************************************************************/ +U32 getSystemREG1_SYSECR( void ) +{ + return systemREG1->SYSECR; +} + +/*********************************************************************//** + * @brief + * The setCrcREG_PSA_SIGREGL1 function sets the CRC PSA_SIGREGL1 register + * to a given value. + * @details Inputs: none + * @details Outputs: PSA_SIGREGL1 register set to given value + * @return none + *************************************************************************/ +void setCrcREG_PSA_SIGREGL1( U32 regval ) +{ + crcREG->PSA_SIGREGL1 = regval; +} + +/*********************************************************************//** + * @brief + * The getCrcREG_PSA_SIGREGL1 function gets the current value of the CRC + * PSA_SIGREGL1 register. + * @details Inputs: PSA_SIGREGL1 register + * @details Outputs: none + * @return Value of the PSA_SIGREGL1 register + *************************************************************************/ +U32 getCrcREG_PSA_SIGREGL1( void ) +{ + return crcREG->PSA_SIGREGL1; +} + +/**@}*/ Index: firmware/App/Drivers/PAL.h =================================================================== diff -u --- firmware/App/Drivers/PAL.h (revision 0) +++ firmware/App/Drivers/PAL.h (revision 01892698468068bb97a80a84c96a6d7c5d6fde9b) @@ -0,0 +1,42 @@ +/************************************************************************** +* +* Copyright (c) 2024-2024 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 PAL.h +* +* @author (last) Sean +* @date (last) 07-Aug-2024 +* +* @author (original) Sean +* @date (original) 07-Aug-2024 +* +***************************************************************************/ + +#ifndef __GPIO_H__ +#define __GPIO_H__ + +#include "TDCommon.h" + +/** + * @defgroup PAL PAL + * @brief The PAL (processor abstraction layer) module provides abstraction + * of processor register access via access functions. + * + * @addtogroup PAL + * @{ + */ + +// ********** public function prototypes ********** + +void setSystemREG1_SYSECR( U32 regval ); +U32 getSystemREG1_SYSECR( void ); + +void setCrcREG_PSA_SIGREGL1( U32 regval ); +U32 getCrcREG_PSA_SIGREGL1( void ); + +/**@}*/ + +#endif Index: firmware/App/Modes/ModeInitPOST.c =================================================================== diff -u -rf688e0f8bded1f0a687437e3136cfba8b14f87b6 -r01892698468068bb97a80a84c96a6d7c5d6fde9b --- firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision f688e0f8bded1f0a687437e3136cfba8b14f87b6) +++ firmware/App/Modes/ModeInitPOST.c (.../ModeInitPOST.c) (revision 01892698468068bb97a80a84c96a6d7c5d6fde9b) @@ -16,21 +16,21 @@ ***************************************************************************/ #include "reg_crc.h" // Used to hold reset reason code at startup before bits get cleared -#include "reg_system.h" // Used to access exception status registers for reset reason code at startup #include "system.h" -//#include "AlarmLamp.h" +#include "AlarmLamp.h" //#include "BloodFlow.h" //#include "Buttons.h" -//#include "Compatible.h" -//#include "CPLD.h" +#include "Compatible.h" +#include "CpldInterface.h" //#include "Fans.h" -//#include "FPGA.h" +#include "FpgaTD.h" //#include "Integrity.h" #include "Messaging.h" #include "ModeInitPOST.h" //#include "NVDataMgmt.h" #include "OperationModes.h" +#include "PAL.h" //#include "PresOccl.h" //#include "SyringePump.h" #include "SystemCommTD.h" @@ -483,10 +483,10 @@ // when the event data can be sent if ( ++startPOSTDelayCounter > START_POST_DELAY_COUNT ) { - U32 resetReason = systemREG1->SYSESR | crcREG->PSA_SIGREGL1; // power-on reset bit preserved in an unused CRC register + U32 resetReason = getSystemREG1_SYSECR() | getCrcREG_PSA_SIGREGL1(); // power-on reset bit preserved in an unused CRC register - systemREG1->SYSESR = systemREG1->SYSESR; // clear reset bit(s) after logging event so subsequent resets can be properly identified as not being power-on resets. - crcREG->PSA_SIGREGL1 = 0; // clear preserved power-on reset bit. + setSystemREG1_SYSECR( getSystemREG1_SYSECR() ); // clear reset bit(s) after logging event so subsequent resets can be properly identified as not being power-on resets. + setCrcREG_PSA_SIGREGL1( 0 ); // clear preserved power-on reset bit. // sendUIVersionRequest(); // request UI to send us its version - needed for compatibility check Index: firmware/App/Services/AlarmMgmtTD.c =================================================================== diff -u -r766e65a173747dd60a9faae1cac228cd5f8a55a6 -r01892698468068bb97a80a84c96a6d7c5d6fde9b --- firmware/App/Services/AlarmMgmtTD.c (.../AlarmMgmtTD.c) (revision 766e65a173747dd60a9faae1cac228cd5f8a55a6) +++ firmware/App/Services/AlarmMgmtTD.c (.../AlarmMgmtTD.c) (revision 01892698468068bb97a80a84c96a6d7c5d6fde9b) @@ -171,7 +171,10 @@ ALARM_BUTTON_BLOCKER_T b; // Disable backup audio - CLR_BACKUP_AUDIO_ENABLE(); + CLR_BACKUP_AUDIO_ENABLE(); + + // Initialize common alarm mgmt unit + initAlarmMgmt(); // Initialize alarm states and start time stamps for ( a = ALARM_ID_NO_ALARM; a < NUM_OF_ALARM_IDS; a++ ) Index: firmware/App/Services/FpgaTD.c =================================================================== diff -u -r3321a6fc6f08b731cfe3dafaa618f93b32acaf45 -r01892698468068bb97a80a84c96a6d7c5d6fde9b --- firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 3321a6fc6f08b731cfe3dafaa618f93b32acaf45) +++ firmware/App/Services/FpgaTD.c (.../FpgaTD.c) (revision 01892698468068bb97a80a84c96a6d7c5d6fde9b) @@ -255,14 +255,14 @@ if ( FPGA_EXPECTED_ID == fpgaHeader.fpgaId ) { // Check FPGA compatibility w/ firmware - if ( HD_FPGA_COMPATIBILITY_REV == fpgaSensorReadings.fpgaCompatibilityRev ) + if ( TD_FPGA_COMPATIBILITY_REV == fpgaSensorReadings.fpgaCompatibilityRev ) { result = SELF_TEST_STATUS_PASSED; } else { result = SELF_TEST_STATUS_FAILED; - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_FPGA_POST_TEST_FAILED, (U32)HD_FPGA_COMPATIBILITY_REV, (U32)fpgaSensorReadings.fpgaCompatibilityRev ) + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_FPGA_POST_TEST_FAILED, (U32)TD_FPGA_COMPATIBILITY_REV, (U32)fpgaSensorReadings.fpgaCompatibilityRev ) } } else Index: firmware/App/Services/Messaging.c =================================================================== diff -u -r772fdd144e4006fada12a2e91519378b29d54bae -r01892698468068bb97a80a84c96a6d7c5d6fde9b --- firmware/App/Services/Messaging.c (.../Messaging.c) (revision 772fdd144e4006fada12a2e91519378b29d54bae) +++ firmware/App/Services/Messaging.c (.../Messaging.c) (revision 01892698468068bb97a80a84c96a6d7c5d6fde9b) @@ -18,11 +18,10 @@ #include #include // For memcpy() -#include "reg_system.h" // Used to access system register to reset processor on request - #include "Compatible.h" #include "Messaging.h" #include "OperationModes.h" +#include "PAL.h" #include "Utilities.h" /** @@ -164,9 +163,9 @@ // Add 8-bit CRC data[ msgSize++ ] = crc; - // Pad with zero bytes to get length a multiple of CAN_MESSAGE_PAYLOAD_SIZE (8) - sizeMod = msgSize % CAN_MESSAGE_PAYLOAD_SIZE; - sizePad = ( sizeMod == 0 ? 0 : CAN_MESSAGE_PAYLOAD_SIZE - sizeMod ); + // Pad with zero bytes to get length a multiple of CAN_FRAME_PAYLOAD_SIZE (8) + sizeMod = msgSize % CAN_FRAME_PAYLOAD_SIZE; + sizePad = ( sizeMod == 0 ? 0 : CAN_FRAME_PAYLOAD_SIZE - sizeMod ); for ( i = 0; i < sizePad; i++ ) { data[ msgSize++ ] = 0; @@ -481,8 +480,8 @@ // Verify payload length if ( 0 == message->hdr.payloadLen ) { // S/w reset of processor - result = TRUE; // Reset will prevent this from getting transmitted though - systemREG1->SYSECR = (0x2) << 14; // Reset processor + result = TRUE; // Reset will prevent this from getting transmitted though + setSystemREG1_SYSECR( (0x2) << 14 ); // Reset processor } sendTestAckResponseMsg( (MSG_ID_T)message->hdr.msgID, result ); Index: firmware/App/Services/SystemCommTD.c =================================================================== diff -u -rf688e0f8bded1f0a687437e3136cfba8b14f87b6 -r01892698468068bb97a80a84c96a6d7c5d6fde9b --- firmware/App/Services/SystemCommTD.c (.../SystemCommTD.c) (revision f688e0f8bded1f0a687437e3136cfba8b14f87b6) +++ firmware/App/Services/SystemCommTD.c (.../SystemCommTD.c) (revision 01892698468068bb97a80a84c96a6d7c5d6fde9b) @@ -90,7 +90,10 @@ * @return none *************************************************************************/ void initSystemCommTD( void ) -{ +{ + // Initialize common system comm unit + initSystemComm(); + // Initialize bad message CRC time windowed count initTimeWindowedCount( TIME_WINDOWED_COUNT_BAD_MSG_CRC, MAX_COMM_CRC_FAILURES, MAX_COMM_CRC_FAILURE_WINDOW_MS ); Index: firmware/App/Services/SystemCommTD.h =================================================================== diff -u -r73d8423edc56daed591bc0b3f7baee5540aea423 -r01892698468068bb97a80a84c96a6d7c5d6fde9b --- firmware/App/Services/SystemCommTD.h (.../SystemCommTD.h) (revision 73d8423edc56daed591bc0b3f7baee5540aea423) +++ firmware/App/Services/SystemCommTD.h (.../SystemCommTD.h) (revision 01892698468068bb97a80a84c96a6d7c5d6fde9b) @@ -33,14 +33,8 @@ // ********** public definitions ********** -#define MESSAGE_SYNC_BYTE 0xA5 ///< Denali message syncronization byte. - -#define CAN_MESSAGE_PAYLOAD_SIZE 8 ///< CAN frame payload size (in bytes). - -#define MSG_ACK_BIT 0x8000 ///< ACK bit in sequence number that indicates an ACK is required. #define MAX_MSG_SEQ_NO 0x7FFF ///< Maximum sequence number for Denali message (then wraps to 1). #define MIN_MSG_SEQ_NO 0x0001 ///< Minimum sequence number for Denali message. -#define MAX_ACK_MSG_SIZE ( sizeof( MESSAGE_WRAPPER_T ) + 1 + CAN_MESSAGE_PAYLOAD_SIZE ) ///< Maximum size (in bytes) of Denali message including full (wrapped) message + sync + any CAN padding) #define NUM_OF_CAN_OUT_BUFFERS 5 ///< Number of CAN buffers for transmit #define NUM_OF_CAN_IN_BUFFERS 9 ///< Number of CAN buffers for receiving Index: firmware/source/sys_main.c =================================================================== diff -u -r766e65a173747dd60a9faae1cac228cd5f8a55a6 -r01892698468068bb97a80a84c96a6d7c5d6fde9b --- firmware/source/sys_main.c (.../sys_main.c) (revision 766e65a173747dd60a9faae1cac228cd5f8a55a6) +++ firmware/source/sys_main.c (.../sys_main.c) (revision 01892698468068bb97a80a84c96a6d7c5d6fde9b) @@ -63,6 +63,7 @@ #include "rti.h" #include "TDCommon.h" +#include "AlarmLamp.h" #include "CpldInterface.h" #include "DDInterface.h" #include "FpgaTD.h" @@ -74,6 +75,7 @@ #include "SystemCommTD.h" #include "TaskBG.h" #include "Timers.h" +#include "Utilities.h" #include "WatchdogMgmt.h" static void initProcessor( void ); @@ -159,13 +161,14 @@ *************************************************************************/ static void initSoftware( void ) { -// initSemaphores(); + initSemaphores(); // Initialize ms timer counter initTimers(); + // Initialize CPLD interface + initCPLD(); // Initialize alarm manager - initAlarmMgmt(); + initAlarmMgmtTD(); // Initialize drivers - initCPLD(); initInternalADC(); // initBattery(); // Initialize async interrupt handlers @@ -178,11 +181,11 @@ initFpgaTD(); initMsgQueues(); // initNVDataMgmt(); - initSystemComm(); initSystemCommTD(); initWatchdogMgmt(); // Initialize monitors // Initialize controllers + initAlarmLamp(); // Initialize modes initOperationModes(); }