mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 06:10:04 +00:00
Add RdaPrfData (message type 32)
This commit is contained in:
parent
fd6c224fc2
commit
f709380a97
5 changed files with 188 additions and 3 deletions
|
|
@ -121,13 +121,44 @@ public:
|
|||
[](auto& p) { p.second = SwapFloat(p.second); });
|
||||
}
|
||||
|
||||
static void SwapVector(std::vector<std::uint16_t>& v)
|
||||
template<typename T>
|
||||
static void SwapVector(std::vector<T>& v)
|
||||
{
|
||||
std::transform(std::execution::par_unseq,
|
||||
v.begin(),
|
||||
v.end(),
|
||||
v.begin(),
|
||||
[](std::uint16_t u) { return ntohs(u); });
|
||||
[](T u)
|
||||
{
|
||||
if constexpr (std::is_same_v<T, std::uint16_t> ||
|
||||
std::is_same_v<T, std::int16_t>)
|
||||
{
|
||||
return static_cast<T>(ntohs(u));
|
||||
}
|
||||
else if constexpr (std::is_same_v<T, std::uint32_t> ||
|
||||
std::is_same_v<T, std::int32_t>)
|
||||
{
|
||||
return static_cast<T>(ntohl(u));
|
||||
}
|
||||
else if constexpr (std::is_same_v<T, std::uint64_t> ||
|
||||
std::is_same_v<T, std::int64_t>)
|
||||
{
|
||||
return static_cast<T>(ntohll(u));
|
||||
}
|
||||
else if constexpr (std::is_same_v<T, float>)
|
||||
{
|
||||
return SwapFloat(u);
|
||||
}
|
||||
else if constexpr (std::is_same_v<T, double>)
|
||||
{
|
||||
return SwapDouble(u);
|
||||
}
|
||||
else
|
||||
{
|
||||
static_assert(std::is_same_v<T, void>,
|
||||
"Unsupported type for SwapVector");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
|||
30
wxdata/include/scwx/wsr88d/rda/rda_prf_data.hpp
Normal file
30
wxdata/include/scwx/wsr88d/rda/rda_prf_data.hpp
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#pragma once
|
||||
|
||||
#include <scwx/wsr88d/rda/level2_message.hpp>
|
||||
|
||||
namespace scwx::wsr88d::rda
|
||||
{
|
||||
|
||||
class RdaPrfData : public Level2Message
|
||||
{
|
||||
public:
|
||||
explicit RdaPrfData();
|
||||
~RdaPrfData();
|
||||
|
||||
RdaPrfData(const RdaPrfData&) = delete;
|
||||
RdaPrfData& operator=(const RdaPrfData&) = delete;
|
||||
|
||||
RdaPrfData(RdaPrfData&&) noexcept;
|
||||
RdaPrfData& operator=(RdaPrfData&&) noexcept;
|
||||
|
||||
bool Parse(std::istream& is) override;
|
||||
|
||||
static std::shared_ptr<RdaPrfData> Create(Level2MessageHeader&& header,
|
||||
std::istream& is);
|
||||
|
||||
private:
|
||||
class Impl;
|
||||
std::unique_ptr<Impl> p;
|
||||
};
|
||||
|
||||
} // namespace scwx::wsr88d::rda
|
||||
Loading…
Add table
Add a link
Reference in a new issue