Compare commits
No commits in common. "3eb262111d5e4aaa9eb41c83c01ec8d1de167fd0" and "bfe0745b985eea8314b763f1e09137750592e0e1" have entirely different histories.
3eb262111d
...
bfe0745b98
|
@ -1,8 +0,0 @@
|
||||||
pipeline {
|
|
||||||
agent any
|
|
||||||
stage ("Build Wii") {
|
|
||||||
steps {
|
|
||||||
load "wii/Jenkinsfile"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
pipeline {
|
|
||||||
agent {
|
|
||||||
docker { image 'devkitpro/devkitppc' }
|
|
||||||
}
|
|
||||||
stages {
|
|
||||||
stage('Build') {
|
|
||||||
steps {
|
|
||||||
sh 'make'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('Archive') {
|
|
||||||
steps {
|
|
||||||
archiveArtifacts artifacts: 'boot.dol', fingerprint: true
|
|
||||||
archiveArtifacts artifacts: 'meta.xml', fingerprint: true
|
|
||||||
archiveArtifacts artifacts: 'icon.png', fingerprint: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,33 +1,19 @@
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include <gccore.h>
|
#include <gccore.h>
|
||||||
#include <wiiuse/wpad.h>
|
#include <wiiuse/wpad.h>
|
||||||
|
|
||||||
#include "network/networking.h"
|
|
||||||
#include "network/udp_client.h"
|
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
|
|
||||||
/// The IP address of the server to connect to.
|
|
||||||
const std::string SERVER_IP_ADDRESS = "192.168.0.1";
|
|
||||||
|
|
||||||
/// The port number of the server to connect to.
|
|
||||||
constexpr uint16_t SERVER_PORT = 10000;
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
// Screen init
|
|
||||||
auto screen = Screen{};
|
auto screen = Screen{};
|
||||||
|
|
||||||
// Controller init
|
|
||||||
WPAD_Init();
|
WPAD_Init();
|
||||||
|
|
||||||
// Network init
|
Paddle my_paddle{ screen.height(), 15, 5 };
|
||||||
Networking network;
|
|
||||||
network.init();
|
|
||||||
auto udp_client = UdpClient{ SERVER_IP_ADDRESS, SERVER_PORT };
|
|
||||||
|
|
||||||
auto exit = false;
|
auto exit = false;
|
||||||
while (!exit)
|
while (!exit)
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
#include "networking.h"
|
|
||||||
|
|
||||||
#include <cstdint>
|
|
||||||
#include <memory>
|
|
||||||
#include <optional>
|
|
||||||
#include <stdexcept>
|
|
||||||
#include <string>
|
|
||||||
#include <string_view>
|
|
||||||
#include <gccore.h>
|
|
||||||
#include <network.h>
|
|
||||||
|
|
||||||
|
|
||||||
bool Networking::_connected = false;
|
|
||||||
|
|
||||||
bool Networking::init() noexcept
|
|
||||||
{
|
|
||||||
if (!Networking::_connected)
|
|
||||||
{
|
|
||||||
int32_t ret = if_config(
|
|
||||||
_ip_address,
|
|
||||||
_netmask,
|
|
||||||
_gateway,
|
|
||||||
TRUE,
|
|
||||||
20
|
|
||||||
);
|
|
||||||
|
|
||||||
if (ret >= 0)
|
|
||||||
Networking::_connected = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Networking::_connected;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t Networking::create_socket(uint8_t type)
|
|
||||||
{
|
|
||||||
if (type != SOCK_STREAM && type != SOCK_DGRAM)
|
|
||||||
throw std::invalid_argument("Unsupported socket type.");
|
|
||||||
|
|
||||||
int32_t sock = net_socket(AF_INET, type, IPPROTO_IP);
|
|
||||||
if (sock == INVALID_SOCKET)
|
|
||||||
throw std::runtime_error("Could not create socket.");
|
|
||||||
|
|
||||||
return sock;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::unique_ptr<sockaddr_in> Networking::create_host(uint16_t port) noexcept
|
|
||||||
{
|
|
||||||
auto server = std::make_unique<sockaddr_in>();
|
|
||||||
server->sin_family = AF_INET;
|
|
||||||
server->sin_port = htons(port);
|
|
||||||
server->sin_addr.s_addr = INADDR_ANY;
|
|
||||||
return server;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::unique_ptr<sockaddr_in> Networking::create_dest(std::string_view ip_address, uint16_t port) noexcept
|
|
||||||
{
|
|
||||||
auto server = std::make_unique<sockaddr_in>();
|
|
||||||
server->sin_family = AF_INET;
|
|
||||||
server->sin_port = htons(port);
|
|
||||||
inet_aton(ip_address.data(), &(server->sin_addr));
|
|
||||||
return server;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::optional<std::string> Networking::get_ip_address() noexcept
|
|
||||||
{
|
|
||||||
return Networking::_connected ? std::optional(std::string(_ip_address)) : std::nullopt;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::optional<std::string> Networking::get_netmask() noexcept
|
|
||||||
{
|
|
||||||
return Networking::_connected ? std::optional(std::string(_netmask)) : std::nullopt;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::optional<std::string> Networking::get_gateway() noexcept
|
|
||||||
{
|
|
||||||
return Networking::_connected ? std::optional(std::string(_gateway)) : std::nullopt;
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <cstdint>
|
|
||||||
#include <memory>
|
|
||||||
#include <optional>
|
|
||||||
#include <string>
|
|
||||||
#include <string_view>
|
|
||||||
#include <network.h>
|
|
||||||
|
|
||||||
|
|
||||||
class Networking final
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
bool init() noexcept;
|
|
||||||
static int32_t create_socket(uint8_t type);
|
|
||||||
static std::unique_ptr<sockaddr_in> create_host(uint16_t port) noexcept;
|
|
||||||
static std::unique_ptr<sockaddr_in> create_dest(std::string_view ip_address, uint16_t port) noexcept;
|
|
||||||
std::optional<std::string> get_ip_address() noexcept;
|
|
||||||
std::optional<std::string> get_netmask() noexcept;
|
|
||||||
std::optional<std::string> get_gateway() noexcept;
|
|
||||||
private:
|
|
||||||
static bool _connected;
|
|
||||||
char _ip_address[16];
|
|
||||||
char _netmask[16];
|
|
||||||
char _gateway[16];
|
|
||||||
};
|
|
|
@ -1,26 +0,0 @@
|
||||||
#include "udp_client.h"
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
#include <network.h>
|
|
||||||
|
|
||||||
#include "networking.h"
|
|
||||||
|
|
||||||
|
|
||||||
UdpClient::UdpClient(std::string_view ip_address, uint16_t port):
|
|
||||||
_sock { Networking::create_socket(SOCK_DGRAM) },
|
|
||||||
_client { Networking::create_host(0) },
|
|
||||||
_server { Networking::create_dest(ip_address, port) }
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void UdpClient::send()
|
|
||||||
{
|
|
||||||
net_sendto(_sock, "Ping!", sizeof("Ping!"), 0, (sockaddr *)(_server.get()), sizeof(sockaddr_in));
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string UdpClient::receive()
|
|
||||||
{
|
|
||||||
char buffer[1500] = {};
|
|
||||||
net_recv(_sock, &buffer[0], 1500, 0);
|
|
||||||
return std::string(buffer);
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <cstdint>
|
|
||||||
#include <memory>
|
|
||||||
#include <string>
|
|
||||||
#include <string_view>
|
|
||||||
#include <network.h>
|
|
||||||
|
|
||||||
|
|
||||||
class UdpClient final
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
UdpClient(std::string_view ip_address, uint16_t port);
|
|
||||||
void send();
|
|
||||||
std::string receive();
|
|
||||||
private:
|
|
||||||
int32_t _sock;
|
|
||||||
std::unique_ptr<sockaddr_in> _client;
|
|
||||||
std::unique_ptr<sockaddr_in> _server;
|
|
||||||
};
|
|
Loading…
Reference in New Issue