More work to get radio operational state working
FossilOrigin-Name: 5a8166b800110991971de4c0d46c8c20e16981a41eeb45ab7c6a8b8819d0472a
This commit is contained in:
parent
cd316e35bb
commit
009bc16908
@ -20,8 +20,12 @@ int configure()
|
|||||||
mbag_set_str(conn->local,CW_ITEM_AC_NAME,"abc");
|
mbag_set_str(conn->local,CW_ITEM_AC_NAME,"abc");
|
||||||
mbag_set_byte(conn->config,CW_ITEM_WTP_MAC_TYPE,WTP_MAC_TYPE_BOTH);
|
mbag_set_byte(conn->config,CW_ITEM_WTP_MAC_TYPE,WTP_MAC_TYPE_BOTH);
|
||||||
|
|
||||||
|
/* for config status request send the whole config */
|
||||||
|
mbag_t radios_upd = conn->radios_upd;
|
||||||
|
conn->radios_upd=conn->radios;
|
||||||
|
|
||||||
int rc = cw_send_request(conn, CW_MSG_CONFIGURATION_STATUS_REQUEST);
|
int rc = cw_send_request(conn, CW_MSG_CONFIGURATION_STATUS_REQUEST);
|
||||||
|
conn->radios_upd=radios_upd;
|
||||||
|
|
||||||
if (!cw_rcok(rc)) {
|
if (!cw_rcok(rc)) {
|
||||||
if (rc > 0) {
|
if (rc > 0) {
|
||||||
|
@ -107,7 +107,7 @@ int run_join_d(struct sockaddr *sa)
|
|||||||
cw_log(LOG_ERR, "Can't create socket: %s\n", strerror(errno));
|
cw_log(LOG_ERR, "Can't create socket: %s\n", strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
sock_set_recvtimeout(sockfd, 1);
|
sock_set_recvtimeout(sockfd, 15);
|
||||||
conn->sock = sockfd;
|
conn->sock = sockfd;
|
||||||
sock_copyaddr(&conn->addr, sa);
|
sock_copyaddr(&conn->addr, sa);
|
||||||
|
|
||||||
|
@ -24,6 +24,81 @@
|
|||||||
#include "cw/conn.h"
|
#include "cw/conn.h"
|
||||||
#include "wtp_interface.h"
|
#include "wtp_interface.h"
|
||||||
|
|
||||||
|
#include "cw/dbg.h"
|
||||||
|
#include "cfg.h"
|
||||||
|
|
||||||
|
int update =0;
|
||||||
|
|
||||||
|
int handle_update_req(struct conn *conn, struct cw_action_in *a, uint8_t * data,
|
||||||
|
int len, struct sockaddr *from)
|
||||||
|
{
|
||||||
|
if (a->msg_id == CW_MSG_CONFIGURATION_UPDATE_REQUEST){
|
||||||
|
update =1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
MAVLITER_DEFINE(it, conn->incomming);
|
||||||
|
|
||||||
|
mavliter_foreach(&it) {
|
||||||
|
mbag_item_t *item = mavliter_get(&it);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
cfg_to_json();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void update_radio(struct conn * conn, int rid, mbag_t radio_upd, mbag_t radio,mbag_t iresult )
|
||||||
|
{
|
||||||
|
// mbag_item * admin mbag_get(radio_upd,CW_ITEM_RADIO_ADMIN_STATE,
|
||||||
|
|
||||||
|
|
||||||
|
printf("Updating radio with rid %d\n",rid);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void update_radios(struct conn * conn, mbag_t result)
|
||||||
|
{
|
||||||
|
MAVLITER_DEFINE (it,conn->radios_upd);
|
||||||
|
mavliter_foreach(&it){
|
||||||
|
struct mbag_item * item = mavliter_get(&it);
|
||||||
|
int rid = item->iid;
|
||||||
|
mbag_t radio = mbag_i_get_mbag(conn->radios,rid,NULL);
|
||||||
|
if (!radio){
|
||||||
|
cw_dbg(DBG_ELEM_ERR,"Can't find radio with id %d",rid);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
mbag_t iresult = mbag_create();
|
||||||
|
mbag_i_set_mbag(result,rid,iresult);
|
||||||
|
update_radio(conn,rid,item->data,radio,iresult);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void do_update(struct conn * conn)
|
||||||
|
{
|
||||||
|
if (!update)
|
||||||
|
return;
|
||||||
|
update=0;
|
||||||
|
|
||||||
|
mbag_t result = mbag_create();
|
||||||
|
update_radios(conn,result);
|
||||||
|
cw_dbg(DBG_INFO, "Saving configuration ...");
|
||||||
|
cfg_to_json();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int run()
|
int run()
|
||||||
{
|
{
|
||||||
@ -32,6 +107,8 @@ int run()
|
|||||||
struct conn *conn = get_conn();
|
struct conn *conn = get_conn();
|
||||||
conn->capwap_state = CW_STATE_RUN;
|
conn->capwap_state = CW_STATE_RUN;
|
||||||
|
|
||||||
|
conn->msg_end=handle_update_req;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
|
||||||
int echo_interval = mbag_get_word(conn->config,CW_ITEM_CAPWAP_TIMERS,CAPWAP_TIMERS)&0xff;
|
int echo_interval = mbag_get_word(conn->config,CW_ITEM_CAPWAP_TIMERS,CAPWAP_TIMERS)&0xff;
|
||||||
@ -50,6 +127,12 @@ int run()
|
|||||||
if ( !cw_rcok(rc))
|
if ( !cw_rcok(rc))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
cw_dbg(DBG_X,"We hav a message processed");
|
||||||
|
|
||||||
|
do_update(conn);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
if (rc<0 && errno == EAGAIN){
|
if (rc<0 && errno == EAGAIN){
|
||||||
rc = cw_send_request(conn,CW_MSG_ECHO_REQUEST);
|
rc = cw_send_request(conn,CW_MSG_ECHO_REQUEST);
|
||||||
|
@ -38,29 +38,6 @@ struct cw_actiondef capwap_actions;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
int handle_update_req(struct conn *conn, struct cw_action_in *a, uint8_t * data,
|
|
||||||
int len, struct sockaddr *from)
|
|
||||||
{
|
|
||||||
MAVLITER_DEFINE(it, conn->incomming);
|
|
||||||
|
|
||||||
mavliter_foreach(&it) {
|
|
||||||
mbag_item_t *item = mavliter_get(&it);
|
|
||||||
|
|
||||||
// printf("MBAG ITEM GOT: %s\n",item->id);
|
|
||||||
if (item->id == CW_ITEM_LOCATION_DATA) {
|
|
||||||
printf("Location Data %s\n",mbag_get_str(conn->incomming,CW_ITEM_LOCATION_DATA,"ups"));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
cw_dbg(DBG_INFO, "Saving configuration ...");
|
|
||||||
cfg_to_json();
|
|
||||||
|
|
||||||
// exit(0);
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const char *t = CW_ITEM_WTP_NAME;
|
const char *t = CW_ITEM_WTP_NAME;
|
||||||
|
|
||||||
@ -128,14 +105,15 @@ int main()
|
|||||||
|
|
||||||
dtls_init();
|
dtls_init();
|
||||||
|
|
||||||
|
|
||||||
the_conn = conn_create_noq(-1, NULL);
|
the_conn = conn_create_noq(-1, NULL);
|
||||||
struct conn *conn = the_conn;
|
struct conn *conn = the_conn;
|
||||||
|
|
||||||
conn->radios = mbag_i_create();
|
conn->radios = mbag_i_create();
|
||||||
conn->radios_upd=conn->radios;
|
conn->radios_upd=mbag_i_create();
|
||||||
|
|
||||||
mbag_i_set_mbag(conn->radios,0,mbag_create());
|
mbag_i_set_mbag(conn->radios,0,mbag_create());
|
||||||
// mbag_i_set_mbag(conn->radios,1,mbag_create());
|
mbag_i_set_mbag(conn->radios_upd,0,mbag_create());
|
||||||
// mbag_set_mbag(conn->radios,0xff,mbag_create());
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -159,42 +137,22 @@ int main()
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("add capwap80211\n");
|
|
||||||
int rc = mod->register_actions(&capwap_actions,MOD_MODE_BINDINGS);
|
int rc = mod->register_actions(&capwap_actions,MOD_MODE_BINDINGS);
|
||||||
|
|
||||||
printf("Out reg = %d\n",rc);
|
|
||||||
|
|
||||||
conn->detected = 1;
|
conn->detected = 1;
|
||||||
conn->dtls_verify_peer=0;
|
conn->dtls_verify_peer=0;
|
||||||
conn->dtls_mtu = 2000;
|
conn->dtls_mtu = 2000;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
MAVLITER_DEFINE(it,capwap_actions.strelem);
|
|
||||||
mavliter_foreach(&it){
|
|
||||||
struct cw_str *s = mavliter_get(&it);
|
|
||||||
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
////cw_register_actions_capwap_80211_wtp(&capwap_actions);
|
|
||||||
|
|
||||||
conn->actions = &capwap_actions;
|
conn->actions = &capwap_actions;
|
||||||
|
|
||||||
conn->outgoing = mbag_create();
|
conn->outgoing = mbag_create();
|
||||||
conn->incomming = mbag_create();
|
conn->incomming = mbag_create();
|
||||||
conn->local = mbag_create();
|
conn->local = mbag_create();
|
||||||
|
conn->config = mbag_create();
|
||||||
// conn->base_rmac = get_base_rmac();
|
|
||||||
|
|
||||||
// conn->capwap_mode = CW_MODE_CAPWAP;
|
|
||||||
//conn->capwap_mode = CW_MODE_CISCO;
|
|
||||||
|
|
||||||
the_conn->strict_capwap = 0;
|
the_conn->strict_capwap = 0;
|
||||||
|
|
||||||
|
|
||||||
conn->config = mbag_create();
|
|
||||||
|
|
||||||
cfg_from_json(conn);
|
cfg_from_json(conn);
|
||||||
setup_conf(conn);
|
setup_conf(conn);
|
||||||
|
|
||||||
@ -226,29 +184,6 @@ printf("Setting to 8 %p %p\n",mri,r);
|
|||||||
mod_init_config(mod,conn->config);
|
mod_init_config(mod,conn->config);
|
||||||
cfg_to_json();
|
cfg_to_json();
|
||||||
|
|
||||||
// mbag_t board_data = mbag_create();
|
|
||||||
// mbag_set_dword(board_data, CW_ITEM_WTP_BOARD_VENDOR, conf_vendor_id);
|
|
||||||
|
|
||||||
|
|
||||||
// mbag_set_bstrn(board_data, CW_ITEM_WTP_BOARD_MACADDRESS, conf_macaddress,
|
|
||||||
// conf_macaddress_len);
|
|
||||||
// mbag_set_bstr16n(board_data, CW_ITEM_WTP_BOARD_SERIALNO,
|
|
||||||
// bstr_data(conf_serial_no), bstr_len(conf_serial_no));
|
|
||||||
|
|
||||||
// mbag_set_bstr16n(board_data, CW_ITEM_WTP_BOARD_MODELNO, bstr_data(conf_model_no),
|
|
||||||
// bstr_len(conf_model_no));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// mbag_set_mbag(conn->config, CW_ITEM_WTP_BOARD_DATA, board_data);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// mbag_set_bstrv(conn->config, CW_ITEM_WTP_SOFTWARE_VERSION, sw);
|
|
||||||
|
|
||||||
// printf("Board_data %p\n", board_data);
|
|
||||||
|
|
||||||
mbag_t mb = mbag_get_mbag(conn->config, CW_ITEM_WTP_BOARD_DATA, NULL);
|
mbag_t mb = mbag_get_mbag(conn->config, CW_ITEM_WTP_BOARD_DATA, NULL);
|
||||||
printf("mbag %p\n", mb);
|
printf("mbag %p\n", mb);
|
||||||
|
|
||||||
@ -258,20 +193,15 @@ printf("Setting to 8 %p %p\n",mri,r);
|
|||||||
cw_acpriolist_set(acprios, "AC8new", strlen("AC8new"), 12);
|
cw_acpriolist_set(acprios, "AC8new", strlen("AC8new"), 12);
|
||||||
|
|
||||||
|
|
||||||
//mbag_set_str(conn->config,CW_ITEM_LOCATION_DATA,"Berlin");
|
|
||||||
//mbag_set_str(conn->config,CW_ITEM_WTP_NAME,"WTP Tube");
|
|
||||||
|
|
||||||
mbag_set_byte(conn->local, CW_ITEM_WTP_MAC_TYPE, 0);
|
mbag_set_byte(conn->local, CW_ITEM_WTP_MAC_TYPE, 0);
|
||||||
mbag_set_byte(conn->local, CW_ITEM_WTP_FRAME_TUNNEL_MODE, 0);
|
mbag_set_byte(conn->local, CW_ITEM_WTP_FRAME_TUNNEL_MODE, 0);
|
||||||
|
|
||||||
conn->wbid=1;
|
conn->wbid=1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cw_set_msg_end_callback(conn->actions,CW_STATE_RUN,CW_MSG_CONFIGURATION_UPDATE_REQUEST,handle_update_req);
|
// cw_set_msg_end_callback(conn->actions,CW_STATE_RUN,CW_MSG_CONFIGURATION_UPDATE_REQUEST,handle_update_req);
|
||||||
//cw_set_msg_end_callback(conn,CW_STATE_CONFIGURE,CW_MSG_CONFIGURATION_STATUS_RESPONSE,handle_update_req);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!discovery())
|
if (!discovery())
|
||||||
@ -279,8 +209,6 @@ cw_set_msg_end_callback(conn->actions,CW_STATE_RUN,CW_MSG_CONFIGURATION_UPDATE_R
|
|||||||
if (!join())
|
if (!join())
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
// mavl_del_all(conn->incomming);
|
|
||||||
// conn->incomming = conn->config;
|
|
||||||
if (!configure())
|
if (!configure())
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user