Changed types from fixed width types in stdint to language primitive types guaranteed to be at least as big.

This commit is contained in:
Jason Watkins
2015-04-16 10:13:18 -07:00
parent 4fdc6939c8
commit 1a3f658774
8 changed files with 72 additions and 74 deletions

View File

@@ -251,7 +251,7 @@ namespace XPC
}
}
double DataManager::GetDouble(DREF dref, std::uint8_t aircraft)
double DataManager::GetDouble(DREF dref, char aircraft)
{
const XPLMDataRef& xdref = aircraft == 0 ? drefs[dref] : mdrefs[aircraft][dref];
double value = XPLMGetDatad(xdref);
@@ -261,7 +261,7 @@ namespace XPC
return value;
}
float DataManager::GetFloat(DREF dref, std::uint8_t aircraft)
float DataManager::GetFloat(DREF dref, char aircraft)
{
const XPLMDataRef& xdref = aircraft == 0 ? drefs[dref] : mdrefs[aircraft][dref];
float value = XPLMGetDataf(xdref);
@@ -271,7 +271,7 @@ namespace XPC
return value;
}
int DataManager::GetInt(DREF dref, std::uint8_t aircraft)
int DataManager::GetInt(DREF dref, char aircraft)
{
const XPLMDataRef& xdref = aircraft == 0 ? drefs[dref] : mdrefs[aircraft][dref];
int value = XPLMGetDatai(xdref);
@@ -281,7 +281,7 @@ namespace XPC
return value;
}
int DataManager::GetFloatArray(DREF dref, float values[], int size, std::uint8_t aircraft)
int DataManager::GetFloatArray(DREF dref, float values[], int size, char aircraft)
{
const XPLMDataRef& xdref = aircraft == 0 ? drefs[dref] : mdrefs[aircraft][dref];
int resultSize = XPLMGetDatavf(xdref, values, 0, size);
@@ -291,7 +291,7 @@ namespace XPC
return resultSize;
}
int DataManager::GetIntArray(DREF dref, int values[], int size, std::uint8_t aircraft)
int DataManager::GetIntArray(DREF dref, int values[], int size, char aircraft)
{
const XPLMDataRef& xdref = aircraft == 0 ? drefs[dref] : mdrefs[aircraft][dref];
int resultSize = XPLMGetDatavi(xdref, values, 0, size);
@@ -301,7 +301,7 @@ namespace XPC
return resultSize;
}
void DataManager::Set(DREF dref, double value, std::uint8_t aircraft)
void DataManager::Set(DREF dref, double value, char aircraft)
{
const XPLMDataRef& xdref = aircraft == 0 ? drefs[dref] : mdrefs[aircraft][dref];
#if LOG_VERBOSITY > 4
@@ -310,7 +310,7 @@ namespace XPC
XPLMSetDatad(xdref, value);
}
void DataManager::Set(DREF dref, float value, std::uint8_t aircraft)
void DataManager::Set(DREF dref, float value, char aircraft)
{
const XPLMDataRef& xdref = aircraft == 0 ? drefs[dref] : mdrefs[aircraft][dref];
#if LOG_VERBOSITY > 4
@@ -319,7 +319,7 @@ namespace XPC
XPLMSetDataf(xdref, value);
}
void DataManager::Set(DREF dref, int value, std::uint8_t aircraft)
void DataManager::Set(DREF dref, int value, char aircraft)
{
const XPLMDataRef& xdref = aircraft == 0 ? drefs[dref] : mdrefs[aircraft][dref];
#if LOG_VERBOSITY > 4
@@ -328,7 +328,7 @@ namespace XPC
XPLMSetDatai(xdref, value);
}
void DataManager::Set(DREF dref, float values[], int size, std::uint8_t aircraft)
void DataManager::Set(DREF dref, float values[], int size, char aircraft)
{
const XPLMDataRef& xdref = aircraft == 0 ? drefs[dref] : mdrefs[aircraft][dref];
#if LOG_VERBOSITY > 4
@@ -339,7 +339,7 @@ namespace XPC
XPLMSetDatavf(xdref, values, 0, drefSize);
}
void DataManager::Set(DREF dref, int values[], int size, std::uint8_t aircraft)
void DataManager::Set(DREF dref, int values[], int size, char aircraft)
{
const XPLMDataRef& xdref = aircraft == 0 ? drefs[dref] : mdrefs[aircraft][dref];
#if LOG_VERBOSITY > 4
@@ -417,7 +417,7 @@ namespace XPC
}
}
void DataManager::SetGear(float gear, bool immediate, std::uint8_t aircraft)
void DataManager::SetGear(float gear, bool immediate, char aircraft)
{
#if LOG_VERBOSITY > 3
Log::FormatLine("[DMAN] Setting gear (value:%f, immediate:%i) for aircraft %i", gear, immediate, aircraft);
@@ -453,7 +453,7 @@ namespace XPC
}
}
void DataManager::SetPosition(float pos[3], std::uint8_t aircraft)
void DataManager::SetPosition(float pos[3], char aircraft)
{
#if LOG_VERBOSITY > 3
Log::FormatLine("[DMAN] Setting position (%f, %f, %f) for aircraft %i", pos[0], pos[1], pos[2], aircraft);
@@ -488,7 +488,7 @@ namespace XPC
}
}
void DataManager::SetOrientation(float orient[3], std::uint8_t aircraft)
void DataManager::SetOrientation(float orient[3], char aircraft)
{
#if LOG_VERBOSITY > 3
Log::FormatLine("[DMAN] Setting orientation (%f, %f, %f) for aircraft %i",

View File

@@ -3,7 +3,6 @@
#ifndef XPC_DATAMANAGER_H
#define XPC_DATAMANAGER_H
#include <cstdint>
#include <string>
namespace XPC
@@ -189,7 +188,7 @@ namespace XPC
/// method, most drefs are not valid for multiplayer aircraft. All drefs
/// that are not prefixed with 'MP' are valid for the player aircraft.
/// 'MP' drefs should be called with aircraft 0.
static double GetDouble(DREF dref, std::uint8_t aircraft = 0);
static double GetDouble(DREF dref, char aircraft = 0);
/// Gets the value of a float dataref.
///
@@ -208,7 +207,7 @@ namespace XPC
/// method, most drefs are not valid for multiplayer aircraft. All drefs
/// that are not prefixed with 'MP' are valid for the player aircraft.
/// 'MP' drefs should be called with aircraft 0.
static float GetFloat(DREF dref, std::uint8_t aircraft = 0);
static float GetFloat(DREF dref, char aircraft = 0);
/// Gets the value of an integer dataref.
///
@@ -227,7 +226,7 @@ namespace XPC
/// method, most drefs are not valid for multiplayer aircraft. All drefs
/// that are not prefixed with 'MP' are valid for the player aircraft.
/// 'MP' drefs should be called with aircraft 0.
static int GetInt(DREF dref, std::uint8_t aircraft = 0);
static int GetInt(DREF dref, char aircraft = 0);
/// Gets the value of a float array dataref.
///
@@ -248,7 +247,7 @@ namespace XPC
/// method, most drefs are not valid for multiplayer aircraft. All drefs
/// that are not prefixed with 'MP' are valid for the player aircraft.
/// 'MP' drefs should be called with aircraft 0.
static int GetFloatArray(DREF dref, float values[], int size, std::uint8_t aircraft = 0);
static int GetFloatArray(DREF dref, float values[], int size, char aircraft = 0);
/// Gets the value of an int array dataref.
@@ -270,7 +269,7 @@ namespace XPC
/// method, most drefs are not valid for multiplayer aircraft. All drefs
/// that are not prefixed with 'MP' are valid for the player aircraft.
/// 'MP' drefs should be called with aircraft 0.
static int GetIntArray(DREF dref, int values[], int size, std::uint8_t aircraft = 0);
static int GetIntArray(DREF dref, int values[], int size, char aircraft = 0);
/// Sets the value of a dataref
///
@@ -307,7 +306,7 @@ namespace XPC
/// method, most drefs are not valid for multiplayer aircraft. All drefs
/// that are not prefixed with 'MP' are valid for the player aircraft.
/// 'MP' drefs should be called with aircraft 0.
static void Set(DREF dref, double value, std::uint8_t aircraft = 0);
static void Set(DREF dref, double value, char aircraft = 0);
/// Sets the value of a float dataref.
///
@@ -324,7 +323,7 @@ namespace XPC
/// method, most drefs are not valid for multiplayer aircraft. All drefs
/// that are not prefixed with 'MP' are valid for the player aircraft.
/// 'MP' drefs should be called with aircraft 0.
static void Set(DREF dref, float value, std::uint8_t aircraft = 0);
static void Set(DREF dref, float value, char aircraft = 0);
/// Sets the value of an integer dataref.
///
@@ -341,7 +340,7 @@ namespace XPC
/// method, most drefs are not valid for multiplayer aircraft. All drefs
/// that are not prefixed with 'MP' are valid for the player aircraft.
/// 'MP' drefs should be called with aircraft 0.
static void Set(DREF dref, int value, std::uint8_t aircraft = 0);
static void Set(DREF dref, int value, char aircraft = 0);
/// Sets the value of a float array dataref.
///
@@ -359,7 +358,7 @@ namespace XPC
/// method, most drefs are not valid for multiplayer aircraft. All drefs
/// that are not prefixed with 'MP' are valid for the player aircraft.
/// 'MP' drefs should be called with aircraft 0.
static void Set(DREF dref, float values[], int size, std::uint8_t aircraft = 0);
static void Set(DREF dref, float values[], int size, char aircraft = 0);
/// Sets the value of an integer array dataref.
///
@@ -377,7 +376,7 @@ namespace XPC
/// method, most drefs are not valid for multiplayer aircraft. All drefs
/// that are not prefixed with 'MP' are valid for the player aircraft.
/// 'MP' drefs should be called with aircraft 0.
static void Set(DREF dref, int values[], int size, std::uint8_t aircraft = 0);
static void Set(DREF dref, int values[], int size, char aircraft = 0);
/// Sets the landing gear for the specified airplane.
///
@@ -385,21 +384,21 @@ namespace XPC
/// \param immediate Whether the gear should be forced to the specified position.
/// If immediate is false, only the gear handle dref will be set.
/// \param aircraft The aircraft to set the landing gear status on.
static void SetGear(float gear, bool immediate, std::uint8_t aircraft = 0);
static void SetGear(float gear, bool immediate, char aircraft = 0);
/// Sets the position of the specified aircraft on the Earth.
///
/// \param pos An array containing latitude, longitude and altitude in
/// fractional degrees and meters above sea level.
/// \param aircraft The aircraft to set the position of.
static void SetPosition(float pos[3], std::uint8_t aircraft = 0);
static void SetPosition(float pos[3], char aircraft = 0);
/// Sets the orientation of the specified aircraft.
///
/// \param orient An array containing the pitch, roll, and yaw orientations
/// to set, all in fractional degrees.
/// \param aircraft The aircraft to set the orientation of.
static void SetOrientation(float orient[3], std::uint8_t aircraft = 0);
static void SetOrientation(float orient[3], char aircraft = 0);
/// Sets flaps on the the player aircraft.
///

View File

@@ -20,13 +20,13 @@ namespace XPC
return m;
}
std::uint32_t Message::GetMagicNumber()
unsigned long Message::GetMagicNumber()
{
if (size < 4)
{
return 0;
}
return *((std::uint32_t*)buffer);
return *((unsigned long*)buffer);
}
std::string Message::GetHead()
@@ -38,7 +38,7 @@ namespace XPC
return std::string((char*)buffer, 4);
}
const std::uint8_t* Message::GetBuffer()
const unsigned char* Message::GetBuffer()
{
if (size == 0)
{

View File

@@ -27,13 +27,13 @@ namespace XPC
static Message ReadFrom(UDPSocket& sock);
/// Gets the message header in binary form.
std::uint32_t GetMagicNumber();
unsigned long GetMagicNumber();
/// Gets the message header.
std::string GetHead();
/// Gets the buffer underlying the message.
const std::uint8_t* GetBuffer();
const unsigned char* GetBuffer();
/// Gets the size of the message in bytes.
std::size_t GetSize();
@@ -48,7 +48,7 @@ namespace XPC
Message();
static const std::size_t bufferSize = 4096;
std::uint8_t buffer[bufferSize];
unsigned char buffer[bufferSize];
std::size_t size;
struct sockaddr source;
};

View File

@@ -78,7 +78,7 @@ namespace XPC
return std::string(ip);
}
static std::uint16_t getPort(sockaddr* sa)
static unsigned short getPort(sockaddr* sa)
{
switch (sa->sa_family)
{
@@ -110,7 +110,7 @@ namespace XPC
// Set current connection
sockaddr sourceaddr = msg.GetSource();
std::string ip = getIP(&sourceaddr);
std::uint16_t port = getPort(&sourceaddr);
unsigned short port = getPort(&sourceaddr);
connectionKey = ip + ":" + std::to_string(port);
#if LOG_VERBOSITY > 4
Log::FormatLine("[MSGH] Handling message from %s", connectionKey.c_str());
@@ -159,14 +159,14 @@ namespace XPC
void MessageHandlers::HandleConn(Message& msg)
{
const std::uint8_t* buffer = msg.GetBuffer();
const unsigned char* buffer = msg.GetBuffer();
// Store new port
connection.dstPort = *((std::uint16_t*)(buffer + 5));
connection.dstPort = *((unsigned short*)(buffer + 5));
connections[connectionKey] = connection;
// Create response
std::uint8_t response[6] = "CONF";
unsigned char response[6] = "CONF";
response[5] = connection.id;
// Update log
@@ -186,7 +186,7 @@ namespace XPC
Log::FormatLine("[CTRL] Message Received (Conn %i)", connection.id);
#endif
const std::uint8_t* buffer = msg.GetBuffer();
const unsigned char* buffer = msg.GetBuffer();
std::size_t size = msg.GetSize();
//Legacy packets that don't specify an aircraft number should be 26 bytes long.
//Packets specifying an A/C num should be 27 bytes.
@@ -203,9 +203,9 @@ namespace XPC
float roll = *((float*)(buffer + 9));
float yaw = *((float*)(buffer + 13));
float thr = *((float*)(buffer + 17));
std::int8_t gear = buffer[21];
char gear = buffer[21];
float flaps = *((float*)(buffer + 22));
std::uint8_t aircraft = 0;
unsigned char aircraft = 0;
if (size == 27)
{
aircraft = buffer[26];
@@ -239,7 +239,7 @@ namespace XPC
void MessageHandlers::HandleData(Message& msg)
{
// Parse data
const std::uint8_t* buffer = msg.GetBuffer();
const unsigned char* buffer = msg.GetBuffer();
std::size_t size = msg.GetSize();
std::size_t numCols = (size - 5) / 36;
if (numCols > 0)
@@ -275,7 +275,7 @@ namespace XPC
float savedHPath = -998;
for (int i = 0; i < numCols; ++i)
{
std::uint8_t dataRef = (std::uint8_t)values[i][0];
unsigned char dataRef = (unsigned char)values[i][0];
if (dataRef > 134)
{
Log::FormatLine("[DATA] ERROR: DataRef # must be between 0 - 134 (Received: %hi)", (int)dataRef);
@@ -400,11 +400,11 @@ namespace XPC
void MessageHandlers::HandleDref(Message& msg)
{
const std::uint8_t* buffer = msg.GetBuffer();
std::uint8_t len = buffer[5];
const unsigned char* buffer = msg.GetBuffer();
unsigned char len = buffer[5];
std::string dref = std::string((char*)buffer + 6, len);
std::uint8_t valueCount = buffer[6 + len];
unsigned char valueCount = buffer[6 + len];
float values[40];
memcpy(values, buffer + len + 7, valueCount * sizeof(float));
@@ -417,8 +417,8 @@ namespace XPC
void MessageHandlers::HandleGetD(Message& msg)
{
const std::uint8_t* buffer = msg.GetBuffer();
std::uint8_t drefCount = buffer[5];
const unsigned char* buffer = msg.GetBuffer();
unsigned char drefCount = buffer[5];
if (drefCount == 0) // Use last request
{
#if LOG_VERBOSITY > 0
@@ -442,7 +442,7 @@ namespace XPC
std::size_t ptr = 6;
for (int i = 0; i < drefCount; ++i)
{
std::uint8_t len = buffer[ptr];
unsigned char len = buffer[ptr];
connection.getdRequest[i] = std::string((char*)buffer + 1 + ptr, len);
ptr += 1 + len;
}
@@ -450,7 +450,7 @@ namespace XPC
connections[connectionKey] = connection;
}
std::uint8_t response[4096] = "RESP";
unsigned char response[4096] = "RESP";
response[5] = drefCount;
std::size_t cur = 6;
for (int i = 0; i < drefCount; ++i)
@@ -472,7 +472,7 @@ namespace XPC
Log::FormatLine("[POSI] Message Received (Conn %i)", connection.id);
#endif
const std::uint8_t* buffer = msg.GetBuffer();
const unsigned char* buffer = msg.GetBuffer();
const std::size_t size = msg.GetSize();
if (size < 34)
{
@@ -482,7 +482,7 @@ namespace XPC
return;
}
std::int8_t aircraft = buffer[5];
char aircraft = buffer[5];
float gear = *((float*)(buffer + 30));
float pos[3];
float orient[3];
@@ -516,7 +516,7 @@ namespace XPC
Log::FormatLine("[SIMU] Message Received (Conn %i)", connection.id);
#endif
const std::uint8_t* buffer = msg.GetBuffer();
const unsigned char* buffer = msg.GetBuffer();
// Set DREF
int value = buffer[5];
@@ -542,7 +542,7 @@ namespace XPC
#endif
std::size_t len = msg.GetSize();
const std::uint8_t* buffer = msg.GetBuffer();
const unsigned char* buffer = msg.GetBuffer();
char text[256] = { 0 };
if (len < 14)
@@ -580,11 +580,11 @@ namespace XPC
#endif
// Parse data
const std::uint8_t* buffer = msg.GetBuffer();
std::uint8_t op = buffer[5];
std::uint8_t count = buffer[6];
const unsigned char* buffer = msg.GetBuffer();
unsigned char op = buffer[5];
unsigned char count = buffer[6];
Waypoint points[255];
const std::uint8_t* ptr = buffer + 7;
const unsigned char* ptr = buffer + 7;
for (size_t i = 0; i < count; ++i)
{
points[i].latitude = *((float*)ptr);
@@ -621,7 +621,7 @@ namespace XPC
#if LOG_VERBOSITY > 1
Log::WriteLine("[MSGH] Sending raw data to X-Plane");
#endif
sock->SendTo((std::uint8_t*)msg.GetBuffer(), msg.GetSize(), "127.0.0.1", 49000);
sock->SendTo((unsigned char*)msg.GetBuffer(), msg.GetSize(), "127.0.0.1", 49000);
}
void MessageHandlers::HandleUnknown(Message& msg)

View File

@@ -52,11 +52,11 @@ namespace XPC
typedef struct
{
std::uint8_t id;
unsigned char id;
std::string ip;
std::uint16_t dstPort;
std::uint16_t srcPort;
std::uint8_t getdCount;
unsigned short dstPort;
unsigned short srcPort;
unsigned char getdCount;
std::string getdRequest[255];
} ConnectionInfo;

View File

@@ -5,7 +5,7 @@
namespace XPC
{
UDPSocket::UDPSocket(std::uint16_t recvPort)
UDPSocket::UDPSocket(unsigned short recvPort)
{
#if LOG_VERBOSITY > 1
Log::FormatLine("[SOCK] Opening socket (port:%d)", recvPort);
@@ -86,7 +86,7 @@ namespace XPC
#endif
}
int UDPSocket::Read(std::uint8_t* dst, int maxLen, sockaddr* recvAddr)
int UDPSocket::Read(unsigned char* dst, int maxLen, sockaddr* recvAddr)
{
socklen_t recvaddrlen = sizeof(*recvAddr);
int status = 0;
@@ -132,7 +132,7 @@ namespace XPC
}
// TODO: Add IPV6 support
void UDPSocket::SendTo(std::uint8_t* buffer, std::size_t len, std::string remoteHost, std::uint16_t remotePort)
void UDPSocket::SendTo(unsigned char* buffer, std::size_t len, std::string remoteHost, unsigned short remotePort)
{
#if LOG_VERBOSITY > 4
Log::FormatLine("[SOCK] Sending message to %s:%u (length=%u)", remoteHost.c_str(), remotePort, len);
@@ -141,12 +141,12 @@ namespace XPC
{
remoteHost = "127.0.0.1";
}
std::uint32_t ip;
unsigned long ip;
inet_pton(AF_INET, remoteHost.c_str(), &ip);
SendTo(buffer, len, ip, remotePort);
}
void UDPSocket::SendTo(std::uint8_t* buffer, std::size_t len, std::uint32_t remoteIP, std::uint16_t remotePort)
void UDPSocket::SendTo(unsigned char* buffer, std::size_t len, unsigned long remoteIP, unsigned short remotePort)
{
struct sockaddr_in remoteAddr;
remoteAddr.sin_family = AF_INET;
@@ -160,7 +160,7 @@ namespace XPC
#endif
setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on));
buffer[4] = (std::uint8_t)len;
buffer[4] = (unsigned char)len;
if (sendto(sock, (char*)buffer, (int)len, 0, (const struct sockaddr *) &remoteAddr, sizeof(remoteAddr)) < 0)
{
#if LOG_VERBOSITY > 0

View File

@@ -3,7 +3,6 @@
#ifndef XPC_SOCKET_H
#define XPC_SOCKET_H
#include <cstdint>
#include <cstdlib>
#include <string>
#ifdef _WIN32
@@ -35,7 +34,7 @@ namespace XPC
/// specified receive port.
///
/// \param recvPort The port on which this instance will receive data.
UDPSocket(std::uint16_t recvPort);
UDPSocket(unsigned short recvPort);
/// Closes the underlying socket for this instance.
~UDPSocket();
@@ -49,7 +48,7 @@ namespace XPC
/// of the remote host.
/// \returns The number of bytes read, or a negative number if
/// an error occurs.
int Read(std::uint8_t* buffer, int size, sockaddr* remoteAddr);
int Read(unsigned char* buffer, int size, sockaddr* remoteAddr);
/// Sends data to the specified remote endpoint.
///
@@ -57,7 +56,7 @@ namespace XPC
/// \param len The number of bytes to send.
/// \param remoteHost The hostname of the destination client.
/// \param remotePort The port of the destination client.
void SendTo(std::uint8_t* buffer, std::size_t len, std::string remoteHost, std::uint16_t remotePort);
void SendTo(unsigned char* buffer, std::size_t len, std::string remoteHost, unsigned short remotePort);
/// Sends data to the specified remote endpoint.
///
@@ -65,7 +64,7 @@ namespace XPC
/// \param len The number of bytes to send.
/// \param remoteHost The hostname of the destination client.
/// \param remotePort The port of the destination client.
void UDPSocket::SendTo(std::uint8_t* buffer, std::size_t len, std::uint32_t remoteIP, std::uint16_t remotePort);
void UDPSocket::SendTo(unsigned char* buffer, std::size_t len, unsigned long remoteIP, unsigned short remotePort);
private:
#ifdef _WIN32