GRFC (generic rf control)
来源:互联网 发布:淘宝上库克运动是真么 编辑:程序博客网 时间:2024/05/01 14:17
1 gpio的配置(结构体)
关于GRFC相关的很重要的四个文件,下边笔记会说到他们的作用:
\modem_proc\rfc_jolokia\target\mdm9609\src\Rfc_msm_signal_info_ag.c
\modem_proc\rfc_jolokia\target\mdm9609\src\Rfc_msm_signal_info_ag.h
\modem_proc\rfc_jolokia\rf_card\rfc_wtr4905_om\common\src\Rfc_wtr4905_om_cmn_ag.cpp
\modem_proc\rfc_jolokia\rf_card\rfc_wtr4905_om\common\inc\Rfc_wtr4905_om_cmn_ag.h
Rfc_msm_signal_info_ag.c的中跟MSM_RF_GPIO相关的结构体如下
rfc_msm_signal_info_type rfc_mdm9609_signal_info[RFC_MSM_SIG_NUM] = { { RFC_ANT_SEL , 75 , 1 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, /* Signal: RFC_MSM_RF_PATH_SEL_00, MSM Pin Name: GPIO_75*/ { RFC_ANT_SEL , 74 , 0 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, /* Signal: RFC_MSM_RF_PATH_SEL_01, MSM Pin Name: GPIO_74*/ { RFC_ANT_SEL , 76 , 2 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, /* Signal: RFC_MSM_RF_PATH_SEL_02, MSM Pin Name: GPIO_76*/ { RFC_ANT_SEL , 79 , 5 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, /* Signal: RFC_MSM_RF_PATH_SEL_03, MSM Pin Name: GPIO_79*/ { RFC_ANT_SEL , 78 , 4 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, /* Signal: RFC_MSM_RF_PATH_SEL_04, MSM Pin Name: GPIO_78*/ { RFC_ANT_SEL , 93 , 19 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, /* Signal: RFC_MSM_RF_PATH_SEL_05, MSM Pin Name: GPIO_93*/ { RFC_ANT_SEL , 83 , 9 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, /* Signal: RFC_MSM_RF_PATH_SEL_06, MSM Pin Name: GPIO_83*/ { RFC_ANT_SEL , 85 , 11 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, /* Signal: RFC_MSM_RF_PATH_SEL_07, MSM Pin Name: GPIO_85*/ { RFC_ANT_SEL , 89 , 15 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, /* Signal: RFC_MSM_RF_PATH_SEL_08, MSM Pin Name: GPIO_89*/ { RFC_ANT_SEL , 92 , 18 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, /* Signal: RFC_MSM_RF_PATH_SEL_09, MSM Pin Name: GPIO_92*/ { RFC_ANT_SEL , 80 , 6 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, /* Signal: RFC_MSM_RF_PATH_SEL_10, MSM Pin Name: GPIO_80*/ { RFC_ANT_SEL , 88 , 14 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, /* Signal: RFC_MSM_RF_PATH_SEL_11, MSM Pin Name: GPIO_88*/ { RFC_ANT_SEL , 91 , 17 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, /* Signal: RFC_MSM_RF_PATH_SEL_12, MSM Pin Name: GPIO_91*/
...............................................相关的gpio的配置必须在这个结构体里加一项,但是如何找到某个作用的gpio呢,当然使用enum项了,代码如下 在Rfc_msm_signal_info_ag.h中
typedef enum{ RFC_MSM_RF_PATH_SEL_00, RFC_MSM_RF_PATH_SEL_01, RFC_MSM_RF_PATH_SEL_02, RFC_MSM_RF_PATH_SEL_03, RFC_MSM_RF_PATH_SEL_04, RFC_MSM_RF_PATH_SEL_05, RFC_MSM_RF_PATH_SEL_06, RFC_MSM_RF_PATH_SEL_07, RFC_MSM_RF_PATH_SEL_08, RFC_MSM_RF_PATH_SEL_09,
................................ RFC_MSM_SIG_NUM, RFC_MSM_SIG_INVALID = 0xFFFFFFFF,}rfc_msm_signal_type比如使用到 { RFC_ANT_SEL , 75 , 1 , RFC_GRFC , 1, DAL_GPIO_OUTPUT }, 这一项的时候,rfc_mdm9609_signal_info[RFC_MSM_RF_PATH_SEL_00]这种格式就可以很轻松的找到它来配置gpio了,下边的调用过程一节就是使用此方法
RFC_MAM相关的gpio(上图中),在代码中的结构体为rfc_mdm9609_signal_info
MSM所有的gpio(上图左)
RF_CARD 相关的gpio(上图右),代表某款RF card使用到的gpio,比如结构体rfc_wtr4905_om_sig_info
RFC_MSM_gpio是总的MSM_gpio的一部分, 但是在相关的RF_CARD_GPIO用到的是GPIO_MSM的一部分
配置wtr4905 RF card的gpio的文件为Rfc_wtr4905_om_cmn_ag.cpp
rfc_signal_info_type rfc_wtr4905_om_sig_info[RFC_WTR4905_OM_SIG_NUM + 1] = { { RFC_MSM_TIMING_PA_CTL , RFC_LOW, DAL_GPIO_NO_PULL, DAL_GPIO_2MA, (DALGpioIdType)NULL }, /* RFC_WTR4905_OM_TIMING_PA_CTL */ { RFC_MSM_TIMING_PA_RANGE , RFC_LOW, DAL_GPIO_NO_PULL, DAL_GPIO_2MA, (DALGpioIdType)NULL }, /* RFC_WTR4905_OM_TIMING_PA_RANGE */ { RFC_MSM_TIMING_ASM_CTL , RFC_LOW, DAL_GPIO_NO_PULL, DAL_GPIO_2MA, (DALGpioIdType)NULL }, /* RFC_WTR4905_OM_TIMING_ASM_CTL */ { RFC_MSM_TIMING_PAPM_CTL , RFC_LOW, DAL_GPIO_NO_PULL, DAL_GPIO_2MA, (DALGpioIdType)NULL }, /* RFC_WTR4905_OM_TIMING_PAPM_CTL */ { RFC_MSM_TIMING_TX_TX_RF_ON0 , RFC_LOW, DAL_GPIO_NO_PULL, DAL_GPIO_2MA, (DALGpioIdType)NULL }, /* RFC_WTR4905_OM_TIMING_TX_TX_RF_ON0 */ { RFC_MSM_TIMING_TX_RX_RF_ON0 , RFC_LOW, DAL_GPIO_NO_PULL, DAL_GPIO_2MA, (DALGpioIdType)NULL }, /* RFC_WTR4905_OM_TIMING_TX_RX_RF_ON0 */
第一排如RFC_MSM_TIMING_PA_CTL来自于rfc_msm_signal_type的enum结构体中,通过RFC_MSM_TIMING_PA_CTL就能在rfc_mdm9609_signal_info中找到对应gpio(必须有对应项),这样就能跟某个gpio相关联。
如果想在rfc_wtr4905_om_sig_info中定位某个成员,要通过enum变量: 在Rfc_wtr4905_om_cmn_ag.h中
typedef enum{ RFC_WTR4905_OM_TIMING_PA_CTL, RFC_WTR4905_OM_TIMING_PA_RANGE, RFC_WTR4905_OM_TIMING_ASM_CTL, RFC_WTR4905_OM_TIMING_PAPM_CTL, RFC_WTR4905_OM_TIMING_TX_TX_RF_ON0, RFC_WTR4905_OM_TIMING_TX_RX_RF_ON0, RFC_WTR4905_OM_TIMING_ASM_TRIGGER, RFC_WTR4905_OM_TIMING_PAPM_TX_TX_TRIGGER, RFC_WTR4905_OM_TIMING_PAPM_OFF_TX_RX_TX_TRIGGER, RFC_WTR4905_OM_TIMING_PA_TRIGGER, RFC_WTR4905_OM_TIMING_PAPM_OFF_TX_RX_TX_CTL, RFC_WTR4905_OM_TIMING_PAPM_TX_TX_CTL, RFC_WTR4905_OM_RF_PATH_SEL_01,
....................................}wtr4905_om_sig_type;
定义gpio初始化端口电平时会用到以上enum(如下代码),通过以上的对应关心就能找到对应的gpio管脚
rfc_sig_info_type rf_card_wtr4905_om_tx0_lte_b4_sig_cfg = { RFC_ENCODED_REVISION, { { (int)RFC_WTR4905_OM_PA0_R0_ALT1, { RFC_CONFIG_ONLY, 0 }, {RFC_LOW, 0 } }, { (int)RFC_WTR4905_OM_PA0_R1_ALT1, { RFC_CONFIG_ONLY, 0 }, {RFC_LOW, 0 } }, { (int)RFC_SIG_LIST_END, { RFC_LOW, 0 }, {RFC_LOW, 0 } } },};
2 调用过程分析,过程中就会用到通过enum定位rfc_mdm9609_signal_info和rfc_wtr4905_om_sig_info的方法(用到enum的原因)
rfc_common_initrfc_msm_signals_num=rfc_msm_sig_info_table_get(&rfc_msm_signal_info_table);*msm_info_table = &rfc_msm8952_signal_info[0]; //这里用来获取我们设置好的MSM_GPIOfor (i = 0; (i < rfc_signals_num) && (api_status == TRUE) ; i++)msm_signal = rfc_signal_info_table[i].msm_sig_name; //这里的rfc_signal_info_table就是我们RF card相关的<span style="font-family: Arial, Helvetica, sans-serif;">rfc_wtr4905_om_sig_info</span>
//msm_sig_name是RF_MSM相关的enum结构体,下边用它来找到对应rfc_msm8952_signal_info中实际的gpio管脚,并配置rfc_common_set_grfc(rfc_msm_signal_info_table[msm_signal].grfc_num, rfc_signal_info_table[i].init_state);//用msm_sig_name找到对应rfc_msm8952_signal_info中实际的gpio管脚配置,并设置管脚
两者联系的核心是msm_sig_name,即enum rfc_msm_signal_type
3 添加一个RF GPIO的流程如图:
相关参考文档在我上传的文件中可以找到:GENERIC RF CONTROLS (GRFC) CUSTOMIZATION.pdf
- GRFC (generic rf control)
- GRFC (generic rf control)
- rf
- RF
- RF
- Z-Wave™ as Home Control RF Platform
- Generic Chart Control in C# 一个通用的图表控件
- WPF中的Generic.xaml, theme以及custom control
- Generic
- Generic
- generic
- Struts2 官方教程之Struts Tags(六)——Generic Tags(Control Tags )
- GBDT RF,rf 调参
- RF(1)
- RF技术
- 什么是RF
- RF是什么意思?
- RF buglist
- TCP的流量控制与拥塞控制小结
- 南邮 OJ 1414 家庭问题
- 回调函数
- 伸展树复习 (bzoj 1251 序列终结者)
- php 实例说明 socket通信机制
- GRFC (generic rf control)
- AngularJS高级程序设计——互动出版网
- 数据挖掘方法案例介绍
- linux命令-------------------------lsof
- Java中设置session的详细解释
- leetcode--sum集合:2sum,3sum,4sum
- 从应用程序的角度看Binder (十)
- Socket
- 高质量HTML