Glossary

Analyze

Macro Controlled conditional compile

#ifdef		BOARD_IS_MDM_41R00C_V3 // defined in GCC / G++ Config
	#define		CPU_6416
	#define		MAX_CH				2		//发送解调通道的数目
	#define		MAX_CH_XMITTER		1		//发射机数量
	#define		MAX_CH_RECEIVER		1		//接收机数量
	#define		USE_KJT_AND_JBZ				//军兵种网内应用&&开机通业务 lgw@2015-8-18 18:27:10
#endif

Main: rcu_linux_main.cpp

argv[1] 传入 dbg_xmt_type //0:aisc 7:rf board  8:io bc 9:dsp 10:HSSI E0 11:ARM 207_2	12:NET 13:SIM 15:io board。ARM 板子为 7。2: debug mode

main:

OS_TASK_START_ALL(); // 启动各个内部工作线程(pthread)
AppNet_LogStart(); // log
AppNetAud_TskStartUp(); //207 (FPGA) receive thread 接口

OS_TASK_START_ALL(); // 启动所有线程。 task 管理 OS_EXT_ARM_LINUX.c

#define	MAX_TSK_NUM	32
pthread_t	mOSTskTbl [MAX_TSK_NUM]	; // 存放每个 task 的 pthread id
int			mTskMsgQid[MAX_TSK_NUM]	; // 每个task 一个 msg queue
int			mTskMsgErr[MAX_TSK_NUM]	; // 各个task错误码
int			mTskMsgMsOut[MAX_TSK_NUM]; // timeout。每个task的定时器

OS_TSK_MBX_INIT(); // 初始化各线程的 System V message queue ([msgget](<https://man7.org/linux/man-pages/man2/msgget.2.html>))
OS_EEP_Init(; // os_eep_c_arm_linux.c, 读取电台工作参数表配置文件。位置: ./eep, savefile_A.bin, savefile_B.bin
OS_Reg_StartUp(); // NOOP
OS_HW_init_sio(); // 初始化 serial io (系统各串口设备) COM1-COM32 (主要是初始化缓冲区) stHwSIO[1].BufTxQue, BufRxQue / BufPtrStHwSioST_HW_SIO
OS_HW_init_frame(); // ST_FRAME	stFrame[2];. 每个stFrame对应1个串口和 32 frames * 256 bytes 缓冲区。COM30 (29) / COM31 (30)。保密机(bmj)同步串口
OS_HW_init_rtc(); // FOR_MDM_2300 and RTC_DS3234: yes. RTC_DS1302: not. DS3234 RTC芯片。#define COM_RTC 26
OS_StartTimer(); // setitimer /SIGALRM 设置的 2000μs interval 定时器. signal_timer_handler
OsTaskCreateP(ID_DSP); // DSP
//#if USE_KJT_AUTO_TEST==1//lgw@2020/3/18 13:56:15 add,1 msgque  2share memory
OsTaskCreateP(ID_RCV)	;// Task_App_Rcv. RCU: 大部分主控功能
// rcu_xmit 发射流程状态机。4个功率(db)等级 0,6,3,12
/*
20*2个状态机
AppRcuTsk_Xmit_Manager_01 // idle 状态。
  检测键控(>=0) => 02
xmit_Manager_02 : 更新发射机频率和业务(sub_xmit_load_new_freq)
  发射中心频率 + 频偏
_03: 检测频率合法 =>6, 非法 => 4
6: 记录上一次频率(1stStGrpChan) 以备失败时恢复上次频率
7: noop
8: 对于电台,关闭接收机,关闭喇叭
9: fsub_xmit_strt_xmit 正式启动发射.设置 task_xmit_main 状态机为 5
10:设置发射机已经启动状态
11: 等待ptt释放 => stop_xmit 结束发射流程
15: 常态,正常发

rcutsk_xmit_main : 主发射流程状态机
4: idle
5: 检测频率合法,非法 => warning
6-9 : exception
10:  set_ctrl_set_channel_ptt_on 打开信道 ptt => 207
  set_filt_ptt_onoff 设置滤波器开关
    sub_ctrl_key_pow_amplifier
 
*/

// rcu_recv 接受流程
// rcu_ptt.c PTT管理。
// LPC 声码化
/*
sub_ptt_manager : 模拟业务下的ptt状态机管理
sub_get_ptt_krq_status
  5ms 去抖
  Sub_Read_Krq_Ext 读取硬件 PTT 状态(电位) // 不同板子实现不同。最终通过 207 获取
sub_ptt_manager_lpc : 管理声码化业务模式下的 ptt
sub_ptt_manager_proc
*/

//#endif
OsTaskCreateP(ID_MAG)	;// Task_App_Mag。APP_MANAGER
OsTaskCreateP(ID_FPP)	; // Task_App_Fpp, 429 / 253 / 422 等所有外部接口
// MsgQueue.cpp 发送各种消息
  
OsTaskCreateP(ID_RCU)	;// Task_App_Rcu。电台接收机管理
OsTaskCreateP(ID_START)	;// TaskStart 打印其它 task 状态后推出