コード例 #1
0
ファイル: cfe_tbl_task.c プロジェクト: Spacecraft-Code/cFE
void CFE_TBL_InitData(void)
{
    /* Initialize Counters */
    CFE_TBL_TaskData.CmdCounter = 0;
    CFE_TBL_TaskData.ErrCounter = 0;
    CFE_TBL_TaskData.SuccessValCtr = 0;
    CFE_TBL_TaskData.FailedValCtr = 0;

    /* Get the assigned Application ID for the Table Services Task */
    CFE_ES_GetAppID(&CFE_TBL_TaskData.TableTaskAppId);

    /* Initialize Command Pipe Parameters */
    CFE_TBL_TaskData.PipeDepth = CFE_TBL_TASK_PIPE_DEPTH;
    strncpy(CFE_TBL_TaskData.PipeName, CFE_TBL_TASK_PIPE_NAME, 16);

    /* Initialize Packet Headers */
    CFE_SB_InitMsg(&CFE_TBL_TaskData.HkPacket,
                   CFE_TBL_HK_TLM_MID,
                   sizeof(CFE_TBL_HkPacket_t),
                   TRUE);

    CFE_SB_InitMsg(&CFE_TBL_TaskData.TblRegPacket,
                   CFE_TBL_REG_TLM_MID,
                   sizeof(CFE_TBL_TblRegPacket_t),
                   TRUE);

} /* End of CFE_TBL_InitData() */
コード例 #2
0
ファイル: ci_udp.c プロジェクト: TomCrowley-ME/me_sim_test
void CI_TaskInit(void)
{
    CFE_ES_RegisterApp() ;

    CFE_EVS_Register(CI_EventFilters,
                     sizeof(CI_EventFilters)/sizeof(CFE_EVS_BinFilter_t),
                     CFE_EVS_BINARY_FILTER);

    CFE_SB_CreatePipe(&CI_CommandPipe, CI_PIPE_DEPTH,"CI_CMD_PIPE");
    CFE_SB_Subscribe(CI_CMD_MID, CI_CommandPipe);
    CFE_SB_Subscribe(CI_SEND_HK_MID, CI_CommandPipe);

    if ( (CI_SocketID = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
    {
        CFE_EVS_SendEvent(CI_SOCKETCREATE_ERR_EID,CFE_EVS_ERROR,"CI: create socket failed = %d", errno);
    }
    else
    {
       bzero((char *) &CI_SocketAddress, sizeof(CI_SocketAddress));
       CI_SocketAddress.sin_family      = AF_INET;
       CI_SocketAddress.sin_addr.s_addr = htonl(INADDR_ANY);
       CI_SocketAddress.sin_port        = htons(cfgCI_PORT);

       if ( (bind(CI_SocketID, (struct sockaddr *) &CI_SocketAddress, sizeof(CI_SocketAddress)) < 0) )
       {
           CFE_EVS_SendEvent(CI_SOCKETBIND_ERR_EID,CFE_EVS_ERROR,"CI: bind socket failed = %d", errno);
       }
       else
       {
           CI_SocketConnected = TRUE;
           #ifdef _HAVE_FCNTL_
              /*
              ** Set the socket to non-blocking
              ** This is not available to vxWorks, so it has to be
              ** Conditionally compiled in
              */
              fcntl(CI_SocketID, F_SETFL, O_NONBLOCK);
           #endif
       }
    }

    CI_ResetCounters();

    CFE_SB_InitMsg(&CI_HkTelemetryPkt,
                   CI_HK_TLM_MID,
                   CI_HK_TLM_LNGTH, TRUE);
    /*
    ** Install the delete handler
    */
    OS_TaskInstallDeleteHandler((void*)&CI_delete_callback);


    CFE_EVS_SendEvent(CI_STARTUP_INF_EID,CFE_EVS_INFORMATION, "CI App Initialized");
} /* End of CI_TaskInit() */
コード例 #3
0
ファイル: labtlm.c プロジェクト: Open-Sat/labtlm-app
/******************************************************************************
** Function: InitApp
**
*/
static int32 InitApp(void)
{
    int32 Status = CFE_SUCCESS;

    /*
    ** Initialize 'entity' objects
    */

    PKTMGR_Constructor(&LabTlm.PktMgr, PKTMGR_PIPE_NAME, PKTMGR_PIPE_DEPTH);

    /*
    ** Initialize application managers
    */

    TBLMGR_Constructor(&LabTlm.TblMgr, LABTLM_DEF_PKTTBL_FILE_NAME);

    CFE_SB_CreatePipe(&LabTlm.CmdPipe, CMDMGR_PIPE_DEPTH, CMDMGR_PIPE_NAME);
    CFE_SB_Subscribe(LABTLM_CMD_MID, LabTlm.CmdPipe);
    CFE_SB_Subscribe(LABTLM_SEND_HK_MID, LabTlm.CmdPipe);

    CMDMGR_Constructor(&LabTlm.CmdMgr);
    CMDMGR_RegisterFunc(LABTLM_CMD_RESET_FC,           LABTLM_ResetAppCmd,        0);
    CMDMGR_RegisterFunc(LABTLM_CMD_NOOP_FC,            LABTLM_NoOpCmd,            0);
    CMDMGR_RegisterFunc(LABTLM_CMD_PKT_TBL_LOAD_FC,    TBLMGR_LoadPktTable,      TBLMGR_LOAD_TBL_CMD_DATA_LEN);
    CMDMGR_RegisterFunc(LABTLM_CMD_PKT_TBL_DUMP_FC,    TBLMGR_DumpPktTable,      TBLMGR_DUMP_TBL_CMD_DATA_LEN);
    CMDMGR_RegisterFunc(LABTLM_CMD_ADD_PKT_FC,         PKTMGR_AddPktCmd,         PKKTMGR_ADD_PKT_CMD_DATA_LEN);
    CMDMGR_RegisterFunc(LABTLM_CMD_REMOVE_PKT_FC,      PKTMGR_RemovePktCmd,      PKKTMGR_REMOVE_PKT_CMD_DATA_LEN);
    CMDMGR_RegisterFunc(LABTLM_CMD_REMOVE_ALL_PKTS_FC, PKTMGR_RemoveAllPktsCmd,  0);
    CMDMGR_RegisterFunc(LABTLM_CMD_ENABLE_OUTPUT_FC,   PKTMGR_EnableOutputCmd,   PKKTMGR_ENABLE_OUTPUT_CMD_DATA_LEN);
    CMDMGR_RegisterFunc(LABTLM_CMD_SEND_DATA_TYPES_FC, LABTLM_SendDataTypeTlmCmd, 0);

    CFE_SB_InitMsg(&LabTlmHkPkt, LABTLM_TLM_HK_MID, LABTLM_TLM_HK_LEN, TRUE);
    InitDataTypePkt();

    /*
    ** Application startup event message
    */
    Status = CFE_EVS_SendEvent(LABTLM_INIT_APP_INFO_EID,
                               CFE_EVS_INFORMATION,
                               "TO-LAB Initialized. Version %d.%d.%d.%d",
                               LABTLM_MAJOR_VERSION,
                               LABTLM_MINOR_VERSION,
                               LABTLM_REVISION,
                               LABTLM_MISSION_REV);

    return(Status);

} /* End of InitApp() */
コード例 #4
0
/******************************************************************************
**  Function:  CFE_SB_EarlyInit()
**
**  Purpose:
**    Initialize the Software Bus routing tables.
**
**  Arguments:
**
**  Notes:
**    This function MUST be called before any SB API's are called.
**
**  Return:
**    CFE_SUCCESS
*/
int32 CFE_SB_EarlyInit (void) {

    int32 Stat = CFE_SUCCESS;

    CFE_SB_Default_Qos.Priority    = CFE_SB_QOS_LOW_PRIORITY;
    CFE_SB_Default_Qos.Reliability = CFE_SB_QOS_LOW_RELIABILITY;

    Stat = OS_MutSemCreate(&CFE_SB.SharedDataMutexId, "CFE_SB_DataMutex", 0);
    if(Stat != OS_SUCCESS){
      CFE_ES_WriteToSysLog("SB shared data mutex creation failed! RC=0x%08x\n",(unsigned int)Stat);
      return Stat;
    }/* end if */
    
    /* Initialize the state of susbcription reporting */
    CFE_SB.SubscriptionReporting = CFE_SB_DISABLE;

    /* Initialize the state of sender reporting */
    CFE_SB.SenderReporting = CFE_SB_DEFAULT_REPORT_SENDER;

     /* Initialize memory partition. */
    Stat = CFE_SB_InitBuffers();
    if(Stat != CFE_SUCCESS){
      /* error reported in CFE_SB_InitBuffers */
      return Stat;
    }/* end if */

    /* Initialize the pipe table. */
    CFE_SB_InitPipeTbl();

    /* Initialize the routing index look up table */
    CFE_SB_InitMsgMap();

    /* Initialize the routing table. */
    CFE_SB_InitRoutingTbl();
    
    /* Initialize the SB Statistics Pkt */
    CFE_SB_InitMsg(&CFE_SB.StatTlmMsg.Hdr.Pri,
                   CFE_SB_STATS_TLM_MID,
                   sizeof(CFE_SB_StatMsg_t),
                   TRUE);    

   CFE_SB.ZeroCopyTail = NULL;

    return Stat;

}/* end CFE_SB_EarlyInit */
コード例 #5
0
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void TO_output_data_types_packet(void)
{
    int16             i;
    char             string_variable[10] = "ABCDEFGHIJ";

    /* initialize data types packet */
    CFE_SB_InitMsg(&data_types_pkt,
                   TO_LAB_DATA_TYPES_MID,
                   sizeof(data_types_pkt), TRUE);

    CFE_SB_TimeStampMsg((CFE_SB_MsgPtr_t) &data_types_pkt);

    /* initialize the packet data */
    data_types_pkt.synch = 0x6969;
#if 0
    data_types_pkt.bit1 = 1;
    data_types_pkt.bit2 = 0;
    data_types_pkt.bit34 = 2;
    data_types_pkt.bit56 = 3;
    data_types_pkt.bit78 = 1;
    data_types_pkt.nibble1 = 0xA;
    data_types_pkt.nibble2 = 0x4;
#endif
    data_types_pkt.bl1 = FALSE;
    data_types_pkt.bl2 = TRUE;
    data_types_pkt.b1 = 16;
    data_types_pkt.b2 = 127;
    data_types_pkt.b3 = 0x7F;
    data_types_pkt.b4 = 0x45;
    data_types_pkt.w1 = 0x2468;
    data_types_pkt.w2 = 0x7FFF;
    data_types_pkt.dw1 = 0x12345678;
    data_types_pkt.dw2 = 0x87654321;
    data_types_pkt.f1 = 90.01;
    data_types_pkt.f2 = .0000045;
    data_types_pkt.df1 = 99.9;
    data_types_pkt.df2 = .4444;

    for (i=0; i < 10; i++) data_types_pkt.str[i] = string_variable[i];

    CFE_SB_SendMsg((CFE_SB_Msg_t *)&data_types_pkt);
} /* End of TO_output_data_types_packet() */
コード例 #6
0
ファイル: utf_cfe_evs.c プロジェクト: gpgreen/cfe-beagleboard
/*
**             Function Prologue
**
** Function Name:      EVS_SendEventInternal
** from: cfe_evs_utils.c in cFE 3.1, originally named EVS_SendEvent
**
** Purpose:  This routine sends an EVS event message out the software bus and all
**           enabled output ports if the calling application has been determined to
**           be registered and the event message is unfiltered
**
** Assumptions and Notes:
*/
int32 EVS_SendEventInternal(uint32 AppID, CFE_TIME_SysTime_t Time, uint16 EventID, uint16 EventType, char *EventString)
{
   int32              Status = CFE_SUCCESS;
   CFE_EVS_Packet_t   EVS_Packet;
   boolean            IsFiltered = FALSE;

   if(Status == CFE_SUCCESS)
   {
      if (!(IsFiltered))
      {
         /* Initialize CCSDS event packet */
         CFE_SB_InitMsg(&(EVS_Packet), CFE_EVS_EVENT_MSG_MID, sizeof(CFE_EVS_Packet_t), FALSE);

         /* Set the packet timestamp */
         CFE_SB_SetMsgTime((CFE_SB_Msg_t *) &EVS_Packet, Time);

         /* Initialize event message string */
         EVS_Packet.Message[0] = '\0';

         /* Obtain task and system information */
     /*    EVS_Packet.PacketID.SpacecraftID = OS_BSPGetSpacecraftId(); */
         CFE_ES_GetAppName(EVS_Packet.PacketID.AppName, AppID, OS_MAX_API_NAME);
      /*   EVS_Packet.PacketID.ProcessorID  = OS_BSPGetProcessorId(); */
         EVS_Packet.PacketID.EventID      = EventID;
         EVS_Packet.PacketID.EventType    = EventType;

         /* Copy message string to event packet message buffer */
         strncpy(EVS_Packet.Message, EventString, CFE_EVS_MAX_MESSAGE_LENGTH);

         /* Ensure that the packet is always terminated by a null character */
         EVS_Packet.Message[CFE_EVS_MAX_MESSAGE_LENGTH-1] = '\0';

         /* send event out software bus */
         Status = CFE_SB_SendMsg((CFE_SB_Msg_t *) &EVS_Packet);
      }
   }

   return Status;

} /* End EVS_SendEventInternal */
コード例 #7
0
ファイル: utf_cfe_evs.c プロジェクト: gpgreen/cfe-beagleboard
/*
**             Function Prologue
**
** Function Name:      CFE_EVS_SendTimedEvent
**
** Purpose:  This routine sends a timed event message, with message ID containing the 
**           current processor/box and task ID as well as the eventID.
**
** Assumptions and Notes:
**   Original routine returns CFE_EVS_ERR or CFE_EVS_ERR_NONE.
*/
int32 CFE_EVS_SendTimedEvent (CFE_TIME_SysTime_t Time, uint16 EventID, 
                              uint16 EventType, const char *Spec, ... )
{  
   char               BigBuf[CFE_EVS_MAX_MESSAGE_LENGTH];
   char               GTBigBuf[CFE_EVS_MAX_MESSAGE_LENGTH + 2];
   va_list            Ptr;
   CFE_EVS_Packet_t   EVS_Packet;

	/* Handle Preset Return Code */
   if (cfe_evs_api_return_value[CFE_EVS_SENDTIMEDEVENT_PROC] !=  UTF_CFE_USE_DEFAULT_RETURN_CODE)
   {
      return cfe_evs_api_return_value[CFE_EVS_SENDTIMEDEVENT_PROC];
   }

   /* Initialize CCSDS event packet */
   CFE_SB_InitMsg(&(EVS_Packet), CFE_EVS_EVENT_MSG_MID, sizeof(CFE_EVS_Packet_t), FALSE);

   /* Set the packet timestamp */
   CFE_SB_SetMsgTime((CFE_SB_Msg_t *) &EVS_Packet, Time);   
  
   EVS_Packet.Message[0] = '\0';

   /* Copy message to event packet if long format is enabled */
   va_start(Ptr, Spec);
   vsnprintf(GTBigBuf, CFE_EVS_MAX_MESSAGE_LENGTH +2, Spec, Ptr);
   va_end(Ptr);

   if (strlen(GTBigBuf) > CFE_EVS_MAX_MESSAGE_LENGTH)
   {
	 UTF_put_text ("Max Event Message Size Exceeded. Permitted %d; Actual %d\n",
			CFE_EVS_MAX_MESSAGE_LENGTH, strlen(GTBigBuf));
   }

   strncpy(BigBuf,GTBigBuf,CFE_EVS_MAX_MESSAGE_LENGTH);
   UTF_put_text("TIMED EVENT: %s\n", BigBuf);

  return CFE_SUCCESS;

} /* End CFE_EVS_SendTimedEvent */
コード例 #8
0
ファイル: labtlm.c プロジェクト: Open-Sat/labtlm-app
/******************************************************************************
** Function: InitDataTypePkt
**
*/
static void InitDataTypePkt(void)
{

   int16  i;
   char   StringVariable[10] = "ABCDEFGHIJ";

   CFE_SB_InitMsg(&ToDataTypePkt, LABTLM_TLM_DATA_TYPE_MID, LABTLM_TLM_DATA_TYPE_LEN, TRUE);

   ToDataTypePkt.synch = 0x6969;
   #if 0
      ToDataTypePkt.bit1    = 1;
      ToDataTypePkt.bit2    = 0;
      ToDataTypePkt.bit34   = 2;
      ToDataTypePkt.bit56   = 3;
      ToDataTypePkt.bit78   = 1;
      ToDataTypePkt.nibble1 = 0xA;
      ToDataTypePkt.nibble2 = 0x4;
   #endif
      ToDataTypePkt.bl1 = FALSE;
      ToDataTypePkt.bl2 = TRUE;
      ToDataTypePkt.b1  = 16;
      ToDataTypePkt.b2  = 127;
      ToDataTypePkt.b3  = 0x7F;
      ToDataTypePkt.b4  = 0x45;
      ToDataTypePkt.w1  = 0x2468;
      ToDataTypePkt.w2  = 0x7FFF;
      ToDataTypePkt.dw1 = 0x12345678;
      ToDataTypePkt.dw2 = 0x87654321;
      ToDataTypePkt.f1  = 90.01;
      ToDataTypePkt.f2  = .0000045;
      ToDataTypePkt.df1 = 99.9;
      ToDataTypePkt.df2 = .4444;

   for (i=0; i < 10; i++) ToDataTypePkt.str[i] = StringVariable[i];

} /* End InitDataTypePkt() */
コード例 #9
0
ファイル: template_main.c プロジェクト: jcmarsh/cpek
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/
void $APPLICATION_NAME$_AppInit(void)
{
    /*
    ** Register the app with Executive services
    */
    CFE_ES_RegisterApp() ;

    /*
    ** Register the events
    */ 
    CFE_EVS_Register($APPLICATION_NAME$_EventFilters,
                     sizeof($APPLICATION_NAME$_EventFilters)/sizeof(CFE_EVS_BinFilter_t),
                     CFE_EVS_BINARY_FILTER);

    /*
    ** Create the Software Bus command pipe and subscribe to housekeeping
    **  messages
    */
    CFE_SB_CreatePipe(&$APPLICATION_NAME$_CommandPipe, $APPLICATION_NAME$_PIPE_DEPTH,"$APPLICATION_NAME$_CMD_PIPE");
    CFE_SB_Subscribe($APPLICATION_NAME$_APP_CMD_MID, $APPLICATION_NAME$_CommandPipe);
    CFE_SB_Subscribe($APPLICATION_NAME$_APP_SEND_HK_MID, $APPLICATION_NAME$_CommandPipe);

    $APPLICATION_NAME$_ResetCounters();

    CFE_SB_InitMsg(&$APPLICATION_NAME$_HkTelemetryPkt,
                   $APPLICATION_NAME$_APP_HK_TLM_MID,
                   $APPLICATION_NAME$_APP_HK_TLM_LNGTH, TRUE);

    CFE_EVS_SendEvent ($APPLICATION_NAME$_STARTUP_INF_EID, CFE_EVS_INFORMATION,
               "$Application Name$ App Initialized. Version %d.%d.%d.%d",
                $APPLICATION_NAME$_APP_MAJOR_VERSION,
                $APPLICATION_NAME$_APP_MINOR_VERSION, 
                $APPLICATION_NAME$_APP_REVISION, 
                $APPLICATION_NAME$_APP_MISSION_REV);
				
} /* End of $APPLICATION_NAME$_AppInit() */
コード例 #10
0
ファイル: ut_mm_test_loadwid.c プロジェクト: kingzappo/cfe
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void Test_LoadWID(void)
{
   MM_LoadMemWIDCmd_t  CmdMsg;
   uint32              LocalCrc;
   
   /* Setup the test message header */ 
   CFE_SB_InitMsg(&CmdMsg, MM_CMD_MID, sizeof(MM_LoadMemWIDCmd_t), TRUE);
   
   /*
   ** Setup the load data array in the command message with the
   ** maximum amount of data allowed. 
   */
   memcpy(CmdMsg.DataArray, MM_TestDataSet, MM_MAX_UNINTERRUPTABLE_DATA);
   
   /* Compute the CRC value */
   LocalCrc = CFE_ES_CalculateCRC(MM_TestDataSet, MM_MAX_UNINTERRUPTABLE_DATA,
                                                       0, CFE_ES_DEFAULT_CRC);
  
   UTF_put_text("**********************************************\n");
   UTF_put_text("* Memory Load With Interrupts Disabled Tests *\n");
   UTF_put_text("**********************************************\n");
   UTF_put_text("\n");

   /*
   ** Test bad symbol name 
   */
   UTF_put_text("Test Load WID With Bad Symbol Name \n");
   UTF_put_text("-----------------------------------\n");
   strcpy(CmdMsg.DestSymAddress.SymName, "BadSymName");
   CmdMsg.DestSymAddress.Offset = 0;
   CmdMsg.NumOfBytes            = MM_MAX_UNINTERRUPTABLE_DATA;
   CmdMsg.Crc                   = LocalCrc;
   MM_LoadMemWIDCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
   /*
   ** Test bad address 
   */
   UTF_put_text("Test Load WID With Bad Address \n");
   UTF_put_text("-------------------------------\n");
   CmdMsg.DestSymAddress.SymName[0] = '\0';
   CmdMsg.DestSymAddress.Offset     = SIM_BAD_MEM_ADDR;
   CmdMsg.NumOfBytes                = MM_MAX_UNINTERRUPTABLE_DATA;
   CmdMsg.Crc                       = LocalCrc;
   MM_LoadMemWIDCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
   /*
   ** Test bad CRC value 
   */
   UTF_put_text("Test Load WID With Bad CRC value \n");
   UTF_put_text("---------------------------------\n");
   CmdMsg.DestSymAddress.SymName[0] = '\0';
   CmdMsg.DestSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes                = MM_MAX_UNINTERRUPTABLE_DATA;
   CmdMsg.Crc                       = LocalCrc ^ 0xF0F0F0F0;
   MM_LoadMemWIDCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test data size that exceeds configuration limits
   */
   UTF_put_text("Test Load WID That Exceeds Configuration Limits \n");
   UTF_put_text("------------------------------------------------\n");
   CmdMsg.DestSymAddress.SymName[0] = '\0';
   CmdMsg.DestSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes                = 0xFF;
   CmdMsg.Crc                       = LocalCrc;
   MM_LoadMemWIDCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test zero byte load
   */
   UTF_put_text("Test Load WID With Zero Data Specified \n");
   UTF_put_text("---------------------------------------\n");
   CmdMsg.DestSymAddress.SymName[0] = '\0';
   CmdMsg.DestSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes                = 0;
   CmdMsg.Crc                       = 0;
   MM_LoadMemWIDCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
   /*
   ** Test valid load of maximum size
   */
   UTF_put_text("Test Valid Load WID of Maximum Size \n");
   UTF_put_text("------------------------------------\n");
   CmdMsg.DestSymAddress.SymName[0] = '\0';
   CmdMsg.DestSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes                = MM_MAX_UNINTERRUPTABLE_DATA;
   CmdMsg.Crc                       = LocalCrc;
   MM_LoadMemWIDCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
  
   /*
   ** Test valid load less than maximum size
   */
   UTF_put_text("Test Valid Load WID Less Than Maximum Size \n");
   UTF_put_text("-------------------------------------------\n");
   CmdMsg.DestSymAddress.SymName[0] = '\0';
   CmdMsg.DestSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes                = 100;
   CmdMsg.Crc = CFE_ES_CalculateCRC(MM_TestDataSet, 100, 0, 
                                       CFE_ES_DEFAULT_CRC);
   MM_LoadMemWIDCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
} /* end Test_LoadWID */
コード例 #11
0
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void TO_init(void)
{
    int32            status;
    char             PipeName[16];
    uint16           PipeDepth;
    uint16           i;
    char             ToTlmPipeName[16];
    uint16           ToTlmPipeDepth;

    CFE_ES_RegisterApp();
    downlink_on = FALSE;
    PipeDepth = 8;
    strcpy(PipeName,  "TO_LAB_CMD_PIPE");
    ToTlmPipeDepth = 64;
    strcpy(ToTlmPipeName,  "TO_LAB_TLM_PIPE");

    /*
    ** Register event filter table...
    */
    CFE_EVS_Register(CFE_TO_EVS_Filters,
                     sizeof(CFE_TO_EVS_Filters)/sizeof(CFE_EVS_BinFilter_t),
                     CFE_EVS_BINARY_FILTER);
    /*
    ** Initialize housekeeping packet (clear user data area)...
    */
    CFE_SB_InitMsg(&to_hk_status,
                    TO_LAB_HK_TLM_MID,
                    sizeof(to_hk_status), TRUE);

    /* Subscribe to my commands */
    status = CFE_SB_CreatePipe(&TO_Cmd_pipe, PipeDepth, PipeName);
    if (status == CFE_SUCCESS)
    {
       CFE_SB_Subscribe(TO_LAB_CMD_MID,     TO_Cmd_pipe);
       CFE_SB_Subscribe(TO_LAB_SEND_HK_MID, TO_Cmd_pipe);
    }
    else
       CFE_EVS_SendEvent(TO_CRCMDPIPE_ERR_EID,CFE_EVS_ERROR, "L%d TO Can't create cmd pipe status %i",__LINE__,status);

    /* Create TO TLM pipe */
    status = CFE_SB_CreatePipe(&TO_Tlm_pipe, ToTlmPipeDepth, ToTlmPipeName);
    if (status != CFE_SUCCESS)
    {
       CFE_EVS_SendEvent(TO_TLMPIPE_ERR_EID,CFE_EVS_ERROR, "L%d TO Can't create Tlm pipe status %i",__LINE__,status);
    }

    /* Subscriptions for TLM pipe*/
    for (i=0; (i < (sizeof(TO_SubTable)/sizeof(TO_subsciption_t))); i++)
    {
       if(TO_SubTable[i].Stream != TO_UNUSED )
          status = CFE_SB_SubscribeEx(TO_SubTable[i].Stream,
                                      TO_Tlm_pipe,
                                      TO_SubTable[i].Flags,
                                      TO_SubTable[i].BufLimit);

       if (status != CFE_SUCCESS)
           CFE_EVS_SendEvent(TO_SUBSCRIBE_ERR_EID,CFE_EVS_ERROR,"L%d TO Can't subscribe to stream 0x%x status %i", __LINE__,
                             TO_SubTable[i].Stream,status);
    }
    
    /*
    ** Install the delete handler
    */
    OS_TaskInstallDeleteHandler((void *)(&TO_delete_callback));

    CFE_EVS_SendEvent (TO_INIT_INF_EID, CFE_EVS_INFORMATION,
               "TO Lab Initialized. Version %d.%d.%d.%d Awaiting enable command.",
                TO_LAB_MAJOR_VERSION,
                TO_LAB_MINOR_VERSION, 
                TO_LAB_REVISION, 
                TO_LAB_MISSION_REV);
    
} /* End of TO_Init() */
コード例 #12
0
ファイル: uu_app.c プロジェクト: gpgreen/cfe-beagleboard
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void UU_AppInit(void)
{
	/* void *TblPointer;
	//int32 Status; */
    /*
    ** Initialize app command execution counters...
    */
    UU_AppData.CmdCount = 0;
    UU_AppData.ErrCount = 0;
    UU_AppData.HkPacket.UpdateCount = 0;

    /*
    ** Initialize app configuration data...
    */
    strcpy(UU_AppData.PipeName, "UU_CMD_PIPE");

    UU_AppData.PipeDepth = 12;

    UU_AppData.LimitHK   = 2;
    UU_AppData.LimitCmd  = 4;

    /*
    ** Initialize event filter table...
    */
    UU_AppData.EventFilters[0].EventID = UU_INIT_INF_EID;
    UU_AppData.EventFilters[0].Mask    = CFE_EVS_NO_FILTER;
    UU_AppData.EventFilters[1].EventID = UU_NOOP_INF_EID;
    UU_AppData.EventFilters[1].Mask    = CFE_EVS_NO_FILTER;
    UU_AppData.EventFilters[2].EventID = UU_RESET_INF_EID;
    UU_AppData.EventFilters[2].Mask    = CFE_EVS_NO_FILTER;
    UU_AppData.EventFilters[3].EventID = UU_MID_ERR_EID;
    UU_AppData.EventFilters[3].Mask    = CFE_EVS_NO_FILTER;
    UU_AppData.EventFilters[4].EventID = UU_CC1_ERR_EID;
    UU_AppData.EventFilters[4].Mask    = CFE_EVS_NO_FILTER;
    UU_AppData.EventFilters[5].EventID = UU_LEN_ERR_EID;
    UU_AppData.EventFilters[5].Mask    = CFE_EVS_NO_FILTER;

    /*
    ** Register event filter table...
    */
    CFE_EVS_Register(UU_AppData.EventFilters,
                     UU_EVT_COUNT,
                     CFE_EVS_BINARY_FILTER);

    /*
    ** Initialize housekeeping packet (clear user data area)...
    */
    CFE_SB_InitMsg(&UU_AppData.HkPacket,
                    CFE_UU_HK_TLM_MID,
                    sizeof(UU_HkPacket_t), TRUE);

    /*
    ** Create Software Bus message pipe...
    */
    CFE_SB_CreatePipe(&UU_AppData.CmdPipe,
                       UU_AppData.PipeDepth,
                       UU_AppData.PipeName);

    /*
    ** Subscribe to Housekeeping request commands...
    */
    CFE_SB_Subscribe(CFE_UU_SEND_HK_MID,UU_AppData.CmdPipe);

    /*
    ** Subscribe to UU ground command packets...
    */
    CFE_SB_Subscribe(CFE_UU_CMD_MID,UU_AppData.CmdPipe);
    
    /*
    ** Application startup event message...
    */
    CFE_EVS_SendEvent(UU_INIT_INF_EID,
                      CFE_EVS_INFORMATION,
                     "UU: Application Initialized");

    return;

} /* End of UU_AppInit() */
コード例 #13
0
ファイル: hs_app.c プロジェクト: WindhoverLabs/cfs-hs
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
int32 HS_SbInit(void)
{
    int32 Status = CFE_SUCCESS;

    HS_AppData.MsgPtr  = (CFE_SB_MsgPtr_t) NULL;
    HS_AppData.CmdPipe = 0;
    HS_AppData.EventPipe = 0;
    HS_AppData.WakeupPipe = 0;

    /* Initialize housekeeping packet  */
    CFE_SB_InitMsg(&HS_AppData.HkPacket,HS_HK_TLM_MID,sizeof(HS_HkPacket_t),TRUE);

    /* Create Command Pipe */
    Status = CFE_SB_CreatePipe (&HS_AppData.CmdPipe,HS_CMD_PIPE_DEPTH,HS_CMD_PIPE_NAME);
    if (Status != CFE_SUCCESS)
    {
        CFE_EVS_SendEvent(HS_CR_CMD_PIPE_ERR_EID, CFE_EVS_ERROR,
              "Error Creating SB Command Pipe,RC=0x%08X",Status);
        return (Status);
    }

    /* Create Event Pipe */
    Status = CFE_SB_CreatePipe (&HS_AppData.EventPipe,HS_EVENT_PIPE_DEPTH,HS_EVENT_PIPE_NAME);
    if (Status != CFE_SUCCESS)
    {
        CFE_EVS_SendEvent(HS_CR_EVENT_PIPE_ERR_EID, CFE_EVS_ERROR,
              "Error Creating SB Event Pipe,RC=0x%08X",Status);
        return (Status);
    }

    /* Create Wakeup Pipe */
    Status = CFE_SB_CreatePipe (&HS_AppData.WakeupPipe,HS_WAKEUP_PIPE_DEPTH,HS_WAKEUP_PIPE_NAME);
    if (Status != CFE_SUCCESS)
    {
        CFE_EVS_SendEvent(HS_CR_WAKEUP_PIPE_ERR_EID, CFE_EVS_ERROR,
              "Error Creating SB Wakeup Pipe,RC=0x%08X",Status);
        return (Status);
    }

    /* Subscribe to Housekeeping Request */
    Status = CFE_SB_Subscribe(HS_SEND_HK_MID,HS_AppData.CmdPipe);
    if (Status != CFE_SUCCESS)
    {
        CFE_EVS_SendEvent(HS_SUB_REQ_ERR_EID, CFE_EVS_ERROR,
            "Error Subscribing to HK Request,RC=0x%08X",Status);
        return (Status);
    }

    /* Subscribe to HS ground commands */
    Status = CFE_SB_Subscribe(HS_CMD_MID,HS_AppData.CmdPipe);
    if (Status != CFE_SUCCESS)
    {
        CFE_EVS_SendEvent(HS_SUB_CMD_ERR_EID, CFE_EVS_ERROR,
            "Error Subscribing to Gnd Cmds,RC=0x%08X",Status);
        return (Status);
    }

    /* Subscribe to HS Wakeup Message */
    Status = CFE_SB_Subscribe(HS_WAKEUP_MID,HS_AppData.WakeupPipe);
    if (Status != CFE_SUCCESS)
    {
        CFE_EVS_SendEvent(HS_SUB_WAKEUP_ERR_EID, CFE_EVS_ERROR,
            "Error Subscribing to Wakeup,RC=0x%08X",Status);
        return (Status);
    }

    /*
    ** Event message subscription delayed until after startup synch
    */

    return(Status);

} /* End of HS_SbInit() */
コード例 #14
0
int32 THRSIM_Init(void) {
    int32 Status = CFE_SUCCESS;

    CFE_ES_RegisterApp();

    /* Initialize app data */
    THRSIM_AppData.CmdPipe = 0;
    THRSIM_AppData.MsgPtr = NULL;

    /* Set up and register events */
    THRSIM_AppData.EventFilters[0].EventID = THRSIM_INIT_INF_EID;
    THRSIM_AppData.EventFilters[0].Mask    = CFE_EVS_NO_FILTER;
    THRSIM_AppData.EventFilters[1].EventID = THRSIM_NOOP_INF_EID;
    THRSIM_AppData.EventFilters[1].Mask    = CFE_EVS_NO_FILTER;
    THRSIM_AppData.EventFilters[2].EventID = THRSIM_CRCMDPIPE_ERR_EID;
    THRSIM_AppData.EventFilters[2].Mask    = CFE_EVS_NO_FILTER;
    THRSIM_AppData.EventFilters[3].EventID = THRSIM_SUBSCRIBE_ERR_EID;
    THRSIM_AppData.EventFilters[3].Mask    = CFE_EVS_NO_FILTER;
    THRSIM_AppData.EventFilters[4].EventID = THRSIM_MSGID_ERR_EID;
    THRSIM_AppData.EventFilters[4].Mask    = CFE_EVS_NO_FILTER;
    THRSIM_AppData.EventFilters[5].EventID = THRSIM_CC1_ERR_EID;
    THRSIM_AppData.EventFilters[5].Mask    = CFE_EVS_NO_FILTER;
    THRSIM_AppData.EventFilters[6].EventID = THRSIM_MSGLEN_ERR_EID;
    THRSIM_AppData.EventFilters[6].Mask    = CFE_EVS_NO_FILTER;
    THRSIM_AppData.EventFilters[7].EventID = THRSIM_PIPE_ERR_EID;
    THRSIM_AppData.EventFilters[7].Mask    = CFE_EVS_NO_FILTER;

    Status = CFE_EVS_Register(THRSIM_AppData.EventFilters, THRSIM_FILTERED_EVT_COUNT, CFE_EVS_BINARY_FILTER);
    if (Status != CFE_SUCCESS) {
        CFE_ES_WriteToSysLog("Error registering events, RC = 0x%08X\n", Status);
        return Status;
    }

    /* Initialize housekeeping */
    CFE_SB_InitMsg(&THRSIM_AppData.HkPacket, THRSIM_HK_TLM_MID, sizeof(THRSIM_HkPacket_t), TRUE);
    THRSIM_ResetCounters();

    /* Create a command pipe and subscribe to its messages */
    Status = CFE_SB_CreatePipe(&THRSIM_AppData.CmdPipe, THRSIM_PIPE_DEPTH, "THRSIM_CMD_PIPE");
    if (Status != CFE_SUCCESS) {
        CFE_EVS_SendEvent(THRSIM_CRCMDPIPE_ERR_EID, CFE_EVS_ERROR, "Can't create command pipe, RC=0x%08X", Status);
        return Status;
    }
    Status = CFE_SB_Subscribe(THRSIM_CMD_MID, THRSIM_AppData.CmdPipe);
    if (Status != CFE_SUCCESS)  {
        CFE_EVS_SendEvent(THRSIM_SUBSCRIBE_ERR_EID, CFE_EVS_ERROR, "Error subscribing to THRSIM_CMD_MID(0x%04X), RC=0x%08X", THRSIM_CMD_MID, Status);
        return Status;
    }
    Status = CFE_SB_Subscribe(THRSIM_SEND_HK_MID, THRSIM_AppData.CmdPipe);
    if (Status != CFE_SUCCESS)  {
        CFE_EVS_SendEvent(THRSIM_SUBSCRIBE_ERR_EID, CFE_EVS_ERROR, "Error subscribing to THRSIM_SEND_HK_MID(0x%04X), RC=0x%08X", THRSIM_SEND_HK_MID, Status);
        return Status;
    }
    CFE_SB_Subscribe(THRSIM_TICK_MID, THRSIM_AppData.CmdPipe);
    if (Status != CFE_SUCCESS)  {
        CFE_EVS_SendEvent(THRSIM_SUBSCRIBE_ERR_EID, CFE_EVS_ERROR, "Error subscribing to tick message (0x%04X), RC=0x%08X", THRSIM_TICK_MID, Status);
        return Status;
    }

    /* Initialize the output message */
    CFE_SB_InitMsg(&THRSIM_AppData.thr_sim_msg, THR_SIM_MID,  sizeof(thr_sim_msg_t), TRUE);

    Status = THRSIM_HWIF_Init();
    if (Status != CFE_SUCCESS) {
        CFE_EVS_SendEvent(THRSIM_HWIF_ERR_EID, CFE_EVS_ERROR, "Error initializing HWIF, RC=0x%08X", Status);
        return Status;
    }

    CFE_EVS_SendEvent(THRSIM_INIT_INF_EID, CFE_EVS_INFORMATION, "THRSIM app initialized.");
    return CFE_SUCCESS;
}
コード例 #15
0
ファイル: tt4_app.c プロジェクト: gpgreen/cfe-beagleboard
void TT_AppInit(void)
{
	void *TblPointer;
	int32 Status;
    /*
    ** Initialize app command execution counters...
    */
    TT4_AppData.CmdCount = 0;
    TT4_AppData.ErrCount = 0;
    TT4_AppData.HkPacket.UpdateCount = 0;

    /*
    ** Initialize app configuration data...
    */
    strcpy(TT4_AppData.PipeName, "TT_CMD_PIPE");

    TT4_AppData.PipeDepth = 12;

    TT4_AppData.LimitHK   = 2;
    TT4_AppData.LimitCmd  = 4;

    /*
    ** Initialize event filter table...
    */
    TT4_AppData.EventFilters[0].EventID = TT_INIT_INF_EID;
    TT4_AppData.EventFilters[0].Mask    = CFE_EVS_NO_FILTER;
    TT4_AppData.EventFilters[1].EventID = TT_NOOP_INF_EID;
    TT4_AppData.EventFilters[1].Mask    = CFE_EVS_NO_FILTER;
    TT4_AppData.EventFilters[2].EventID = TT_RESET_INF_EID;
    TT4_AppData.EventFilters[2].Mask    = CFE_EVS_NO_FILTER;
    TT4_AppData.EventFilters[3].EventID = TT_MID_ERR_EID;
    TT4_AppData.EventFilters[3].Mask    = CFE_EVS_NO_FILTER;
    TT4_AppData.EventFilters[4].EventID = TT_CC1_ERR_EID;
    TT4_AppData.EventFilters[4].Mask    = CFE_EVS_NO_FILTER;
    TT4_AppData.EventFilters[5].EventID = TT_LEN_ERR_EID;
    TT4_AppData.EventFilters[5].Mask    = CFE_EVS_NO_FILTER;

    /*
    ** Register event filter table...
    */
    CFE_EVS_Register(TT4_AppData.EventFilters,
                     TT_EVT_COUNT,
                     CFE_EVS_BINARY_FILTER);

    /*
    ** Initialize housekeeping packet (clear user data area)...
    */
    CFE_SB_InitMsg(&TT4_AppData.HkPacket,
                    CFE_TT_HK_TLM_MID,
                    sizeof(TT_HkPacket_t), TRUE);

    /*
    ** Create Software Bus message pipe...
    */
    CFE_SB_CreatePipe(&TT4_AppData.CmdPipe,
                       TT4_AppData.PipeDepth,
                       TT4_AppData.PipeName);

    /*
    ** Subscribe to Housekeeping request commands...
    */
    CFE_SB_Subscribe(CFE_TT_SEND_HK_MID,TT4_AppData.CmdPipe);

    /*
    ** Subscribe to TT ground command packets...
    */
    CFE_SB_Subscribe(CFE_TT_CMD_MID,TT4_AppData.CmdPipe);
    
    /*
    ** Register & Initialize Table...
    */
    Status = CFE_TBL_Register(&TT4_AppData.TblHandle,
                     "FourNumbers",
                     4, /* size of table in bytes*/
                     CFE_TBL_OPT_DBL_BUFFER | CFE_TBL_OPT_LOAD_DUMP,
                     &TT_TableValidationCallbackFunc);
/*                     NULL);  */
    UTF_put_text("CFE_TBL_Register returned %lx\n", Status);
 
    Status = CFE_TBL_Load(TT4_AppData.TblHandle,
                 CFE_TBL_SRC_FILE,
                 "/ram/tt_table_values0.dat");
    UTF_put_text("CFE_TBL_Load returned %lx\n", Status);
                 
    Status = CFE_TBL_GetAddress(&TblPointer,TT4_AppData.TblHandle);
    UTF_put_text("CFE_TBL_GetAddress returned %lx\n", Status);
      
    UTF_put_text("The initial values are:%d %d %d %d\n",
     *(int8*)TblPointer,*(int8*)(TblPointer+1),
     *(int8*)(TblPointer+2),*(int8*)(TblPointer+3));
     
     
    Status = CFE_TBL_ReleaseAddress(TT4_AppData.TblHandle);                
   UTF_put_text("CFE_TBL_ReleaseAddress returned %lx\n", Status);

    /*
    ** Application startup event message...
    */
    CFE_EVS_SendEvent(TT_INIT_INF_EID,
                      CFE_EVS_INFORMATION,
                     "TT: Application Initialized");

    return;

} /* End of TT_AppInit() */
コード例 #16
0
ファイル: ut_mm_test_symtbldump.c プロジェクト: kingzappo/cfe
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void Test_SymTblDump(void)
{
   MM_SymTblToFileCmd_t        DumpSymTblCmdMsg;

   /* Setup the test message header */ 
   CFE_SB_InitMsg(&DumpSymTblCmdMsg, MM_CMD_MID, sizeof(MM_SymTblToFileCmd_t), TRUE);

   UTF_put_text("***************************\n");
   UTF_put_text("* Symbol Table Dump Tests *\n");
   UTF_put_text("***************************\n");
   UTF_put_text("\n");

   /*
   ** Test empty file name 
   */
   UTF_put_text("Test symbol dump with empty file name \n");
   UTF_put_text("--------------------------------------\n");
   DumpSymTblCmdMsg.FileName[0] = '\0';

   MM_SymTblToFileCmd((CFE_SB_MsgPtr_t)&DumpSymTblCmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
   /*
   ** Test invalid file name 
   */
   UTF_put_text("Test symbol dump with invalid file name \n");
   UTF_put_text("--------------------------------------\n");
   strcpy(DumpSymTblCmdMsg.FileName, "BadFile*Name");

   MM_SymTblToFileCmd((CFE_SB_MsgPtr_t)&DumpSymTblCmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
   /*
   ** Test good file name but OS table dump failure 
   */
   UTF_put_text("Test symbol dump with good filename but bad OS return \n");
   UTF_put_text("------------------------------------------------------\n");
   UTF_SetOSSymbolTableDumpStatus(OS_ERROR);
   strcpy(DumpSymTblCmdMsg.FileName, "IrrelevantFileName");

   MM_SymTblToFileCmd((CFE_SB_MsgPtr_t)&DumpSymTblCmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test good file name but OS table dump failure 
   */
   UTF_put_text("Test symbol dump with good filename but bad OS file \n");
   UTF_put_text("----------------------------------------------------\n");
   UTF_SetOSSymbolTableDumpStatus(OS_ERR_FILE);
   strcpy(DumpSymTblCmdMsg.FileName, "IrrelevantFileName");

   MM_SymTblToFileCmd((CFE_SB_MsgPtr_t)&DumpSymTblCmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test good file name and success from OS 
   */
   UTF_put_text("Test symbol dump with good filename and successful return\n");
   UTF_put_text("---------------------------------------------------------\n");
   UTF_SetOSSymbolTableDumpStatus(OS_SUCCESS);
   strcpy(DumpSymTblCmdMsg.FileName, "GoodFileName");

   MM_SymTblToFileCmd((CFE_SB_MsgPtr_t)&DumpSymTblCmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

} /* end Test_SymTblDump */
コード例 #17
0
ファイル: sc_app.c プロジェクト: kingzappo/cfe
int32 SC_AppInit(void)
{
    int32 Result;
            
    /* Clear global data structures */
    CFE_PSP_MemSet(&SC_OperData, 0, sizeof(SC_OperData_t));
    CFE_PSP_MemSet(&SC_AppData,  0, sizeof(SC_AppData_t));
       
    /* Number of ATS and RTS commands already executed this second */
    SC_OperData.NumCmdsSec = 0;

    /* Continue ATS execution if ATS command checksum fails */
    SC_AppData.ContinueAtsOnFailureFlag = SC_CONT_ON_FAILURE_START;
    
    /* Make sure nothing is running */
    SC_AppData.NextProcNumber = SC_NONE;
    SC_AppData.NextCmdTime[SC_ATP] = SC_MAX_TIME;
    SC_AppData.NextCmdTime[SC_RTP] = SC_MAX_TIME;

    /* Initialize the SC housekeeping packet */
    CFE_SB_InitMsg(&SC_OperData.HkPacket, SC_HK_TLM_MID, sizeof(SC_HkTlm_t), FALSE);
        
    /* Select auto-exec RTS to start during first HK request */
    if (CFE_ES_GetResetType(NULL) == CFE_ES_POWERON_RESET)
    {
        SC_AppData.AutoStartRTS = RTS_ID_AUTO_POWER_ON;    
    }    
    else
    {
        SC_AppData.AutoStartRTS = RTS_ID_AUTO_PROCESSOR;    
    }    

    /* Must be able to register for events */
    Result = CFE_EVS_Register(NULL,0,CFE_EVS_NO_FILTER);
    if (Result !=  CFE_SUCCESS)
    {
        CFE_ES_WriteToSysLog("Event Services Register returned: 0x%08X\n", Result);
        return(Result);
    }

    /* Must be able to create Software Bus message pipe */
    Result = CFE_SB_CreatePipe(&SC_OperData.CmdPipe, SC_PIPE_DEPTH, SC_CMD_PIPE_NAME);
    if (Result !=  CFE_SUCCESS)
    {
        CFE_EVS_SendEvent(SC_INIT_SB_CREATE_ERR_EID, CFE_EVS_ERROR,
                         "Software Bus Create Pipe returned: 0x%08X", Result);
        return(Result);
    }
    
    /* Must be able to subscribe to HK request command */
    Result = CFE_SB_Subscribe(SC_SEND_HK_MID, SC_OperData.CmdPipe);
    if (Result !=  CFE_SUCCESS)
    {
        CFE_EVS_SendEvent(SC_INIT_SB_SUBSCRIBE_HK_ERR_EID, CFE_EVS_ERROR,
                         "Software Bus subscribe to housekeeping returned: 0x%08X", Result);
        return(Result);
    }
    
    /* Must be able to subscribe to 1Hz wakeup command */
    Result = CFE_SB_Subscribe(SC_1HZ_WAKEUP_MID, SC_OperData.CmdPipe);
    if (Result !=  CFE_SUCCESS)
    {
        CFE_EVS_SendEvent(SC_INIT_SB_SUBSCRIBE_1HZ_ERR_EID, CFE_EVS_ERROR,
                         "Software Bus subscribe to 1 Hz cycle returned: 0x%08X", Result);        
        return(Result);
    }

    /* Must be able to subscribe to SC commands */
    Result = CFE_SB_Subscribe(SC_CMD_MID, SC_OperData.CmdPipe);
    if (Result !=  CFE_SUCCESS)
    {
        CFE_EVS_SendEvent(SC_INIT_SB_SUBSCRIBE_CMD_ERR_EID, CFE_EVS_ERROR,
                         "Software Bus subscribe to command returned: 0x%08X", Result);
        return(Result);
    }

    /* Must be able to create and initialize tables */
    Result = SC_InitTables();
    if (Result !=  CFE_SUCCESS)
    {
        return(Result);
    }

    /* Send application startup event */
    CFE_EVS_SendEvent(SC_INIT_INF_EID, CFE_EVS_INFORMATION, 
                     "SC Initialized. Version %d.%d.%d.%d",
                      SC_MAJOR_VERSION, SC_MINOR_VERSION, SC_REVISION, SC_MISSION_REV);

    return(CFE_SUCCESS);

} /* end SC_AppInit() */
コード例 #18
0
int32 SIMCI_TaskInit(void) {
    int32 Status = CFE_SUCCESS;

    CFE_ES_RegisterApp();

    SIMCI_AppData.CommandPipe = 0;
    SIMCI_AppData.MsgPtr = NULL;
    SIMCI_AppData.UplinkSocketID = 0;
    SIMCI_AppData.IngestSocketID = 0;
    SIMCI_AppData.UplinkSocketConnected = FALSE;
    SIMCI_AppData.IngestSocketConnected = FALSE;

    /* Set up and register events */
    SIMCI_AppData.EventFilters[0].EventID = SIMCI_COMMANDRST_INF_EID;
    SIMCI_AppData.EventFilters[0].Mask    = CFE_EVS_NO_FILTER;
    SIMCI_AppData.EventFilters[1].EventID = SIMCI_UPLINK_ERR_EID;
    SIMCI_AppData.EventFilters[1].Mask    = CFE_EVS_NO_FILTER;
    SIMCI_AppData.EventFilters[2].EventID = SIMCI_INGEST_ERR_EID;
    SIMCI_AppData.EventFilters[2].Mask    = CFE_EVS_NO_FILTER;
    SIMCI_AppData.EventFilters[3].EventID = SIMCI_CRCMDPIPE_ERR_EID;
    SIMCI_AppData.EventFilters[3].Mask    = CFE_EVS_NO_FILTER;
    SIMCI_AppData.EventFilters[4].EventID = SIMCI_SOCKETCREATE_ERR_EID;
    SIMCI_AppData.EventFilters[4].Mask    = CFE_EVS_NO_FILTER;
    SIMCI_AppData.EventFilters[5].EventID = SIMCI_SOCKETBIND_ERR_EID;
    SIMCI_AppData.EventFilters[5].Mask    = CFE_EVS_NO_FILTER;
    SIMCI_AppData.EventFilters[6].EventID = SIMCI_MSGID_ERR_EID;
    SIMCI_AppData.EventFilters[6].Mask    = CFE_EVS_NO_FILTER;
    SIMCI_AppData.EventFilters[7].EventID = SIMCI_CC1_ERR_EID;
    SIMCI_AppData.EventFilters[7].Mask    = CFE_EVS_NO_FILTER;

    CFE_EVS_Register(SIMCI_AppData.EventFilters, SIMCI_FILTERED_EVT_COUNT, CFE_EVS_BINARY_FILTER);
    if (Status != CFE_SUCCESS) {
        CFE_ES_WriteToSysLog("SIMCI: Error registering events, RC = 0x%08X\n", Status);
        return Status;
    }

    /* Initialize Housekeeping */
    CFE_SB_InitMsg(&SIMCI_AppData.HkPacket, SIMCI_HK_TLM_MID, sizeof(SIMCI_HkPacket_t), TRUE);
    SIMCI_ResetCounters();
    SIMCI_AppData.HkPacket.ingest_socket_connected = FALSE;
    SIMCI_AppData.HkPacket.uplink_socket_connected = FALSE;

    /* Create a command pipe and subscribe to its messages */
    Status =  CFE_SB_CreatePipe(&SIMCI_AppData.CommandPipe, SIMCI_PIPE_DEPTH, "SIMCI_CMD_PIPE");
    if (Status != CFE_SUCCESS) {
        CFE_EVS_SendEvent(SIMCI_CRCMDPIPE_ERR_EID, CFE_EVS_ERROR, "SIMCI: Can't create command pipe, RC=%08X", Status);
        return Status;
    }
    Status = CFE_SB_Subscribe(SIMCI_CMD_MID, SIMCI_AppData.CommandPipe);
    if (Status != CFE_SUCCESS) {
        CFE_EVS_SendEvent(SIMCI_SUBSCRIBE_ERR_EID, CFE_EVS_ERROR, "SIMCI: Error subscribing to SIMCI_CMD_MID(0x%04X), RC=%08X", SIMCI_CMD_MID, Status);
        return Status;
    }
    Status = CFE_SB_Subscribe(SIMCI_SEND_HK_MID, SIMCI_AppData.CommandPipe);
    if (Status != CFE_SUCCESS) {
        CFE_EVS_SendEvent(SIMCI_SUBSCRIBE_ERR_EID, CFE_EVS_ERROR, "SIMCI: Error subscribing to SIMCI_SEND_HK_MID(0x%04X), RC=%08X", SIMCI_SEND_HK_MID, Status);
        return Status;
    }

    /* Set up Uplink socket */
    SIMCI_AppData.UplinkSocketID = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    if (SIMCI_AppData.UplinkSocketID < 0) {
        CFE_EVS_SendEvent(SIMCI_SOCKETCREATE_ERR_EID, CFE_EVS_ERROR, "SIMCI: Error creating uplink socket, errno=%08X", errno);
        return ERROR;
    } else {
        struct sockaddr_in socket_address;
        CFE_PSP_MemSet((void*)&socket_address, 0, sizeof(socket_address));

        socket_address.sin_family      = AF_INET;
        socket_address.sin_addr.s_addr = htonl(INADDR_ANY);
        socket_address.sin_port        = htons(SIMCI_UPLINK_PORT);

        Status = bind(SIMCI_AppData.UplinkSocketID, (struct sockaddr *)&socket_address, sizeof(socket_address));
        if (Status == ERROR) {
            CFE_EVS_SendEvent(SIMCI_SOCKETBIND_ERR_EID, CFE_EVS_ERROR, "SIMCI: Error binding uplink socket, errno=%08X", errno);
            return Status;
        } else {
            SIMCI_AppData.UplinkSocketConnected = TRUE;
        }
    }

    /* Set up Ingest socket */
    SIMCI_AppData.IngestSocketID = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    if (SIMCI_AppData.IngestSocketID < 0) {
        CFE_EVS_SendEvent(SIMCI_SOCKETCREATE_ERR_EID, CFE_EVS_ERROR, "SIMCI: Error creating ingest socket, errno=%08X", errno);
        return ERROR;
    } else {
        struct sockaddr_in socket_address;
        CFE_PSP_MemSet((void*)&socket_address, 0, sizeof(socket_address));

        socket_address.sin_family      = AF_INET;
        socket_address.sin_addr.s_addr = htonl(INADDR_ANY);
        socket_address.sin_port        = htons(SIMCI_INGEST_PORT);

        Status = bind(SIMCI_AppData.IngestSocketID, (struct sockaddr *)&socket_address, sizeof(socket_address));
        if (Status == ERROR) {
            CFE_EVS_SendEvent(SIMCI_SOCKETBIND_ERR_EID, CFE_EVS_ERROR, "SIMCI: Error binding ingest socket, errno=%08X", errno);
            return Status;
        } else {
            SIMCI_AppData.IngestSocketConnected = TRUE;
        }
    }

    Status = SIMCI_HWIF_Init();
    if (Status != CFE_SUCCESS) {
        CFE_EVS_SendEvent(SIMCI_HWIF_ERR_EID, CFE_EVS_ERROR, "Error initializing HWIF, RC=0x%08X", Status);
        return Status;
    }

    /* Install the delete handler */
    OS_TaskInstallDeleteHandler((void*)&SIMCI_DeleteCallback);

    CFE_EVS_SendEvent(SIMCI_STARTUP_INF_EID, CFE_EVS_INFORMATION, "SIMCI App Initialized");
    return CFE_SUCCESS;
}
コード例 #19
0
void init_cmd_pkt(CCSDS_CmdPkt_t *packet, uint16 mid, uint16 cmd_code){
    CFE_SB_InitMsg(packet, mid, sizeof(CCSDS_CmdPkt_t), TRUE);
    CFE_SB_SetCmdCode((CFE_SB_MsgPtr_t) packet, cmd_code);
}
コード例 #20
0
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void Test_DumpInEvent(void)
{
   MM_DumpInEventCmd_t  CmdMsg;
   
   /* Setup the test message header */ 
   CFE_SB_InitMsg(&CmdMsg, MM_CMD_MID, sizeof(MM_DumpInEventCmd_t), TRUE);
   
   UTF_put_text("**********************************************\n");
   UTF_put_text("* Memory Dump In Event Message Tests         *\n");
   UTF_put_text("**********************************************\n");
   UTF_put_text("\n");

   /*
   ** Test bad symbol name 
   */
   UTF_put_text("Test Dump In Event With Bad Symbol Name \n");
   UTF_put_text("----------------------------------------\n");
   strcpy(CmdMsg.SrcSymAddress.SymName, "BadSymName");
   CmdMsg.SrcSymAddress.Offset  = 0;
   CmdMsg.NumOfBytes            = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType               = MM_RAM;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
   /*
   ** Test dump size zero
   */
   UTF_put_text("Test Dump In Event With Dump Size Zero \n");
   UTF_put_text("---------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes               = 0;
   CmdMsg.MemType                  = MM_RAM;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
   /*
   ** Test dump size too large 
   */
   UTF_put_text("Test Dump In Event With Dump Size Too Big \n");
   UTF_put_text("------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES + 10;
   CmdMsg.MemType                  = MM_RAM;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
   /*
   ** Test dump with invalid RAM address 
   */
   UTF_put_text("Test Dump In Event With Invalid RAM Address \n");
   UTF_put_text("--------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_BAD_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType                  = MM_RAM;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test dump with invalid EEPROM address 
   */
   UTF_put_text("Test Dump In Event With Invalid EEPROM Address \n");
   UTF_put_text("-----------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_BAD_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType                  = MM_EEPROM;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
   /*
   ** Test MEM32 dump with misaligned address 
   */
   UTF_put_text("Test MEM32 Dump In Event With Misaligned Address \n");
   UTF_put_text("-------------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR + 3;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType                  = MM_MEM32;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test MEM32 dump with misaligned data size 
   */
   UTF_put_text("Test MEM32 Dump In Event With Misaligned Data Size \n");
   UTF_put_text("---------------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES - 3;
   CmdMsg.MemType                  = MM_MEM32;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test MEM32 dump with invalid address 
   */
   UTF_put_text("Test MEM32 Dump In Event With Invalid Address \n");
   UTF_put_text("----------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_BAD_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType                  = MM_MEM32;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
   /*
   ** Test MEM16 dump with misaligned address 
   */
   UTF_put_text("Test MEM16 Dump In Event With Misaligned Address \n");
   UTF_put_text("-------------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR + 3;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType                  = MM_MEM16;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test MEM16 dump with misaligned data size 
   */
   UTF_put_text("Test MEM16 Dump In Event With Misaligned Data Size \n");
   UTF_put_text("---------------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES - 3;
   CmdMsg.MemType                  = MM_MEM16;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test MEM16 dump with invalid address 
   */
   UTF_put_text("Test MEM16 Dump In Event With Invalid Address \n");
   UTF_put_text("----------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_BAD_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType                  = MM_MEM16;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
   /*
   ** Test MEM8 dump with invalid address 
   */
   UTF_put_text("Test MEM8 Dump In Event With Invalid Address \n");
   UTF_put_text("---------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_BAD_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType                  = MM_MEM8;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
   /*
   ** Test dump with invalid memory type 
   */
   UTF_put_text("Test Dump In Event With Invalid Memory Type \n");
   UTF_put_text("--------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType                  = 0xFF;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test valid RAM dump of maximum size
   */
   UTF_put_text("Test RAM Dump In Event Max Bytes \n");
   UTF_put_text("---------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType                  = MM_RAM;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test valid RAM dump less than maximum size
   */
   UTF_put_text("Test RAM Dump In Event Less Than Max Bytes \n");
   UTF_put_text("-------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES / 2;
   CmdMsg.MemType                  = MM_RAM;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test valid EEPROM dump of maximum size
   */
   UTF_put_text("Test EEPROM Dump In Event Max Bytes \n");
   UTF_put_text("------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_EEPROM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType                  = MM_EEPROM;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test valid EEPROM dump less than maximum size
   */
   UTF_put_text("Test EEPROM Dump In Event Less Than Max Bytes \n");
   UTF_put_text("----------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_EEPROM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES / 2;
   CmdMsg.MemType                  = MM_EEPROM;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test valid MEM32 dump of maximum size
   */
   UTF_put_text("Test MEM32 Dump In Event Max Bytes \n");
   UTF_put_text("-----------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType                  = MM_MEM32;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test valid MEM32 dump less than maximum size
   */
   UTF_put_text("Test MEM32 Dump In Event Less Than Max Bytes \n");
   UTF_put_text("---------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES / 2;
   CmdMsg.MemType                  = MM_MEM32;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      
   
   /*
   ** Test valid MEM16 dump of maximum size
   */
   UTF_put_text("Test MEM16 Dump In Event Max Bytes \n");
   UTF_put_text("-----------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType                  = MM_MEM16;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test valid MEM16 dump less than maximum size
   */
   UTF_put_text("Test MEM16 Dump In Event Less Than Max Bytes \n");
   UTF_put_text("---------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES / 2;
   CmdMsg.MemType                  = MM_MEM16;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test valid MEM8 dump of maximum size
   */
   UTF_put_text("Test MEM8 Dump In Event Max Bytes \n");
   UTF_put_text("----------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES;
   CmdMsg.MemType                  = MM_MEM8;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

   /*
   ** Test valid MEM8 dump less than maximum size
   */
   UTF_put_text("Test MEM8 Dump In Event Less Than Max Bytes \n");
   UTF_put_text("--------------------------------------------\n");
   CmdMsg.SrcSymAddress.SymName[0] = '\0';
   CmdMsg.SrcSymAddress.Offset     = SIM_RAM_MEM_ADDR;
   CmdMsg.NumOfBytes               = MM_MAX_DUMP_INEVENT_BYTES / 2;
   CmdMsg.MemType                  = MM_MEM8;
   MM_DumpInEventCmd((CFE_SB_MsgPtr_t)&CmdMsg);
   PrintLocalHKVars();   
   UTF_put_text("\n");      

} /* end Test_DumpInEvent */
コード例 #21
0
ファイル: app.c プロジェクト: WindhoverLabs/TlmOut
int32 TO_AppInit(void)
{
    int32            iStatus;
    uint16           i;

    TO_AppData.RunStatus = CFE_ES_APP_RUN;

    /* Register the TO app */
    CFE_ES_RegisterApp();

    /*  Setup CMD Pipes */
    TO_AppData.CmdPipeDepth = TO_CMD_PIPE_DEPTH ;
    strcpy(TO_AppData.CmdPipeName,  "TO_CMD_PIPE");

    TO_AppData.SchPipeDepth = TO_SCH_PIPE_DEPTH;
    strcpy(TO_AppData.SchPipeName,  "TO_SCH_PIPE");

    /* Initialize event filter table */
    TO_AppData.EventFilters[0].EventID = TO_INIT_INF_EID;
    TO_AppData.EventFilters[0].Mask    = CFE_EVS_NO_FILTER;
    TO_AppData.EventFilters[1].EventID = TO_CTODPIPE_ERR_EID;
    TO_AppData.EventFilters[1].Mask    = CFE_EVS_NO_FILTER;
    TO_AppData.EventFilters[2].EventID = TO_SUBSCRIBE_ERR_EID;
    TO_AppData.EventFilters[2].Mask    = CFE_EVS_NO_FILTER;
    TO_AppData.EventFilters[3].EventID = TO_TLMOUTSOCKET_ERR_EID;
    TO_AppData.EventFilters[3].Mask    = CFE_EVS_NO_FILTER;
    TO_AppData.EventFilters[4].EventID = TO_TLMOUTSTOP_ERR_EID;
    TO_AppData.EventFilters[4].Mask    = CFE_EVS_NO_FILTER;
    TO_AppData.EventFilters[5].EventID = TO_MSGID_ERR_EID;
    TO_AppData.EventFilters[5].Mask    = CFE_EVS_NO_FILTER;
    TO_AppData.EventFilters[6].EventID = TO_FNCODE_ERR_EID;
    TO_AppData.EventFilters[6].Mask    = CFE_EVS_EVERY_OTHER_TWO;
    TO_AppData.EventFilters[7].EventID = TO_NOOP_INF_EID;
    TO_AppData.EventFilters[7].Mask    = CFE_EVS_NO_FILTER;

    /* Register event filter table */
    iStatus = CFE_EVS_Register(TO_AppData.EventFilters,
    		                   TO_EVT_COUNT,
    		                   CFE_EVS_BINARY_FILTER);
    if ( iStatus != CFE_SUCCESS )
    {
    	CFE_ES_WriteToSysLog("TO App: Error Registering Events");
    }

    /* Initialize housekeeping packet (clear user data area) */
    CFE_SB_InitMsg(&TO_AppData.HkPacket,
                    TO_HK_TLM_MID,
                    sizeof(TO_AppData.HkPacket), TRUE);

    /* Subscribe for Commands on the Command Pipe */
    iStatus = CFE_SB_CreatePipe(&TO_AppData.CmdPipe,
    		                    TO_AppData.CmdPipeDepth,
    		                    TO_AppData.CmdPipeName);
    if (iStatus == CFE_SUCCESS)
    {
    	CFE_SB_Subscribe(TO_CMD_MID, TO_AppData.CmdPipe);
    }
    else
    {
    	CFE_EVS_SendEvent(TO_CTODPIPE_ERR_EID,CFE_EVS_ERROR,
    		             "TO: Can't create cmd pipe status %i",iStatus);
    }

    /* Subscribe for the Wakeup and Send_HK messages on the SCH Pipe*/
    iStatus = CFE_SB_CreatePipe(&TO_AppData.SchPipe,
      		                    TO_AppData.SchPipeDepth,
       		                    TO_AppData.SchPipeName);
    if (iStatus == CFE_SUCCESS)
    {
    	CFE_SB_Subscribe(TO_SEND_HK_MID, TO_AppData.SchPipe);
    	CFE_SB_Subscribe(TO_SEND_TLM_MID,  TO_AppData.SchPipe);
    }
    else
    {
    	CFE_EVS_SendEvent(TO_CTODPIPE_ERR_EID,CFE_EVS_ERROR,
    	                 "TO: Can't create cmd pipe status %i",iStatus);
    }

    /* Install the delete handler */
    OS_TaskInstallDeleteHandler((void *)(&TO_Cleanup));

    /* Register and Load iLoad Table */
    iStatus = TO_TableInit();
    if(iStatus != CFE_SUCCESS)
    {
    	goto end_of_function;
    }

    /*  Setup TLM Pipes */
    for (i=0; i < TO_MAX_TLM_CLASS_QUEUES; i++)
    {
    	if(TO_AppData.Config->ClassQueue[i].Mode == TO_QUEUE_ENABLED)
        {
    		char pipeName[OS_MAX_API_NAME];

    		sprintf(pipeName, "TO_CLSQUEUE_%u", i);
    		iStatus = CFE_SB_CreatePipe(&TO_AppData.Config->ClassQueue[i].PipeId,
    				TO_AppData.Config->ClassQueue[i].Size, pipeName);
    	    if (iStatus != CFE_SUCCESS)
    	    {
    	    	CFE_EVS_SendEvent(TO_TLMPIPE_ERR_EID,CFE_EVS_ERROR,
    	    		             "TO: Can't create Tlm pipe status %i",iStatus);
    	    }
        }
    }

    /* Subscriptions for TLM pipe*/
    for (i=0; i < TO_AppData.Config->MaxSubscriptions; i++)
    {
    	if(TO_AppData.Config->Subscription[i].MsgId != TO_UNUSED )
    	{
    		CFE_SB_Qos_t qos = {0,0};

    		uint32 clsQueueIdx = TO_AppData.Config->Subscription[i].ClassQueueIdx;
            iStatus = CFE_SB_SubscribeEx(TO_AppData.Config->Subscription[i].MsgId,
            		TO_AppData.Config->ClassQueue[clsQueueIdx].PipeId,
					qos,
        		    TO_AppData.Config->Subscription[i].MsgLimit);
    		if (iStatus != CFE_SUCCESS)
    		{
    			CFE_EVS_SendEvent(TO_SUBSCRIBE_ERR_EID,CFE_EVS_ERROR,
        		             "TO: Can't subscribe to MID 0x%x status 0x%08X  index %u",
        		             TO_AppData.Config->Subscription[i].MsgId, iStatus, i);
    		}
            else
            {
                TO_AppData.HkPacket.PktSubCount++;
            }
    	}
    }

    for (i=0; i < TO_MAX_TLM_CHANNELS; i++)
    {
    	if(TO_AppData.Config->Channel[i].Mode == TO_CHANNEL_ENABLED)
    	{
			struct sockaddr_in servaddr;
			int status;
			int reuseaddr=1;

			if((TO_AppData.Config->Channel[i].Socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
			{
				TO_AppData.Config->Channel[i].Mode = TO_CHANNEL_DISABLED;
				CFE_EVS_SendEvent(TO_TLMOUTSOCKET_ERR_EID,CFE_EVS_ERROR,
					   "TO: TLM socket errno: %i on channel %u", errno, i);
				continue;
			}

			setsockopt(TO_AppData.Config->Channel[i].Socket, SOL_SOCKET, SO_REUSEADDR, &reuseaddr,sizeof(reuseaddr));

			bzero(&servaddr,sizeof(servaddr));
			servaddr.sin_family = AF_INET;
			servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
			servaddr.sin_port=0;
			status = bind(TO_AppData.Config->Channel[i].Socket, (struct sockaddr *)&servaddr,sizeof(servaddr));
			if(status < 0)
			{
				CFE_EVS_SendEvent(TO_TLMOUTSOCKET_ERR_EID, CFE_EVS_ERROR,
						   "TO: TLM bind errno: %i on channel %u", errno, i);
				TO_AppData.Config->Channel[i].Mode = TO_CHANNEL_DISABLED;
				continue;
			}

			CFE_EVS_SendEvent(TO_TLMOUTENA_INF_EID, CFE_EVS_INFORMATION,
							  "TO UDP telemetry output enabled channel %u to %s:%u",
							  i, TO_AppData.Config->Channel[i].IP, TO_AppData.Config->Channel[i].DstPort);

    	}
    }

    TO_AppData.DropFileData = FALSE;
    TO_AppData.DropEOF = FALSE;
    TO_AppData.DropFIN = FALSE;
	TO_AppData.DropACK = FALSE;
	TO_AppData.DropMetaData = FALSE;
	TO_AppData.DropNAK = FALSE;
	TO_AppData.CorruptChecksum = FALSE;
	TO_AppData.AdjustFileSize = FALSE;

    CFE_EVS_SendEvent (TO_INIT_INF_EID, CFE_EVS_INFORMATION,
               "TO Initialized. Version %d.%d.%d.%d Awaiting enable command.",
                TO_MAJOR_VERSION,
                TO_MINOR_VERSION,
                TO_REVISION,
                TO_MISSION_REV);

end_of_function:
    return iStatus;
}