Uses msgset.write_header and header_len again.
This commit is contained in:
@ -12,7 +12,7 @@ int cw_out_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams
|
||||
, uint8_t * dst)
|
||||
{
|
||||
|
||||
struct cw_KTV * elem, search;
|
||||
struct cw_KTV * elem;
|
||||
int start, len, l;
|
||||
|
||||
/* Get the element */
|
||||
@ -49,7 +49,7 @@ int cw_out_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams
|
||||
/* Size for msg elem header depends on
|
||||
vendor specific payload */
|
||||
/* start = handler->vendor ? 10 : 4; */
|
||||
start = cw_header_len(handler);
|
||||
start = params->msgset->header_len(handler);
|
||||
|
||||
if (cw_ktv_cast(elem,handler->type)==NULL){
|
||||
cw_log(LOG_ERR,"Can't put element '%s'- can't cast from %s to %s for key: %s", handler->name,
|
||||
@ -67,7 +67,7 @@ int cw_out_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams
|
||||
return len + cw_put_elem_vendor_hdr(dst, handler->vendor, handler->id, len);
|
||||
|
||||
l = len + cw_put_elem_hdr(dst, handler->id, len); */
|
||||
l = cw_write_header(handler,dst,len);
|
||||
l = params->msgset->write_header(handler,dst,len);
|
||||
|
||||
cw_dbg_elem(DBG_ELEM_OUT,NULL,params->msgdata->type,handler,dst,l);
|
||||
/* cw_dbg_elem(DBG_ELEM_OUT,params->conn,params->msgdata->type,handler,dst,l);*/
|
||||
|
@ -10,7 +10,6 @@ int cw_out_generic_indexed_enum(struct cw_ElemHandler * handler, struct cw_ElemH
|
||||
uint8_t * ob;
|
||||
const cw_KTVIndexed_t *ie;
|
||||
cw_KTVEnum_t * e;
|
||||
struct cw_ElemHandler thandler;
|
||||
|
||||
ie = handler->type;
|
||||
|
||||
@ -22,10 +21,13 @@ int cw_out_generic_indexed_enum(struct cw_ElemHandler * handler, struct cw_ElemH
|
||||
|
||||
for(i=0; e[i].name!=NULL; i++) {
|
||||
sprintf(key,"%s/%s",handler->key,e[i].name);
|
||||
|
||||
printf("Her is the Key: %s - %s\n",key, );
|
||||
|
||||
result = cw_ktv_base_exists(params->local_cfg,key);
|
||||
if (result==NULL)
|
||||
continue;
|
||||
start = cw_header_len(handler);
|
||||
start = params->msgset->header_len(handler);
|
||||
len = 0;
|
||||
if (ie->idxpos==0)
|
||||
len = 1;
|
||||
@ -36,17 +38,11 @@ int cw_out_generic_indexed_enum(struct cw_ElemHandler * handler, struct cw_ElemH
|
||||
len += cw_ktv_write_struct(params->local_cfg,
|
||||
NULL,e[i].type,key,ob+start+len);
|
||||
|
||||
/* thandler.type=e[i].type;
|
||||
thandler.key=key;
|
||||
len += e->fun_out(&thandler,params,ob+start+len);
|
||||
*/
|
||||
cw_set_byte(ob+start+ie->idxpos,e[i].value);
|
||||
if (ie->idxpos==len)
|
||||
len++;
|
||||
|
||||
ob += cw_write_header(handler,ob,len);
|
||||
|
||||
|
||||
ob += params->msgset->write_header(handler,ob,len);
|
||||
|
||||
}
|
||||
|
||||
|
@ -30,12 +30,12 @@ int cw_out_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHandler
|
||||
return 0;
|
||||
}
|
||||
|
||||
start = cw_header_len(handler);
|
||||
start = params->msgset->header_len(handler);
|
||||
|
||||
len = cw_ktv_write_struct(params->local_cfg,
|
||||
params->default_cfg,
|
||||
handler->type,handler->key,dst+start);
|
||||
|
||||
return cw_write_header(handler,dst,len);
|
||||
return params->msgset->write_header(handler,dst,len);
|
||||
|
||||
}
|
||||
|
@ -24,12 +24,12 @@ int cw_out_generic_with_index(struct cw_ElemHandler * eh,
|
||||
if (strncmp(result->key,key,strlen(key))!=0)
|
||||
break;
|
||||
|
||||
start = cw_header_len(eh);
|
||||
start = params->msgset->header_len(eh);
|
||||
len = cw_put_byte(ob+start,idx);
|
||||
|
||||
len += result->type->put(result,ob+start+len);
|
||||
|
||||
ob += cw_write_header(eh,ob,len);
|
||||
ob += params->msgset->write_header(eh,ob,len);
|
||||
|
||||
idx++;
|
||||
|
||||
|
@ -37,15 +37,13 @@ int cw_out_idx_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHan
|
||||
|
||||
sprintf(key,handler->key,idx);
|
||||
|
||||
printf("Here we are '%s'! --> %d\n",key,idx);
|
||||
|
||||
len =0;
|
||||
start = mdst + cw_header_len(handler);
|
||||
start = mdst + params->msgset->header_len(handler);
|
||||
|
||||
len += cw_put_byte(start+len,idx);
|
||||
len += cw_ktv_write_struct(params->local_cfg,NULL, handler->type,key,start+len);
|
||||
|
||||
mdst += cw_write_header(handler,mdst,len);
|
||||
mdst += params->msgset->write_header(handler,mdst,len);
|
||||
|
||||
|
||||
i=idx+1;
|
||||
|
@ -14,7 +14,7 @@ int cw_out_radio_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemH
|
||||
cdst = dst;
|
||||
|
||||
|
||||
offset = cw_header_len(handler);
|
||||
offset = params->msgset->header_len(handler);
|
||||
|
||||
i=-1;
|
||||
while(1){
|
||||
@ -37,7 +37,7 @@ int cw_out_radio_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemH
|
||||
l+= cw_ktv_write_struct(params->local_cfg,NULL, handler->type,basekey,cdst+offset+l);
|
||||
|
||||
|
||||
cdst+=cw_write_header(handler,cdst,l);
|
||||
cdst+=params->msgset->write_header(handler,cdst,l);
|
||||
}
|
||||
return cdst-dst;
|
||||
}
|
||||
@ -61,7 +61,7 @@ int cw_out_traverse0(struct cw_ElemHandler * handler, struct cw_ElemHandlerParam
|
||||
if (result != NULL){
|
||||
int offset;
|
||||
int i,l;
|
||||
offset = cw_header_len(handler);
|
||||
offset = params->msgset->header_len(handler);
|
||||
printf("Yea! We can do it: %s\n",result->key);
|
||||
for (i=0;i<stack[0];i++){
|
||||
printf("I=%i\n",stack[i+1]);
|
||||
@ -71,7 +71,7 @@ int cw_out_traverse0(struct cw_ElemHandler * handler, struct cw_ElemHandlerParam
|
||||
|
||||
printf("Write struct len %i\n",l);
|
||||
|
||||
l=cw_write_header(handler,dst,l);
|
||||
l=params->msgset->write_header(handler,dst,l);
|
||||
printf("header wr len %d\n",l);
|
||||
if (handler->patch){
|
||||
handler->patch(dst+offset,stack);
|
||||
|
@ -154,6 +154,7 @@ printf("Elem: %d %d %d %s\n", data->proto, data->vendor, data->id, handler->name
|
||||
|
||||
cw_decode_elements( ¶ms, elems_ptr,elems_len);
|
||||
|
||||
printf ("----------------------------------- end redecode -----------------------------\n");
|
||||
|
||||
}
|
||||
|
||||
|
@ -10,6 +10,8 @@ int cw_write_header(struct cw_ElemHandler * handler, uint8_t * dst, int len)
|
||||
return len + cw_put_elem_hdr(dst, handler->id, len);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int cw_header_len(struct cw_ElemHandler * handler)
|
||||
{
|
||||
return handler->vendor ? 10 : 4;
|
||||
|
@ -7,13 +7,6 @@
|
||||
|
||||
#include "ktv.h"
|
||||
|
||||
struct cw_MsgSet {
|
||||
mavl_t msgdata;
|
||||
mavl_t handlers_by_id;
|
||||
mavl_t handlers_by_key;
|
||||
mavl_t types_tree;
|
||||
mavl_t state_machine;
|
||||
};
|
||||
|
||||
struct cw_ElemDef{
|
||||
int proto;
|
||||
@ -68,6 +61,19 @@ struct cw_ElemHandler {
|
||||
|
||||
};
|
||||
|
||||
|
||||
struct cw_MsgSet {
|
||||
mavl_t msgdata;
|
||||
mavl_t handlers_by_id;
|
||||
mavl_t handlers_by_key;
|
||||
mavl_t types_tree;
|
||||
mavl_t state_machine;
|
||||
int (*write_header)(struct cw_ElemHandler * handler, uint8_t * dst, int len);
|
||||
int (*header_len)(struct cw_ElemHandler *handler);
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct cw_State{
|
||||
uint8_t state;
|
||||
uint8_t next;
|
||||
|
Reference in New Issue
Block a user