mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-21 14:03:11 -07:00
Implement Wakeup
This commit is contained in:
parent
52cacecaa0
commit
4fadc02947
9 changed files with 132 additions and 8 deletions
|
@ -35,13 +35,15 @@ extern "C" {
|
|||
|
||||
typedef enum chiaki_discovery_cmd_t
|
||||
{
|
||||
CHIAKI_DISCOVERY_CMD_SRCH
|
||||
CHIAKI_DISCOVERY_CMD_SRCH,
|
||||
CHIAKI_DISCOVERY_CMD_WAKEUP
|
||||
} ChiakiDiscoveryCmd;
|
||||
|
||||
typedef struct chiaki_discovery_packet_t
|
||||
{
|
||||
ChiakiDiscoveryCmd cmd;
|
||||
char *protocol_version;
|
||||
uint64_t user_credential; // for wakeup, this is just the regist key interpreted as hex
|
||||
} ChiakiDiscoveryPacket;
|
||||
|
||||
typedef enum chiaki_discovery_host_state_t
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include <netdb.h>
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <arpa/inet.h>
|
||||
|
||||
const char *chiaki_discovery_host_state_string(ChiakiDiscoveryHostState state)
|
||||
|
@ -49,6 +50,16 @@ CHIAKI_EXPORT int chiaki_discovery_packet_fmt(char *buf, size_t buf_size, Chiaki
|
|||
case CHIAKI_DISCOVERY_CMD_SRCH:
|
||||
return snprintf(buf, buf_size, "SRCH * HTTP/1.1\ndevice-discovery-protocol-version:%s\n",
|
||||
version_str);
|
||||
case CHIAKI_DISCOVERY_CMD_WAKEUP:
|
||||
return snprintf(buf, buf_size,
|
||||
"WAKEUP * HTTP/1.1\n"
|
||||
"client-type:vr\n"
|
||||
"auth-type:R\n"
|
||||
"model:w\n"
|
||||
"app-type:r\n"
|
||||
"user-credential:%llu\n"
|
||||
"device-discovery-protocol-version:%s\n",
|
||||
(unsigned long long)packet->user_credential, version_str);
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
@ -169,7 +180,10 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_send(ChiakiDiscovery *discovery,
|
|||
|
||||
ssize_t rc = sendto(discovery->socket, buf, (size_t)len + 1, 0, addr, addr_size);
|
||||
if(rc < 0)
|
||||
{
|
||||
CHIAKI_LOGE(discovery->log, "Discovery failed to send: %s", strerror(errno));
|
||||
return CHIAKI_ERR_NETWORK;
|
||||
}
|
||||
|
||||
return CHIAKI_ERR_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -346,7 +346,7 @@ static int regist_search_connect(ChiakiRegist *regist, struct addrinfo *addrinfo
|
|||
}
|
||||
|
||||
in_addr_t ip = ((struct sockaddr_in *)send_addr)->sin_addr.s_addr;
|
||||
((struct sockaddr_in *)send_addr)->sin_addr.s_addr = INADDR_ANY;
|
||||
((struct sockaddr_in *)send_addr)->sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
r = bind(sock, send_addr, *send_addr_len);
|
||||
((struct sockaddr_in *)send_addr)->sin_addr.s_addr = ip;
|
||||
if(r < 0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue