⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 root.c

📁 进程之间通讯的一个例子
💻 C
📖 第 1 页 / 共 3 页
字号:
#ifdef SYS_COMP_TASK3
#include "core/task3/hdr/task3.h"
#endif

#ifdef TELNET_SVR
#include "third_party/interniche/telnet/telnet.h"
#endif

#ifdef SYS_COMP_FTPSERVER
#include "core/ftpsmgr/hdr/ftps_mgr.h"
#include "third_party/interniche/ftp/ftpsrv.h"
#endif

/* CONSTANT AND MACRO DECLARATIONS */
#define CHECK_ERR(ercd)                { if (ercd != E_OK)  while (TRUE); }
#define INIT_COMP(comp)                { if (comp == FALSE) while (TRUE); }
#define CHECK_SYNC_FLASH_REQUEST(comp) { comp_idx++; if (comp == FALSE) { printf("==[%ld]==\n", comp_idx); sync_flash_count++; } }

/* DATA TYPE DECLARATIONS */


/* STATIC GLOBAL VARIABLES DECLARATIONS */
static UI32 comp_idx = 0;
#ifdef SYS_COMP_APMODE
static UI32 root_isNotapmode = 1; /* default must be true(because the device is a router) */
#endif

/* LOCAL FUNCTION PROTOTYPE DECLARATIONS */
static void ROOT_InitializeSystem(void);
static void ROOT_CreateTask(void);
#ifdef SYS_COMP_MFS
static BOOL ROOT_InitMFS(void);
#endif
static BOOL ROOT_Idle(void);


/* EXTERNAL FUNCTION PROTOTYPE DECLARATIONS */
#ifdef SYS_COMP_ECOS_RAMFS
extern int RAMFS_Init(void);
#endif

#if defined(SYS_COMP_FUTURE_NAT) || defined(SYS_COMP_FUTURE_FIREWALL)
extern int FUSOFT_Init(void);
#endif

extern ID   OSPORT_GetItselfTaskId(void);
extern void INTERNICHE_Init(void);
#ifdef SYS_COMP_APMODE
extern int INTERNICHE_TaskSpawn(int);
#else
extern int  INTERNICHE_TaskSpawn(void);
#endif
extern void INTERNICHE_InitResource(void);

#ifdef SYS_COMP_DDNS
extern BOOL DDNS_MGR_Init(void);
extern BOOL DDNS_Create_Task(void);
#endif

#ifdef SYS_COMP_PPTP_CLIENT
extern BOOL PPTP_Client_Init(void );
extern BOOL PPTPCMGR_Init(void);
extern void PPTP_Client_Main(void);
#endif /*SYS_COMP_PPTP_CLIENT*/

#ifdef SYS_COMP_VIP 
extern BOOL VIFMGR_Init(void);
#endif  
#ifdef SYS_COMP_PPTP_SERVER
extern BOOL PPTPS_Server_Init(void);
extern BOOL PPTPSMGR_Init(void);
extern void PPTPS_Server_Main(void);
#endif /*SYS_COMP_PPTP_SERVER*/

#ifdef SYS_COMP_APMODE
extern int iniche_net_isRoutingMode;
#endif
/* EXPORTED FUNCTION BODY DEFINITIONS */

/*
 * FUNCTION NAME: ROOT_Main()
 * PURPOSE:
 *      entry routine of runtime high level code
 * INPUT:
 *      None
 * OUTPUT:
 *      None
 * RETURN:
 *      None
 * NOTES:
 *      None
 */
void ROOT_Main(INT task_input)
{
    /* LOCAL VARIABLES DECLARATIONS */

    ER  ercd;
    ID  my_taskid;

    /* get my task id and check if it is the same as task_input */

    ercd = get_tid(&my_taskid);
    CHECK_ERR(ercd);

    if (my_taskid != task_input)
    {
        while (TRUE);    /* should not happen, lock here for debugging */
    }

    /* Init all CSCs */

    ROOT_InitializeSystem();

    /* Create all tasks */

    ROOT_CreateTask();

    /* Lower root task's priority and become idle task here */

    ercd = chg_pri(my_taskid, SYS_BLD_LOWEST_PRIORITY);
    CHECK_ERR(ercd);

    while (TRUE)
    {
        /* CPU access right relinquish */
        rot_rdq(TPRI_RUN);

    	ROOT_Idle();
	}
} /* end of ROOT_Main() */


