From 52dc689dabce05fc55a4c3be0599f60840905f09 Mon Sep 17 00:00:00 2001 From: Rodrigo Alfonso Date: Sun, 25 Aug 2024 20:14:42 -0300 Subject: [PATCH] Adding prefixes to enums in C bindings --- lib/c_bindings/C_LinkCable.h | 8 +- lib/c_bindings/C_LinkMobile.cpp | 61 +++++++++++++--- lib/c_bindings/C_LinkMobile.h | 121 ++++++++++++++++++++++++------- lib/c_bindings/C_LinkRawCable.h | 14 ++-- lib/c_bindings/C_LinkSPI.h | 14 ++-- lib/c_bindings/C_LinkUART.h | 19 +++-- lib/c_bindings/C_LinkUniversal.h | 21 +++--- 7 files changed, 190 insertions(+), 68 deletions(-) diff --git a/lib/c_bindings/C_LinkCable.h b/lib/c_bindings/C_LinkCable.h index 1f250bd..d598a42 100644 --- a/lib/c_bindings/C_LinkCable.h +++ b/lib/c_bindings/C_LinkCable.h @@ -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, diff --git a/lib/c_bindings/C_LinkMobile.cpp b/lib/c_bindings/C_LinkMobile.cpp index 1a2f462..9efd310 100644 --- a/lib/c_bindings/C_LinkMobile.cpp +++ b/lib/c_bindings/C_LinkMobile.cpp @@ -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(handle)->dnsQuery( domainName, reinterpret_cast(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(handle)->openConnection( - ip, port, static_cast(type), + ip, port, static_cast(connectionType), reinterpret_cast(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(handle)->closeConnection( - connectionId, static_cast(type), + connectionId, static_cast(connectionType), reinterpret_cast(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(handle)->transfer( *reinterpret_cast(&dataToSend), @@ -81,6 +81,13 @@ bool C_LinkMobile_hangUp(C_LinkMobileHandle handle) { return static_cast(handle)->hangUp(); } +bool C_LinkMobile_readConfiguration( + C_LinkMobileHandle handle, + C_LinkMobile_ConfigurationData* configurationData) { + return static_cast(handle)->readConfiguration( + *reinterpret_cast(configurationData)); +} + C_LinkMobile_State C_LinkMobile_getState(C_LinkMobileHandle handle) { return static_cast( static_cast(handle)->getState()); @@ -91,6 +98,42 @@ C_LinkMobile_Role C_LinkMobile_getRole(C_LinkMobileHandle handle) { static_cast(handle)->getRole()); } +int C_LinkMobile_isConfigurationValid(C_LinkMobileHandle handle) { + return static_cast(handle)->isConfigurationValid(); +} + +bool C_LinkMobile_isConnectedP2P(C_LinkMobileHandle handle) { + return static_cast(handle)->isConnectedP2P(); +} + +bool C_LinkMobile_isConnectedPPP(C_LinkMobileHandle handle) { + return static_cast(handle)->isConnectedPPP(); +} + +bool C_LinkMobile_isSessionActive(C_LinkMobileHandle handle) { + return static_cast(handle)->isSessionActive(); +} + +bool C_LinkMobile_canShutdown(C_LinkMobileHandle handle) { + return static_cast(handle)->canShutdown(); +} + +C_LinkMobile_DataSize C_LinkMobile_getDataSize(C_LinkMobileHandle handle) { + return static_cast( + static_cast(handle)->getDataSize()); +} + +C_LinkMobile_Error C_LinkMobile_getError(C_LinkMobileHandle handle) { + LinkMobile::Error error = static_cast(handle)->getError(); + return {static_cast(error.type), + static_cast(error.state), + error.cmdIsSending, + error.cmdId, + static_cast(error.cmdResult), + error.cmdErrorCode, + error.reqType}; +} + void C_LinkMobile_onVBlank(C_LinkMobileHandle handle) { static_cast(handle)->_onVBlank(); } diff --git a/lib/c_bindings/C_LinkMobile.h b/lib/c_bindings/C_LinkMobile.h index 7729836..0c780af 100644 --- a/lib/c_bindings/C_LinkMobile.h +++ b/lib/c_bindings/C_LinkMobile.h @@ -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); diff --git a/lib/c_bindings/C_LinkRawCable.h b/lib/c_bindings/C_LinkRawCable.h index ac81124..ff302b2 100644 --- a/lib/c_bindings/C_LinkRawCable.h +++ b/lib/c_bindings/C_LinkRawCable.h @@ -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 { diff --git a/lib/c_bindings/C_LinkSPI.h b/lib/c_bindings/C_LinkSPI.h index 0b20275..16155d6 100644 --- a/lib/c_bindings/C_LinkSPI.h +++ b/lib/c_bindings/C_LinkSPI.h @@ -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(); diff --git a/lib/c_bindings/C_LinkUART.h b/lib/c_bindings/C_LinkUART.h index 521aec8..a96ddc1 100644 --- a/lib/c_bindings/C_LinkUART.h +++ b/lib/c_bindings/C_LinkUART.h @@ -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); diff --git a/lib/c_bindings/C_LinkUniversal.h b/lib/c_bindings/C_LinkUniversal.h index c95be34..0f67bdf 100644 --- a/lib/c_bindings/C_LinkUniversal.h +++ b/lib/c_bindings/C_LinkUniversal.h @@ -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 {