diff --git a/docs/cFE Application Developers Guide.md b/docs/cFE Application Developers Guide.md index 329cff100..81ec9770b 100644 --- a/docs/cFE Application Developers Guide.md +++ b/docs/cFE Application Developers Guide.md @@ -1769,7 +1769,6 @@ for extracting that field from the header: | Total Message Length | CFE_SB_GetTotalMsgLength | Command & Telemetry | | User Data Message Length | CFE_SB_GetUserDataLength | Command & Telemetry | | Command Code | CFE_SB_GetCmdCode | Command Only | -| Sender ID | CFE_SB_GetLastSenderId | Command & Telemetry | | Checksum | CFE_SB_GetChecksum | Command Only | In addition to the function for reading the checksum field, there is @@ -1778,15 +1777,6 @@ and compares it to the checksum in the header. The API is called CFE_SB_ValidateChecksum() and it simply returns a success or failure indication. -It should be noted that the function, CFE_SB_GetLastSendId, is ideal -for verifying that critical commands are arriving from a legitimate -source. This function allows the Developer(s) to define a strict ICD -between two or more Applications to ensure that an erroneous Application -does not accidentally issue a critical command. However, its use for -routine command verification is discouraged since it would increase the -cross-coupling between Applications and require multiple Applications to -be modified if a command's source changes. - If the Application's data structure definitions don't include the header information, then the CFE_SB_GetUserData API could be used to obtain the start address of the SB Message data. @@ -1880,7 +1870,6 @@ After a message is received, the SB Message Header accessor functions (as described in Section 6.5.3) should be used to identify the message so that the application can react to it appropriately. - #### 6.8 Improving Message Transfer Performance for Large SB Messages Occasionally, there is a need for large quantities of data to be passed diff --git a/docs/src/cfe_api.dox b/docs/src/cfe_api.dox index 7a5113cb7..2a0278383 100644 --- a/docs/src/cfe_api.dox +++ b/docs/src/cfe_api.dox @@ -169,7 +169,6 @@
  • #CFE_SB_GetTotalMsgLength - \copybrief CFE_SB_GetTotalMsgLength
  • #CFE_SB_GetMsgTime - \copybrief CFE_SB_GetMsgTime
  • #CFE_SB_GetCmdCode - \copybrief CFE_SB_GetCmdCode -
  • #CFE_SB_GetLastSenderId - \copybrief CFE_SB_GetLastSenderId
  • #CFE_SB_MessageStringGet - \copybrief CFE_SB_MessageStringGet
  • \ref CFEAPISBChecksum diff --git a/fsw/cfe-core/src/inc/cfe_sb.h b/fsw/cfe-core/src/inc/cfe_sb.h index 7f92c3794..403cca07c 100644 --- a/fsw/cfe-core/src/inc/cfe_sb.h +++ b/fsw/cfe-core/src/inc/cfe_sb.h @@ -208,16 +208,6 @@ typedef struct { extern CFE_SB_Qos_t CFE_SB_Default_Qos;/**< \brief Defines a default priority and reliabilty for off-board routing */ -/** \brief Message Sender Identification Type Definition -** -** Parameter used in #CFE_SB_GetLastSenderId API which allows the receiver of a message -** to validate the sender of the message. -**/ -typedef struct { - uint32 ProcessorId;/**< \brief Processor Id from which the message was sent */ - char AppName[OS_MAX_API_NAME];/**< \brief Application that sent the message */ -} CFE_SB_SenderId_t; - /****************** Function Prototypes **********************/ /** @defgroup CFEAPISBPipe cFE Pipe Management APIs @@ -1173,37 +1163,6 @@ uint16 CFE_SB_GetCmdCode(CFE_SB_MsgPtr_t MsgPtr); **/ CFE_TIME_SysTime_t CFE_SB_GetMsgTime(CFE_SB_MsgPtr_t MsgPtr); -/*****************************************************************************/ -/** -** \brief Retrieve the application Info of the sender for the last message. -** -** \par Description -** This routine can be used after a successful #CFE_SB_RcvMsg call -** to find out which application sent the message that was received. -** -** \par Assumptions, External Events, and Notes: -** Note - If an error occurs in this API, the *Ptr value may be NULL or -** random. Therefore, it is recommended that the return code be tested -** for CFE_SUCCESS before reading the sender information. -** -** \param[in] Ptr A pointer to a local variable of type #CFE_SB_SenderId_t. -** Typically a caller declares a ptr of type CFE_SB_SenderId_t -** (i.e. CFE_SB_SenderId_t *Ptr) then gives the address of that -** pointer (&Ptr) for this parameter. After a successful call -** to this API, *Ptr will point to the first byte of the -** CFE_SB_SenderId_t structure containing the sender information -** for the last message received on the given pipe. This should -** be used as a read-only pointer (in systems with an MMU, writes -** to this pointer may cause a memory protection fault). The *Ptr -** is valid only until the next call to CFE_SB_RcvMsg for the -** same pipe. -** -** \param[in] PipeId The pipe ID of the pipe the message was taken from. -** -** \return The last sender's application ID -**/ -uint32 CFE_SB_GetLastSenderId(CFE_SB_SenderId_t **Ptr,CFE_SB_PipeId_t PipeId); - /******************************************************************************/ /** ** \brief Copies a string out of a software bus message diff --git a/fsw/cfe-core/src/sb/cfe_sb_api.c b/fsw/cfe-core/src/sb/cfe_sb_api.c index 7ae142532..b257475e6 100644 --- a/fsw/cfe-core/src/sb/cfe_sb_api.c +++ b/fsw/cfe-core/src/sb/cfe_sb_api.c @@ -1320,13 +1320,6 @@ int32 CFE_SB_SendMsgFull(CFE_SB_Msg_t *MsgPtr, RtgTblPtr->SeqCnt); }/* end if */ - /* store the sender information */ - if(CFE_SB.SenderReporting != 0) - { - BufDscPtr->Sender.ProcessorId = CFE_PSP_GetProcessorId(); - strncpy(&BufDscPtr->Sender.AppName[0],CFE_SB_GetAppTskName(TskId,FullName),OS_MAX_API_NAME); - } - /* At this point there must be at least one destination for pkt */ /* Send the packet to all destinations */ @@ -1620,72 +1613,6 @@ int32 CFE_SB_RcvMsg(CFE_SB_MsgPtr_t *BufPtr, }/* end CFE_SB_RcvMsg */ -/* - * Function: CFE_SB_GetLastSenderId - See API and header file for details - */ -uint32 CFE_SB_GetLastSenderId(CFE_SB_SenderId_t **Ptr,CFE_SB_PipeId_t PipeId) -{ - - CFE_SB_BufferD_t *Ptr2BufDescriptor; - uint32 TskId = 0; - uint32 AppId = 0xFFFFFFFF; - char FullName[(OS_MAX_API_NAME * 2)]; - - TskId = OS_TaskGetId(); - - /* validate ptr - note: must validate ptr before pipe id validation */ - /* because an invalid pipe id sets the callers pointer to NULL */ - if(Ptr == NULL){ - CFE_EVS_SendEventWithAppID(CFE_SB_LSTSNDER_ERR1_EID,CFE_EVS_EventType_ERROR,CFE_SB.AppId, - "SB GetLastSender Err:Rcvd Null Ptr,Pipe=%d,App=%s", - (int)PipeId,CFE_SB_GetAppTskName(TskId,FullName)); - return CFE_SB_BAD_ARGUMENT; - }/* end if */ - - /* validate pipe id */ - if(CFE_SB_ValidatePipeId(PipeId)!=CFE_SUCCESS){ - *Ptr = NULL; - CFE_EVS_SendEventWithAppID(CFE_SB_LSTSNDER_ERR2_EID,CFE_EVS_EventType_ERROR,CFE_SB.AppId, - "SB GetLastSender Err:Rcvd Invalid Pipe=%d,App=%s", - (int)PipeId,CFE_SB_GetAppTskName(TskId,FullName)); - return CFE_SB_BAD_ARGUMENT; - }/* end if */ - - CFE_ES_GetAppID(&AppId); - - CFE_SB_LockSharedData(__func__,__LINE__); - - /* verify requestor is owner of pipe */ - if(CFE_SB.PipeTbl[PipeId].AppId != AppId){ - *Ptr = NULL; - CFE_SB_UnlockSharedData(__func__,__LINE__); - CFE_EVS_SendEventWithAppID(CFE_SB_GLS_INV_CALLER_EID,CFE_EVS_EventType_ERROR,CFE_SB.AppId, - "SB GetLastSender Err:Caller(%s) is not the owner of pipe %d", - CFE_SB_GetAppTskName(TskId,FullName),(int)PipeId); - return CFE_SB_BAD_ARGUMENT; - }/* end if */ - - /* Get ptr to buffer descriptor for the last msg received on the given pipe */ - Ptr2BufDescriptor = CFE_SB.PipeTbl[PipeId].CurrentBuff; - - if ( Ptr2BufDescriptor == NULL ) - { - *Ptr = NULL; - CFE_SB.PipeTbl[PipeId].LastSender = CFE_SB_INVALID_MSG_ID; - CFE_SB_UnlockSharedData(__func__,__LINE__); - return CFE_SB_NO_MSG_RECV; - } - else - { - /* Set the receivers pointer to the adr of 'Sender' struct in buf descriptor */ - *Ptr = (CFE_SB_SenderId_t *) &Ptr2BufDescriptor -> Sender; - CFE_SB_UnlockSharedData(__func__,__LINE__); - return CFE_SUCCESS; - } - -}/* end CFE_SB_GetLastSenderId */ - - /* * Function: CFE_SB_ZeroCopyGetPtr - See API and header file for details */ diff --git a/fsw/cfe-core/src/sb/cfe_sb_priv.h b/fsw/cfe-core/src/sb/cfe_sb_priv.h index 3aca3f347..95c252979 100644 --- a/fsw/cfe-core/src/sb/cfe_sb_priv.h +++ b/fsw/cfe-core/src/sb/cfe_sb_priv.h @@ -172,7 +172,6 @@ typedef struct { uint16 UseCount; uint32 Size; void *Buffer; - CFE_SB_SenderId_t Sender; } CFE_SB_BufferD_t; diff --git a/fsw/cfe-core/unit-test/sb_UT.c b/fsw/cfe-core/unit-test/sb_UT.c index 2f2ffcf1a..16a4ed279 100644 --- a/fsw/cfe-core/unit-test/sb_UT.c +++ b/fsw/cfe-core/unit-test/sb_UT.c @@ -3332,11 +3332,6 @@ void Test_RcvMsg_API(void) SB_UT_ADD_SUBTEST(Test_RcvMsg_InvalidPipeId); SB_UT_ADD_SUBTEST(Test_RcvMsg_InvalidTimeout); SB_UT_ADD_SUBTEST(Test_RcvMsg_Poll); - SB_UT_ADD_SUBTEST(Test_RcvMsg_GetLastSenderNull); - SB_UT_ADD_SUBTEST(Test_RcvMsg_GetLastSenderInvalidPipe); - SB_UT_ADD_SUBTEST(Test_RcvMsg_GetLastSenderInvalidCaller); - SB_UT_ADD_SUBTEST(Test_RcvMsg_GetLastSenderNoValidSender); - SB_UT_ADD_SUBTEST(Test_RcvMsg_GetLastSenderSuccess); SB_UT_ADD_SUBTEST(Test_RcvMsg_Timeout); SB_UT_ADD_SUBTEST(Test_RcvMsg_PipeReadError); SB_UT_ADD_SUBTEST(Test_RcvMsg_PendForever); @@ -3405,117 +3400,6 @@ void Test_RcvMsg_Poll(void) } /* end Test_RcvMsg_Poll */ -/* -** Test receive last message response to a null sender ID -*/ -void Test_RcvMsg_GetLastSenderNull(void) -{ - CFE_SB_PipeId_t PipeId; - uint32 PipeDepth = 10; - - SETUP(CFE_SB_CreatePipe(&PipeId, PipeDepth, "RcvMsgTestPipe")); - - ASSERT_EQ(CFE_SB_GetLastSenderId(NULL, PipeId), CFE_SB_BAD_ARGUMENT); - - EVTCNT(2); - - EVTSENT(CFE_SB_LSTSNDER_ERR1_EID); - - TEARDOWN(CFE_SB_DeletePipe(PipeId)); - -} /* end Test_RcvMsg_GetLastSenderNull */ - -/* -** Test receive last message response to an invalid pipe ID -*/ -void Test_RcvMsg_GetLastSenderInvalidPipe(void) -{ - CFE_SB_PipeId_t PipeId; - CFE_SB_PipeId_t InvalidPipeId = 250; - CFE_SB_SenderId_t *GLSPtr; - uint32 PipeDepth = 10; - - SETUP(CFE_SB_CreatePipe(&PipeId, PipeDepth, "RcvMsgTestPipe")); - - ASSERT_EQ(CFE_SB_GetLastSenderId(&GLSPtr, InvalidPipeId), CFE_SB_BAD_ARGUMENT); - - EVTCNT(2); - - EVTSENT(CFE_SB_LSTSNDER_ERR2_EID); - - TEARDOWN(CFE_SB_DeletePipe(PipeId)); - -} /* end Test_RcvMsg_GetLastSenderInvalidPipe */ - -/* -** Test receive last message response to an invalid owner ID -*/ -void Test_RcvMsg_GetLastSenderInvalidCaller(void) -{ - CFE_SB_PipeId_t PipeId; - CFE_SB_SenderId_t *GLSPtr; - uint32 PipeDepth = 10; - uint32 OrigPipeOwner; - - SETUP(CFE_SB_CreatePipe(&PipeId, PipeDepth, "RcvMsgTestPipe")); - - /* Change pipe owner ID to execute 'invalid caller' code */ - OrigPipeOwner = CFE_SB.PipeTbl[PipeId].AppId; - CFE_SB.PipeTbl[PipeId].AppId = OrigPipeOwner + 1; - ASSERT_EQ(CFE_SB_GetLastSenderId(&GLSPtr, PipeId), CFE_SB_BAD_ARGUMENT); - - EVTCNT(2); - - EVTSENT(CFE_SB_GLS_INV_CALLER_EID); - - /* Restore original pipe owner apid */ - CFE_SB.PipeTbl[PipeId].AppId = OrigPipeOwner; - TEARDOWN(CFE_SB_DeletePipe(PipeId)); - -} /* end Test_RcvMsg_GetLastSenderInvalidCaller */ - - -void Test_RcvMsg_GetLastSenderNoValidSender(void) -{ - CFE_SB_PipeId_t PipeId; - CFE_SB_SenderId_t *GLSPtr; - uint32 PipeDepth = 10; - - SETUP(CFE_SB_CreatePipe(&PipeId, PipeDepth, "RcvMsgTestPipe")); - ASSERT_EQ(CFE_SB_GetLastSenderId(&GLSPtr, PipeId), CFE_SB_NO_MSG_RECV); - - EVTCNT(1); - - TEARDOWN(CFE_SB_DeletePipe(PipeId)); - -} /* end Test_RcvMsg_GetLastSenderNoValidSender */ - - -/* -** Test successful receive last message request -*/ -void Test_RcvMsg_GetLastSenderSuccess(void) -{ - CFE_SB_PipeId_t PipeId; - CFE_SB_SenderId_t *GLSPtr; - SB_UT_Test_Tlm_t TlmPkt; - CFE_SB_MsgPtr_t TlmPktPtr = (CFE_SB_MsgPtr_t) &TlmPkt; - CFE_SB_MsgPtr_t PtrToMsg; - uint32 PipeDepth = 10; - - SETUP(CFE_SB_CreatePipe(&PipeId, PipeDepth, "RcvMsgTestPipe")); - CFE_SB_InitMsg(&TlmPkt, SB_UT_TLM_MID, sizeof(TlmPkt), true); - SETUP(CFE_SB_Subscribe(SB_UT_TLM_MID, PipeId)); - SETUP(CFE_SB_SendMsg(TlmPktPtr)); - SETUP(CFE_SB_RcvMsg(&PtrToMsg, PipeId,CFE_SB_PEND_FOREVER)); - ASSERT(CFE_SB_GetLastSenderId(&GLSPtr, PipeId)); - - EVTCNT(3); - - TEARDOWN(CFE_SB_DeletePipe(PipeId)); - -} /* end Test_RcvMsg_GetLastSenderSuccess */ - /* ** Test receiving a message response to a timeout */ diff --git a/fsw/cfe-core/unit-test/sb_UT.h b/fsw/cfe-core/unit-test/sb_UT.h index 0ec5effef..b62fca00b 100644 --- a/fsw/cfe-core/unit-test/sb_UT.h +++ b/fsw/cfe-core/unit-test/sb_UT.h @@ -2825,10 +2825,7 @@ void Test_SendMsg_MaxMsgSizePlusOne_ZeroCopy(void); ** This function does not return a value. ** ** \sa #UT_Text, #Test_RcvMsg_InvalidPipeId, #Test_RcvMsg_InvalidTimeout, -** \sa #Test_RcvMsg_Poll, #Test_RcvMsg_GetLastSenderNull, -** \sa #Test_RcvMsg_GetLastSenderInvalidPipe, -** \sa #Test_RcvMsg_GetLastSenderInvalidCaller, -** \sa #Test_RcvMsg_GetLastSenderSuccess, #Test_RcvMsg_Timeout, +** \sa #Test_RcvMsg_Poll, #Test_RcvMsg_Timeout, ** \sa #Test_RcvMsg_PipeReadError, #Test_RcvMsg_PendForever ** ******************************************************************************/ @@ -2898,110 +2895,6 @@ void Test_RcvMsg_InvalidTimeout(void); ******************************************************************************/ void Test_RcvMsg_Poll(void); -/*****************************************************************************/ -/** -** \brief Test receive last message response to a null sender ID -** -** \par Description -** This function tests the receive last message response to a null -** sender ID. -** -** \par Assumptions, External Events, and Notes: -** None -** -** \returns -** This function does not return a value. -** -** \sa #UT_Text, #SB_ResetUnitTest, #CFE_SB_CreatePipe, -** \sa #CFE_SB_GetLastSenderId, #UT_GetNumEventsSent, #UT_EventIsInHistory, -** \sa #CFE_SB_DeletePipe, #UT_Report -** -******************************************************************************/ -void Test_RcvMsg_GetLastSenderNull(void); - -/*****************************************************************************/ -/** -** \brief Test receive last message response to an invalid pipe ID -** -** \par Description -** This function tests the receive last message response to an invalid -** pipe ID. -** -** \par Assumptions, External Events, and Notes: -** None -** -** \returns -** This function does not return a value. -** -** \sa #UT_Text, #SB_ResetUnitTest, #CFE_SB_CreatePipe, -** \sa #CFE_SB_GetLastSenderId, #UT_GetNumEventsSent, #UT_EventIsInHistory, -** \sa #CFE_SB_DeletePipe, #UT_Report -** -******************************************************************************/ -void Test_RcvMsg_GetLastSenderInvalidPipe(void); - -/*****************************************************************************/ -/** -** \brief Test receive last message response to an invalid owner ID -** -** \par Description -** This function tests the receive last message response to an invalid -** owner ID. -** -** \par Assumptions, External Events, and Notes: -** None -** -** \returns -** This function does not return a value. -** -** \sa #UT_Text, #SB_ResetUnitTest, #CFE_SB_CreatePipe, -** \sa #CFE_SB_GetLastSenderId, #UT_GetNumEventsSent, #UT_EventIsInHistory, -** \sa #CFE_SB_DeletePipe, #UT_Report -** -******************************************************************************/ -void Test_RcvMsg_GetLastSenderInvalidCaller(void); - -/*****************************************************************************/ -/** -** \brief Test receive last message response when there is no last sender -** -** \par Description -** This function tests the receive last message response when no last -** sender. -** -** \par Assumptions, External Events, and Notes: -** None -** -** \returns -** This function does not return a value. -** -** \sa #UT_Text, #SB_ResetUnitTest, #CFE_SB_CreatePipe, -** \sa #CFE_SB_GetLastSenderId, #UT_GetNumEventsSent, #UT_EventIsInHistory, -** \sa #CFE_SB_DeletePipe, #UT_Report -** -******************************************************************************/ -void Test_RcvMsg_GetLastSenderNoValidSender(void); - -/*****************************************************************************/ -/** -** \brief Test successful receive last message request -** -** \par Description -** This function tests the successful receive last message request. -** -** \par Assumptions, External Events, and Notes: -** None -** -** \returns -** This function does not return a value. -** -** \sa #UT_Text, #SB_ResetUnitTest, #CFE_SB_CreatePipe, -** \sa #CFE_SB_GetLastSenderId, #UT_GetNumEventsSent, #CFE_SB_DeletePipe, -** \sa #UT_Report -** -******************************************************************************/ -void Test_RcvMsg_GetLastSenderSuccess(void); - /*****************************************************************************/ /** ** \brief Test receiving a message response to a timeout