Skip to content

Commit

Permalink
Post CCB review changes, Add new title for MOVEFILES variable
Browse files Browse the repository at this point in the history
  • Loading branch information
jdfiguer authored and jdfiguer committed Mar 21, 2024
1 parent 621a2fa commit 05e0858
Show file tree
Hide file tree
Showing 10 changed files with 115 additions and 119 deletions.
8 changes: 3 additions & 5 deletions docs/dox_src/cfs_ds.dox
Original file line number Diff line number Diff line change
Expand Up @@ -147,12 +147,10 @@
the platform.

<h2>Move File Capability</h2>
If the DS_MOVE_FILES configuration parameter is set to a non-empty string, the telemetry
If the MoveFilesDestDir global variable is set to a non-empty string at app initialization, the telemetry
database, Destination File table load images and the File Table display page
require changes. The Destination File Table rdl file uses the DS_MOVE_FILES
definition in the ds_platform_cfg.h file. However, in order to get the
required parameter included in telemetry, this configuration parameter must be
set to 1 rather than TRUE. The table images must include this parameter in
require changes. The Destination File Table rdl file uses the DS_MOVEFILES_DESTDIR
definition in the ds_platform_cfg.h file. The table images must include this parameter in
order to load successfully and the display page must be modified to display
this parameter.
**/
Expand Down
1 change: 0 additions & 1 deletion fsw/inc/ds_extern_typedefs.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ typedef struct
*/
typedef struct
{
char Movename[DS_PATHNAME_BUFSIZE]; /**< \brief Move files to this dir after close */
char Pathname[DS_PATHNAME_BUFSIZE]; /**< \brief Path portion of filename */
char Basename[DS_BASENAME_BUFSIZE]; /**< \brief Base portion of filename */
char Extension[DS_EXTENSION_BUFSIZE]; /**< \brief Extension portion of filename */
Expand Down
32 changes: 13 additions & 19 deletions fsw/inc/ds_platform_cfg.h
Original file line number Diff line number Diff line change
Expand Up @@ -427,25 +427,6 @@
*/
#define DS_FILE_HEADER_TYPE 1

/**
* \brief Move Files to Downlink Directory After Close Selection
*
* \par Description:
* Set this parameter to enable the code and structures to
* automatically move DS files to another directory after
* closing the files. The intended use for this setting is
* to move files from a working directory into a directory
* from which the files can be downlinked. Note that even
* after enabling this feature, files will not be moved if
* the move pathname in the Destination File Table is null.
*
* \par Limits
* This parameter must be set to one of the following:
* non-empty string = add move pathname field to Destination File Table
* empty string = do not add move pathname to Destination File Table
*/
#define DS_MOVE_FILES "Move to downlink directory"

/**
* \brief Application Per Packet Pipe Limit
*
Expand All @@ -462,6 +443,19 @@
*/
#define DS_PER_PACKET_PIPE_LIMIT 45

/**
* \brief Destination File Table -- default table movename
*
* \par Description:
* This parameter defines the default movename for the
* Destination File Table.
*
* \par Limits:
* The string length (including string terminator) cannot exceed
* #OS_MAX_PATH_LEN. (limit is not verified)
*/
#define DS_MOVEFILES_DESTDIR "Move to downlink directory"

/**\}*/

#endif
1 change: 1 addition & 0 deletions fsw/src/ds_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,7 @@ CFE_Status_t DS_AppInitialize(void)
memset(&DS_AppData, 0, sizeof(DS_AppData));

DS_AppData.AppEnableState = DS_DEF_ENABLE_STATE;
strncpy(DS_AppData.MoveFilesDestDir, DS_MOVEFILES_DESTDIR, sizeof(DS_AppData.MoveFilesDestDir));

/*
** Mark files as closed
Expand Down
7 changes: 7 additions & 0 deletions fsw/src/ds_app.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@
#define DS_SB_TIMEOUT 1000
#define DS_SECS_PER_TIMEOUT (DS_SB_TIMEOUT / 1000)

/**
* \brief Array size for DS file move trigger
*/
#define MOVE_FILES_TRIGGER_SIZE 64

/**
* \brief Current state of destination files
*/
Expand Down Expand Up @@ -104,6 +109,8 @@ typedef struct

DS_HashLink_t HashLinks[DS_PACKETS_IN_FILTER_TABLE]; /**< \brief Hash table linked list elements */
DS_HashLink_t *HashTable[DS_HASH_TABLE_ENTRIES]; /**< \brief Each hash table entry is a linked list */

char MoveFilesDestDir[DS_TOTAL_FNAME_BUFSIZE]; /**< \brief Move files to this dir after close */
} DS_AppData_t;

/** \brief DS global data structure reference */
Expand Down
87 changes: 42 additions & 45 deletions fsw/src/ds_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -811,64 +811,53 @@ void DS_FileCloseDest(int32 FileIndex)
*/
OS_close(FileStatus->FileHandle);

