EasyCwmp分析——Inform

标准规定的Inform时机

按《TR-069_Amendment-6.pdf》的规定,CPE在如下时机都要向ACS发起Inform:

  1. CPE部署后首次连接网络
  2. CPE上电或者恢复出厂
  3. 每个"PeriodicInformInterval"
  4. "ScheduleInform"
  5. 收到ACS的"Connection Request"
  6. ACS的URL修改
  7. 当需要上报的参数变化
  8. 当有"active notification"属性的参数被ACS之外的媒介修改时
  9. 当上传或者下载结束时
  10. 当失败的Session Retry时

EasyCwmp的实现

1.CPE部署后首次连接网络

这种情况跟"2.CPE上电或者恢复出厂"中的"恢复出厂"处理相同

2.CPE上电或者恢复出厂:

CPE上电时,procd以easycwmpd -f --boot启动,inform发"1 BOOT",代码如下:

if (start_event & START_BOOT) {
		cwmp_add_event(EVENT_BOOT, NULL, 0, EVENT_BACKUP);
		cwmp_add_inform_timer();
	}

CPE恢复出厂时,因为/etc/easycwmp/.backup.xml内容为空,所以如下代码会增加"0 BOOTSTRAP"事件,同"1 BOOT"一起Inform。

void backup_check_acs_url(void)
{
	mxml_node_t *b;

	b = mxmlFindElement(backup_tree, backup_tree, "acs_url", NULL, NULL, MXML_DESCEND);
	if (!b || (b->child && b->child->type == MXML_OPAQUE && b->child->value.opaque &&
		strcmp(config->acs->url, b->child->value.opaque) != 0)) {
		backup_add_acsurl(config->acs->url);
	}
}

3.每个"PeriodicInformInterval":

按《TR-069_Amendment-6.pdf》的规定,每个"2 PERIODIC"的发送的时间减去"PeriodicInformTime",必须是"PeriodicInformInterval"整数倍,所以第一个"2 PERIODIC"时间需要通过如下代码计算出来,也导致第一个"2 PERIODIC"和"1 BOOT"的间隔是变化的。

void cwmp_periodic_inform_init(void)
{
	uloop_timeout_cancel(&periodic_inform_timer);
	if (config->acs->periodic_enable && config->acs->periodic_interval) {
		if (config->acs->periodic_time != -1){
			log_message(NAME, L_NOTICE, "init periodic inform: reference time = %ld, interval = %d\n", config->acs->periodic_time, config->acs->periodic_interval);
			uloop_timeout_set(&periodic_inform_timer, cwmp_periodic_inform_time() * SECDTOMSEC);
		}
		else {
			log_message(NAME, L_NOTICE, "init periodic inform: reference time = n/a, interval = %d\n", config->acs->periodic_interval);
			uloop_timeout_set(&periodic_inform_timer, config->acs->periodic_interval * SECDTOMSEC);
		}
	}
}

后续的"2 PERIODIC"就是每"PeriodicInformInterval"上报一次了,代码如下:

static void cwmp_periodic_inform(struct uloop_timeout *timeout)
{
	if (config->acs->periodic_enable && config->acs->periodic_interval) {
		uloop_timeout_set(&periodic_inform_timer, config->acs->periodic_interval * SECDTOMSEC);
	}
	if (config->acs->periodic_enable) {
		cwmp_add_event(EVENT_PERIODIC, NULL, 0, EVENT_BACKUP);
		cwmp_add_inform_timer();
	}
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《YRC1000 inform说明书_0》是关于YRC1000 inform机器人控制器的使用说明书。YRC1000 inform机器人控制器是一种高级的自动化控制系统,用于控制和操作机器人的运动和功能。该说明书详细介绍了YRC1000 inform机器人控制器的技术规格、主要组成部分和功能特点。 首先,说明书介绍了YRC1000 inform机器人控制器的技术规格,包括控制器的尺寸、重量、功率要求等。同时,说明书还详细介绍了控制器所支持的机器人类型和运动轴数,以及其最大负载能力和工作范围。 其次,说明书详细介绍了YRC1000 inform机器人控制器的主要组成部分,包括控制器主板、操作面板、电源模块等。同时,说明书还介绍了各个组成部分之间的连接方式和操作步骤,以及控制器与外部设备的连接方法。 再次,说明书详细介绍了YRC1000 inform机器人控制器的功能特点,包括运动控制、编程和调试、安全保护等。其中,运动控制功能包括机器人的坐标系选择、运动模式设定和程序编辑等;编程和调试功能包括编程语言选择、程序编辑和调试以及联机、离线编程等;安全保护功能包括机器人碰撞检测、紧急停止和安全机制设定等。 最后,说明书还提供了操作指南和故障排除方法,以帮助用户正确使用和维护YRC1000 inform机器人控制器。同时,说明书还附有详细的图表和示例,以帮助用户更好地理解和操作控制器。 总之,YRC1000 inform说明书_0是一本全面而详细的使用手册,为用户提供了关于YRC1000 inform机器人控制器的基本信息、具体操作步骤和故障排除方法,帮助用户更好地使用和维护这一自动化控制系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值