Adding prefixes to enums in C bindings

This commit is contained in:
Rodrigo Alfonso
2024-08-25 20:14:42 -03:00
parent d84c089a1a
commit 52dc689dab
7 changed files with 190 additions and 68 deletions

View File

@@ -17,10 +17,10 @@ typedef void* C_LinkCableHandle;
#define C_LINK_CABLE_NO_DATA 0x0
typedef enum {
C_BAUD_RATE_0, // 9600 bps
C_BAUD_RATE_1, // 38400 bps
C_BAUD_RATE_2, // 57600 bps
C_BAUD_RATE_3 // 115200 bps
C_LINK_CABLE_BAUD_RATE_0, // 9600 bps
C_LINK_CABLE_BAUD_RATE_1, // 38400 bps
C_LINK_CABLE_BAUD_RATE_2, // 57600 bps
C_LINK_CABLE_BAUD_RATE_3 // 115200 bps
} C_LinkCable_BaudRate;
C_LinkCableHandle C_LinkCable_create(C_LinkCable_BaudRate baudRate,

View File

@@ -39,7 +39,7 @@ bool C_LinkMobile_callISP(C_LinkMobileHandle handle,
bool C_LinkMobile_dnsQuery(C_LinkMobileHandle handle,
const char* domainName,
C_LinkMobileDNSQuery* result) {
C_LinkMobile_DNSQuery* result) {
return static_cast<LinkMobile*>(handle)->dnsQuery(
domainName, reinterpret_cast<LinkMobile::DNSQuery*>(result));
}
@@ -47,25 +47,25 @@ bool C_LinkMobile_dnsQuery(C_LinkMobileHandle handle,
bool C_LinkMobile_openConnection(C_LinkMobileHandle handle,
const u8* ip,
u16 port,
C_LinkMobileConnectionType type,
C_LinkMobileOpenConn* result) {
C_LinkMobile_ConnectionType connectionType,
C_LinkMobile_OpenConn* result) {
return static_cast<LinkMobile*>(handle)->openConnection(
ip, port, static_cast<LinkMobile::ConnectionType>(type),
ip, port, static_cast<LinkMobile::ConnectionType>(connectionType),
reinterpret_cast<LinkMobile::OpenConn*>(result));
}
bool C_LinkMobile_closeConnection(C_LinkMobileHandle handle,
u8 connectionId,
C_LinkMobileConnectionType type,
C_LinkMobileCloseConn* result) {
C_LinkMobile_ConnectionType connectionType,
C_LinkMobile_CloseConn* result) {
return static_cast<LinkMobile*>(handle)->closeConnection(
connectionId, static_cast<LinkMobile::ConnectionType>(type),
connectionId, static_cast<LinkMobile::ConnectionType>(connectionType),
reinterpret_cast<LinkMobile::CloseConn*>(result));
}
bool C_LinkMobile_transfer(C_LinkMobileHandle handle,
C_LinkMobileDataTransfer dataToSend,
C_LinkMobileDataTransfer* result,
C_LinkMobile_DataTransfer dataToSend,
C_LinkMobile_DataTransfer* result,
u8 connectionId) {
return static_cast<LinkMobile*>(handle)->transfer(
*reinterpret_cast<LinkMobile::DataTransfer*>(&dataToSend),
@@ -81,6 +81,13 @@ bool C_LinkMobile_hangUp(C_LinkMobileHandle handle) {
return static_cast<LinkMobile*>(handle)->hangUp();
}
bool C_LinkMobile_readConfiguration(
C_LinkMobileHandle handle,
C_LinkMobile_ConfigurationData* configurationData) {
return static_cast<LinkMobile*>(handle)->readConfiguration(
*reinterpret_cast<LinkMobile::ConfigurationData*>(configurationData));
}
C_LinkMobile_State C_LinkMobile_getState(C_LinkMobileHandle handle) {
return static_cast<C_LinkMobile_State>(
static_cast<LinkMobile*>(handle)->getState());
@@ -91,6 +98,42 @@ C_LinkMobile_Role C_LinkMobile_getRole(C_LinkMobileHandle handle) {
static_cast<LinkMobile*>(handle)->getRole());
}
int C_LinkMobile_isConfigurationValid(C_LinkMobileHandle handle) {
return static_cast<LinkMobile*>(handle)->isConfigurationValid();
}
bool C_LinkMobile_isConnectedP2P(C_LinkMobileHandle handle) {
return static_cast<LinkMobile*>(handle)->isConnectedP2P();
}
bool C_LinkMobile_isConnectedPPP(C_LinkMobileHandle handle) {
return static_cast<LinkMobile*>(handle)->isConnectedPPP();
}
bool C_LinkMobile_isSessionActive(C_LinkMobileHandle handle) {
return static_cast<LinkMobile*>(handle)->isSessionActive();
}
bool C_LinkMobile_canShutdown(C_LinkMobileHandle handle) {
return static_cast<LinkMobile*>(handle)->canShutdown();
}
C_LinkMobile_DataSize C_LinkMobile_getDataSize(C_LinkMobileHandle handle) {
return static_cast<C_LinkMobile_DataSize>(
static_cast<LinkMobile*>(handle)->getDataSize());
}
C_LinkMobile_Error C_LinkMobile_getError(C_LinkMobileHandle handle) {
LinkMobile::Error error = static_cast<LinkMobile*>(handle)->getError();
return {static_cast<C_LinkMobile_ErrorType>(error.type),
static_cast<C_LinkMobile_State>(error.state),
error.cmdIsSending,
error.cmdId,
static_cast<C_LinkMobile_CommandResult>(error.cmdResult),
error.cmdErrorCode,
error.reqType};
}
void C_LinkMobile_onVBlank(C_LinkMobileHandle handle) {
static_cast<LinkMobile*>(handle)->_onVBlank();
}

View File

@@ -42,40 +42,98 @@ typedef enum {
C_LINK_MOBILE_STATE_SHUTDOWN
} C_LinkMobile_State;
typedef enum {
enum C_LinkMobile_Role {
C_LINK_MOBILE_ROLE_NO_P2P_CONNECTION,
C_LINK_MOBILE_ROLE_CALLER,
C_LINK_MOBILE_ROLE_RECEIVER
} C_LinkMobile_Role;
};
typedef enum {
enum C_LinkMobile_ConnectionType {
C_LINK_MOBILE_CONNECTION_TYPE_TCP,
C_LINK_MOBILE_CONNECTION_TYPE_UDP
} C_LinkMobileConnectionType;
};
typedef enum {
C_LINK_MOBILE_ERROR_TYPE_NONE,
C_LINK_MOBILE_ERROR_TYPE_ADAPTER_NOT_CONNECTED,
C_LINK_MOBILE_ERROR_TYPE_PPP_LOGIN_FAILED,
C_LINK_MOBILE_ERROR_TYPE_COMMAND_FAILED,
C_LINK_MOBILE_ERROR_TYPE_WEIRD_RESPONSE,
C_LINK_MOBILE_ERROR_TYPE_TIMEOUT,
C_LINK_MOBILE_ERROR_TYPE_WTF
} C_LinkMobile_ErrorType;
typedef enum {
C_LINK_MOBILE_COMMAND_RESULT_PENDING,
C_LINK_MOBILE_COMMAND_RESULT_SUCCESS,
C_LINK_MOBILE_COMMAND_RESULT_INVALID_DEVICE_ID,
C_LINK_MOBILE_COMMAND_RESULT_INVALID_COMMAND_ACK,
C_LINK_MOBILE_COMMAND_RESULT_INVALID_MAGIC_BYTES,
C_LINK_MOBILE_COMMAND_RESULT_WEIRD_DATA_SIZE,
C_LINK_MOBILE_COMMAND_RESULT_WRONG_CHECKSUM,
C_LINK_MOBILE_COMMAND_RESULT_ERROR_CODE,
C_LINK_MOBILE_COMMAND_RESULT_WEIRD_ERROR_CODE
} C_LinkMobile_CommandResult;
typedef struct {
volatile bool completed;
bool success;
C_LinkMobile_ErrorType type;
C_LinkMobile_State state;
bool cmdIsSending;
u8 cmdId;
C_LinkMobile_CommandResult cmdResult;
u32 cmdErrorCode;
int reqType;
} C_LinkMobile_Error;
typedef struct {
u32 connectionId;
bool completed;
u32 size;
u8 data[254];
u8 size;
} C_LinkMobileDataTransfer;
} C_LinkMobile_DataTransfer;
typedef struct {
volatile bool completed;
u32 connectionId;
bool success;
} C_LinkMobile_OpenConn;
typedef struct {
u32 connectionId;
bool success;
} C_LinkMobile_CloseConn;
typedef struct {
u8 ipv4[4];
} C_LinkMobileDNSQuery;
bool success;
bool completed;
} C_LinkMobile_DNSQuery;
typedef struct {
volatile bool completed;
bool success;
u8 connectionId;
} C_LinkMobileOpenConn;
char magic[2];
u8 registrationState;
u8 _unused1_;
u8 primaryDNS[4];
u8 secondaryDNS[4];
char loginId[10];
u8 _unused2_[22];
char email[24];
u8 _unused3_[6];
char smtpServer[20];
char popServer[19];
u8 _unused4_[5];
u8 configurationSlot1[24];
u8 configurationSlot2[24];
u8 configurationSlot3[24];
u8 checksumHigh;
u8 checksumLow;
typedef struct {
volatile bool completed;
bool success;
} C_LinkMobileCloseConn;
char _ispNumber1[16 + 1];
} C_LinkMobile_ConfigurationData;
typedef enum {
C_LINK_MOBILE_SIZE_32BIT,
C_LINK_MOBILE_SIZE_8BIT
} C_LinkMobile_DataSize;
C_LinkMobileHandle C_LinkMobile_create(u32 timeout, u8 timerId);
void C_LinkMobile_destroy(C_LinkMobileHandle handle);
@@ -92,26 +150,37 @@ bool C_LinkMobile_callISP(C_LinkMobileHandle handle,
bool C_LinkMobile_dnsQuery(C_LinkMobileHandle handle,
const char* domainName,
C_LinkMobileDNSQuery* result);
C_LinkMobile_DNSQuery* result);
bool C_LinkMobile_openConnection(C_LinkMobileHandle handle,
const u8* ip,
u16 port,
C_LinkMobileConnectionType type,
C_LinkMobileOpenConn* result);
C_LinkMobile_ConnectionType connectionType,
C_LinkMobile_OpenConn* result);
bool C_LinkMobile_closeConnection(C_LinkMobileHandle handle,
u8 connectionId,
C_LinkMobileConnectionType type,
C_LinkMobileCloseConn* result);
C_LinkMobile_ConnectionType connectionType,
C_LinkMobile_CloseConn* result);
bool C_LinkMobile_transfer(C_LinkMobileHandle handle,
C_LinkMobileDataTransfer dataToSend,
C_LinkMobileDataTransfer* result,
C_LinkMobile_DataTransfer dataToSend,
C_LinkMobile_DataTransfer* result,
u8 connectionId);
bool C_LinkMobile_waitFor(C_LinkMobileHandle handle, void* asyncRequest);
bool C_LinkMobile_hangUp(C_LinkMobileHandle handle);
bool C_LinkMobile_readConfiguration(
C_LinkMobileHandle handle,
C_LinkMobile_ConfigurationData* configurationData);
C_LinkMobile_State C_LinkMobile_getState(C_LinkMobileHandle handle);
C_LinkMobile_Role C_LinkMobile_getRole(C_LinkMobileHandle handle);
int C_LinkMobile_isConfigurationValid(C_LinkMobileHandle handle);
bool C_LinkMobile_isConnectedP2P(C_LinkMobileHandle handle);
bool C_LinkMobile_isConnectedPPP(C_LinkMobileHandle handle);
bool C_LinkMobile_isSessionActive(C_LinkMobileHandle handle);
bool C_LinkMobile_canShutdown(C_LinkMobileHandle handle);
C_LinkMobile_DataSize C_LinkMobile_getDataSize(C_LinkMobileHandle handle);
C_LinkMobile_Error C_LinkMobile_getError(C_LinkMobileHandle handle);
void C_LinkMobile_onVBlank(C_LinkMobileHandle handle);
void C_LinkMobile_onSerial(C_LinkMobileHandle handle);

