Skip to content

Commit

Permalink
Merge IC:Caelum-rc4+dev11, osal v6.0.0-rc4+dev87
Browse files Browse the repository at this point in the history
- Add OS_StatusToString API
- See <nasa/cFS#505>
  • Loading branch information
astrogeco committed Jun 22, 2022
2 parents 2864b25 + 223a618 commit 419c673
Show file tree
Hide file tree
Showing 9 changed files with 134 additions and 2 deletions.
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@ This is a collection of abstraction APIs and associated framework to be located

The autogenerated OSAL user's guide can be viewed at <https://github.com/nasa/cFS/blob/gh-pages/OSAL_Users_Guide.pdf>.

## Version History
## Changelog

### Development Build: v6.0.0-rc4+dev87

- Add OS_StatusToString API
- See <https://github.com/nasa/cFS/pull/505>

### Development Build: v6.0.0-rc4+dev83

Expand Down
25 changes: 25 additions & 0 deletions src/os/inc/osapi-error.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,20 @@
*/
typedef char os_err_name_t[OS_ERROR_NAME_LENGTH];

/**
* @brief Status converted to string length limit
*
* Used for sizing os_status_string_t intended for use in printing osal_status_t values
* Sized to fit LONG_MIN including NULL termination
*/
#define OS_STATUS_STRING_LENGTH 12

/**
* @brief For the @ref OS_StatusToString() function, to ensure
* everyone is making an array of the same length.
*/
typedef char os_status_string_t[OS_STATUS_STRING_LENGTH];

/** @defgroup OSReturnCodes OSAL Return Code Defines
*
* The specific status/return code definitions listed in this section may be extended or refined
Expand Down Expand Up @@ -165,6 +179,17 @@ static inline long OS_StatusToInteger(osal_status_t Status)
* @retval #OS_ERROR if error could not be converted
*/
int32 OS_GetErrorName(int32 error_num, os_err_name_t *err_name);

/*-------------------------------------------------------------------------------------*/
/**
* @brief Convert status to a string
*
* @param[in] status Status value to convert
* @param[out] status_string Buffer to store status converted to string
*
* @return Passed in string pointer
*/
char *OS_StatusToString(osal_status_t status, os_status_string_t *status_string);
/**@}*/

#endif /* OSAPI_ERROR_H */
2 changes: 1 addition & 1 deletion src/os/inc/osapi-version.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
/*
* Development Build Macro Definitions
*/
#define OS_BUILD_NUMBER 83
#define OS_BUILD_NUMBER 87
#define OS_BUILD_BASELINE "v6.0.0-rc4"

/*
Expand Down
20 changes: 20 additions & 0 deletions src/os/shared/src/osapi-errors.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,26 @@ static const OS_ErrorTable_Entry_t OS_GLOBAL_ERROR_NAME_TABLE[] = {
*********************************************************************************
*/

/*----------------------------------------------------------------
*
* Function: OS_StatusToString
*
* Purpose: Implemented per public OSAL API
* See description in API and header file for detail
*
*-----------------------------------------------------------------*/
char *OS_StatusToString(osal_status_t status, os_status_string_t *status_string)
{
char *string = NULL;

if (status_string != NULL)
{
snprintf(*status_string, sizeof(*status_string), "%ld", OS_StatusToInteger(status));
string = *status_string;
}
return string;
}

/*----------------------------------------------------------------
*
* Function: OS_GetErrorName
Expand Down
32 changes: 32 additions & 0 deletions src/unit-test-coverage/shared/src/coveragetest-errors.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,37 @@ void Test_OS_GetErrorName(void)
OSAPI_TEST_FUNCTION_RC(OS_GetErrorName(-555555, NULL), OS_INVALID_POINTER);
}

/*--------------------------------------------------------------------------------*
** OS_StatusToString test helper function to avoid repeating logic
**--------------------------------------------------------------------------------*/
void Test_OS_StatusToString_Helper(osal_status_t status)
{
os_status_string_t status_string;
char * rtn_addr;
char expected[OS_STATUS_STRING_LENGTH + 1];

/* Used oversized string to test for truncation */
snprintf(expected, sizeof(expected), "%ld", OS_StatusToInteger(status));
rtn_addr = OS_StatusToString(status, &status_string);
UtAssert_ADDRESS_EQ(rtn_addr, status_string);
UtAssert_STRINGBUF_EQ(status_string, sizeof(status_string), expected, sizeof(expected));
}

