wtp can send an empty discovery request

FossilOrigin-Name: 440ee8b077901e593d994ef900088b648204f1c8637b35189a5cddd18ec8f08f
This commit is contained in:
7u83@mail.ru
2018-03-12 17:01:40 +00:00
parent 835dc82e6f
commit 8b2e36e912
21 changed files with 272 additions and 208 deletions

View File

@ -62,9 +62,9 @@ static void msgdata_destroy(struct cw_MsgData *data)
{
if (!data)
return;
/* if (data->elements_list)
if (data->elements_list)
mlist_destroy(data->elements_list);
*/
if (data->elements_tree)
mavl_destroy(data->elements_tree);
free(data);
@ -92,7 +92,6 @@ void cw_msgset_destroy(struct cw_MsgSet *set)
free(set);
}
/**
* @brief Create a message set
* @return Message set create, NULL if an error has occured
@ -186,6 +185,7 @@ static int update_msgdata(struct cw_MsgSet *set, struct cw_MsgData *msgdata,
ed.vendor = elemdef->vendor;
ed.mand = elemdef->mand;
/* add message element to the elements tree */
result = mavl_replace(msgdata->elements_tree, &ed, &replaced);
if (!replaced) {
@ -197,8 +197,45 @@ static int update_msgdata(struct cw_MsgSet *set, struct cw_MsgData *msgdata,
elemdef->proto,
elemdef->vendor, elemdef->id, handler->name);
}
{
struct mlistelem *elem;
elem = mlist_get(msgdata->elements_list,&ed);
if (elem==NULL){
printf("Elem is not in mlist\n");
}
else{
printf("Elem was in mlsit\n");
}
}
/* add message elemeent to the elements list */
switch ( elemdef->op & 0xff){
case CW_IGNORE:
break;
case CW_DELETE:
break;
case CW_APPEND:
mlist_append(msgdata->elements_list, &ed);
break;
default:
case CW_REPLACE:
if (mlist_replace(msgdata->elements_list, &ed)==NULL){
mlist_append(msgdata->elements_list, &ed);
}
break;
}
}
if (msgdata->mand_keys!=NULL){
mlist_destroy(msgdata->mand_keys);
}
@ -258,6 +295,8 @@ int cw_msgset_add(struct cw_MsgSet *set,
msg->elements_tree = mavl_create(cmp_elemdata, NULL,
sizeof(struct cw_ElemData));
msg->mand_keys=NULL;
msg->elements_list = mlist_create(cmp_elemdata,NULL,sizeof(struct cw_ElemData));
}
/* Overwrite the found message */
@ -299,5 +338,5 @@ struct cw_MsgData *cw_msgset_get_msgdata(struct cw_MsgSet *set, int type)
{
struct cw_MsgData search;
search.type = type;
return mavl_find_ptr(set->msgdata, &search);
return mavl_find(set->msgdata, &search);
}