View File

@@ -13,16 +13,16 @@ typedef void* C_LinkRawCableHandle;
#define C_LINK_RAW_CABLE_DISCONNECTED 0xffff
typedef enum {
C_BAUD_RATE_0, // 9600 bps
C_BAUD_RATE_1, // 38400 bps
C_BAUD_RATE_2, // 57600 bps
C_BAUD_RATE_3 // 115200 bps
C_LINK_RAW_CABLE_BAUD_RATE_0, // 9600 bps
C_LINK_RAW_CABLE_BAUD_RATE_1, // 38400 bps
C_LINK_RAW_CABLE_BAUD_RATE_2, // 57600 bps
C_LINK_RAW_CABLE_BAUD_RATE_3 // 115200 bps
} C_LinkRawCable_BaudRate;
typedef enum {
C_ASYNC_STATE_IDLE,
C_ASYNC_STATE_WAITING,
C_ASYNC_STATE_READY
C_LINK_RAW_CABLE_ASYNC_STATE_IDLE,
C_LINK_RAW_CABLE_ASYNC_STATE_WAITING,
C_LINK_RAW_CABLE_ASYNC_STATE_READY
} C_LinkRawCable_AsyncState;
typedef struct {

View File

@@ -14,17 +14,17 @@ typedef void* C_LinkSPIHandle;
#define C_LINK_SPI_NO_DATA LINK_SPI_NO_DATA_32
typedef enum {
C_MODE_SLAVE,
C_MODE_MASTER_256KBPS,
C_MODE_MASTER_2MBPS
C_LINK_SPI_MODE_SLAVE,
C_LINK_SPI_MODE_MASTER_256KBPS,
C_LINK_SPI_MODE_MASTER_2MBPS
} C_LinkSPI_Mode;
typedef enum { C_SIZE_32BIT, C_SIZE_8BIT } C_LinkSPI_DataSize;
typedef enum { C_LINK_SPI_SIZE_32BIT, C_LINK_SPI_SIZE_8BIT } C_LinkSPI_DataSize;
typedef enum {
C_ASYNC_STATE_IDLE,
C_ASYNC_STATE_WAITING,
C_ASYNC_STATE_READY
C_LINK_SPI_ASYNC_STATE_IDLE,
C_LINK_SPI_ASYNC_STATE_WAITING,
C_LINK_SPI_ASYNC_STATE_READY
} C_LinkSPI_AsyncState;
C_LinkSPIHandle C_LinkSPI_create();

View File

@@ -10,15 +10,22 @@ extern "C" {
typedef void* C_LinkUARTHandle;
typedef enum {
C_BAUD_RATE_0, // 9600 bps
C_BAUD_RATE_1, // 38400 bps
C_BAUD_RATE_2, // 57600 bps
C_BAUD_RATE_3 // 115200 bps
C_LINK_UART_BAUD_RATE_0, // 9600 bps
C_LINK_UART_BAUD_RATE_1, // 38400 bps
C_LINK_UART_BAUD_RATE_2, // 57600 bps
C_LINK_UART_BAUD_RATE_3 // 115200 bps
} C_LinkUART_BaudRate;
typedef enum { C_SIZE_7_BITS, C_SIZE_8_BITS } C_LinkUART_DataSize;
typedef enum {
C_LINK_UART_SIZE_7_BITS,
C_LINK_UART_SIZE_8_BITS
} C_LinkUART_DataSize;
typedef enum { C_PARITY_NO, C_PARITY_EVEN, C_PARITY_ODD } C_LinkUART_Parity;
typedef enum {
C_LINK_UART_PARITY_NO,
C_LINK_UART_PARITY_EVEN,
C_LINK_UART_PARITY_ODD
} C_LinkUART_Parity;
C_LinkUARTHandle C_LinkUART_create();
void C_LinkUART_destroy(C_LinkUARTHandle handle);

View File

@@ -14,19 +14,22 @@ typedef void* C_LinkUniversalHandle;
#define C_LINK_UNIVERSAL_NO_DATA 0x0
typedef enum {
C_STATE_INITIALIZING,
C_STATE_WAITING,
C_STATE_CONNECTED
C_LINK_UNIVERSAL_STATE_INITIALIZING,
C_LINK_UNIVERSAL_STATE_WAITING,
C_LINK_UNIVERSAL_STATE_CONNECTED
} C_LinkUniversal_State;
typedef enum { C_MODE_LINK_CABLE, C_MODE_LINK_WIRELESS } C_LinkUniversal_Mode;
typedef enum {
C_LINK_UNIVERSAL_MODE_LINK_CABLE,
C_LINK_UNIVERSAL_MODE_LINK_WIRELESS
} C_LinkUniversal_Mode;
typedef enum {
C_PROTOCOL_AUTODETECT,
C_PROTOCOL_CABLE,
C_PROTOCOL_WIRELESS_AUTO,
C_PROTOCOL_WIRELESS_SERVER,
C_PROTOCOL_WIRELESS_CLIENT
C_LINK_UNIVERSAL_PROTOCOL_AUTODETECT,
C_LINK_UNIVERSAL_PROTOCOL_CABLE,
C_LINK_UNIVERSAL_PROTOCOL_WIRELESS_AUTO,
C_LINK_UNIVERSAL_PROTOCOL_WIRELESS_SERVER,
C_LINK_UNIVERSAL_PROTOCOL_WIRELESS_CLIENT
} C_LinkUniversal_Protocol;
typedef struct {