/* LOCAL FUNCTION BODY DEFINITIONS */

/*
 * FUNCTION NAME: ROOT_InitializeSystem()
 * PURPOSE:
 *      perform all initialization of high level components
 * INPUT:
 *      None
 * OUTPUT:
 *      None
 * RETURN:
 *      None
 * NOTES:
 *      Should take the order in which every CSC's is initialized from lower to upper.
 *      Miss ordering will cause problem.
 */
static void ROOT_InitializeSystem(void)
{
    /* LOCAL VARIABLES DECLARATIONS */
    UI32 sync_flash_count = 0;

    /* initialize lower level drivers
     */
#ifdef SYS_COMP_MVC
     ISL3893MVC_Init();
#endif

#ifdef SYS_COMP_NIC
    S3C2510NIC_Service_Init();
#endif

#ifdef SYS_COMP_WIRELESS
    IEEE802DOT11DRV_DMAMemPoolInit();
#endif

#ifdef SYS_COMP_FLASH
    FLASHDRV_Init();
#endif

#ifdef SYS_COMP_UART
    UARTDRV_Init(UARTDRV_RATE_19200, UARTDRV_DATA_LENGTH_8, UARTDRV_PARITY_NONE, UARTDRV_ONE_STOP_BIT);
#endif

#ifdef SYS_COMP_PCI
    PCIDRV_Init();
#endif

#ifdef SYS_COMP_USB
    USB_OHCI_Init();
    USB_DRV_Init();

#ifdef SYS_COMP_USB_PRINTER
    USB_PRINTER_Init();
#endif /* #ifdef SYS_COMP_USB_PRINTER */

#ifdef SYS_COMP_USB_STORAGE
	USB_STORAGE_Init();
#endif
	
#ifdef SYS_COMP_PWC
    USB_PWC_Init();
#endif  /* #ifdef SYS_COMP_USB_PWC */

#endif  /* #ifdef SYS_COMP_USB*/

#ifdef SYS_COMP_SYSIO
    SYSIO_Init();
#ifdef SYS_COMP_WDT
    SYSIO_KickWatchDogTimer();
#endif
#endif

    /* initialize ram file syatem */

#ifdef SYS_COMP_ECOS_RAMFS
    RAMFS_Init();
#endif
#ifdef SYS_COMP_MFS
	ROOT_InitMFS();
#endif
	FOPER_Init();

#ifndef ECOS_UITRON
	BINFO_Init();
	/* initialize system information */
	SYSINFO_Init();
#endif

 #ifdef SYS_COMP_HARDWARE_DES
    DESDRV_Init();
 #endif

    /* initialize configuration manager */
    CFGMGR_Init();


#ifdef SYS_COMP_BRIDGE
    INIT_COMP(BRIDGE_Init());
#endif

#ifdef TELNET_SVR
	CHECK_SYNC_FLASH_REQUEST(TELNET_CfgInit());
#endif

    /* building netstatic to net relationship, since add_route need to use,
     * and initialize semaphore for routing table
     */
    INTERNICHE_InitResource();

#ifdef SYS_COMP_APMODE
    CHECK_SYNC_FLASH_REQUEST((APMODE_Init()==APMODE_NO_ERROR? TRUE: FALSE));

	{
		APMODE_PARAM_T info;

		APMODE_GetModeInfo(&info);
		iniche_net_isRoutingMode = root_isNotapmode = (info.status==FALSE? 1: 0);
	}

	if (root_isNotapmode)
	{
#endif

#ifdef SYS_COMP_SNTPCLIENT
    /* initialize SNTP setting, MUST after SNTP_Init */
    CHECK_SYNC_FLASH_REQUEST(SNTP_MGR_Init());
#endif

#ifdef SYS_COMP_APMODE
	}
#endif

#ifdef SYS_COMP_EVENTLOG
 /* initialize EVENTLOG */
    CHECK_SYNC_FLASH_REQUEST(EVENTLOG_MGR_Init());
#endif

#ifdef SYS_COMP_SYSMGMT
	/* initialize system management */
	CHECK_SYNC_FLASH_REQUEST(SYSMGMT_Init());
#endif

#ifdef SYS_COMP_WDT
	SYSMGMT_EnableWatchDogTimer();
    SYSIO_KickWatchDogTimer();
#endif

    /* initialize interface manager */
#ifdef SYS_COMP_APMODE
	CHECK_SYNC_FLASH_REQUEST(IFMGR_Init(!root_isNotapmode));
#else
	CHECK_SYNC_FLASH_REQUEST(IFMGR_Init());
#endif
#ifdef SYS_COMP_VIP 
      CHECK_SYNC_FLASH_REQUEST(VIFMGR_Init());
#endif

#ifdef SYS_COMP_APMODE
	if (root_isNotapmode)
	{
#endif
#ifdef SYS_COMP_DHCP_SERVER
    /* initialize DHCP Server manager */
    CHECK_SYNC_FLASH_REQUEST(DHCPSMGR_Init());
#endif

#ifdef SYS_COMP_WCM_MGR
    /* initialize WAN connection manager */
    CHECK_SYNC_FLASH_REQUEST(WCM_MGR_Init());
#endif

#ifdef SYS_COMP_CLONE_MAC
    /* initialize clone mac manager */
    CHECK_SYNC_FLASH_REQUEST(CLONEMACMGR_Init());
#endif


#ifdef SYS_COMP_DHCP_CLIENT
    /* initialize DHCP client setting, MUST after IFMGR_Init */
    CHECK_SYNC_FLASH_REQUEST(DHCPCMGR_Init());
#endif

#ifdef SYS_COMP_APMODE
}
#endif

#ifdef SYS_COMP_PRINTER_SERVER
	CHECK_SYNC_FLASH_REQUEST(LPD_MGR_Init());
#endif

#ifdef SYS_COMP_APMODE
	if (root_isNotapmode)
	{
#endif
#ifdef SYS_COMP_DDNS
	CHECK_SYNC_FLASH_REQUEST(DDNS_MGR_Init());
#endif

#ifdef SYS_COMP_PPPOE_CLIENT
    /* initialize PPPOE Client manager */
    CHECK_SYNC_FLASH_REQUEST(PPPOECMGR_Init());
#endif

#ifdef SYS_COMP_APMODE
	}
#endif

#ifdef SYS_COMP_WLMGMT
    /* initial Wireless Management */
    CHECK_SYNC_FLASH_REQUEST(WLMGMT_Init());
#endif

    /* Notice!! Any static interface setting init should be done before this */
    /* initial Interniche TCP/IP protocol stack */
    INTERNICHE_Init();

#ifdef SYS_COMP_APMODE
	if (root_isNotapmode)
	{
#endif

#if defined(SYS_COMP_FUTURE_NAT) || defined(SYS_COMP_FUTURE_FIREWALL)
    FUSOFT_Init();

#ifdef SYS_COMP_FUTURE_NAT
    /* initial FutureSoft NAT, this should be put after INTERNICHE_Init() for IP stack is ready */
    CHECK_SYNC_FLASH_REQUEST(FUNAT_MGR_Init());
#endif

#ifdef SYS_COMP_FUTURE_FIREWALL
    CHECK_SYNC_FLASH_REQUEST(FWL_MGR_Init());
#endif /* SYS_COMP_FUTURE_FIREWALL */
#endif /* #if defined(SYS_COMP_FUTURE_NAT) || defined(SYS_COMP_FUTURE_FIREWALL) */

#ifdef SYS_COMP_SCTL
   CHECK_SYNC_FLASH_REQUEST(SCTL_Init());
#endif

#ifdef BOOTROM_SYSTEM
	BROMMENU_Init();
#endif

#ifdef SYS_COMP_SMTPC
    /* initialize SMTPC */
    CHECK_SYNC_FLASH_REQUEST(SMTPC_Init());
#endif
/*
#ifdef SYS_COMP_TASK1
    /* initialize TASK1 */
//    CHECK_SYNC_FLASH_REQUEST(TASK1_Init());
//#endif

//#ifdef SYS_COMP_TASK2
    /* initialize TASK2 */
 //   CHECK_SYNC_FLASH_REQUEST(TASK2_Init());
//#endif

//#ifdef SYS_COMP_TASK3
    /* initialize TASK3 */
//    CHECK_SYNC_FLASH_REQUEST(TASK3_Init());
//#endif


#ifdef SYS_COMP_RMGR
    /* initialize Remote Management */
	CHECK_SYNC_FLASH_REQUEST(RMGR_Init());
#endif

#ifdef SYS_COMP_APMODE
	}
#endif

#ifdef SYS_COMP_WEBCAM
    CHECK_SYNC_FLASH_REQUEST(WEBCAMMGR_Init());
#endif

#ifdef SYS_COMP_APMODE
	if (root_isNotapmode)
	{
#endif

#ifdef SYS_COMP_PPTP_CLIENT
    PPTP_Client_Init();
    CHECK_SYNC_FLASH_REQUEST(PPTPCMGR_Init());
#endif /*SYS_COMP_PPTP_CLIENT*/

#ifdef SYS_COMP_DNSRELAY
    CHECK_SYNC_FLASH_REQUEST(DNSRELAY_Init());
#endif /* SYS_COMP_DNSRELAY */

#ifdef SYS_COMP_UPNP
    CHECK_SYNC_FLASH_REQUEST(UPNP_Init());

    CHECK_SYNC_FLASH_REQUEST(GENA_NOTIFY_Init());
#endif /* SYS_COMP_UPNP */

#ifdef SYS_COMP_L2TP
    CHECK_SYNC_FLASH_REQUEST(L2TP_Init());
#endif /* SYS_COMP_L2TP */

#ifdef SYS_COMP_L2TP_FP
    CHECK_SYNC_FLASH_REQUEST(L2TP_FP_Init());
#endif /* SYS_COMP_L2TP_FP */

#ifdef SYS_COMP_APMODE
	}
#endif

#ifdef SYS_COMP_PPTP_SERVER
       PPTPS_Server_Init();
       PPTPSMGR_Init();
#endif /*SYS_COMP_PPTP_SERVER*/

#ifdef SYS_COMP_PPP_SERVER
       PPPSMGR_Init();
#endif /*SYS_COMP_PPP_SERVER*/

#ifdef SYS_COMP_PPP_CLIENT
       PPPCMGR_Init();
#endif /*SYS_COMP_PPP_CLIENT*/

#ifdef SYS_COMP_NETMON
    NETMON_Init();
#endif

#ifdef SYS_COMP_WPA
    CHECK_SYNC_FLASH_REQUEST(WPA_Init());
#endif

#ifdef SYS_COMP_FTPSERVER
	CHECK_SYNC_FLASH_REQUEST(FTPS_MGR_Init());
#endif

#ifdef SYS_COMP_APMODE
	if (root_isNotapmode)
	{
#endif

#ifdef SYS_COMP_FASTROUTE
    INIT_COMP(FASTRT_Init());
#endif

#ifdef SYS_COMP_VPN
        VPN_Init();
#endif

#ifdef SYS_COMP_BGLONG
	BIGPOND_MGR_Init();
#endif

#ifdef SYS_COMP_APMODE
	}
#endif

#ifdef WEB_USERAUTH_EXPIRE
	CHECK_SYNC_FLASH_REQUEST(HTMLCGI_WEB_Expire_Init());
#endif

    GPIO_Init();
    LED_Init();
    LED_TURNON(LED_POWER);

    /* check if component calim sync to flash request */
    if (sync_flash_count > 0)
    {
        CFGMGR_Sync();
        printf("%ld component(s) claim sync to flash on init phase.\n", sync_flash_count);
    }

} /* end of ROOT_InitializeSystem() */


/*
 * FUNCTION NAME:  ROOT_CreateTask()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -