声明:原创作品,严禁用于商业目的。 如有任何问题,欢迎和我交流:19826269205(微信同号)
相关视频学习链接:TR069协议与商业应用
声明:本篇文章来自于某公司Cable Modem产品的文档资料,源码来自于博通公司,只提供参考(为保护知识产权,本人没有SDK相关源码)。
前文曾提到会写一篇关于博通的tr069,那么福利来了。福利,福利,福利,重要的事情说三遍!
如果你正在阅读博通的相关产品代码而又苦于没有文档参阅,那么我相信本文将会非常适合你。
一. TR069的Makefile和源码
1. 编译:
在编译选项中添加“tr69”, 对应的makefile为: REV/rbb_cm_src/Bfc/make/BfcTR69.mak
2. 相关源码
主要有3部分代码:tr069 client agent代码,用c实现;TR069Thread和CLI配置代码,c++实现;client agent与系统间的接口代码,c++实现。(具体实现在后文讲解)
//tr069 client agent代码
REV/rbb_cm_src/Bfc/IpHelpers/TR069/tr69c/
inc/ #放置与数据模型相关的宏定义,数据结构定义头文件
main/ #agent实现文件,main,informer,event
nanoxml/ #
SOAPParser/ #soap解析,其中RPCState.c为RPC命令处理接口
standard/ #节点数据模型定义文件
webproto/ #
//tr069thread与CLI参数配置
REV/rbb_cm_src/Bfc/IpHelpers/TR069/
BcmBfcTr69CommandTable.cpp #tr69 CLI实现
BcmBfcTr69SnmpApi.cpp #提供了通过snmp进行对系统参数的get/set接口,tr69 agent利用这些接口进行大部分参数的get/set
BcmBfcTr69ThreadIpStackACT.cpp #ip_stack ip变化时,通知TR069Thread启动或停止agent
BcmBfcTr69SocketApi.cpp #提供系统与agent间有关socket操作的接口,供agent调用
BcmBfcTr69Entry.cpp #
BfcTr69NonVolSettings.cpp
BfcTr69NonVolSettingsCommandTable.cpp #tr69 non-vol参数配置CLI
BcmBfcTr69NonVolApi.cpp #提供non-vol存取的接口,供agent调用
BcmBfcTr69Thread.cpp #tr069进程实现,控制agent的运行/停止/重启
//client agent系统调用接口
REV/rbb_cm_src/Bfc/IpHelpers/TR069/tr69c/bcmBfcIf/
其中的文件定义了与standard/目录下数据模型结构中对应的object的add/del,parameters的get/set api
二. 配置参数
1. CLI
CM>cd non-vol/tr69
CD>ls
acs_password acs_url acs_username conn_req_password conn_req_url conn_req_username
ip_stack_num periodic_inform_enable periodic_inform_interval
stun_enable stun_max_keepalive stun_mix_keepalive stun_password stun_server stun_username
其中,ip_stack_num为tr69 agent关联的wan interface对应的ipstack number,默认指定为3
此外,可使用的命令有如下:
1 CM>cd tr69
2 CM>ls
3 acs_url log send_inform show start_client stop_client test walk_tree
其中: client可理解为tr069 client agent
acs_url 修改acsurl
send_inform agent运行前提下,立即发送inform
start_client 如ip_stack_num对应的wan interface处于可用状态,则会运行agent
walk_tree 查看节点结构
2. CM ConfigFile
参数配置 CM Config有定义TR-069参数
eRouter Configuration Encodings (202)
eRouter TR-069 Management Server (2)
EnableCWMP (1)
URL (2)
Username (3)
Password (4)
ConnectionRequestUserName (5)
ConnectionRequestPassword (6)
ACSOverride (7)
其中,EnableSWMP和ACSOverride会影响tr69 agent的行为。 下文详述
3. DHCP option
利用DHCPv6 Option17或DHCPv4 Option125来配置ACSUrl参数
三. 多种配置参数的优先顺序
1. 启动方式
- 通过CLI(start_client)启动,此时使用的为通过CLI配置的参数,即在NonVol中的参数
- 自动启动,条件为CM Config中的EnableCWMP为true,或者得到有效的DHCPv6 Option17或DHCPv4 Option125。此时的参数选择如下
2. 自动启动时的参数选择
// ACSUrl的优先顺序:
if(ACSOverride==true || (ACSOverride==false &&

最低0.47元/天 解锁文章
1133

被折叠的 条评论
为什么被折叠?