/*--------------------------------------------------------------------------------*
** Functional OS_StatusToString test
**--------------------------------------------------------------------------------*/
void Test_OS_StatusToString(void)
{
/* NULL test */
UtAssert_ADDRESS_EQ(OS_StatusToString(OS_SUCCESS, NULL), NULL);

/* Status value tests */
Test_OS_StatusToString_Helper(OS_SUCCESS);
Test_OS_StatusToString_Helper(OS_ERROR);
Test_OS_StatusToString_Helper(OSAL_STATUS_C(INT32_MAX));
Test_OS_StatusToString_Helper(OSAL_STATUS_C(INT32_MIN));
}

/* Osapi_Test_Setup
*
* Purpose:
Expand All @@ -71,4 +102,5 @@ void Osapi_Test_Teardown(void) {}
void UtTest_Setup(void)
{
ADD_TEST(OS_GetErrorName);
ADD_TEST(OS_StatusToString);
}
31 changes: 31 additions & 0 deletions src/unit-tests/oscore-test/ut_oscore_misc_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,37 @@ void UT_os_geterrorname_test(void)
UtAssert_StrCmp(errNames[2], "OS_ERR_NO_FREE_IDS", "%s == %s", errNames[2], "OS_ERR_NO_FREE_IDS");
}

/*--------------------------------------------------------------------------------*
** OS_StatusToString test helper function to avoid repeating logic
**--------------------------------------------------------------------------------*/
void UT_os_statustostring_test_helper(osal_status_t status)
{
os_status_string_t status_string;
char * rtn_addr;
char expected[OS_STATUS_STRING_LENGTH + 1];

/* Used oversized string to test for truncation */
snprintf(expected, sizeof(expected) - 1, "%ld", OS_StatusToInteger(status));
rtn_addr = OS_StatusToString(status, &status_string);
UtAssert_ADDRESS_EQ(rtn_addr, status_string);
UtAssert_STRINGBUF_EQ(status_string, sizeof(status_string), expected, sizeof(expected));
}

/*--------------------------------------------------------------------------------*
** Functional OS_StatusToString test
**--------------------------------------------------------------------------------*/
void UT_os_statustostring_test(void)
{
/* NULL test */
UtAssert_ADDRESS_EQ(OS_StatusToString(OS_SUCCESS, NULL), NULL);

/* Status value tests */
UT_os_statustostring_test_helper(OS_SUCCESS);
UT_os_statustostring_test_helper(OS_ERROR);
UT_os_statustostring_test_helper(OSAL_STATUS_C(INT32_MAX));
UT_os_statustostring_test_helper(OSAL_STATUS_C(INT32_MIN));
}

/*--------------------------------------------------------------------------------*
** Syntax: int32 OS_HeapGetInfo(OS_heap_prop_t *heap_prop)
** Purpose: Returns current info on the heap
Expand Down
1 change: 1 addition & 0 deletions src/unit-tests/oscore-test/ut_oscore_misc_test.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ void UT_os_getlocaltime_test(void);
void UT_os_setlocaltime_test(void);

void UT_os_geterrorname_test(void);
void UT_os_statustostring_test(void);

void UT_os_heapgetinfo_test(void);

Expand Down
1 change: 1 addition & 0 deletions src/unit-tests/oscore-test/ut_oscore_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,7 @@ void UtTest_Setup(void)
UtTest_Add(UT_os_task_getid_by_sysdata_test, UT_os_task_getid_by_sysdata_test, NULL, "OS_TaskFindIdBySystemData");

UtTest_Add(UT_os_geterrorname_test, NULL, NULL, "OS_GetErrorName");
UtTest_Add(UT_os_statustostring_test, NULL, NULL, "OS_StatusToString");

UtTest_Add(UT_os_getlocaltime_test, NULL, NULL, "OS_GetLocalTime");
UtTest_Add(UT_os_setlocaltime_test, NULL, NULL, "OS_SetLocalTime");
Expand Down
17 changes: 17 additions & 0 deletions src/ut-stubs/osapi-error-stubs.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,20 @@ int32 OS_GetErrorName(int32 error_num, os_err_name_t *err_name)

return UT_GenStub_GetReturnValue(OS_GetErrorName, int32);
}

/*
* ----------------------------------------------------
* Generated stub function for OS_StatusToString()
* ----------------------------------------------------
*/
char *OS_StatusToString(osal_status_t status, os_status_string_t *status_string)
{
UT_GenStub_SetupReturnBuffer(OS_StatusToString, char *);

UT_GenStub_AddParam(OS_StatusToString, osal_status_t, status);
UT_GenStub_AddParam(OS_StatusToString, os_status_string_t *, status_string);

UT_GenStub_Execute(OS_StatusToString, Basic, NULL);

return UT_GenStub_GetReturnValue(OS_StatusToString, char *);
}

0 comments on commit 419c673

Please sign in to comment.