HandmadeHero/project/dependencies/JoyShockLibrary/tools.cpp
Ed_ d7399149bc Day 6 Bonus: Dualsense Edge support!
I had to temporarily make my own binaries for the JoyShockLibrary but it works!
2023-09-09 20:14:40 -04:00

110 lines
1.8 KiB
C++

#pragma once
#include <chrono>
#include <thread>
#include <map>
#include <string>
#include <iostream>
#include <fstream>
#include <sstream>
#include <cstring>
//#include <curl/curl.h>
#pragma warning(disable: 4996)
typedef uint8_t u8;
typedef uint16_t u16;
typedef uint32_t u32;
typedef uint64_t u64;
typedef int8_t s8;
typedef int16_t s16;
typedef int32_t s32;
typedef int64_t s64;
int16_t unsignedToSigned16(uint16_t n) {
uint16_t A = n;
uint16_t B = 0xFFFF - A;
if (A < B) {
return (int16_t)A;
} else {
return (int16_t)(-1 * B);
}
}
int16_t uint16_to_int16(uint16_t a) {
int16_t b;
char* aPointer = (char*)&a, *bPointer = (char*)&b;
memcpy(bPointer, aPointer, sizeof(a));
return b;
}
uint16_t combine_uint8_t(uint8_t a, uint8_t b) {
uint16_t c = ((uint16_t)a << 8) | b;
return c;
}
int16_t combine_gyro_data(uint8_t a, uint8_t b) {
uint16_t c = combine_uint8_t(a, b);
int16_t d = uint16_to_int16(c);
return d;
}
float clamp(float a, float min, float max) {
if (a < min) {
return min;
} else if (a > max) {
return max;
} else {
return a;
}
}
uint16_t clamp(uint16_t a, uint16_t min, uint16_t max) {
if (a < min) {
return min;
}
else if (a > max) {
return max;
}
else {
return a;
}
}
unsigned createMask(unsigned a, unsigned b) {
unsigned r = 0;
for (unsigned i = a; i <= b; i++)
r |= 1 << i;
return r;
}
void hex_dump(unsigned char *buf, int len) {
for (int i = 0; i < len; i++) {
printf("%02x ", buf[i]);
}
printf("\n");
}
void hex_dump2(unsigned char *buf, int len) {
for (int i = 0; i < len; i++) {
printf("%02x ", buf[i]);
}
}
void hex_dump_0(unsigned char *buf, int len) {
for (int i = 0; i < len; i++) {
if (buf[i] != 0) {
printf("%02x ", buf[i]);
}
}
}
void int_dump(unsigned char *buf, int len) {
for (int i = 0; i < len; i++) {
printf("%i ", buf[i]);
}
printf("\n");
}