if (strlen(DS_MOVE_FILES) > 0)
/*
** Move file only if table has a downlink directory name...
*/
if (DS_AppData.MoveFilesDestDir[0] != '\0')
{
/*
** Move file only if table has a downlink directory name...
** Make sure directory name does not end with slash character...
*/
if (DS_AppData.DestFileTblPtr->File[FileIndex].Movename[0] != '\0')
CFE_SB_MessageStringGet(PathName, DS_AppData.MoveFilesDestDir, NULL,
sizeof(PathName), sizeof(DS_AppData.MoveFilesDestDir));
PathLength = strlen(PathName);
if (PathName[PathLength - 1] == '/')
{
/*
** Make sure directory name does not end with slash character...
*/
CFE_SB_MessageStringGet(PathName, DS_AppData.DestFileTblPtr->File[FileIndex].Movename, NULL,
sizeof(PathName), sizeof(DS_AppData.DestFileTblPtr->File[FileIndex].Movename));
PathLength = strlen(PathName);
if (PathName[PathLength - 1] == '/')
{
PathName[PathLength - 1] = '\0';
PathLength--;
}
PathName[PathLength - 1] = '\0';
PathLength--;
}

/*
** Get a pointer to slash character before the filename...
*/
FileName = strrchr(FileStatus->FileName, '/');

if (FileName != NULL)
{
/*
** Get a pointer to slash character before the filename...
** Verify that directory name plus filename is not too large...
*/
FileName = strrchr(FileStatus->FileName, '/');

if (FileName != NULL)
if ((PathLength + strlen(FileName)) < DS_TOTAL_FNAME_BUFSIZE)
{
/*
** Verify that directory name plus filename is not too large...
** Append the filename (with slash) to the directory name...
*/
if ((PathLength + strlen(FileName)) < DS_TOTAL_FNAME_BUFSIZE)
{
/*
** Append the filename (with slash) to the directory name...
*/
strcat(PathName, FileName);
strcat(PathName, FileName);

/*
** Use OS function to move/rename the file...
*/
OS_result = OS_mv(FileStatus->FileName, PathName);
/*
** Use OS function to move/rename the file...
*/
OS_result = OS_mv(FileStatus->FileName, PathName);

if (OS_result != OS_SUCCESS)
{
/*
** Error - send event but leave destination enabled...
*/
CFE_EVS_SendEvent(DS_MOVE_FILE_ERR_EID, CFE_EVS_EventType_ERROR,
"FILE MOVE error: src = '%s', tgt = '%s', result = %d", FileStatus->FileName,
PathName, (int)OS_result);
}
}
else
if (OS_result != OS_SUCCESS)
{
/*
** Error - send event but leave destination enabled...
*/
CFE_EVS_SendEvent(DS_MOVE_FILE_ERR_EID, CFE_EVS_EventType_ERROR,
"FILE MOVE error: dir name = '%s', filename = '%s'", PathName, FileName);
"FILE MOVE error: src = '%s', tgt = '%s', result = %d", FileStatus->FileName,
PathName, (int)OS_result);
}
}
else
Expand All @@ -877,12 +866,20 @@ void DS_FileCloseDest(int32 FileIndex)
** Error - send event but leave destination enabled...
*/
CFE_EVS_SendEvent(DS_MOVE_FILE_ERR_EID, CFE_EVS_EventType_ERROR,
"FILE MOVE error: dir name = '%s', filename = 'NULL'", PathName);
"FILE MOVE error: dir name = '%s', filename = '%s'", PathName, FileName);
}

/* Update the path name for reporting */
strncpy(FileStatus->FileName, PathName, sizeof(FileStatus->FileName));
}
else
{
/*
** Error - send event but leave destination enabled...
*/
CFE_EVS_SendEvent(DS_MOVE_FILE_ERR_EID, CFE_EVS_EventType_ERROR,
"FILE MOVE error: dir name = '%s', filename = 'NULL'", PathName);
}

/* Update the path name for reporting */
strncpy(FileStatus->FileName, PathName, sizeof(FileStatus->FileName));
}

