lwip下SNMP的移植实现,表的获取问题

DavidChan0519 2010-05-14 05:32:00
经过2周努力,已经初步实现相应的功能。标量的获取和设置都已经没有问题,上次咨询的表的查询部分问题也已经得到解决,但是只能实现含2个节点的表,如图:


对sensorTable进行Get Table操作,可以获取数据(其中数据时我随意写的,没什么关系),如图:


An example for a private MIB is part of the "minimal Unix" project:
contrib/ports/unix/proj/minimal/lwip_prvmib.c
附件是unix项目中的提供的模板代码,做相应的修改,此处表的数据时在系统启动的时候初始化的,有一定的局限性,当表的数据未知时,我怎们能随时插入表的行数呢?
void lwip_privmib_init(void)
{
int index=0 ,i;
struct mib_list_node *dummy;
struct mib_list_rootnode *iprte_rn;
for(i=0;i<3;i++) //对表增加3行数据
{
iprte_rn=&sensor_addr_inf.sensor_list_rn;
dummy=NULL;
snmp_mib_node_insert(iprte_rn,i,&dummy);
}
if (sensor_addr_inf.sensor_list_rn.count != 0)
{
/* enable sensor table, 2 tree_levels under this node
one for the registers and one for the index */
sensorentry.tree_levels = 2;
}
}
在下面这个函数中将表的对象数返回值进行修改就可实现:
static u16_t
sensorentry_length(void* addr_inf, u8_t level)
{
struct sensor_inf* sensors = addr_inf;
if (level == 0)
{
/* one object (temperature) */
/*表中有2个节点,返回2,当表中有3个节点时,我改为return 3,getnextrequest这个表,导致死机。但是我单独获取每 个节点时没有问题*/
return 2;
}
else if (level == 1)
{
/* number of sensor indexes */
/*表的数据行数*/
return sensors->sensor_list_rn.count;
}
else
{
return 0;
}
}
当表中含3个节点,如图:

我单独get每个节点,即分别对节点sensorIndex,sensorName,sensorValue进行Get Colunm操作,可以获取相应的数据,
如图:





但是我对sensorTable进行Get Table操作时,系统死机。
请问还有哪些地方需要修改的吗?修改过lwip的SNMP,所以这个问题应该不难,望赐教,谢谢了!
...全文
1375 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hdjsty 2011-11-19
  • 打赏
  • 举报
回复
可否共享一下 lwip_privmib_init啊,感谢
lx1314110 2011-08-10
  • 打赏
  • 举报
回复
楼主,我也是用LWIP1.3.0怎么就SET不了呢,调试的时候根本就不跑到SNMP_SET_VALUE函数中去
DavidChan0519 2010-06-22
  • 打赏
  • 举报
回复
可以
lwip_privmib_init和上面的代码没变
只是这个实现还有点问题 就是表的行数需要在初始化的时候设定,增加删除只能在lwip_privmib_init()函数中,不能够在表的查询实时过程中修改 同时向其他任务发送查询表的函数不知道放在什么位置才恰当
DavidChan0519 2010-06-22
  • 打赏
  • 举报
回复
这个可能是你的测试软件的问题,私有库是需要事先加载的。lwip下的snmp的set操作时没有问题的,不需做任何修改,只是在编写私有库的实现函数时需要参考一下snmp的内部节点的方法,例如sysDescr,sysContact等,如果有什么不明白的话,加我QQ 236771465 一起探讨,我也还有许多地方不是很清楚
windwolf2004 2010-06-22
  • 打赏
  • 举报
回复
您好,谢谢你的回答
我现在正在研究STM32 的LWIP 下的SNMP
现在私有参数 GET能成功,SET 不行
我是用的MIB Browser 软件测试的,
但是PRIVATE 下自己定义的TREE 看不到,没有显示,不知道为什么
windwolf2004 2010-06-21
  • 打赏
  • 举报
回复
恭喜啊,可否共享一下 lwip_privmib_init啊,多谢
DavidChan0519 2010-06-21
  • 打赏
  • 举报
回复
问题得到解决,是ucos系统的问题

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