void oam_init() /* */ /* INPUTS : N/A */ /* OUTPUTS : N/A */ /* DESCRIPTION: */ /* oam init process */ /* $rtn_hdr_end */ /*****************************************************************************/ { oam_core_init(); oam_control_handler_init(oam_link_complete,oam_link_lost, (oam_build_oampdu_t)oam_build_pdu_info); oam_vendor_register_handler_init(); oam_timer_init(); oam_event_init(); oam_plat_onu_evt_reg(EPON_EVENT_REG_CHANGE, (void*)oam_port_reg_change_event_handler, NULL); /*修改原因: OAM 包处理放在最后(oam_init_step2 函数放在初始化的最后), 以保证onu 先恢复保存的配置数据,后接受olt 下发的配置。这样可以 保证在onu 保存配置数据和olt 下发配置同时存在时,onu 的实际状态为 olt 下发的配置*/ #if (ONU_REGISTER_LAST == MODULE_YES) #else app_pkt_reg_parser(CS_PKT_OAM, oam_pkt_parser); app_pkt_reg_handler(CS_PKT_OAM, oam_pkt_proc); #endif oam_printf("OAM init done \n"); }
/***************************************************************************** 函 数 名 : oam_main_init 功能描述 : OAM模块初始化总入口,包含OAM模块内部所有特性的初始化。 输入参数 : 无 输出参数 : 无 返 回 值 : 初始化返回值,成功或失败原因 调用函数 : 无 被调函数 : 无 修改历史 : 1.日 期 : 2012年9月18日 作 者 : 康国昌 修改内容 : 新生成函数 *****************************************************************************/ oal_int32 oam_main_init(oal_void) { oal_uint32 ul_rslt; /* 初始化可维可测试FILE路径 */ ul_rslt = oam_set_file_path(WLAN_OAM_FILE_PATH, (OAL_STRLEN(WLAN_OAM_FILE_PATH) + 1)); if (OAL_SUCC != ul_rslt) { OAL_IO_PRINT("oam_main_init call oam_set_file_path fail %d\n",ul_rslt); OAL_BUG_ON(1); return -OAL_EFAIL; } /* 初始化可维可测输出方式 */ ul_rslt = oam_set_output_type(OAM_OUTPUT_TYPE_SDT); if (OAL_SUCC != ul_rslt) { OAL_IO_PRINT("oam_main_init call oam_set_output_type fail %d\n",ul_rslt); OAL_BUG_ON(1); return -OAL_EFAIL; } /* 完成LOG模块的初始化操作 */ ul_rslt = oam_log_init(); if (OAL_SUCC != ul_rslt) { OAL_IO_PRINT("oam_main_init call oam_log_init fail %d\n",ul_rslt); OAL_BUG_ON(1); return -OAL_EFAIL; } /* 完成EVENT模块的初始化操作 */ ul_rslt = oam_event_init(); if (OAL_SUCC != ul_rslt) { OAL_IO_PRINT("oam_main_init call oam_event_init fail %d\n",ul_rslt); OAL_BUG_ON(1); return -OAL_EFAIL; } /* 初始化5115timer,用于代码中获取高精度时间戳 */ oal_5115timer_init(); #ifdef _PRE_PROFILING_MODE /* 完成PROFILING模块的初始化操作 */ ul_rslt = oam_profiling_init(); if (OAL_SUCC != ul_rslt) { OAL_IO_PRINT("oam_main_init call oam_profiling_init fail %d\n",ul_rslt); OAL_BUG_ON(1); return -OAL_EFAIL; } #endif /* 初始化oam模块的钩子函数 */ oam_drv_func_hook_init(); /* 统计模块初始化 */ oam_statistics_init(); /*TBD,待命令触发定制化初始操作*/ #if 0 /* 从配置文件中获取配置信息,保存到OAM内部结构中 */ for (ul_counter= 0; ul_counter < OM_MODULEID_BUTT; ul_counter++) { if (OAL_PTR_NULL != g_oam_customize.customize_init[ul_counter]) { g_oam_customize.customize_init[ul_counter](); } } #endif #ifdef _PRE_WLAN_DFT_REG oam_reg_init(); #endif #if ((_PRE_OS_VERSION_RAW != _PRE_OS_VERSION) && (_PRE_OS_VERSION_WIN32_RAW != _PRE_OS_VERSION)) /* ??netlink */ #if (_PRE_PRODUCT_ID == _PRE_PRODUCT_ID_HI1151) /* 所用的端口号在系统中已被占用,02无法使用这个接口,需要修改 TBD */ ul_rslt = oam_netlink_kernel_create(); if (OAL_SUCC != ul_rslt) { OAL_IO_PRINT("oam_main_init call oam_netlink_kernel_create fail %d\n",ul_rslt); OAL_BUG_ON(1); return -OAL_EFAIL; } #endif #endif #if (_PRE_PRODUCT_ID == _PRE_PRODUCT_ID_HI1102_HOST) hcc_rx_register(hcc_get_default_handler(),HCC_ACTION_TYPE_OAM,oam_rx_post_action_function,NULL); #endif return OAL_SUCC; }