Added a telnet_connect() function
This commit is contained in:
parent
482de817e0
commit
6d545730ba
2 changed files with 42 additions and 29 deletions
|
@ -1,18 +1,18 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, Adam Dunkels.
|
* Copyright (c) 2002, Adam Dunkels.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
* are met:
|
* are met:
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* 3. The name of the author may not be used to endorse or promote
|
* 3. The name of the author may not be used to endorse or promote
|
||||||
* products derived from this software without specific prior
|
* products derived from this software without specific prior
|
||||||
* written permission.
|
* written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
@ -24,11 +24,11 @@
|
||||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* This file is part of the uIP TCP/IP stack.
|
* This file is part of the uIP TCP/IP stack.
|
||||||
*
|
*
|
||||||
* $Id: telnet.c,v 1.1 2006/06/17 22:41:13 adamdunkels Exp $
|
* $Id: telnet.c,v 1.2 2009/03/05 23:56:56 adamdunkels Exp $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ telnet_send(struct telnet_state *s, char *text, u16_t len)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
s->text = text;
|
s->text = text;
|
||||||
s->textlen = len;
|
s->textlen = len;
|
||||||
s->sentlen = 0;
|
s->sentlen = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ telnet_abort(struct telnet_state *s)
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
acked(struct telnet_state *s)
|
acked(struct telnet_state *s)
|
||||||
{
|
{
|
||||||
s->textlen -= s->sentlen;
|
s->textlen -= s->sentlen;
|
||||||
if(s->textlen == 0) {
|
if(s->textlen == 0) {
|
||||||
|
@ -89,7 +89,7 @@ acked(struct telnet_state *s)
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
senddata(struct telnet_state *s)
|
senddata(struct telnet_state *s)
|
||||||
{
|
{
|
||||||
if(s->text == NULL) {
|
if(s->text == NULL) {
|
||||||
uip_send(s->text, 0);
|
uip_send(s->text, 0);
|
||||||
|
@ -103,6 +103,18 @@ senddata(struct telnet_state *s)
|
||||||
uip_send(s->text, s->sentlen);
|
uip_send(s->text, s->sentlen);
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
|
struct telnet_state *
|
||||||
|
telnet_connect(struct telnet_state *s, uip_ipaddr_t *addr, u16_t port)
|
||||||
|
{
|
||||||
|
struct uip_conn *conn;
|
||||||
|
|
||||||
|
conn = tcp_connect(addr, htons(port), s);
|
||||||
|
if(conn == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
/*-----------------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
telnet_app(void *ts)
|
telnet_app(void *ts)
|
||||||
{
|
{
|
||||||
|
@ -126,7 +138,6 @@ telnet_app(void *ts)
|
||||||
telnet_timedout(s);
|
telnet_timedout(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(s->flags & FLAG_CLOSE) {
|
if(s->flags & FLAG_CLOSE) {
|
||||||
uip_close();
|
uip_close();
|
||||||
return;
|
return;
|
||||||
|
@ -145,7 +156,7 @@ telnet_app(void *ts)
|
||||||
uip_newdata() ||
|
uip_newdata() ||
|
||||||
uip_acked()) {
|
uip_acked()) {
|
||||||
senddata(s);
|
senddata(s);
|
||||||
} else if(uip_poll()) {
|
} else if(uip_poll()) {
|
||||||
senddata(s);
|
senddata(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2002, Adam Dunkels.
|
* Copyright (c) 2002, Adam Dunkels.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
* are met:
|
* are met:
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer.
|
* notice, this list of conditions and the following disclaimer.
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* 3. The name of the author may not be used to endorse or promote
|
* 3. The name of the author may not be used to endorse or promote
|
||||||
* products derived from this software without specific prior
|
* products derived from this software without specific prior
|
||||||
* written permission.
|
* written permission.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||||
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
@ -24,11 +24,11 @@
|
||||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* This file is part of the uIP TCP/IP stack.
|
* This file is part of the uIP TCP/IP stack.
|
||||||
*
|
*
|
||||||
* $Id: telnet.h,v 1.1 2006/06/17 22:41:13 adamdunkels Exp $
|
* $Id: telnet.h,v 1.2 2009/03/05 23:56:56 adamdunkels Exp $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#ifndef __TELNET_H__
|
#ifndef __TELNET_H__
|
||||||
|
@ -48,6 +48,8 @@ void telnet_app(void *s);
|
||||||
unsigned char telnet_send(struct telnet_state *s, char *text, u16_t len);
|
unsigned char telnet_send(struct telnet_state *s, char *text, u16_t len);
|
||||||
unsigned char telnet_close(struct telnet_state *s);
|
unsigned char telnet_close(struct telnet_state *s);
|
||||||
unsigned char telnet_abort(struct telnet_state *s);
|
unsigned char telnet_abort(struct telnet_state *s);
|
||||||
|
struct telnet_state *telnet_connect(struct telnet_state *s, uip_ipaddr_t *addr, u16_t port);
|
||||||
|
|
||||||
|
|
||||||
/* Callbacks, implemented by the caller. */
|
/* Callbacks, implemented by the caller. */
|
||||||
void telnet_connected(struct telnet_state *s);
|
void telnet_connected(struct telnet_state *s);
|
||||||
|
|
Loading…
Reference in a new issue