コード例 #1
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() */
コード例 #2
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() */
コード例 #3
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() */
コード例 #4
0
uint32 Example_Function1(void)
{
    if (Example_GlobalData.Variable1 == 1)
    {
        Example_GlobalData.Variable2 = 2;

        if (CFE_SB_Subscribe(0, 0) == 5)  /* Input values don't matter in this example */
        {
            return 25;
        }
    }
    else
    {
        Example_GlobalData.Variable2 = 99;
    }

    return 10;

} /* End Example_Function1 */
コード例 #5
0
int32 CFE_TIME_TaskInit(void)
{
    int32 Status = CFE_SUCCESS;

    Status = CFE_ES_RegisterApp();
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TIME:Call to CFE_ES_RegisterApp Failed:RC=0x%08X\n",Status);
      return Status;
    }/* end if */
    
    Status = CFE_EVS_Register(NULL, 0, 0);
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TIME:Call to CFE_EVS_Register Failed:RC=0x%08X\n",Status);
      return Status;
    }/* end if */
    
    Status = OS_BinSemCreate(&CFE_TIME_TaskData.ToneSemaphore,
                              CFE_TIME_SEM_TONE_NAME,
                              CFE_TIME_SEM_VALUE,
                              CFE_TIME_SEM_OPTIONS);
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TIME:Error creating tone semaphore:RC=0x%08X\n",Status);
      return Status;
    }/* end if */        
    
    Status = OS_BinSemCreate(&CFE_TIME_TaskData.LocalSemaphore,
                              CFE_TIME_SEM_1HZ_NAME,
                              CFE_TIME_SEM_VALUE,
                              CFE_TIME_SEM_OPTIONS);
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TIME:Error creating local semaphore:RC=0x%08X\n",Status);
      return Status;
    }/* end if */
    
    
    Status = CFE_ES_CreateChildTask(&CFE_TIME_TaskData.ToneTaskID,
                                     CFE_TIME_TASK_TONE_NAME,
                                     CFE_TIME_Tone1HzTask,
                                     CFE_TIME_TASK_STACK_PTR,
                                     CFE_TIME_TONE_TASK_STACK_SIZE,
                                     CFE_TIME_TONE_TASK_PRIORITY,
                                     CFE_TIME_TASK_FLAGS);
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TIME:Error creating tone 1Hz child task:RC=0x%08X\n",Status);
      return Status;
    }/* end if */
    
        
    Status = CFE_ES_CreateChildTask(&CFE_TIME_TaskData.LocalTaskID,
                                     CFE_TIME_TASK_1HZ_NAME,
                                     CFE_TIME_Local1HzTask,
                                     CFE_TIME_TASK_STACK_PTR,
                                     CFE_TIME_1HZ_TASK_STACK_SIZE,
                                     CFE_TIME_1HZ_TASK_PRIORITY,
                                     CFE_TIME_TASK_FLAGS);
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TIME:Error creating local 1Hz child task:RC=0x%08X\n",Status);
      return Status;
    }/* end if */


    Status = CFE_SB_CreatePipe(&CFE_TIME_TaskData.CmdPipe,
                                CFE_TIME_TaskData.PipeDepth,
                                CFE_TIME_TaskData.PipeName);
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TIME:Error creating cmd pipe:RC=0x%08X\n",Status);
      return Status;
    }/* end if */


    Status = CFE_SB_Subscribe(CFE_TIME_SEND_HK_MID,
                              CFE_TIME_TaskData.CmdPipe);
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TIME:Error subscribing to HK Request:RC=0x%08X\n",Status);
      return Status;
    }/* end if */


    /*
    ** Subscribe to time at the tone "signal" commands...
    */
    #if (CFE_TIME_CFG_CLIENT == TRUE)
    Status = CFE_SB_Subscribe(CFE_TIME_TONE_CMD_MID,
                              CFE_TIME_TaskData.CmdPipe);
    #endif
    
    #if (CFE_TIME_CFG_SERVER == TRUE)
    Status = CFE_SB_SubscribeLocal(CFE_TIME_TONE_CMD_MID,
                              CFE_TIME_TaskData.CmdPipe,4);
    #endif
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TIME:Error subscribing to tone cmd:RC=0x%08X\n",Status);
      return Status;
    }/* end if */


    /*
    ** Subscribe to time at the tone "data" commands...
    */
    #if (CFE_TIME_CFG_CLIENT == TRUE)
    Status = CFE_SB_Subscribe(CFE_TIME_DATA_CMD_MID,
                              CFE_TIME_TaskData.CmdPipe);
    #endif
    
    #if (CFE_TIME_CFG_SERVER == TRUE)
    Status = CFE_SB_SubscribeLocal(CFE_TIME_DATA_CMD_MID,
                              CFE_TIME_TaskData.CmdPipe,4);
    #endif
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TIME:Error subscribing to time data cmd:RC=0x%08X\n",Status);
      return Status;
    }/* end if */
    
    
    /*
    ** Subscribe to "fake" tone signal commands...
    */
    #if (CFE_TIME_CFG_FAKE_TONE == TRUE)

    #if (CFE_TIME_CFG_CLIENT == TRUE)
    Status = CFE_SB_Subscribe(CFE_TIME_FAKE_CMD_MID,
                              CFE_TIME_TaskData.CmdPipe);
    #endif
    
    #if (CFE_TIME_CFG_SERVER == TRUE)
    Status = CFE_SB_SubscribeLocal(CFE_TIME_FAKE_CMD_MID,
                                   CFE_TIME_TaskData.CmdPipe,4);
    #endif
    
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TIME:Error subscribing to fake tone signal cmds:RC=0x%08X\n",Status);
      return Status;
    }/* end if */    
    #endif    
    
    
    /*
    ** Subscribe to time at the tone "request data" commands...
    */
    #if (CFE_TIME_CFG_SERVER == TRUE)
      #if (CFE_TIME_CFG_SOURCE != TRUE)
        #if (CFE_TIME_CFG_FAKE_TONE != TRUE)

        
   Status = CFE_SB_Subscribe(CFE_TIME_SEND_CMD_MID,
                                  CFE_TIME_TaskData.CmdPipe);
        if(Status != CFE_SUCCESS)
        {
          CFE_ES_WriteToSysLog("TIME:Error subscribing to time at the tone request data cmds:RC=0x%08X\n",Status);
          return Status;
        }/* end if */

        #endif
      #endif
    #endif

    /*
    ** Subscribe to Time task ground command packets...
    */
    Status = CFE_SB_Subscribe(CFE_TIME_CMD_MID,
                              CFE_TIME_TaskData.CmdPipe);
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TIME:Error subscribing to time task gnd cmds:RC=0x%08X\n",Status);
      return Status;
    }/* end if */  


    Status = CFE_EVS_SendEvent(CFE_TIME_INIT_EID,
                               CFE_EVS_INFORMATION,
                               "cFE TIME Initialized");
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TIME:Error sending init event:RC=0x%08X\n",Status);
      return Status;
    }/* end if */

    /*
    ** Select primary vs redundant tone interrupt signal...
    */
    #if (CFE_TIME_CFG_SIGNAL == TRUE)
    OS_SelectTone(CFE_TIME_TaskData.ClockSignal);
    #endif

    return CFE_SUCCESS;

} /* End of CFE_TIME_TaskInit() */
コード例 #6
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() */
コード例 #7
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() */
コード例 #8
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;
}
コード例 #9
0
ファイル: cfe_tbl_task.c プロジェクト: Spacecraft-Code/cFE
int32 CFE_TBL_TaskInit(void)
{
    int32 Status = CFE_SUCCESS;

    /*
    ** Register Table Services with ES
    */
    Status = CFE_ES_RegisterApp();

    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TBL:Call to CFE_ES_RegisterApp Failed:RC=0x%08X\n",Status);
      return Status;
    }/* end if */
    
    /*
    ** Initialize global Table Services data
    */
    CFE_TBL_InitData();

    /*
    ** Register event filter table
    */
    Status = CFE_EVS_Register(NULL, 0, 0);

    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TBL:Call to CFE_EVS_Register Failed:RC=0x%08X\n",Status);
      return Status;
    }/* end if */
    
    /*
    ** Create Software Bus message pipe
    */
    Status = CFE_SB_CreatePipe(&CFE_TBL_TaskData.CmdPipe,
                                CFE_TBL_TaskData.PipeDepth,
                                CFE_TBL_TaskData.PipeName);
    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TBL:Error creating cmd pipe:RC=0x%08X\n",Status);
      return Status;
    }/* end if */                                                                

    /*
    ** Subscribe to Housekeeping request commands
    */
    Status = CFE_SB_Subscribe(CFE_TBL_SEND_HK_MID, CFE_TBL_TaskData.CmdPipe);

    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TBL:Error subscribing to HK Request:RC=0x%08X\n",Status);
      return Status;
    }/* end if */

    /*
    ** Subscribe to Table task ground command packets
    */
    Status = CFE_SB_Subscribe(CFE_TBL_CMD_MID, CFE_TBL_TaskData.CmdPipe);

    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TBL:Error subscribing to gnd cmds:RC=0x%08X\n",Status);
      return Status;
    }/* end if */
    
    /*
    ** Task startup event message
    */
    Status = CFE_EVS_SendEvent(CFE_TBL_INIT_INF_EID, CFE_EVS_INFORMATION, "cFE TBL Initialized.  cFE Version %d.%d.%d.%d",
                               CFE_MAJOR_VERSION,CFE_MINOR_VERSION,CFE_REVISION,CFE_MISSION_REV);

    if(Status != CFE_SUCCESS)
    {
      CFE_ES_WriteToSysLog("TBL:Error sending init event:RC=0x%08X\n",Status);
      return Status;
    }/* end if */

    return CFE_SUCCESS;

} /* End of CFE_TBL_TaskInit() */
コード例 #10
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;
}
コード例 #11
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;
}
コード例 #12
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() */
コード例 #13
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() */
コード例 #14
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() */