ENDPT_410_endpoint_init

bosInit();
	//memset结构gBosErrorModule
	bosErrorInit();
	
	bosSleepInit()
		//将sleep相关函数名存入错误模块gBosErrorModule数组中
		bosSleepInitFunctionNames()
	
	bosSemInit()
		//将sim相关函数名存入错误模块gBosErrorModule数组中
		bosSemInitFunctionNames();
	
	bosMutexInit()
		//将MUTEX相关函数名存入错误模块gBosErrorModule数组中
		bosMutexInitFunctionNames();
	
	bosEventInit()
		//将EVENT相关函数名存入错误模块gBosErrorModule数组中
		bosEventInitFunctionNames()
		
		//创建一个信号量gEvtMutex,用于BOS任务核块中事件处理
		bosMutexCreate( "EVMU", &gEvtMutex );
		
		memset(gEventTcb, 0, sizeof(gEventTcb));
	
	bosTaskInit() //无内容
	
	bosSocketInit()
		//将socket相关函数名存入错误模块gBosErrorModule数组中
		bosSocketInitFunctionNames();
	
	bosMsgQInit()
		//将msgq相关函数名存入错误模块gBosErrorModule数组中
		bosMsgQInitFunctionNames();
		
		memset( &gMsgQ[0], 0, sizeof( gMsgQ ));
		
		//创建一个信号量gMsgQMutex
		bosMutexCreate( "MsgQ", &gMsgQMutex );
	
	bosTimeInit()
		//将time相关函数名存入错误模块gBosErrorModule数组中
		bosTimeInitFunctionNames();

	bosCritSectInit()
		//将crit相关函数名存入错误模块gBosErrorModule数组中
		bosCritSectInitFunctionNames();
		
		//创建临界区,还是用的内核信号量实现
		bosCritSectCreate( BOS_CFG_GLOBAL_CRITSECT );
	
	bosTimerInit()
		//将timer相关函数名存入错误模块gBosErrorModule数组中
		bosTimeInitFunctionNames();
	
	bosLogInit()
		//注意日志模块目前代码没有开启队列宏
		blogInit( NULL, NULL );
			//设置打印及时间戳获取回调函数
			defaultCB = blogDefaultPrintCallback;
			timestampCB = blogDefaultTimeStampCallback;
			
			//创建两个信号量,一个用于日志模块增删相关处理,一个用于打印
			bosMutexCreate( "blogModVars", &modVars.mutex );
			bosMutexCreate( "blogPrintCBVars", &printCBVars.mutex );
			
			//初始化
    modVars.numModules = 0;
    for ( i = 0; i < BLOG_CFG_MOD_NAME_LEN; i++ )
    {
       modVars.table[0].modName[i] = ' ';
    }
    modVars.table[0].modName[BLOG_CFG_MOD_NAME_LEN] = '\0';
    modVars.table[0].logSeverity = BLOG_SEVERITY_ALL;
    modVars.table[0].printSeverity = BLOG_SEVERITY_ALL;
    modVars.table[0].displayFields = BLOG_FIELDS_ALL;

    modVars.defaultDisplayFields  = BLOG_FIELDS_ALL;

    modVars.defaultLogSeverity    = BLOG_SEVERITY_FATAL_ERR |
                                   BLOG_SEVERITY_ERR       |
                                   BLOG_SEVERITY_WARN;

    modVars.defaultPrintSeverity  = BLOG_SEVERITY_FATAL_ERR |
                                   BLOG_SEVERITY_ERR       |
                                   BLOG_SEVERITY_WARN;
	
	//打印及时间戳的回调设置
	printCBVars.numCB = 1;
    printCBVars.table[0].printCB = defaultCB;
    printCBVars.table[0].isEnabled = BOS_TRUE;
	
getTimeCB = timestampCB;

//设置一个RAW日志模块,用于没有任何日志模块时使用这个
gRawHandle = blogAddModule( "RAW",
                               BLOG_SEVERITY_ALWAYS,
                               BLOG_SEVERITY_ALWAYS,
                               BLOG_FIELDS_NONE );
		
		
		//为BOS创建一个日志实例模块
		gBosBlogSettings = blogAddDefaultModule( "BOS" );
	
	bosAppInit()
		memset( &boszcb, 0, sizeof( boszcb ) );
		boszcb.resetState = BOS_RESETSTATE_NORESET;
		//创建任务控制块信号量
		bosMutexCreate( BOS_TCB_MUTEX, &boszcb.tcbMutexId );
		
		//创建复位相关信号量
   		BOS_SEMCREATE( retval, BOS_APPRESET_SEM, &boszcb.appResetSemId,
                  bAppResetSemInit  );
BOS_SEMCREATE(retval,BOS_APPRESETCOMPLETE_SEM,&boszcb.appResetCompletedSemId,bAppResetCompletSemInit  );                                    
   		BOS_SEMCREATE( retval, BOS_TASKRESET_SEM, &boszcb.taskResetSemId,
                  bTaskResetSemInit  );

//创建设备
devId = MKDEV(ENDPOINTDRV_MAJOR, 0);
register_chrdev_region(devId, 1, "endpoint");
cdev_init(&endpoint_cdev, &endpoint_fops);
cdev_add(&endpoint_cdev, devId, 1);

boardHalProvInit();
	memset ( &voiceParams, 0, sizeof(voiceParams) );
	//获取语音板卡名及基板卡名,是从FLASH中的NVRAM中获取的
	BpGetVoiceBoardId(boardIdStr);
	BpGetBoardId(baseBoardIdStr);
	
	//根据板卡名及基板卡名获取语音硬件参数,主要是有端口数量、芯片类形及通道等
	BpGetVoiceParms( boardIdStr, &voiceParams, baseBoardIdStr );
	//这里如果是6362的板子,则从OTP寄存器中获取是否支持DECT芯片,其中OTP是
	//可编程一次性寄存器,通常用于板卡重要数据的安全保护
	#if defined(CONFIG_BCM96362)
	if (OTP_GET_USER_BIT(OTP_DECT_DISABLE))
		voiceParams.numDectLines = 0;
	#endif
	
	//设置DECT通道数
	if ((NUM_IDECT_CHANNELS + NUM_EDECT_CHANNELS) == 0 )
    {
       voiceParams.numDectLines = 0;
}

//根据上面获取的语音硬件信息,设置通道级全局数组deviceChannelMap,主要设置每	//个通道的语音板卡类型、通道索引、所在当前设备的索引、当前设备对应的通道类型
//收发时隙等
bhpCreateInternalProvTable( &voiceParams );

//这里主要是根据线路数,对全局配置变量provTable的值进行内存分配
endptProvInit();


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值