Added code to play around with image file sending-
FossilOrigin-Name: 14cdf61c4c833372fad6c1541c83d08df86a05092c59539c6baed4da5f9b07d4
This commit is contained in:
parent
eedf8636ab
commit
018ecb0928
111
src/ac/wtpman.c
111
src/ac/wtpman.c
@ -37,6 +37,82 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static struct cwrmsg * conn_wait_for_message(struct conn * conn, time_t timer)
|
||||||
|
{
|
||||||
|
struct cwrmsg * cwrmsg;
|
||||||
|
do {
|
||||||
|
cwrmsg = conn_get_message(conn);
|
||||||
|
if (cwrmsg){
|
||||||
|
if (cwrmsg->type == CWMSG_ECHO_REQUEST){
|
||||||
|
printf("Echo reponse\n");
|
||||||
|
cwsend_echo_response(conn,cwrmsg->seqnum,0);
|
||||||
|
printf("continue\n");
|
||||||
|
cwrmsg=0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!cwrmsg && conn->dtls_error)
|
||||||
|
return (struct cwrmsg*)EOF;
|
||||||
|
if (!cwrmsg && cw_timer_timeout(timer))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
}while(!cwrmsg);
|
||||||
|
|
||||||
|
printf("Nw here\n");
|
||||||
|
cw_dbg(DBG_CW_MSG,"Received message from %s, type=%d - %s"
|
||||||
|
,sock_addr2str(&conn->addr),cwrmsg->type,cw_msgtostr(cwrmsg->type));
|
||||||
|
|
||||||
|
return cwrmsg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void send_image_file(struct conn * conn,const char * filename)
|
||||||
|
{
|
||||||
|
FILE * infile;
|
||||||
|
infile = fopen(filename,"rb");
|
||||||
|
if (!infile){
|
||||||
|
cw_log(LOG_ERR,"Can't open image file %s:%s",filename,strerror(errno));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
cw_log(LOG_INFO,"Sending image file %s to %s",filename,sock_addr2str(&conn->addr));
|
||||||
|
|
||||||
|
struct cwrmsg * cwrmsg;
|
||||||
|
uint8_t buffer[1024];
|
||||||
|
struct image_data data;
|
||||||
|
data.data = buffer;
|
||||||
|
|
||||||
|
|
||||||
|
do{
|
||||||
|
data.len = fread(buffer,1,sizeof(buffer),infile);
|
||||||
|
if (feof(infile))
|
||||||
|
data.type=2;
|
||||||
|
else
|
||||||
|
data.type=1;
|
||||||
|
printf("Send img data request\n");
|
||||||
|
cwsend_image_data_request(conn,&data,0);
|
||||||
|
cwrmsg = conn_get_response(conn);
|
||||||
|
if (cwrmsg){
|
||||||
|
printf("Got img data response\n");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
printf("Respnse Timeout\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}while(!feof(infile));
|
||||||
|
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ACIPLIST * get_aciplist();
|
ACIPLIST * get_aciplist();
|
||||||
struct ac_info * get_acinfo();
|
struct ac_info * get_acinfo();
|
||||||
|
|
||||||
@ -77,6 +153,8 @@ static struct cwrmsg * wtpman_wait_for_message(struct wtpman * wtpman, time_t ti
|
|||||||
|
|
||||||
static void wtpman_run_discovery(void *arg)
|
static void wtpman_run_discovery(void *arg)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
struct wtpman * wtpman = (struct wtpman *)arg;
|
struct wtpman * wtpman = (struct wtpman *)arg;
|
||||||
struct cwrmsg * cwrmsg;
|
struct cwrmsg * cwrmsg;
|
||||||
|
|
||||||
@ -179,6 +257,7 @@ static void wtpman_run(void *arg)
|
|||||||
/* DTLS handshake done */
|
/* DTLS handshake done */
|
||||||
|
|
||||||
|
|
||||||
|
wtpman->conn->strict_capwap=1;
|
||||||
/* In join state, wait for join request */
|
/* In join state, wait for join request */
|
||||||
|
|
||||||
cwrmsg = wtpman_wait_for_message(wtpman,timer);
|
cwrmsg = wtpman_wait_for_message(wtpman,timer);
|
||||||
@ -204,8 +283,6 @@ static void wtpman_run(void *arg)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// cw_dbg(DBG_CW_MSG,"Received join request from %s",CLIENT_IP);
|
|
||||||
|
|
||||||
process_join_request(&wtpman->wtpinfo,cwrmsg->msgelems,cwrmsg->msgelems_len);
|
process_join_request(&wtpman->wtpinfo,cwrmsg->msgelems,cwrmsg->msgelems_len);
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -220,7 +297,6 @@ static void wtpman_run(void *arg)
|
|||||||
memcpy (radioinfo.rmac, cwrmsg->rmac,8);
|
memcpy (radioinfo.rmac, cwrmsg->rmac,8);
|
||||||
struct ac_info * acinfo = get_acinfo();
|
struct ac_info * acinfo = get_acinfo();
|
||||||
|
|
||||||
// printf("ACN: %s\n",acinfo->ac_name);
|
|
||||||
|
|
||||||
int result_code = 0;
|
int result_code = 0;
|
||||||
cw_dbg(DBG_CW_MSG,"Sending join response to %s",CLIENT_IP);
|
cw_dbg(DBG_CW_MSG,"Sending join response to %s",CLIENT_IP);
|
||||||
@ -229,9 +305,8 @@ static void wtpman_run(void *arg)
|
|||||||
wtpman->wtpinfo.name,wtpman->wtpinfo.location,
|
wtpman->wtpinfo.name,wtpman->wtpinfo.location,
|
||||||
sock_addr2str(&wtpman->conn->addr));
|
sock_addr2str(&wtpman->conn->addr));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* here the WTP has joined */
|
/* here the WTP has joined */
|
||||||
|
|
||||||
|
|
||||||
cwrmsg = wtpman_wait_for_message(wtpman,timer);
|
cwrmsg = wtpman_wait_for_message(wtpman,timer);
|
||||||
if (!cwrmsg){
|
if (!cwrmsg){
|
||||||
@ -241,8 +316,32 @@ static void wtpman_run(void *arg)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (cwrmsg->type==CWMSG_IMAGE_DATA_REQUEST){
|
||||||
|
cwread_image_data_request(0,cwrmsg->msgelems,cwrmsg->msgelems_len);
|
||||||
|
cwsend_image_data_response(wtpman->conn,cwrmsg->seqnum,CW_RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
exit(0);
|
||||||
|
printf("Sending image file\n");
|
||||||
|
send_image_file(wtpman->conn,"/home/tube/Downloads/c1130-rcvk9w8-tar.124-25e.JAO5.tar");
|
||||||
|
printf("Back from sending image file\n");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
timer = cw_timer_start(30);
|
||||||
|
cwrmsg = wtpman_wait_for_message(wtpman,timer);
|
||||||
|
|
||||||
|
if (cwrmsg)
|
||||||
|
printf("I have got a message of type %d\n",cwrmsg->type);
|
||||||
|
|
||||||
|
if (cwrmsg->type==CWMSG_IMAGE_DATA_REQUEST){
|
||||||
|
cwread_image_data_request(0,cwrmsg->msgelems,cwrmsg->msgelems_len);
|
||||||
|
cwsend_image_data_response(wtpman->conn,cwrmsg->seqnum,CW_RESULT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
printf("I have got a message of type %d\n",cwrmsg->type);
|
|
||||||
|
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user