mirror of
https://github.com/afska/gba-link-connection.git
synced 2026-04-26 02:02:25 -05:00
Adding missing methods in C bindings to update configuration in realtime
This commit is contained in:
parent
8121b7aa85
commit
2628c2130e
|
|
@ -77,6 +77,25 @@ void C_LinkCable_resetTimer(C_LinkCableHandle handle) {
|
|||
static_cast<LinkCable*>(handle)->resetTimer();
|
||||
}
|
||||
|
||||
C_LinkCable_Config C_LinkCable_getConfig(C_LinkCableHandle handle) {
|
||||
C_LinkCable_Config config;
|
||||
config.baudRate = static_cast<C_LinkCable_BaudRate>(
|
||||
static_cast<LinkCable*>(handle)->config.baudRate);
|
||||
config.timeout = static_cast<LinkCable*>(handle)->config.timeout;
|
||||
config.interval = static_cast<LinkCable*>(handle)->config.interval;
|
||||
config.sendTimerId = static_cast<LinkCable*>(handle)->config.sendTimerId;
|
||||
return config;
|
||||
}
|
||||
|
||||
void C_LinkCable_setConfig(C_LinkCableHandle handle,
|
||||
C_LinkCable_Config config) {
|
||||
static_cast<LinkCable*>(handle)->config.baudRate =
|
||||
static_cast<LinkCable::BaudRate>(config.baudRate);
|
||||
static_cast<LinkCable*>(handle)->config.timeout = config.timeout;
|
||||
static_cast<LinkCable*>(handle)->config.interval = config.interval;
|
||||
static_cast<LinkCable*>(handle)->config.sendTimerId = config.sendTimerId;
|
||||
}
|
||||
|
||||
void C_LinkCable_onVBlank(C_LinkCableHandle handle) {
|
||||
static_cast<LinkCable*>(handle)->_onVBlank();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,13 @@ typedef enum {
|
|||
C_LINK_CABLE_BAUD_RATE_3 // 115200 bps
|
||||
} C_LinkCable_BaudRate;
|
||||
|
||||
typedef struct {
|
||||
C_LinkCable_BaudRate baudRate;
|
||||
u32 timeout; // can be changed in realtime
|
||||
u16 interval; // can be changed in realtime, but call `resetTimer()`
|
||||
u8 sendTimerId; // can be changed in realtime, but call `resetTimer()`
|
||||
} C_LinkCable_Config;
|
||||
|
||||
C_LinkCableHandle C_LinkCable_createDefault();
|
||||
C_LinkCableHandle C_LinkCable_create(C_LinkCable_BaudRate baudRate,
|
||||
u32 timeout,
|
||||
|
|
@ -52,6 +59,9 @@ void C_LinkCable_send(C_LinkCableHandle handle, u16 data);
|
|||
|
||||
void C_LinkCable_resetTimer(C_LinkCableHandle handle);
|
||||
|
||||
C_LinkCable_Config C_LinkCable_getConfig(C_LinkCableHandle handle);
|
||||
void C_LinkCable_setConfig(C_LinkCableHandle handle, C_LinkCable_Config config);
|
||||
|
||||
void C_LinkCable_onVBlank(C_LinkCableHandle handle);
|
||||
void C_LinkCable_onSerial(C_LinkCableHandle handle);
|
||||
void C_LinkCable_onTimer(C_LinkCableHandle handle);
|
||||
|
|
|
|||
|
|
@ -118,6 +118,15 @@ u32 C_LinkUniversal_getSubWaitCount(C_LinkUniversalHandle handle) {
|
|||
return static_cast<LinkUniversal*>(handle)->_getSubWaitCount();
|
||||
}
|
||||
|
||||
C_LinkCableHandle C_LinkUniversal_getLinkCable(C_LinkUniversalHandle handle) {
|
||||
return static_cast<LinkUniversal*>(handle)->linkCable;
|
||||
}
|
||||
|
||||
C_LinkWirelessHandle C_LinkUniversal_getLinkWireless(
|
||||
C_LinkUniversalHandle handle) {
|
||||
return static_cast<LinkUniversal*>(handle)->linkWireless;
|
||||
}
|
||||
|
||||
void C_LinkUniversal_onVBlank(C_LinkUniversalHandle handle) {
|
||||
static_cast<LinkUniversal*>(handle)->_onVBlank();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
#include <tonc_core.h>
|
||||
#include "C_LinkCable.h"
|
||||
#include "C_LinkWireless.h"
|
||||
|
||||
typedef void* C_LinkUniversalHandle;
|
||||
|
||||
|
|
@ -88,6 +90,10 @@ void C_LinkUniversal_resetTimer(C_LinkUniversalHandle handle);
|
|||
u32 C_LinkUniversal_getWaitCount(C_LinkUniversalHandle handle);
|
||||
u32 C_LinkUniversal_getSubWaitCount(C_LinkUniversalHandle handle);
|
||||
|
||||
C_LinkCableHandle C_LinkUniversal_getLinkCable(C_LinkUniversalHandle handle);
|
||||
C_LinkWirelessHandle C_LinkUniversal_getLinkWireless(
|
||||
C_LinkUniversalHandle handle);
|
||||
|
||||
void C_LinkUniversal_onVBlank(C_LinkUniversalHandle handle);
|
||||
void C_LinkUniversal_onSerial(C_LinkUniversalHandle handle);
|
||||
void C_LinkUniversal_onTimer(C_LinkUniversalHandle handle);
|
||||
|
|
|
|||
|
|
@ -142,6 +142,29 @@ void C_LinkWireless_resetTimer(C_LinkWirelessHandle handle) {
|
|||
return static_cast<LinkWireless*>(handle)->resetTimer();
|
||||
}
|
||||
|
||||
C_LinkWireless_Config C_LinkWireless_getConfig(C_LinkWirelessHandle handle) {
|
||||
C_LinkWireless_Config config;
|
||||
config.forwarding = static_cast<LinkWireless*>(handle)->config.forwarding;
|
||||
config.retransmission =
|
||||
static_cast<LinkWireless*>(handle)->config.retransmission;
|
||||
config.maxPlayers = static_cast<LinkWireless*>(handle)->config.maxPlayers;
|
||||
config.timeout = static_cast<LinkWireless*>(handle)->config.timeout;
|
||||
config.interval = static_cast<LinkWireless*>(handle)->config.interval;
|
||||
config.sendTimerId = static_cast<LinkWireless*>(handle)->config.sendTimerId;
|
||||
return config;
|
||||
}
|
||||
|
||||
void C_LinkWireless_setConfig(C_LinkWirelessHandle handle,
|
||||
C_LinkWireless_Config config) {
|
||||
static_cast<LinkWireless*>(handle)->config.forwarding = config.forwarding;
|
||||
static_cast<LinkWireless*>(handle)->config.retransmission =
|
||||
config.retransmission;
|
||||
static_cast<LinkWireless*>(handle)->config.maxPlayers = config.maxPlayers;
|
||||
static_cast<LinkWireless*>(handle)->config.timeout = config.timeout;
|
||||
static_cast<LinkWireless*>(handle)->config.interval = config.interval;
|
||||
static_cast<LinkWireless*>(handle)->config.sendTimerId = config.sendTimerId;
|
||||
}
|
||||
|
||||
bool C_LinkWireless_hasActiveAsyncCommand(C_LinkWirelessHandle handle) {
|
||||
return static_cast<LinkWireless*>(handle)->_hasActiveAsyncCommand();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,6 +67,15 @@ typedef struct {
|
|||
u8 currentPlayerCount;
|
||||
} C_LinkWireless_Server;
|
||||
|
||||
typedef struct {
|
||||
bool forwarding;
|
||||
bool retransmission;
|
||||
u8 maxPlayers;
|
||||
u32 timeout; // can be changed in realtime
|
||||
u16 interval; // can be changed in realtime, but call `resetTimer()`
|
||||
u8 sendTimerId; // can be changed in realtime, but call `resetTimer()`
|
||||
} C_LinkWireless_Config;
|
||||
|
||||
C_LinkWirelessHandle C_LinkWireless_createDefault();
|
||||
C_LinkWirelessHandle C_LinkWireless_create(bool forwarding,
|
||||
bool retransmission,
|
||||
|
|
@ -109,6 +118,10 @@ C_LinkWireless_Error C_LinkWireless_getLastError(C_LinkWirelessHandle handle,
|
|||
|
||||
void C_LinkWireless_resetTimer(C_LinkWirelessHandle handle);
|
||||
|
||||
C_LinkWireless_Config C_LinkWireless_getConfig(C_LinkWirelessHandle handle);
|
||||
void C_LinkWireless_setConfig(C_LinkWirelessHandle handle,
|
||||
C_LinkWireless_Config config);
|
||||
|
||||
bool C_LinkWireless_hasActiveAsyncCommand(C_LinkWirelessHandle handle);
|
||||
bool C_LinkWireless_canSend(C_LinkWirelessHandle handle);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user