summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/nwm/uds_connection.h
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2017-07-17 16:25:58 +0200
committerSubv <subv2112@gmail.com>2017-08-27 17:48:09 +0200
commit54411bef4eb16af0822820205a923690ea7e822a (patch)
treee8a0a55d7be9cb4bd50c456ecb7d934685d95f9c /src/core/hle/service/nwm/uds_connection.h
parentMerge pull request #2814 from Kloen/macro-remove (diff)
downloadyuzu-54411bef4eb16af0822820205a923690ea7e822a.tar
yuzu-54411bef4eb16af0822820205a923690ea7e822a.tar.gz
yuzu-54411bef4eb16af0822820205a923690ea7e822a.tar.bz2
yuzu-54411bef4eb16af0822820205a923690ea7e822a.tar.lz
yuzu-54411bef4eb16af0822820205a923690ea7e822a.tar.xz
yuzu-54411bef4eb16af0822820205a923690ea7e822a.tar.zst
yuzu-54411bef4eb16af0822820205a923690ea7e822a.zip
Diffstat (limited to '')
-rw-r--r--src/core/hle/service/nwm/uds_connection.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/core/hle/service/nwm/uds_connection.h b/src/core/hle/service/nwm/uds_connection.h
new file mode 100644
index 000000000..73f55a4fd
--- /dev/null
+++ b/src/core/hle/service/nwm/uds_connection.h
@@ -0,0 +1,51 @@
+// Copyright 2017 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#pragma once
+
+#include <vector>
+#include "common/common_types.h"
+#include "common/swap.h"
+#include "core/hle/service/service.h"
+
+namespace Service {
+namespace NWM {
+
+/// Sequence number of the 802.11 authentication frames.
+enum class AuthenticationSeq : u16 { SEQ1 = 1, SEQ2 = 2 };
+
+enum class AuthAlgorithm : u16 { OpenSystem = 0 };
+
+enum class AuthStatus : u16 { Successful = 0 };
+
+enum class AssocStatus : u16 { Successful = 0 };
+
+struct AuthenticationFrame {
+ u16_le auth_algorithm = static_cast<u16>(AuthAlgorithm::OpenSystem);
+ u16_le auth_seq;
+ u16_le status_code = static_cast<u16>(AuthStatus::Successful);
+};
+
+static_assert(sizeof(AuthenticationFrame) == 6, "AuthenticationFrame has wrong size");
+
+struct AssociationResponseFrame {
+ u16_le capabilities;
+ u16_le status_code;
+ u16_le assoc_id;
+};
+
+static_assert(sizeof(AssociationResponseFrame) == 6, "AssociationResponseFrame has wrong size");
+
+/// Generates an 802.11 authentication frame, starting at the frame body.
+std::vector<u8> GenerateAuthenticationFrame(AuthenticationSeq seq);
+
+/// Returns the sequence number from the body of an Authentication frame.
+AuthenticationSeq GetAuthenticationSeqNumber(const std::vector<u8>& body);
+
+/// Generates an 802.11 association response frame with the specified status, association id and
+/// network id, starting at the frame body.
+std::vector<u8> GenerateAssocResponseFrame(AssocStatus status, u16 association_id, u32 network_id);
+
+} // namespace NWM
+} // namespace Service