work on 802.11

FossilOrigin-Name: dfa8ffdff341f91001290ed71359f052ee095855a480e148e4d27f94207ebe3b
This commit is contained in:
7u83@mail.ru
2018-03-27 05:07:14 +00:00
parent 848a319d45
commit 2e2cfbdb71
9 changed files with 117 additions and 39 deletions

View File

@ -235,8 +235,12 @@ MISCSRC=\
DTLSSRC+=\
dtls_bio.c\
RADIOSRC=\
cw_out_radio_generic.c
#SRC=$(wildcard *.c)
SRC = $(CWSRC) $(LWSRC) $(MAVLSRC) $(MLISTSRC) $(SOCKSRC) $(LOGSRC) $(DTLSSRC) $(MISCSRC)
SRC = $(CWSRC) $(LWSRC) $(MAVLSRC) $(MLISTSRC) $(SOCKSRC) $(LOGSRC) $(DTLSSRC) $(RADIOSRC) $(MISCSRC)
OBJS=$(patsubst %.c,%.o,$(SRC))
OBJS:=$(patsubst %.o,$(OBJDIR)/%.o,$(OBJS))

View File

@ -387,6 +387,9 @@ int cw_in_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHandlerP
int cw_out_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params
, uint8_t * dst);
int cw_out_radio_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params
, uint8_t * dst);
extern int cw_in_wtp_reboot_statistics(struct conn *conn, struct cw_action_in *a,
uint8_t * data, int len, struct sockaddr *from);

View File

@ -19,9 +19,6 @@ int cw_out_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams
search.key=(char*)handler->key;
elem = mavl_get(params->conn->local_cfg, &search);
/* Size for msg elem header depends on
vendor specific payload */
start = handler->vendor ? 10 : 4;
if (elem == NULL) {
const char *vendor="";
@ -44,23 +41,21 @@ int cw_out_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams
}
return 0;
}
/* Size for msg elem header depends on
vendor specific payload */
start = handler->vendor ? 10 : 4;
len = ((const cw_Type_t*)(handler->type))->put(elem,dst+start);
((const cw_Type_t*)(handler->type))->to_str(elem,detail,120);
/* ((const cw_Type_t*)(handler->type))->to_str(elem,detail,120);
sprintf(params->debug_details, " Value = %s", detail);
params->elem = elem;
params->elem = elem;*/
if (handler->vendor)
return len + cw_put_elem_vendor_hdr(dst, handler->vendor, handler->id, len);
l = len + cw_put_elem_hdr(dst, handler->id, len);
cw_dbg_elem(DBG_ELEM_OUT,params->conn,params->msgdata->type,handler,dst,l);
return l;
}

View File

@ -0,0 +1,64 @@
#include "cw.h"
#include "dbg.h"
static int cw_put_radio_generic(struct cw_ElemHandler * handler, int idx, struct cw_ElemHandlerParams * params
, uint8_t * dst)
{
char key[CW_KTV_MAX_KEY_LEN];
cw_KTV_t *elem, search;
int len;
uint8_t * d;
len =0;
sprintf(key,"radio/%d/%s",idx,handler->key);
printf("Looking for key: %s\n",key);
search.key=key;
elem = mavl_get(params->conn->local_cfg, &search);
if (elem==NULL){
return 0;
}
/* Size for msg elem header depends on
vendor specific payload */
d = handler->vendor ? dst+10 : dst+4;
/* put radio id */
len += cw_put_byte(d+len,idx);
len += ((const cw_Type_t*)(handler->type))->put(elem,d+len);
/* l = len + cw_put_elem_hdr(dst, handler->id, len);*/
/* if (handler->vendor)
return len + cw_put_elem_vendor_hdr(dst, handler->vendor, handler->id, len);
*/
return len + cw_put_elem_hdr(dst, handler->id, len);
}
int cw_out_radio_generic(struct cw_ElemHandler * handler, struct cw_ElemHandlerParams * params
, uint8_t * dst)
{
/* char key[CW_KTV_MAX_KEY_LEN];*/
/* cw_KTV_t *elem, search;*/
int len,i,l;
int radios;
len =0;
radios = cw_ktv_get_byte(params->conn->local_cfg,"wtp-descriptor/max-radios",0);
printf("Must put radios: %d\n",radios);
for(i=1;i<radios;i++){
l = cw_put_radio_generic(handler,i,params,dst+len);
printf("put radio %i, returns %d\n",i,l);
cw_dbg_elem(DBG_ELEM_OUT,params->conn,params->msgdata->type,handler,dst,l);
len+=l;
}
return len;
}