actube/src/cw/cw_out_generic_indexed_enum.c

60 lines
1.0 KiB
C
Raw Normal View History

#include "cw.h"
2022-08-13 09:47:12 +02:00
#include"dbg.h"
int cw_out_generic_indexed_enum(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params
, uint8_t * dst)
{
2022-08-13 09:47:12 +02:00
cw_dbg(DBG_X,"Fix: cw_out_generic_indexed_enum");
2022-08-14 12:26:34 +02:00
stop();
2022-08-13 09:47:12 +02:00
2022-08-14 13:31:58 +02:00
/*
2022-08-14 12:26:34 +02:00
char key[CW_CFG_MAX_KEY_LEN];
int i;
2022-07-31 17:15:32 +02:00
cw_Val_t * result;
int len,start;
uint8_t * ob;
2022-07-31 17:15:32 +02:00
const cw_ValIndexed_t *ie;
cw_ValEnum_t * e;
ie = handler->type;
i = 0;
ob = dst;
e = ie->type;
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, );
2022-08-13 09:47:12 +02:00
result = cw_ktv_base_exists(params->cfg,key);
if (result==NULL)
continue;
start = params->msgset->header_len(handler);
len = 0;
if (ie->idxpos==0)
len = 1;
if (e[i].fun_out==NULL)
len += result->type->put(result,ob+start+len);
else
2022-08-13 09:47:12 +02:00
len += cw_ktv_write_struct(params->cfg,
NULL,e[i].type,key,ob+start+len);
cw_set_byte(ob+start+ie->idxpos,e[i].value);
if (ie->idxpos==len)
len++;
ob += params->msgset->write_header(handler,ob,len);
}
return ob-dst;
2022-08-14 13:31:58 +02:00
*/
return 0;
}