#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/timeb.h>
#include <string.h>
#ifdef __linux__
#include <unistd.h>
#else
#include <windows.h>
#endif
unsigned int message_mask;
{
if (mess_struct_ptr->
category & message_mask)
{
}
}
void DeviceData(const char *device_key,
int packet_length,
unsigned char *packet_buffer_ptr)
{
unsigned int count;
for (count = 0; count*
sizeof(
cfdp_struct_type) < (
unsigned int)packet_length; count++)
{
{
printf(
"Message %s\n",cfdp_struct_ptr->
message);
}
{
printf("Progress Transaction_id %s -> %s\t file size=%lld\t bytes trans=%lld\t percent trans=%u%%\n",
}
}
}
int CreateDataFile(char *pathname,
unsigned int file_size)
{
FILE *file_ptr = NULL;
char fill_data[250];
unsigned int i;
if ((file_ptr = fopen(pathname,"wb")) == NULL)
{
printf("Error Failed to open example data file.\n");
}
memset(fill_data,0xfe,sizeof(fill_data));
for (i = 0; i < file_size; i+=sizeof(fill_data))
fwrite(fill_data,1,sizeof(fill_data),file_ptr);
fflush(file_ptr);
fclose(file_ptr);
}
int InitExampleDataFiles(char *pathname1MB,
char *destination_pathname1MB,
char *pathname2MB,
char *destination_pathname2MB,
char *pathname3MB,
char *destination_pathname3MB)
{
struct timeb timebuffer;
char home_path[256];
{
}
sprintf(pathname1MB, "%s/cfdp_bp_destination_data_file_1MB",home_path);
ftime(&timebuffer);
sprintf(destination_pathname1MB,"%s_%u",
pathname1MB,
(unsigned int)timebuffer.time);
sprintf(pathname2MB, "%s/cfdp_bp_primitive_data_file_2MB",home_path);
if (CreateDataFile(pathname2MB,2000000) ==
FAIL)
{
}
sprintf(destination_pathname2MB,"%s_%u",
pathname2MB,
(unsigned int)timebuffer.time);
sprintf(pathname3MB, "%s/cfdp_rename_bp_primitive_data_file",home_path);
sprintf(destination_pathname3MB,"%s_%u",
pathname3MB,
(unsigned int)timebuffer.time);
}
int InitPrimitiveFile(char *pathname1MB,
char *destination_pathname1MB,
char *pathname2MB,
char *destination_pathname2MB,
char *pathname3MB,
char *destination_pathname3MB,
char *primitive_pathname)
{
char home_path[256];
char primitive[256];
FILE *file_ptr = NULL;
{
}
sprintf(primitive_pathname,"%s/cfdp_bp_primitives.txt",home_path);
if ((file_ptr = fopen(primitive_pathname,"wb")) == NULL)
{
printf("Error Failed to open cfdp primitives file.\n");
}
sprintf(primitive,"primitive_version 2 ION_CFDP\r\n\r\n");
fwrite(primitive,1,strlen(primitive),file_ptr);
sprintf(primitive, "get //// \"%s\" 2 \"%s\"\r\n",
pathname1MB,
destination_pathname1MB);
fwrite(primitive,1,strlen(primitive),file_ptr);
sprintf(primitive, "put //// \"%s\" 2 \"%s\"\r\n",
pathname2MB,
destination_pathname2MB);
fwrite(primitive,1,strlen(primitive),file_ptr);
sprintf(primitive, "rename_file //// \"%s\" 2 \"%s\"\r\n",
destination_pathname2MB,
destination_pathname3MB);
fwrite(primitive,1,strlen(primitive),file_ptr);
sprintf(primitive, "create_file //// \"%s\" 2 \r\n",
destination_pathname1MB);
fwrite(primitive,1,strlen(primitive),file_ptr);
sprintf(primitive, "message //// \"Info Finished processing primitive file.\" 2 \r\n");
fwrite(primitive,1,strlen(primitive),file_ptr);
fflush(file_ptr);
fclose(file_ptr);
}
int main(int argc, char *argv[])
{
int return_value;
char pathname[256];
char pathname1MB[256];
char destination_pathname1MB[256];
char pathname2MB[256];
char destination_pathname2MB[256];
char pathname3MB[256];
char destination_pathname3MB[256];
char primitive_pathname[256];
unsigned int transaction_count;
unsigned int timeout_in_sec;
unsigned int i;
unsigned int primitive_count;
char log_path[256];
char log_filename[256];
strcpy (pathname, "./cfdp_bp_process_primitive_config.txt");
if (argc == 2)
{
strcpy(pathname,argv[1]);
}
else if (argc > 2)
{
printf("Error Command line contains too many arguments.\n");
return 0;
}
strcpy(log_path,"");
strcpy(log_filename,"cfdp_bp_process_primitive_log_file");
log_filename,
{
{
printf("Error Failed to GetDisplayMessageMask.\n");
}
{
printf("Error Failed to RegisterCFDPDeviceData.\n");
}
if (InitExampleDataFiles(pathname1MB,
destination_pathname1MB,
pathname2MB,
destination_pathname2MB,
pathname3MB,
destination_pathname3MB) !=
SUCCESS)
{
printf("Error Failed to InitExampleDataFiles.\n");
return 0;
}
if (InitPrimitiveFile(pathname1MB,
destination_pathname1MB,
pathname2MB,
destination_pathname2MB,
pathname3MB,
destination_pathname3MB,
{
printf("Error Failed to InitPrimitiveFile.\n");
return 0;
}
printf("\nProcess BP Primitive File\n\n");
{
{
timeout_in_sec = 300;
transaction_count = primitive_count - 1;
&transaction_count,
&cfdp_struct_array_ptr);
{
for (i=0; i<transaction_count;i++)
{
if (cfdp_struct_array_ptr[i].cfdp_status!=
DS_SUCCESS)
{
printf("Info Failed to execute filestore with transaction ID: %s.\n",
cfdp_struct_array_ptr[i].transaction_id);
}
}
}
else
{
printf("Error Failed to MonitorAllCFDPTransactions.\n");
}
}
}
else
{
printf("Error Failed to ProcessFileOfCFDPPrimitives.\n");
}
}
remove(pathname2MB);
#ifdef __linux__
sleep(1);
#else
Sleep(1000);
#endif
return 0;
}
Message codes and structure definition for the Device Service library.
#define DS_SUCCESS
40 DS message code for Success
Definition: ds_shared.h:65
@ FALSE_OR_NO
False.
Definition: ds_shared.h:105
#define DS_MESSAGE
45 DS message code for Message
Definition: ds_shared.h:70
Structure of parameters needed for CFDP transaction status.
Definition: ds_shared.h:145
char destination_pathname[256]
Destination path and filename.
Definition: ds_shared.h:147
unsigned long cfdp_status
(e.g., DS_PACKET_SENDING, DS_PACKET_RECEIVING, DS_SUSPEND, DS_RESUME, DS_CANCEL, DS_SUCCESS,...
Definition: ds_shared.h:164
unsigned short percent_transferred
Bytes transferred divided by file size. Will reset with packet/PDU retransmissions.
Definition: ds_shared.h:150
char message[256]
A message received in a DTN metadata or finished PDU.
Definition: ds_shared.h:160
long long bytes_transferred
The current number of bytes transmitted or received.
Definition: ds_shared.h:151
char transaction_id[50]
The transaction ID string is a combination of the decimal dotted notation EID (NATIVE) or decimal EID...
Definition: ds_shared.h:149
long long file_size
The size of the file being transferred.
Definition: ds_shared.h:152
Structure of parameters needed for message support.
Definition: trek_toolkit_common_api_ansi_c.h:74
char message[MAX_MESSAGE_SIZE]
Message.
Definition: trek_toolkit_common_api_ansi_c.h:77
enum message_category category
Message category (e.g., MSG_CAT_ERROR, MSG_CAT_ERROR_ALERT, MSG_CAT_WARNING, MSG_CAT_WARNING_ALERT,...
Definition: trek_toolkit_common_api_ansi_c.h:76
#define SUCCESS
The function completed successfully.
Definition: trek_error.h:8
#define FAIL
The function failed for an unknown reason.
Definition: trek_error.h:9