[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit
Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/app/cwmp/netcwmp/libcwmp/src/periodic.c b/ap/app/cwmp/netcwmp/libcwmp/src/periodic.c
new file mode 100755
index 0000000..c4e7a5b
--- /dev/null
+++ b/ap/app/cwmp/netcwmp/libcwmp/src/periodic.c
@@ -0,0 +1,139 @@
+
+#include "cwmp/periodic.h"
+#include "cwmp/cwmp.h"
+#include "cwmp/log.h"
+#include "soft_timer.h"
+
+extern cwmp_t *g_cwmp;
+
+#define PERIODIC_INFORM_TIMER (30)
+
+#define PERIODIC_ENABLE_INI_TAG "periodic:enable"
+#define PERIODIC_INTERVAL_INI_TAG "periodic:interval"
+
+
+static void *periodic_inform_timer(void *arg)
+{
+ FUNCTION_TRACE();
+
+ cwmp_t *cwmp = g_cwmp;
+
+ cwmp_log_info("push begin");
+
+ cwmp->new_request = CWMP_YES;
+ cwmp_event_set_value(g_cwmp, INFORM_PERIODIC, 1, 0, 0, 0, 0);
+
+ cwmp_log_info("push ok");
+
+ return NULL;
+}
+
+
+int cwmp_reset_periodic_inform(cwmp_t * cwmp)
+{
+ long result = 0;
+
+ periodic_info_st * pperiodic = &(cwmp->periodic_info);
+
+ cwmp_log_info("Enable is: %d, interval:%d", pperiodic->PeriodicInformEnable, pperiodic->PeriodicInformInterval);
+
+ if(pperiodic->PeriodicInformEnable)
+ {
+
+ sc_timer_delete(PERIODIC_INFORM_TIMER);
+ result = sc_timer_create(PERIODIC_INFORM_TIMER, 0, pperiodic->PeriodicInformInterval*1000, periodic_inform_timer, &cwmp);
+ }
+
+ return result;
+}
+
+
+int cwmp_clean_periodic_inform(cwmp_t * cwmp)
+{
+ sc_timer_delete(PERIODIC_INFORM_TIMER);
+
+ return CWMP_OK;
+}
+
+
+int get_periodic_info_enable()
+{
+ int cwmp_enable = 0;
+ cwmp_enable = cwmp_conf_get_int(PERIODIC_ENABLE_INI_TAG);
+
+ if(0 == cwmp_enable)
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+
+}
+
+
+int get_periodic_info_interval()
+{
+ int interval = 0;
+
+ interval = cwmp_conf_get_int(PERIODIC_INTERVAL_INI_TAG);
+
+ if(0 != interval)
+ {
+ return interval;
+ }
+ else
+ {
+ return 60;
+ }
+}
+
+
+
+int set_periodic_info_enable(const char* value)
+{
+ return cwmp_conf_set(PERIODIC_ENABLE_INI_TAG, value);
+}
+
+
+int set_periodic_info_interval(const char* value)
+{
+ return cwmp_conf_set(PERIODIC_INTERVAL_INI_TAG, value);
+}
+
+
+
+int update_periodic_info_enable(cwmp_t* cwmp)
+{
+ periodic_info_st *pperiodic_info = &(cwmp->periodic_info);
+
+ pperiodic_info->PeriodicInformEnable = get_periodic_info_enable();
+
+ return CWMP_OK;
+}
+
+
+
+int update_periodic_info_interval(cwmp_t* cwmp)
+{
+ periodic_info_st *pperiodic_info = &(cwmp->periodic_info);
+
+ pperiodic_info->PeriodicInformInterval = get_periodic_info_interval();
+
+ return CWMP_OK;
+}
+
+
+
+int ini_periodic_info(cwmp_t* cwmp)
+{
+ update_periodic_info_enable(cwmp);
+
+ update_periodic_info_interval(cwmp);
+
+ return CWMP_OK;
+}
+
+
+