diff --git a/src/CrFwRepErr.h b/src/CrFwRepErr.h index d340310..b5462dd 100644 --- a/src/CrFwRepErr.h +++ b/src/CrFwRepErr.h @@ -19,6 +19,12 @@ * reported. * This interface defines several error reporting functions, one for each set of * error parameter types. + * Not all functions defined in this interface are used by the CORDET Framework. + * Some are intended for use by application components. + * + * The range of error codes is defined in type ::CrFwRepErrCode_t. + * Note that this is a configurable type that users are expected to extend with + * their own error codes. * * In general, the implementation of this interface is entirely application-specific * but a simple default implementation is provided in CrFwRepErr.c. @@ -145,10 +151,35 @@ void CrFwRepErrPckt(CrFwRepErrCode_t errCode, CrFwTypeId_t typeId, * @param errCode the error code * @param instanceId the instance identifier of the component which raises the error report * @param typeId the type identifier of the component which raises the error report - * @param rep the component holding the report which triggered the error + * @param rep a component holding a report */ void CrFwRepErrRep(CrFwRepErrCode_t errCode, CrFwTypeId_t typeId, CrFwInstanceId_t instanceId, FwSmDesc_t rep); +/** + * Report an error which has one parameter attached to it representing a command component. + * This function generate an error report with one parameter. + * @param errCode the error code + * @param instanceId the instance identifier of the component which raises the error report + * @param typeId the type identifier of the component which raises the error report + * @param cmd a component holding a command + */ +void CrFwRepErrCmd(CrFwRepErrCode_t errCode, CrFwTypeId_t typeId, + CrFwInstanceId_t instanceId, FwSmDesc_t cmd); + + +/** + * Report an error which has three parameters attached to it representing the kind of a report + * or command as given by the triplet [type, sub-type, discriminant]. + * This function generate an error report with three parameters. + * @param errCode the error code + * @param instanceId the instance identifier of the component which raises the error report + * @param typeId the type identifier of the component which raises the error report + * @param type a report or command service + */ +void CrFwRepErrKind(CrFwRepErrCode_t errCode, CrFwTypeId_t typeId, + CrFwInstanceId_t instanceId, CrFwServType_t servType, + CrFwServSubType_t servSubType, CrFwDiscriminant_t disc); + #endif /* CRFW_REPERR_H_ */ diff --git a/tests/config/CrFwRepErr.c b/tests/config/CrFwRepErr.c index fe0c487..fd84a83 100644 --- a/tests/config/CrFwRepErr.c +++ b/tests/config/CrFwRepErr.c @@ -220,6 +220,41 @@ void CrFwRepErrRep(CrFwRepErrCode_t errCode, CrFwTypeId_t typeId, errRepPos = (CrFwCounterU2_t)((errRepPos + 1) % CR_FW_ERR_REP_ARRAY_SIZE); } +/*-----------------------------------------------------------------------------------------*/ +void CrFwRepErrCmd(CrFwRepErrCode_t errCode, CrFwTypeId_t typeId, + CrFwInstanceId_t instanceId, FwSmDesc_t cmd) { + CrFwCounterU1_t i; + FwSmDesc_t* temp = NULL; + + errRepArray[errRepPos].errCode = errCode; + errRepArray[errRepPos].instanceId = instanceId; + errRepArray[errRepPos].typeId = typeId; + temp = (FwSmDesc_t*)&errRepArray[errRepPos].par[0]; /* Load address of cmd in first 4 elements of par[] */ + *temp = cmd; + for (i=4; i