/*
Expand Down
8 changes: 4 additions & 4 deletions fsw/src/ds_verify.h
Original file line number Diff line number Diff line change
Expand Up @@ -190,10 +190,6 @@
#error DS_FILE_HEADER_TYPE must be 0 or 1!
#endif

#ifndef DS_MOVE_FILES
#error "DS_MOVE_FILES must be defined!"
#endif

#ifndef DS_PER_PACKET_PIPE_LIMIT
#error DS_PER_PACKET_PIPE_LIMIT must be defined!
#elif (DS_PER_PACKET_PIPE_LIMIT < 1)
Expand All @@ -202,4 +198,8 @@
#error DS_PER_PACKET_PIPE_LIMIT cannot be greater than DS_APP_PIPE_DEPTH!
#endif

#ifndef DS_MOVEFILES_DESTDIR
#error "DS_MOVEFILES_DESTDIR must be defined!"
#endif

#endif
16 changes: 0 additions & 16 deletions fsw/tables/ds_file_tbl.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ DS_DestFileTable_t DS_DestFileTable = {
{
/* File Index 00 -- event packets only */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ "set_by_cmd_b4_enable",
/* .Basename = */ "events",
/* .Extension = */ ".dat",
Expand All @@ -87,7 +86,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 01 -- application housekeeping packets */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ "set_by_cmd_b4_enable",
/* .Basename = */ "app",
/* .Extension = */ ".hk",
Expand All @@ -100,7 +98,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 02 -- application telemetry packets */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ "set_by_cmd_b4_enable",
/* .Basename = */ "app",
/* .Extension = */ ".tlm",
Expand All @@ -113,7 +110,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 03 -- hardware telemetry packets */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ "set_by_cmd_b4_enable",
/* .Basename = */ "hw",
/* .Extension = */ "tlm",
Expand All @@ -126,7 +122,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 04 -- cFE housekeeping packets */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ "set_by_cmd_b4_enable",
/* .Basename = */ "cfe",
/* .Extension = */ "hk",
Expand All @@ -139,7 +134,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 05 -- cFE telemetry packets */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ "set_by_cmd_b4_enable",
/* .Basename = */ "cfe",
/* .Extension = */ "tlm",
Expand All @@ -152,7 +146,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 06 */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ DS_EMPTY_STRING,
/* .Basename = */ DS_EMPTY_STRING,
/* .Extension = */ DS_EMPTY_STRING,
Expand All @@ -165,7 +158,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 07 */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ DS_EMPTY_STRING,
/* .Basename = */ DS_EMPTY_STRING,
/* .Extension = */ DS_EMPTY_STRING,
Expand All @@ -178,7 +170,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 08 */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ DS_EMPTY_STRING,
/* .Basename = */ DS_EMPTY_STRING,
/* .Extension = */ DS_EMPTY_STRING,
Expand All @@ -191,7 +182,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 09 */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ DS_EMPTY_STRING,
/* .Basename = */ DS_EMPTY_STRING,
/* .Extension = */ DS_EMPTY_STRING,
Expand All @@ -204,7 +194,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 10 */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ DS_EMPTY_STRING,
/* .Basename = */ DS_EMPTY_STRING,
/* .Extension = */ DS_EMPTY_STRING,
Expand All @@ -217,7 +206,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 11 */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ DS_EMPTY_STRING,
/* .Basename = */ DS_EMPTY_STRING,
/* .Extension = */ DS_EMPTY_STRING,
Expand All @@ -230,7 +218,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 12 */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ DS_EMPTY_STRING,
/* .Basename = */ DS_EMPTY_STRING,
/* .Extension = */ DS_EMPTY_STRING,
Expand All @@ -243,7 +230,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 13 */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ DS_EMPTY_STRING,
/* .Basename = */ DS_EMPTY_STRING,
/* .Extension = */ DS_EMPTY_STRING,
Expand All @@ -256,7 +242,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 14 */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ DS_EMPTY_STRING,
/* .Basename = */ DS_EMPTY_STRING,
/* .Extension = */ DS_EMPTY_STRING,
Expand All @@ -269,7 +254,6 @@ DS_DestFileTable_t DS_DestFileTable = {
},
/* File Index 15 */
{
/* .Movename = */ DS_EMPTY_STRING,
/* .Pathname = */ DS_EMPTY_STRING,
/* .Basename = */ DS_EMPTY_STRING,
/* .Extension = */ DS_EMPTY_STRING,
Expand Down
7 changes: 1 addition & 6 deletions unit-test/ds_cmds_tests.c
Original file line number Diff line number Diff line change
Expand Up @@ -991,7 +991,7 @@ void DS_SetDestSizeCmd_Test_FileTableNotLoaded(void)
UT_SetDefaultReturnValue(UT_KEY(DS_TableVerifySize), true);

/* Execute the function being tested */
UtAssert_VOIDCALL(DS_SetDestSizeCmd(&UT_CmdBuf.Buf));
UtAssert_VOIDCALL(DS_SetDestSizeCmd(&UT_CmdBuf.Buf));

/* Verify results */
UtAssert_UINT32_EQ(DS_AppData.CmdRejectedCounter, 1);
Expand Down Expand Up @@ -1276,11 +1276,6 @@ void DS_CloseAllCmd_Test_Nominal(void)
DS_AppData.FileStatus[i].FileHandle = OS_OBJECT_ID_UNDEFINED;
}

if (strlen(DS_MOVE_FILES) > 0)
{
strncpy(DS_AppData.DestFileTblPtr->File[0].Movename, "", DS_PATHNAME_BUFSIZE);
}

/* Execute the function being tested */
UtAssert_VOIDCALL(DS_CloseAllCmd(&UT_CmdBuf.Buf));

Expand Down
Loading

0 comments on commit 05e0858

Please sign in to comment.