hawkeye camera support(not tested)

This commit is contained in:
meelstorm
2025-08-19 12:45:50 +02:00
parent f80b275ad8
commit 6ef6aced8d
170 changed files with 20190 additions and 72 deletions

View File

@@ -0,0 +1,51 @@
using System.Net;
using System.Net.Sockets;
namespace UdtSharp
{
public static class ConvertIPAddress
{
// TODO use BitConverter/Block.Copy in this class
public static void ToUintArray(IPAddress ipAddress, ref uint[] outAddress)
{
byte[] bytes = ipAddress.GetAddressBytes();
if (ipAddress.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
// TODO addressBytes length must be 4 in this case
outAddress[0] = (uint)((bytes[3] << 24) + (bytes[2] << 16) + (bytes[1] << 8) + bytes[0]);
return;
}
// TODO addresFamily must by InterNetworkV6
// addressBytesLenth must be 16
outAddress[3] = (uint)((bytes[15] << 24) + (bytes[14] << 16) + (bytes[13] << 8) + bytes[12]);
outAddress[2] = (uint)((bytes[11] << 24) + (bytes[10] << 16) + (bytes[9] << 8) + bytes[8]);
outAddress[1] = (uint)((bytes[7] << 24) + (bytes[6] << 16) + (bytes[5] << 8) + bytes[4]);
outAddress[0] = (uint)((bytes[3] << 24) + (bytes[2] << 16) + (bytes[1] << 8) + bytes[0]);
}
}
public static class ConvertLingerOption
{
public unsafe static LingerOption FromVoidPointer(void* option)
{
bool* pEnabled = (bool*)option;
bool bEnabled = *pEnabled;
int* pTime = (int*)(++pEnabled);
int timeSeconds = *pTime;
return new LingerOption(bEnabled, timeSeconds);
}
public unsafe static void ToVoidPointer(LingerOption lingerOption, void* option)
{
bool* pEnabled = (bool*)option;
*pEnabled = lingerOption.Enabled;
int* pTime = (int*)(++pEnabled);
*pTime = lingerOption.LingerTime;
}
}
}