mirror of
https://github.com/afska/gba-link-connection.git
synced 2026-03-21 17:44:21 -05:00
Providing default implementations for common string functions
This commit is contained in:
parent
0bfdb0b520
commit
cfeda020db
|
|
@ -74,7 +74,6 @@ start:
|
|||
forwarding, retransmission, maxPlayers,
|
||||
isRestoringFromMultiboot ? 1000 : LINK_WIRELESS_DEFAULT_TIMEOUT,
|
||||
LINK_WIRELESS_DEFAULT_INTERVAL, LINK_WIRELESS_DEFAULT_SEND_TIMER_ID);
|
||||
// linkWireless->debug = [](std::string str) { Common::log(str); };
|
||||
|
||||
// (2) Add the required interrupt service routines
|
||||
interrupt_init();
|
||||
|
|
|
|||
|
|
@ -367,7 +367,7 @@ class LinkMobile {
|
|||
auto request = UserRequest{.type = UserRequest::Type::PPP_LOGIN};
|
||||
copyString(request.password, password, LINK_MOBILE_MAX_PASSWORD_LENGTH);
|
||||
|
||||
if (LINK_STRLEN(loginId) > 0)
|
||||
if (Link::strlen(loginId) > 0)
|
||||
copyString(request.loginId, loginId, LINK_MOBILE_MAX_LOGIN_ID_LENGTH);
|
||||
else if (adapterConfiguration.isValid())
|
||||
copyString(request.loginId, adapterConfiguration.fields._ispNumber1,
|
||||
|
|
@ -397,7 +397,7 @@ class LinkMobile {
|
|||
|
||||
result->completed = false;
|
||||
result->success = false;
|
||||
u32 size = LINK_STRLEN(domainName);
|
||||
u32 size = Link::strlen(domainName);
|
||||
if (size > LINK_MOBILE_MAX_DOMAIN_NAME_LENGTH)
|
||||
size = LINK_MOBILE_MAX_DOMAIN_NAME_LENGTH;
|
||||
|
||||
|
|
@ -1360,7 +1360,7 @@ class LinkMobile {
|
|||
|
||||
void cmdDialTelephone(const char* phoneNumber) {
|
||||
addData(DIAL_PHONE_FIRST_BYTE[adapterType], true);
|
||||
for (u32 i = 0; i < LINK_STRLEN(phoneNumber); i++)
|
||||
for (u32 i = 0; i < Link::strlen(phoneNumber); i++)
|
||||
addData(phoneNumber[i]);
|
||||
sendCommandAsync(buildCommand(COMMAND_DIAL_TELEPHONE, true));
|
||||
}
|
||||
|
|
@ -1396,12 +1396,12 @@ class LinkMobile {
|
|||
}
|
||||
|
||||
void cmdISPLogin(const char* loginId, const char* password) {
|
||||
u32 loginIdLength = LINK_STRLEN(loginId);
|
||||
u32 loginIdLength = Link::strlen(loginId);
|
||||
addData(loginIdLength, true);
|
||||
for (u32 i = 0; i < loginIdLength; i++)
|
||||
addData(loginId[i]);
|
||||
|
||||
u32 passwordLength = LINK_STRLEN(password);
|
||||
u32 passwordLength = Link::strlen(password);
|
||||
addData(passwordLength);
|
||||
for (u32 i = 0; i < passwordLength; i++)
|
||||
addData(password[i]);
|
||||
|
|
@ -1502,7 +1502,7 @@ class LinkMobile {
|
|||
}
|
||||
|
||||
void copyString(char* target, const char* source, u32 length) {
|
||||
u32 len = LINK_STRLEN(source);
|
||||
u32 len = Link::strlen(source);
|
||||
|
||||
for (u32 i = 0; i < length + 1; i++)
|
||||
if (i < len)
|
||||
|
|
|
|||
|
|
@ -308,12 +308,12 @@ class LinkRawWireless {
|
|||
u16 gameId = LINK_RAW_WIRELESS_MAX_GAME_ID,
|
||||
bool _validateNames = true) {
|
||||
if (_validateNames &&
|
||||
LINK_STRLEN(gameName) > LINK_RAW_WIRELESS_MAX_GAME_NAME_LENGTH) {
|
||||
Link::strlen(gameName) > LINK_RAW_WIRELESS_MAX_GAME_NAME_LENGTH) {
|
||||
_LRWLOG_("! game name too long");
|
||||
return false;
|
||||
}
|
||||
if (_validateNames &&
|
||||
LINK_STRLEN(userName) > LINK_RAW_WIRELESS_MAX_USER_NAME_LENGTH) {
|
||||
Link::strlen(userName) > LINK_RAW_WIRELESS_MAX_USER_NAME_LENGTH) {
|
||||
_LRWLOG_("! user name too long");
|
||||
return false;
|
||||
}
|
||||
|
|
@ -1165,7 +1165,7 @@ class LinkRawWireless {
|
|||
volatile bool isEnabled = false;
|
||||
|
||||
void copyName(char* target, const char* source, u32 length) {
|
||||
u32 len = LINK_STRLEN(source);
|
||||
u32 len = Link::strlen(source);
|
||||
|
||||
for (u32 i = 0; i < length + 1; i++)
|
||||
if (i < len)
|
||||
|
|
|
|||
|
|
@ -566,7 +566,7 @@ class LinkUniversal {
|
|||
break;
|
||||
|
||||
if (!server.isFull() &&
|
||||
LINK_STRCMP(server.gameName, config.gameName) == 0 &&
|
||||
Link::areStrEqual(server.gameName, config.gameName) &&
|
||||
(LINK_UNIVERSAL_GAME_ID_FILTER == 0 ||
|
||||
server.gameId == LINK_UNIVERSAL_GAME_ID_FILTER)) {
|
||||
u32 randomNumber = safeStoi(server.userName);
|
||||
|
|
@ -588,8 +588,7 @@ class LinkUniversal {
|
|||
serveWait = SERVE_WAIT_FRAMES + _qran_range(1, SERVE_WAIT_FRAMES_RANDOM);
|
||||
u32 randomNumber = _qran_range(1, MAX_ROOM_NUMBER);
|
||||
char randomNumberStr[6];
|
||||
LINK_SNPRINTF(randomNumberStr, sizeof(randomNumberStr), "%d",
|
||||
randomNumber);
|
||||
Link::intToStr5(randomNumberStr, randomNumber);
|
||||
if (!linkWireless.serve(config.gameName, randomNumberStr,
|
||||
LINK_UNIVERSAL_GAME_ID_FILTER > 0
|
||||
? LINK_UNIVERSAL_GAME_ID_FILTER
|
||||
|
|
|
|||
|
|
@ -60,9 +60,6 @@
|
|||
|
||||
#include "LinkRawWireless.hpp"
|
||||
|
||||
// #include <string>
|
||||
// #include <functional>
|
||||
|
||||
#ifndef LINK_WIRELESS_QUEUE_SIZE
|
||||
/**
|
||||
* @brief Buffer size (how many incoming and outgoing messages the queues can
|
||||
|
|
@ -194,7 +191,6 @@ class LinkWireless {
|
|||
u32 QUICK_RECEIVE = 0;
|
||||
#endif
|
||||
|
||||
// std::function<void(std::string str)> debug;
|
||||
// #define LINK_WIRELESS_PROFILING_ENABLED
|
||||
#ifdef LINK_WIRELESS_PROFILING_ENABLED
|
||||
u32 vblankTime = 0;
|
||||
|
|
@ -365,9 +361,9 @@ class LinkWireless {
|
|||
if (linkRawWireless.getState() != LinkWireless::State::AUTHENTICATED &&
|
||||
linkRawWireless.getState() != LinkWireless::State::SERVING)
|
||||
return badRequest(WRONG_STATE);
|
||||
if (LINK_STRLEN(gameName) > LINK_WIRELESS_MAX_GAME_NAME_LENGTH)
|
||||
if (Link::strlen(gameName) > LINK_WIRELESS_MAX_GAME_NAME_LENGTH)
|
||||
return badRequest(GAME_NAME_TOO_LONG);
|
||||
if (LINK_STRLEN(userName) > LINK_WIRELESS_MAX_USER_NAME_LENGTH)
|
||||
if (Link::strlen(userName) > LINK_WIRELESS_MAX_USER_NAME_LENGTH)
|
||||
return badRequest(USER_NAME_TOO_LONG);
|
||||
|
||||
isSendingSyncCommand = true;
|
||||
|
|
@ -498,10 +494,10 @@ class LinkWireless {
|
|||
Server server;
|
||||
server.id = foundServers[i].id;
|
||||
server.gameId = foundServers[i].gameId;
|
||||
LINK_MEMCPY(server.gameName, foundServers[i].gameName,
|
||||
LINK_WIRELESS_MAX_GAME_NAME_LENGTH + 1);
|
||||
LINK_MEMCPY(server.userName, foundServers[i].userName,
|
||||
LINK_WIRELESS_MAX_USER_NAME_LENGTH + 1);
|
||||
for (u32 j = 0; j < LINK_WIRELESS_MAX_GAME_NAME_LENGTH + 1; j++)
|
||||
server.gameName[j] = foundServers[i].gameName[j];
|
||||
for (u32 j = 0; j < LINK_WIRELESS_MAX_USER_NAME_LENGTH + 1; j++)
|
||||
server.userName[j] = foundServers[i].userName[j];
|
||||
u8 nextClientNumber = foundServers[i].nextClientNumber;
|
||||
server.currentPlayerCount =
|
||||
nextClientNumber == 0xff ? 0 : 1 + nextClientNumber;
|
||||
|
|
|
|||
|
|
@ -5,38 +5,6 @@
|
|||
#pragma GCC system_header
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief strlen(...) implementation (by default, std::strlen)
|
||||
*/
|
||||
#ifndef LINK_STRLEN
|
||||
#include <cstring>
|
||||
#define LINK_STRLEN std::strlen
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief strcmp(...) implementation (by default, std::strcmp)
|
||||
*/
|
||||
#ifndef LINK_STRCMP
|
||||
#include <cstdio>
|
||||
#define LINK_STRCMP std::strcmp
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief snprintf(...) implementation (by default, std::snprintf)
|
||||
*/
|
||||
#ifndef LINK_SNPRINTF
|
||||
#include <cstdio>
|
||||
#define LINK_SNPRINTF std::snprintf
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief memcpy(...) implementation (by default, std::memcpy)
|
||||
*/
|
||||
#ifndef LINK_MEMCPY
|
||||
#include <cstring>
|
||||
#define LINK_MEMCPY std::memcpy
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Enable mGBA debug logging.
|
||||
*/
|
||||
|
|
@ -230,6 +198,34 @@ static inline void wait(u32 verticalLines) {
|
|||
};
|
||||
}
|
||||
|
||||
static inline u32 strlen(const char* s) {
|
||||
u32 len = 0;
|
||||
while (s[len] != '\0')
|
||||
++len;
|
||||
return len;
|
||||
}
|
||||
|
||||
static inline bool areStrEqual(const char* s1, const char* s2) {
|
||||
while (*s1 && (*s1 == *s2)) {
|
||||
++s1;
|
||||
++s2;
|
||||
}
|
||||
return *s1 == *s2;
|
||||
}
|
||||
|
||||
static inline void intToStr5(char* buf, int num) {
|
||||
char temp[6];
|
||||
int pos = 0;
|
||||
do {
|
||||
temp[pos++] = '0' + (num % 10);
|
||||
num /= 10;
|
||||
} while (num && pos < 5);
|
||||
int j = 0;
|
||||
while (pos)
|
||||
buf[j++] = temp[--pos];
|
||||
buf[j] = '\0';
|
||||
}
|
||||
|
||||
// Queue
|
||||
|
||||
template <typename T, u32 Size, bool Overwrite = true>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
#include "C_LinkRawWireless.h"
|
||||
#include "../LinkRawWireless.hpp"
|
||||
|
||||
#include <cstring>
|
||||
|
||||
extern "C" {
|
||||
C_LinkRawWireless_CommandResult fromCppResult(
|
||||
LinkRawWireless::CommandResult cppResult);
|
||||
|
|
@ -130,10 +132,10 @@ bool C_LinkRawWireless_broadcastReadPoll(
|
|||
for (u32 i = 0; i < response->serversSize; i++) {
|
||||
response->servers[i].id = cppResponse.servers[i].id;
|
||||
response->servers[i].gameId = cppResponse.servers[i].gameId;
|
||||
LINK_MEMCPY(response->servers[i].gameName, cppResponse.servers[i].gameName,
|
||||
LINK_RAW_WIRELESS_MAX_GAME_NAME_LENGTH + 1);
|
||||
LINK_MEMCPY(response->servers[i].userName, cppResponse.servers[i].userName,
|
||||
LINK_RAW_WIRELESS_MAX_USER_NAME_LENGTH + 1);
|
||||
for (u32 j = 0; j < LINK_RAW_WIRELESS_MAX_GAME_NAME_LENGTH + 1; j++)
|
||||
response->servers[i].gameName[j] = cppResponse.servers[i].gameName[j];
|
||||
for (u32 j = 0; j < LINK_RAW_WIRELESS_MAX_USER_NAME_LENGTH + 1; j++)
|
||||
response->servers[i].userName[j] = cppResponse.servers[i].userName[j];
|
||||
response->servers[i].nextClientNumber =
|
||||
cppResponse.servers[i].nextClientNumber;
|
||||
}
|
||||
|
|
@ -184,8 +186,8 @@ bool C_LinkRawWireless_sendDataAndWait(
|
|||
remoteCommand->success = cppRemoteCommand.success;
|
||||
remoteCommand->commandId = cppRemoteCommand.commandId;
|
||||
remoteCommand->dataSize = cppRemoteCommand.dataSize;
|
||||
LINK_MEMCPY(remoteCommand->data, cppRemoteCommand.data,
|
||||
LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH * sizeof(u32));
|
||||
for (u32 j = 0; j < LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH; j++)
|
||||
remoteCommand->data[j] = cppRemoteCommand.data[j];
|
||||
return success;
|
||||
}
|
||||
|
||||
|
|
@ -212,8 +214,8 @@ bool C_LinkRawWireless_wait(C_LinkRawWirelessHandle handle,
|
|||
remoteCommand->success = cppRemoteCommand.success;
|
||||
remoteCommand->commandId = cppRemoteCommand.commandId;
|
||||
remoteCommand->dataSize = cppRemoteCommand.dataSize;
|
||||
LINK_MEMCPY(remoteCommand->data, cppRemoteCommand.data,
|
||||
LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH * sizeof(u32));
|
||||
for (u32 j = 0; j < LINK_RAW_WIRELESS_MAX_COMMAND_TRANSFER_LENGTH; j++)
|
||||
remoteCommand->data[j] = cppRemoteCommand.data[j];
|
||||
return success;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user