From da3d6db4a3182a4017f7294afe323a915eac0d76 Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Tue, 12 Apr 2016 05:33:24 +0000 Subject: [PATCH] conn_clear_upd func FossilOrigin-Name: 4f1b416f4a3dad33336b08d0b13da3677eea01ebf539170c33b8efe947fe2bf4 --- src/cw/conn.h | 2 ++ src/cw/conn_clear_upd.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/cw/conn_clear_upd.c diff --git a/src/cw/conn.h b/src/cw/conn.h index f45b6a7a..4a1c9fda 100644 --- a/src/cw/conn.h +++ b/src/cw/conn.h @@ -216,6 +216,7 @@ struct conn { int (*msg_start)(struct conn *conn,struct cw_action_in *a,uint8_t*data,int len,struct sockaddr *from); int (*msg_end)(struct conn *conn,struct cw_action_in *a,uint8_t*elem,int len,struct sockaddr *from); + int (*elem_end)(struct conn *conn,struct cw_action_in *a,int afrc,uint8_t*elem,int len,struct sockaddr *from); // void (*actions_registered)(struct conn *conn); @@ -289,5 +290,6 @@ int conn_send_msg(struct conn * conn, uint8_t *rawmsg); int cw_read_from(struct conn * conn); +void conn_clear_upd(struct conn *conn, int merge); #endif /* __CONN_H */ diff --git a/src/cw/conn_clear_upd.c b/src/cw/conn_clear_upd.c new file mode 100644 index 00000000..9979957f --- /dev/null +++ b/src/cw/conn_clear_upd.c @@ -0,0 +1,30 @@ + +#include "conn.h" + +#include "mavl.h" + + +void conn_clear_upd(struct conn *conn, int merge) +{ + if (merge){ + mavl_merge(conn->config, conn->config_upd); + + MAVLITER_DEFINE (it,conn->radios_upd); + + mavliter_foreach(&it){ + struct mbag_item * ruitem = mavliter_get(&it); + mavl_t radio_upd = ruitem->data; + + mbag_t radio = mbag_i_get_mbag(conn->radios,ruitem->iid,NULL); + if (radio){ + mavl_merge(radio,radio_upd); + } + + } + + } + mavl_del_all(conn->config_upd); + mavl_del_all(conn->radios_upd); + +} +