#include #include #include #include #include "capwap/capwap.h" #include "capwap/conn.h" #include "capwap/radioinfo.h" #include "capwap/cw_log.h" #include "capwap/dtls.h" #include "capwap/sock.h" #include "wtp_conf.h" static int echo_interval_timer; struct cwrmsg * get_response(struct conn * conn, int type,int seqnum) { struct cwrmsg * cwrmsg; int i; for(i=0; itype==type && cwrmsg->seqnum==seqnum) return cwrmsg; printf("another message was detected %i %i\n",cwrmsg->type,cwrmsg->seqnum); } return 0; } struct cwrmsg * send_request(struct conn * conn,struct cwmsg *cwmsg) { int i; for (i=0; i0){ // cw_log_debug1("Retransmitting request, type=%i,seqnum=%i",cwmsg->type,cwmsg->seqnum); } #endif int rc = conn_send_cwmsg(conn,cwmsg); if (rc<0){ // cw_log_debug1("Error sending request, type=%i, seqnum %i, %s",cwmsg->type,cwmsg->seqnum,strerror(errno)); return 0; } struct cwrmsg * r = get_response(conn,cwmsg->type+1,cwmsg->seqnum); if (r) return r; } return 0; } extern struct conn * get_conn(); int run(struct conn * conn) { conn = get_conn(); printf("Running with conn %p\n"); struct radioinfo radioinfo; memset(&radioinfo,0,sizeof(radioinfo)); echo_interval_timer=time(NULL); while (1){ if (time(NULL)-echo_interval_timer >= conf_echo_interval) { // struct cwmsg cwmsg; // uint8_t buffer[CWMSG_MAX_SIZE]; // cwsend_echo_request(conn,&radioinfo); // cw_log_debug1("Sending echo request"); struct cwmsg *cwmsg=&conn->req_msg; uint8_t * buffer = conn->req_buffer; cwmsg_init_echo_request(cwmsg,buffer,conn,&radioinfo); printf("Conn target is %s",sock_addr2str(&conn->addr)); printf("Calling conn send req\n"); printf("conn max retrans: %d\n",conn->max_retransmit); struct cwrmsg * rc = conn_send_request(conn); printf("Back from conn send req\n"); // printf("conn->seqnum %i\n",conn->seqnum); // struct cwrmsg * rc = get_response(conn,CWMSG_ECHO_RESPONSE,conn->seqnum); if (rc==0){ printf("Error !\n"); exit(0); dtls_shutdown(conn); // cw_log_debug1("Connection lost, no echo response"); return 0; } echo_interval_timer=time(NULL); } sleep(1); } exit(0); }