WTP is still not 100% working... FossilOrigin-Name: 9e80cb8f1b62f854b54393e3af75b789125870b1397ccccad6d3442e3395181c
		
			
				
	
	
		
			64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| #include "capwap.h"
 | |
| #include "capwap_items.h"
 | |
| #include "capwap_80211.h"
 | |
| #include "radio.h"
 | |
| 
 | |
| #include "dbg.h"
 | |
| #include "log.h"
 | |
| 
 | |
| #include "mbag.h"
 | |
| 
 | |
| 
 | |
| 
 | |
| int cw_put_elem_radio_info(uint8_t*dst,int radio_id,mbag_t radio)
 | |
| {
 | |
| 	cw_put_byte(dst+4,radio_id);
 | |
| 	cw_put_dword(dst+5,mbag_get_dword(radio,CW_RADIO_TYPE,0));
 | |
| 	return 5 + cw_put_elem_hdr(dst,CW_ELEM80211_WTP_RADIO_INFORMATION,5);
 | |
| 
 | |
| }
 | |
| 
 | |
| 
 | |
| int cw_put_elem_radio_administrative_state(uint8_t *dst,int radio_id,mbag_t radio)
 | |
| {
 | |
| 	cw_put_byte(dst+4,radio_id);
 | |
| 	cw_put_byte(dst+5,mbag_get_byte(radio,CW_RADIO_ADMIN_STATE,9));
 | |
| 	return 2 + cw_put_elem_hdr(dst,CW_ELEM_RADIO_ADMINISTRATIVE_STATE,2);
 | |
| }
 | |
| 
 | |
| int cw_out_radio_infos(struct conn *conn, struct cw_action_out *a, uint8_t * dst)
 | |
| {
 | |
| 	int l=0;
 | |
| 	MAVLITER_DEFINE(it,conn->radios);
 | |
| 	mavliter_foreach(&it){
 | |
| 		struct mbag_item *i = mavliter_get(&it);
 | |
| 		if ( i->type != MBAG_MBAG ) {
 | |
| 			continue;
 | |
| 		}
 | |
| 		l+=cw_put_elem_radio_info(dst+l,i->iid,i->data);
 | |
| 
 | |
| 	}
 | |
| 	return l;
 | |
| }
 | |
| 
 | |
| 
 | |
| int cw_out_radio_administrative_states(struct conn *conn, struct cw_action_out *a, uint8_t * dst)
 | |
| {
 | |
| 	int l=0;
 | |
| 	MAVLITER_DEFINE(it,conn->radios);
 | |
| 	mavliter_foreach(&it){
 | |
| 		struct mbag_item *i = mavliter_get(&it);
 | |
| 		if ( i->type != MBAG_MBAG ) {
 | |
| 			continue;
 | |
| 		}
 | |
| 		l+=cw_put_elem_radio_administrative_state(dst+l,i->iid,i->data);
 | |
| 
 | |
| 	}
 | |
| 	return l;
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 |