Work on regulatory domains
FossilOrigin-Name: d4f75679142a708394989c19c5257a355f2a99e8e13c7e82d5f9677c8396485f
This commit is contained in:
@ -11,20 +11,24 @@ int cw_ktv_mavlcmp(const void *v1, const void *v2)
|
||||
char *d1,*d2;
|
||||
int l1,l2,rc,i1,i2;
|
||||
|
||||
|
||||
/* Find dots in both keys */
|
||||
d1 = strchr(((cw_KTV_t *) v1)->key,'.');
|
||||
d2 = strchr(((cw_KTV_t *) v2)->key,'.');
|
||||
|
||||
/* if there are no dots, compare keys as normal */
|
||||
if (d1==NULL || d2==NULL)
|
||||
return strcmp(((cw_KTV_t *) v1)->key, ((cw_KTV_t *) v2)->key);
|
||||
|
||||
/* calculate the length of the key till dots */
|
||||
l1=d1-((cw_KTV_t *) v1)->key;
|
||||
l2=d2-((cw_KTV_t *) v2)->key;
|
||||
|
||||
/* if length differs do a normal compare */
|
||||
if (l1!=l2){
|
||||
return strcmp(((cw_KTV_t *) v1)->key, ((cw_KTV_t *) v2)->key);
|
||||
}
|
||||
|
||||
|
||||
rc = strncmp(((cw_KTV_t *) v1)->key,((cw_KTV_t *) v2)->key,l1);
|
||||
if (rc!=0){
|
||||
return rc;
|
||||
|
@ -8,28 +8,32 @@ int cw_out_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHandler
|
||||
, uint8_t * dst)
|
||||
{
|
||||
int start;
|
||||
int len,l;
|
||||
|
||||
int len;
|
||||
cw_KTV_t search, *result;
|
||||
|
||||
|
||||
if (!handler->type){
|
||||
cw_log(LOG_ERR,"Can't handle element: %s, no type defined",handler->name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
search.key = (char*)handler->key;
|
||||
result = mavl_get_first(params->conn->local_cfg,&search);
|
||||
if (result == NULL ){
|
||||
if (params->elemdata->mand)
|
||||
cw_log(LOG_ERR,"Can't put mandatory message element %s, no data available",handler->name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (strncmp(result->key,handler->key, strlen(handler->key))!=0){
|
||||
if (params->elemdata->mand)
|
||||
cw_log(LOG_ERR,"Can't put mandatory message element %s, no data available",handler->name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
start = params->conn->header_len(handler);
|
||||
|
||||
|
||||
len = cw_ktv_write_struct(params->conn->local_cfg,handler->type,handler->key,dst+start);
|
||||
|
||||
return params->conn->write_header(handler,dst,len);
|
||||
|
||||
/* 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);
|
||||
*/
|
||||
return l;
|
||||
|
||||
|
||||
}
|
||||
|
@ -7,18 +7,15 @@ int cw_out_idx_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHan
|
||||
{
|
||||
char key[CW_KTV_MAX_KEY_LEN];
|
||||
struct cw_KTV * elem, search;
|
||||
|
||||
int len,i,l;
|
||||
int radios;
|
||||
int i;
|
||||
int idx, sr;
|
||||
int pos;
|
||||
uint8_t * mdst;
|
||||
int len;
|
||||
uint8_t * mdst, *start;
|
||||
|
||||
|
||||
len =0;
|
||||
|
||||
i=0;
|
||||
|
||||
pos = 0;
|
||||
len = 0;
|
||||
mdst = dst;
|
||||
|
||||
do {
|
||||
@ -29,51 +26,42 @@ int cw_out_idx_generic_struct(struct cw_ElemHandler * handler, struct cw_ElemHan
|
||||
/*elem = mavl_get(params->conn->local_cfg, &search);*/
|
||||
elem = mavl_get_first(params->conn->local_cfg,&search);
|
||||
if(elem != NULL){
|
||||
printf("Elem key: %s",elem->key);
|
||||
printf("Elem key: %s\n",elem->key);
|
||||
}
|
||||
sr = sscanf(elem->key,handler->key,&idx);
|
||||
|
||||
if (sr!=1)
|
||||
break;
|
||||
if (idx<=i)
|
||||
if (idx<i)
|
||||
break;
|
||||
|
||||
sprintf(key,handler->key,idx);
|
||||
|
||||
printf("Here we are '%s'! --> %d\n",key,idx);
|
||||
|
||||
|
||||
pos = params->conn->header_len(handler);
|
||||
len =0;
|
||||
start = mdst + params->conn->header_len(handler);
|
||||
|
||||
pos += cw_put_byte(mdst+pos,idx);
|
||||
pos += cw_ktv_write_struct(params->conn->local_cfg,handler->type,key,mdst+pos);
|
||||
len += cw_put_byte(start+len,idx);
|
||||
len += cw_ktv_write_struct(params->conn->local_cfg,handler->type,key,start+len);
|
||||
|
||||
mdst += params->conn->write_header(handler,mdst,pos);
|
||||
mdst += params->conn->write_header(handler,mdst,len);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
i=idx+1;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}while(1);
|
||||
|
||||
exit(0);
|
||||
|
||||
|
||||
radios = cw_ktv_get_byte(params->conn->local_cfg,"wtp-descriptor/max-radios",0);
|
||||
/* radios = cw_ktv_get_byte(params->conn->local_cfg,"wtp-descriptor/max-radios",0);
|
||||
|
||||
for(i=1;i<radios+1;i++){
|
||||
l = cw_write_radio_element(handler,params,i,dst+len);
|
||||
cw_dbg_elem(DBG_ELEM_OUT,params->conn,params->msgdata->type,handler,dst,l);
|
||||
len+=l;
|
||||
}
|
||||
return len;
|
||||
*/
|
||||
return mdst-dst;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user