📄 root.c
字号:
#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 + -