Skip to content

How can I connect cfdp engine with a cFS container? #15

@Jilly-05

Description

@Jilly-05

I want to know how to set up MIB of cfdp plugin so that I can connect with cFS.

I've set up cFS and COSMOS with a "COSMOS and NASA cFS" guide documentation, and it works very well.
Now I want to try CFDP with COSMOS.
I've installed CF app from NASA and finished building.
And I tried to send TX_FILE command with COSMOS.

  1. I made "map.bin" file in /cf directory with SB command
  2. I sent TX_FILE command
COMMAND CF TX_FILE BIG_ENDIAN "Send file from Spacecraft to Ground"
  APPEND_ID_PARAMETER CCSDS_STREAMID 16 UINT MIN_UINT16 MAX_UINT16 0x18B3 "CCSDS Packet Identification" BIG_ENDIAN
  APPEND_PARAMETER CCSDS_SEQUENCE 16 UINT MIN_UINT16 MAX_UINT16 0xC000 "CCSDS Packet Sequence Control" BIG_ENDIAN
  APPEND_PARAMETER CCSDS_LENGTH 16 UINT MIN_UINT16 MAX_UINT16 137 "CCSDS Packet Data Length" BIG_ENDIAN
  APPEND_PARAMETER CCSDS_FC 8 UINT MIN_UINT8 MAX_UINT8 2 "CCSDS Command Function Code"
  APPEND_PARAMETER CCSDS_CHECKSUM 8 UINT MIN_UINT8 MIN_UINT8 0 "Checksum" 
  APPEND_PARAMETER CLASS 8 UINT 0 1 1 "0=CFDP class 1, 1=CFDP class 2"
  APPEND_PARAMETER KEEP 8 UINT 0 1 1 "0=delete file after transfer, 1=keep file"
  APPEND_PARAMETER CHAN 8 UINT 0 1 0 "Channel number (0 or 1)"
  APPEND_PARAMETER PRIO 8 UINT 0 255 0 "Priority (0 is highest)"
  APPEND_PARAMETER DEST_ID 16 UINT MIN_UINT16 MAX_UINT16 1 "CFDP destination entity ID"
  APPEND_PARAMETER SRC_FILENAME 512 STRING "/cf/map.bin" "Spacecraft /path/filename"
  APPEND_PARAMETER DEST_FILENAME 512 STRING "temp.bin" "Complete host /path/filename"

  1. I got this log message
2025-05-20 11:57:30 EVS Port1 1980-012-14:14:20.95008 66/1/CF_APP 90: CF: start class 2 tx of file 25:/cf/map.bin -> 791609600:temp.bin
2025-05-20 11:57:30 EVS Port1 1980-012-14:14:20.95019 66/1/CF_APP 118: CF: file transfer successfully initiated
  1. Then I got this log message
2025-05-20 11:58:41 EVS Port1 1980-012-14:15:31.70014 66/1/CF_APP 106: CF S2(25:1), ack limit reached, no eof-ack

And here's my plugin.txt of cfdp and cFS CF app configuration table

VARIABLE cfdp_microservice_name CFDP
VARIABLE cfdp_route_prefix /cfdp
VARIABLE cfdp_port 2905

VARIABLE cfdp_cmd_target_name CF
VARIABLE cfdp_cmd_packet_name CFDP_PDU
VARIABLE cfdp_cmd_item_name PDU

VARIABLE cfdp_tlm_target_name CF
VARIABLE cfdp_tlm_packet_name CFDP_PDU
VARIABLE cfdp_tlm_item_name PDU

VARIABLE source_entity_id 1
VARIABLE destination_entity_id 25
VARIABLE root_path /DEFAULT/targets_modified/CFDP/tmp
VARIABLE bucket config

# Set to true to enable a test configuration
VARIABLE plugin_test_mode "false"

MICROSERVICE CFDP <%= cfdp_microservice_name %>
  WORK_DIR .
  ROUTE_PREFIX <%= cfdp_route_prefix %>
  ENV OPENC3_ROUTE_PREFIX <%= cfdp_route_prefix %>
  ENV SECRET_KEY_BASE 324973597349867207430793759437697498769349867349674
  PORT <%= cfdp_port %>
  CMD rails s -b 0.0.0.0 -p <%= cfdp_port %> -e production
  # MIB Options Follow -
  # You will need to modify these for your mission
  OPTION source_entity_id <%= source_entity_id %>
  OPTION tlm_info <%= cfdp_tlm_target_name %> <%= cfdp_tlm_packet_name %> <%= cfdp_tlm_item_name %>
  OPTION destination_entity_id <%= destination_entity_id %>
  OPTION cmd_info <%= cfdp_cmd_target_name %> <%= cfdp_cmd_packet_name %> <%= cfdp_cmd_item_name %>
  OPTION root_path <%= root_path %>
/**
 * @file
 *  The CF Application default configuration table
 */
#include "cfe.h"
#include "cfe_tbl_filedef.h"
#include "cf_tbldefs.h"

CF_ConfigTable_t CF_config_table = {
    10,    /* ticks_per_second */
    16384, /* max number of bytes per wakeup to calculate r2 recv file CRC */
    25,    /* the local entity ID of the CF app */
    {      /* channel configuration for CF_NUM_CHANNELS */
     {
         /* channel 0 */
         5,      /* max number of outgoing messages per wakeup */
         5,      /* max number of rx messages per wakeup */
         3,      /* ACK timer */
         3,      /* NAK timer */
         30,     /* inactivity timer */
         4,      /* ACK limit */
         4,      /* NAK limit */
         0x18c8, /* input message id */
         0x08c2, /* output message id */
         16,     /* input pipe depth */
         {       /* polling directory configuration for CF_MAX_POLLING_DIR_PER_CHAN */
          {
              /* polling directory 0 */
              5,               /* interval seconds */
              25,              /* priority */
              CF_CFDP_CLASS_2, /* class to send */
              23,              /* destination entity id */
              "/cf",  /* source directory */
              "./poll_dir",    /* destination directory */
              0                /* polling directory enable flag (1 = enabled) */
          },
          {
              0 /* zero fill unused polling directory slots */
          }},
         "",            /* throttle sem, empty string means no throttle */
         1,             /* dequeue enable flag (1 = enabled) */
         .move_dir = "" /* If not empty, will attempt move instead of delete on TX file complete */
     },
     {        /* channel 1 */
      5,      /* max number of outgoing messages per wakeup */
      5,      /* max number of rx messages per wakeup */
      3,      /* ack timer */
      3,      /* nak timer */
      30,     /* inactivity timer */
      4,      /* ack limit */
      4,      /* nak limit */
      0x18c9, /* input message id */
      0x08c3, /* output message id */
      16,     /* input pipe depth */
      {       /* polling directory configuration for CF_MAX_POOLING_DIR_PER_CHAN */
       {
           0 /* zero fill unused polling directory slots */
       }},
      "", /* throttle sem, empty string means no throttle */
      1,  /* dequeue enable flag (1 = enabled) */
      .move_dir = ""}},
    480,       /* outgoing_file_chunk_size */
    "/cf", /* directory to put temp files */
};
CFE_TBL_FILEDEF(CF_config_table, CF_APP.config_table, CF config table, cf_def_config.tbl)

I checked config/DEFAULT/targets_modified/CFDP/tmp/ directory but, of course, there was no file.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions