Playing round with a new state machine concept.

FossilOrigin-Name: b15d1beded51369384764d634c232711fc37027a08e25ad22b5ed0e841b9e574
This commit is contained in:
7u83@mail.ru
2015-03-30 05:56:42 +00:00
parent 88aa7793a2
commit e74e8772f8
29 changed files with 189 additions and 54 deletions

View File

@ -16,7 +16,7 @@
*/
#include <stdlib.h>
#include <errno.h>
#include <stdint.h>
#include <netinet/in.h>
@ -36,6 +36,9 @@
#include "db.h"
int ac_run();
void alive_thread(void *data)
@ -46,9 +49,83 @@ void alive_thread(void *data)
}
}
#include "cw_action.h"
cw_actionlist_t the_tree;
int dstart(struct conn *conn,struct cw_action a,uint8_t *data,int len)
{
printf("DISCO STart Action!!\n");
}
int main (int argc, const char * argv[])
{
cw_actionlist_t t = cw_actionlist_create();
the_tree=t;
cw_action_t discovery_actions[] = {
{ CW_STATE_DISCOVERY,CW_MSG_DISCOVERY_REQUEST,-1,0,0,
dstart
},
{CW_STATE_DISCOVERY,CW_MSG_DISCOVERY_REQUEST, CW_ELEM_DISCOVERY_TYPE},
{CW_STATE_DISCOVERY,CW_MSG_DISCOVERY_REQUEST, CW_ELEM_WTP_BOARD_DATA},
{CW_STATE_DISCOVERY,CW_MSG_DISCOVERY_REQUEST, CW_ELEM_WTP_DESCRIPTOR},
{CW_STATE_DISCOVERY,CW_MSG_DISCOVERY_REQUEST, CW_ELEM_WTP_FRAME_TUNNEL_MODE},
{CW_STATE_DISCOVERY,CW_MSG_DISCOVERY_REQUEST, CW_ELEM_WTP_MAC_TYPE},
{0}
};
cw_action_t join_actions[] = {
{CW_STATE_JOIN,CW_MSG_JOIN_REQUEST,-1,0,0},
{CW_STATE_JOIN,CW_MSG_JOIN_REQUEST, CW_ELEM_DISCOVERY_TYPE},
{CW_STATE_JOIN,CW_MSG_JOIN_REQUEST, CW_ELEM_WTP_BOARD_DATA},
{CW_STATE_JOIN,CW_MSG_JOIN_REQUEST, CW_ELEM_WTP_DESCRIPTOR},
{CW_STATE_JOIN,CW_MSG_JOIN_REQUEST, CW_ELEM_WTP_FRAME_TUNNEL_MODE},
{CW_STATE_JOIN,CW_MSG_JOIN_REQUEST, CW_ELEM_WTP_MAC_TYPE},
{0}
};
cw_register_actions(t,discovery_actions);
cw_register_actions(t,join_actions);
#define CW_NAME_DISCOVER_REQUEST "Discovery Request"
/*
int i;
for(i=0; discovery[i].capwap_state!=CW_STATE_MAX; i++){
printf("State: %d MSG_ID: %d ELEM_ID: %d\n",discovery[i].capwap_state,discovery[i].msg_id,discovery[i].elem_id);
void * rc = msgtree_add(t,&(discovery[i]));
printf("Added to tree %p\n",rc);
}
*/
/*
e.capwap_state=0;
e.msg_id = CW_MSG_DISCOVERY_REQUEST;
e.elem_id = CW_ELEM_AC_NAME;
e.name = "AC Name";
msgtree_add(t,&e);
*/
// send_image_file(0,"/home/tube/Downloads/c1130-rcvk9w8-tar.124-25e.JAP.tar");

View File

@ -1,2 +1,3 @@
extern void db_ping();
extern int db_init();

View File

@ -357,6 +357,13 @@ static void wtpman_run_discovery(void *arg)
struct cwrmsg * cwrmsg;
extern cw_actionlist_t the_tree;
wtpman->conn->capwap_state=CW_STATE_DISCOVERY;
wtpman->conn->msgtr=the_tree;
time_t timer = cw_timer_start(10);
cwrmsg = wtpman_wait_for_message(wtpman, timer);
@ -559,9 +566,13 @@ static int wtpman_join(void *arg,time_t timer)
{
struct wtpman * wtpman = (struct wtpman *)arg;
extern cw_actionlist_t the_tree;
wtpman->conn->msgtr=the_tree;
wtpman->conn->capwap_state=CW_STATE_JOIN;
/* timer = cw_timer_start(wtpman->conn->wait_join); */
int join_msgs[] = { CWMSG_JOIN_REQUEST, -1 };
int join_msgs[] = { CW_MSG_JOIN_REQUEST, -1 };
struct cwrmsg * cwrmsg;
cwrmsg = conn_wait_for_request(wtpman->conn, join_msgs, timer);