aboutsummaryrefslogtreecommitdiff
path: root/busdevice.c
diff options
context:
space:
mode:
Diffstat (limited to 'busdevice.c')
-rw-r--r--busdevice.c116
1 files changed, 2 insertions, 114 deletions
diff --git a/busdevice.c b/busdevice.c
index 85a5b0e..7c42202 100644
--- a/busdevice.c
+++ b/busdevice.c
@@ -1,13 +1,12 @@
#include "busdevice.h"
-#include "pcserialport.h"
-#include "tcpclient.h"
+#include "drivers/serial/pcserialport.h"
+#include "drivers/tcpip/tcpclient.h"
#include "drivers/ftdi_d2xx/sm_d2xx.h"
#include <string.h>
#include <errno.h>
#include <stdlib.h>
-#include <ctype.h>
#define BD_NONE 0
#define BD_RS 1
@@ -53,117 +52,6 @@ void smBDinit()
bdInitialized=smtrue;
}
-//accepted TCP/IP address format is nnn.nnn.nnn.nnn:pppp where n is IP address numbers and p is port number
-static int validateIpAddress(const char *s, const char **pip_end,
- const char **pport_start)
-{
- int octets = 0;
- int ch = 0, prev = 0;
- int len = 0;
- const char *ip_end = NULL;
- const char *port_start = NULL;
-
- while (*s)
- {
- ch = *s;
-
- if (isdigit(ch))
- {
- ++len;
- // Octet len must be 1-3 digits
- if (len > 3)
- {
- return -1;
- }
- }
- else if (ch == '.' && isdigit(prev))
- {
- ++octets;
- len = 0;
- // No more than 4 octets please
- if (octets > 4)
- {
- return -1;
- }
- }
- else if (ch == ':' && isdigit(prev))
- {
- ++octets;
- // We want exactly 4 octets at this point
- if (octets != 4)
- {
- return -1;
- }
- ip_end = s;
- ++s;
- port_start = s;
- while (isdigit((ch = *s)))
- ++s;
- // After port we want the end of the string
- if (ch != '\0')
- return -1;
- // This will skip over the ++s below
- continue;
- }
- else
- {
- return -1;
- }
-
- prev = ch;
- ++s;
- }
-
- // We reached the end of the string and did not encounter the port
- if (*s == '\0' && ip_end == NULL)
- {
- ++octets;
- ip_end = s;
- }
-
- // Check that there are exactly 4 octets
- if (octets != 4)
- return -1;
-
- if (pip_end)
- *pip_end = ip_end;
-
- if (pport_start)
- *pport_start = port_start;
-
- return 0;
-}
-
-static int parseIpAddress(const char *s, char *ip, size_t ipsize, short *port)
-{
- const char *ip_end, *port_start;
-
- //ip_end and port_start are pointers to memory area of s, not offsets or indexes to s
- if (validateIpAddress(s, &ip_end, &port_start) == -1)
- return -1;
-
- // If ip=NULL, we just report that the parsing was ok
- if (!ip)
- return 0;
-
- if (ipsize < (size_t)(ip_end - s + 1))
- return -1;
-
- memcpy(ip, s, ip_end - s);
- ip[ip_end - s] = '\0';
-
- if (port_start)
- {
- *port = 0;
- while (*port_start)
- {
- *port = *port * 10 + (*port_start - '0');
- ++port_start;
- }
- }
-
- return 0;
-}
//ie "COM1" "VSD2USB"
//return -1 if fails, otherwise handle number