Expand net_socket.c

This commit is contained in:
twinaphex 2016-05-08 07:24:10 +02:00
parent 897a058d29
commit 2f6baffe45
3 changed files with 49 additions and 25 deletions

View File

@ -50,6 +50,14 @@ enum socket_protocol
SOCKET_PROTOCOL_UDP
};
typedef struct socket_target
{
unsigned port;
const char *server;
enum socket_domain domain;
enum socket_protocol prot;
} socket_target_t;
int socket_init(void **address, uint16_t port, const char *server, enum socket_type type);
int socket_close(int fd);

View File

@ -208,6 +208,23 @@ int socket_connect(int fd, void *data, bool timeout_enable)
return connect(fd, addr->ai_addr, addr->ai_addrlen);
}
static int domain_get(enum socket_domain type)
{
switch (type)
{
case SOCKET_DOMAIN_INET:
#ifdef VITA
return PSP2_NET_AF_INET;
#else
return AF_INET;
#endif
default:
break;
}
return 0;
}
int socket_create(
const char *name,
enum socket_domain domain_type,
@ -215,15 +232,9 @@ int socket_create(
enum socket_protocol protocol_type)
{
int type = 0;
int domain = 0;
int protocol = 0;
int domain = domain_get(domain_type);
#ifdef VITA
switch (domain_type)
{
case SOCKET_DOMAIN_INET:
domain = PSP2_NET_AF_INET;
break;
}
switch (socket_type)
{
@ -253,13 +264,6 @@ int socket_create(
return sceNetSocket(name, domain, type, protocol);
#else
switch (domain_type)
{
case SOCKET_DOMAIN_INET:
domain = AF_INET;
break;
}
switch (socket_type)
{
case SOCKET_TYPE_DATAGRAM:
@ -289,3 +293,21 @@ int socket_create(
return socket(domain, type, protocol);
#endif
}
void socket_set_target(void *data, socket_target_t *in_addr)
{
struct sockaddr_in *out_target = (struct sockaddr_in*)data;
out_target->sin_port = inet_htons(in_addr->port);
out_target->sin_family = domain_get(in_addr->domain);
#ifdef VITA
out_target->sin_addr = inet_aton(in_addr->server);
#else
#ifdef GEKKO
out_target->sin_len = 8;
#endif
inet_pton(AF_INET, in_addr->server, &out_target->sin_addr);
#endif
}

View File

@ -42,6 +42,7 @@ static struct sockaddr_in target;
void logger_init (void)
{
socket_target_t in_target;
const char *server = PC_DEVELOPMENT_IP_ADDRESS;
unsigned port = PC_DEVELOPMENT_UDP_PORT;
@ -57,18 +58,11 @@ void logger_init (void)
SOCKET_TYPE_DATAGRAM,
SOCKET_PROTOCOL_NONE);
target.sin_port = inet_htons(port);
#ifdef VITA
target.sin_family = PSP2_NET_AF_INET;
target.sin_addr = inet_aton(server);
#else
target.sin_family = AF_INET;
#ifdef GEKKO
target.sin_len = 8;
#endif
in_target.port = port;
in_target.server = server;
in_target.domain = SOCKET_DOMAIN_INET;
inet_pton(AF_INET, server, &target.sin_addr);
#endif
socket_set_target(&target, &in_target);
}
void logger_shutdown (void)