mirror of
https://github.com/izzy2lost/dolphin.git
synced 2026-06-19 01:16:48 -07:00
Merge pull request #13436 from JoshuaVandaele/clang-format-19
Update clang-format to version 19
This commit is contained in:
+1
-1
@@ -39,7 +39,7 @@ This guide is for developers who wish to contribute to the Dolphin codebase. It
|
||||
|
||||
Following this guide and formatting your code as detailed will likely get your pull request merged much faster than if you don't (assuming the code itself has no mistakes).
|
||||
|
||||
This project uses clang-format 13.0 to check for common style issues. In case of conflicts between this guide and clang-format rules, the latter should be followed instead of this guide.
|
||||
This project uses clang-format 19.1 to check for common style issues. In case of conflicts between this guide and clang-format rules, the latter should be followed instead of this guide.
|
||||
|
||||
## <a name="intro-formatting-issues"></a>Checking and fixing formatting issues
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@ IncludeCategories:
|
||||
IndentCaseLabels: false
|
||||
IndentWidth: 2
|
||||
IndentWrappedFunctionNames: false
|
||||
InsertNewlineAtEOF: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
@@ -67,6 +68,8 @@ PenaltyExcessCharacter: 1000000
|
||||
PenaltyReturnTypeOnItsOwnLine: 60
|
||||
PointerAlignment: Left
|
||||
ReflowComments: true
|
||||
RemoveSemicolon: true
|
||||
RequiresClausePosition: WithPreceding
|
||||
SortIncludes: true
|
||||
SpaceAfterCStyleCast: false
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
@@ -79,6 +82,8 @@ SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Latest
|
||||
StatementAttributeLikeMacros:
|
||||
- emit
|
||||
TabWidth: 2
|
||||
UseTab: Never
|
||||
---
|
||||
@@ -93,4 +98,3 @@ ObjCSpaceBeforeProtocolList: true
|
||||
BraceWrapping:
|
||||
AfterObjCDeclaration: true
|
||||
...
|
||||
|
||||
|
||||
@@ -429,7 +429,10 @@ extern const CaseInsensitiveDict<ParseInfo, '.', '_'> mnemonic_tokens = {
|
||||
|
||||
#define PSEUDO(mnemonic, base, variant_bits, alg) \
|
||||
{ \
|
||||
mnemonic, { static_cast<size_t>(base) * VARIANT_PERMUTATIONS + (variant_bits), alg } \
|
||||
mnemonic, \
|
||||
{ \
|
||||
static_cast<size_t>(base) * VARIANT_PERMUTATIONS + (variant_bits), alg \
|
||||
} \
|
||||
}
|
||||
#define PLAIN_PSEUDO(mnemonic, base, alg) PSEUDO(mnemonic, base, PLAIN_MNEMONIC, alg)
|
||||
#define RC_PSEUDO(mnemonic, base, alg) \
|
||||
@@ -673,7 +676,7 @@ extern const CaseInsensitiveDict<ParseInfo, '.', '_', '+', '-'> extended_mnemoni
|
||||
EMIT_MNEMONIC_ENTRY(opcode_val, ((extra_bits) | InsertVal(0b11, 30, 31)), __VA_ARGS__)
|
||||
|
||||
// Defines all basic mnemonics that Broadway/Gekko supports
|
||||
extern const std::array<MnemonicDesc, NUM_MNEMONICS* VARIANT_PERMUTATIONS> mnemonics = {
|
||||
extern const std::array<MnemonicDesc, NUM_MNEMONICS * VARIANT_PERMUTATIONS> mnemonics = {
|
||||
// A-2
|
||||
OERC_MNEMONIC(31, InsertVal(266, 22, 30), OpDesc_D, OpDesc_A, OpDesc_B), // add
|
||||
OERC_MNEMONIC(31, InsertVal(10, 22, 30), OpDesc_D, OpDesc_A, OpDesc_B), // addc
|
||||
@@ -1048,7 +1051,10 @@ void FillMfsprBatAndBitswap(OperandList& operands)
|
||||
} // namespace
|
||||
|
||||
#define PSEUDO(base, variant_bits, cb) \
|
||||
ExtendedMnemonicDesc { static_cast<size_t>(base) * VARIANT_PERMUTATIONS + variant_bits, cb }
|
||||
ExtendedMnemonicDesc \
|
||||
{ \
|
||||
static_cast<size_t>(base) * VARIANT_PERMUTATIONS + variant_bits, cb \
|
||||
}
|
||||
#define PLAIN_PSEUDO(base, cb) \
|
||||
PSEUDO(base, PLAIN_MNEMONIC, cb), INVALID_EXT_MNEMONIC, INVALID_EXT_MNEMONIC, INVALID_EXT_MNEMONIC
|
||||
#define RC_PSEUDO(base, cb) \
|
||||
@@ -1064,7 +1070,7 @@ void FillMfsprBatAndBitswap(OperandList& operands)
|
||||
PSEUDO(base, PLAIN_MNEMONIC, cb), PSEUDO(base, LINK_BIT, cb), \
|
||||
PSEUDO(base, ABSOLUTE_ADDRESS_BIT, cb), PSEUDO(base, (LINK_BIT | ABSOLUTE_ADDRESS_BIT), cb)
|
||||
|
||||
extern const std::array<ExtendedMnemonicDesc, NUM_EXT_MNEMONICS* VARIANT_PERMUTATIONS>
|
||||
extern const std::array<ExtendedMnemonicDesc, NUM_EXT_MNEMONICS * VARIANT_PERMUTATIONS>
|
||||
extended_mnemonics = {
|
||||
// E.2.1
|
||||
PLAIN_PSEUDO(GekkoMnemonic::Addi, NegateSIMM), // subi
|
||||
|
||||
@@ -26,7 +26,7 @@ static u32 Decode5A3(u16 val)
|
||||
{
|
||||
r = s_lut5to8[(val >> 10) & 0x1f];
|
||||
g = s_lut5to8[(val >> 5) & 0x1f];
|
||||
b = s_lut5to8[(val)&0x1f];
|
||||
b = s_lut5to8[(val) & 0x1f];
|
||||
a = 0xFF;
|
||||
}
|
||||
else
|
||||
@@ -34,7 +34,7 @@ static u32 Decode5A3(u16 val)
|
||||
a = s_lut3to8[(val >> 12) & 0x7];
|
||||
r = (s_lut4to8[(val >> 8) & 0xf] * a + (bg_color & 0xFF) * (255 - a)) / 255;
|
||||
g = (s_lut4to8[(val >> 4) & 0xf] * a + ((bg_color >> 8) & 0xFF) * (255 - a)) / 255;
|
||||
b = (s_lut4to8[(val)&0xf] * a + ((bg_color >> 16) & 0xFF) * (255 - a)) / 255;
|
||||
b = (s_lut4to8[(val) & 0xf] * a + ((bg_color >> 16) & 0xFF) * (255 - a)) / 255;
|
||||
a = 0xFF;
|
||||
}
|
||||
return (a << 24) | (r << 16) | (g << 8) | b;
|
||||
|
||||
@@ -155,6 +155,6 @@ int __cdecl EnableCompatPatches()
|
||||
// referencing it doesn't require ugly decorated names.
|
||||
// Use /include:enableCompatPatches linker flag to enable this.
|
||||
extern "C" {
|
||||
__declspec(allocate(".CRT$XCZ")) decltype(&EnableCompatPatches)
|
||||
enableCompatPatches = EnableCompatPatches;
|
||||
__declspec(allocate(".CRT$XCZ")) decltype(&EnableCompatPatches) enableCompatPatches =
|
||||
EnableCompatPatches;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace Config
|
||||
// Setting a key to an object of this type will delete the key.
|
||||
struct DefaultState
|
||||
{
|
||||
friend constexpr bool operator==(DefaultState, DefaultState) { return true; };
|
||||
friend constexpr bool operator==(DefaultState, DefaultState) { return true; }
|
||||
};
|
||||
|
||||
namespace detail
|
||||
|
||||
@@ -11,16 +11,16 @@ namespace Common
|
||||
struct ContainsFn
|
||||
{
|
||||
template <std::input_iterator I, std::sentinel_for<I> S, class T, class Proj = std::identity>
|
||||
requires std::indirect_binary_predicate < std::ranges::equal_to, std::projected<I, Proj>,
|
||||
const T* > constexpr bool operator()(I first, S last, const T& value, Proj proj = {}) const
|
||||
requires std::indirect_binary_predicate<std::ranges::equal_to, std::projected<I, Proj>, const T*>
|
||||
constexpr bool operator()(I first, S last, const T& value, Proj proj = {}) const
|
||||
{
|
||||
return std::ranges::find(std::move(first), last, value, std::move(proj)) != last;
|
||||
}
|
||||
|
||||
template <std::ranges::input_range R, class T, class Proj = std::identity>
|
||||
requires std::indirect_binary_predicate < std::ranges::equal_to,
|
||||
std::projected<std::ranges::iterator_t<R>, Proj>,
|
||||
const T* > constexpr bool operator()(R&& r, const T& value, Proj proj = {}) const
|
||||
requires std::indirect_binary_predicate<
|
||||
std::ranges::equal_to, std::projected<std::ranges::iterator_t<R>, Proj>, const T*>
|
||||
constexpr bool operator()(R&& r, const T& value, Proj proj = {}) const
|
||||
{
|
||||
return (*this)(std::ranges::begin(r), std::ranges::end(r), value, std::move(proj));
|
||||
}
|
||||
|
||||
@@ -996,41 +996,23 @@ PFNDOLDISPATCHCOMPUTEPROC dolDispatchCompute;
|
||||
PFNDOLDISPATCHCOMPUTEINDIRECTPROC dolDispatchComputeIndirect;
|
||||
|
||||
// Creates a GLFunc object that requires a feature
|
||||
#define GLFUNC_REQUIRES(x, y) \
|
||||
{ \
|
||||
(void**)&x, #x, y \
|
||||
}
|
||||
#define GLFUNC_REQUIRES(x, y) {(void**)&x, #x, y}
|
||||
// Creates a GLFunc object with a different function suffix
|
||||
// For when we want to use the same function pointer, but different function name
|
||||
#define GLFUNC_SUFFIX(x, y, z) \
|
||||
{ \
|
||||
(void**)&x, #x #y, z \
|
||||
}
|
||||
#define GLFUNC_SUFFIX(x, y, z) {(void**)&x, #x #y, z}
|
||||
// Creates a GLFunc object that should always be able to get grabbed
|
||||
// Used for Desktop OpenGL functions that should /always/ be provided.
|
||||
// aka GL 1.1/1.2/1.3/1.4
|
||||
#define GLFUNC_ALWAYS_REQUIRED(x) \
|
||||
{ \
|
||||
(void**)&x, #x, "VERSION_GL" \
|
||||
}
|
||||
#define GLFUNC_ALWAYS_REQUIRED(x) {(void**)&x, #x, "VERSION_GL"}
|
||||
// Creates a GLFunc object that should be able to get grabbed
|
||||
// on both GL and ES
|
||||
#define GL_ES_FUNC_ALWAYS_REQUIRED(x) \
|
||||
{ \
|
||||
(void**)&x, #x, "VERSION_GL |VERSION_GLES_2" \
|
||||
}
|
||||
#define GL_ES_FUNC_ALWAYS_REQUIRED(x) {(void**)&x, #x, "VERSION_GL |VERSION_GLES_2"}
|
||||
// Creates a GLFunc object that should be able to get grabbed
|
||||
// on both GL and ES 3.0
|
||||
#define GL_ES3_FUNC_ALWAYS_REQUIRED(x) \
|
||||
{ \
|
||||
(void**)&x, #x, "VERSION_GL |VERSION_GLES_3" \
|
||||
}
|
||||
#define GL_ES3_FUNC_ALWAYS_REQUIRED(x) {(void**)&x, #x, "VERSION_GL |VERSION_GLES_3"}
|
||||
// Creates a GLFunc object that should be able to get grabbed
|
||||
// on both GL and ES 3.2
|
||||
#define GL_ES32_FUNC_ALWAYS_REQUIRED(x) \
|
||||
{ \
|
||||
(void**)&x, #x, "VERSION_GL |VERSION_GLES_3_2" \
|
||||
}
|
||||
#define GL_ES32_FUNC_ALWAYS_REQUIRED(x) {(void**)&x, #x, "VERSION_GL |VERSION_GLES_3_2"}
|
||||
|
||||
struct GLFunc
|
||||
{
|
||||
|
||||
@@ -73,17 +73,17 @@ namespace Common
|
||||
#define PPCLSH 21
|
||||
#define PPCIDX2SH 1
|
||||
|
||||
#define PPCGETIDX(x) (((x)&PPCIDXMASK) >> PPCIDXSH)
|
||||
#define PPCGETD(x) (((x)&PPCDMASK) >> PPCDSH)
|
||||
#define PPCGETA(x) (((x)&PPCAMASK) >> PPCASH)
|
||||
#define PPCGETB(x) (((x)&PPCBMASK) >> PPCBSH)
|
||||
#define PPCGETC(x) (((x)&PPCCMASK) >> PPCCSH)
|
||||
#define PPCGETM(x) (((x)&PPCMMASK) >> PPCMSH)
|
||||
#define PPCGETCRD(x) (((x)&PPCCRDMASK) >> PPCCRDSH)
|
||||
#define PPCGETCRA(x) (((x)&PPCCRAMASK) >> PPCCRASH)
|
||||
#define PPCGETL(x) (((x)&PPCLMASK) >> PPCLSH)
|
||||
#define PPCGETIDX2(x) (((x)&PPCIDX2MASK) >> PPCIDX2SH)
|
||||
#define PPCGETSTRM(x) (((x)&PPCSTRM) >> PPCDSH)
|
||||
#define PPCGETIDX(x) (((x) & PPCIDXMASK) >> PPCIDXSH)
|
||||
#define PPCGETD(x) (((x) & PPCDMASK) >> PPCDSH)
|
||||
#define PPCGETA(x) (((x) & PPCAMASK) >> PPCASH)
|
||||
#define PPCGETB(x) (((x) & PPCBMASK) >> PPCBSH)
|
||||
#define PPCGETC(x) (((x) & PPCCMASK) >> PPCCSH)
|
||||
#define PPCGETM(x) (((x) & PPCMMASK) >> PPCMSH)
|
||||
#define PPCGETCRD(x) (((x) & PPCCRDMASK) >> PPCCRDSH)
|
||||
#define PPCGETCRA(x) (((x) & PPCCRAMASK) >> PPCCRASH)
|
||||
#define PPCGETL(x) (((x) & PPCLMASK) >> PPCLSH)
|
||||
#define PPCGETIDX2(x) (((x) & PPCIDX2MASK) >> PPCIDX2SH)
|
||||
#define PPCGETSTRM(x) (((x) & PPCSTRM) >> PPCDSH)
|
||||
|
||||
constexpr std::array<const char*, 32> trap_condition{
|
||||
nullptr, "lgt", "llt", nullptr, "eq", "lge", "lle", nullptr,
|
||||
|
||||
@@ -73,9 +73,8 @@ void TruncateToCString(std::string* s);
|
||||
bool TryParse(const std::string& str, bool* output);
|
||||
|
||||
template <typename T>
|
||||
requires(std::is_integral_v<T> ||
|
||||
(std::is_enum_v<T> && !detail::IsBooleanEnum<T>())) bool TryParse(const std::string& str,
|
||||
T* output, int base = 0)
|
||||
requires(std::is_integral_v<T> || (std::is_enum_v<T> && !detail::IsBooleanEnum<T>()))
|
||||
bool TryParse(const std::string& str, T* output, int base = 0)
|
||||
{
|
||||
char* end_ptr = nullptr;
|
||||
|
||||
@@ -113,7 +112,8 @@ requires(std::is_integral_v<T> ||
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
requires(detail::IsBooleanEnum<T>()) bool TryParse(const std::string& str, T* output)
|
||||
requires(detail::IsBooleanEnum<T>())
|
||||
bool TryParse(const std::string& str, T* output)
|
||||
{
|
||||
bool value;
|
||||
if (!TryParse(str, &value))
|
||||
|
||||
@@ -172,8 +172,8 @@ public:
|
||||
void SetDevMenuUpdateCallback(std::function<void(void)> callback)
|
||||
{
|
||||
m_dev_menu_callback = callback;
|
||||
};
|
||||
bool CheckForModifications() { return rc_client_raintegration_has_modifications(m_client); };
|
||||
}
|
||||
bool CheckForModifications() { return rc_client_raintegration_has_modifications(m_client); }
|
||||
#endif // RC_CLIENT_SUPPORTS_RAINTEGRATION
|
||||
|
||||
void DoState(PointerWrap& p);
|
||||
@@ -341,13 +341,13 @@ public:
|
||||
u16 revision)
|
||||
{
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
constexpr bool CheckApprovedARCode(const ActionReplay::ARCode& code, const std::string& game_id,
|
||||
u16 revision)
|
||||
{
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
constexpr void LoadGame(const std::string&, const DiscIO::Volume*) {}
|
||||
|
||||
|
||||
@@ -239,8 +239,8 @@ struct Elf32_Sym
|
||||
};
|
||||
|
||||
#define ELF32_ST_BIND(i) ((i) >> 4)
|
||||
#define ELF32_ST_TYPE(i) ((i)&0xf)
|
||||
#define ELF32_ST_INFO(b, t) (((b) << 4) + ((t)&0xf))
|
||||
#define ELF32_ST_TYPE(i) ((i) & 0xf)
|
||||
#define ELF32_ST_INFO(b, t) (((b) << 4) + ((t) & 0xf))
|
||||
|
||||
// Relocation entries
|
||||
struct Elf32_Rel
|
||||
|
||||
@@ -589,7 +589,7 @@ static void EmuThread(Core::System& system, std::unique_ptr<BootParameters> boot
|
||||
system.GetPowerPC().SetMode(PowerPC::CoreMode::Interpreter);
|
||||
|
||||
// Determine the CPU thread function
|
||||
void (*cpuThreadFunc)(Core::System & system, const std::optional<std::string>& savestate_path,
|
||||
void (*cpuThreadFunc)(Core::System& system, const std::optional<std::string>& savestate_path,
|
||||
bool delete_savestate);
|
||||
if (std::holds_alternative<BootParameters::DFF>(boot->parameters))
|
||||
cpuThreadFunc = FifoPlayerThread;
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace DSP::Interpreter
|
||||
// used without changes. When PRECISE_BACKLOG is not defined, ZeroWriteBackLog does nothing and
|
||||
// ApplyWriteBackLog overwrites the register value with the value from the backlog (so writes from
|
||||
// extended opcodes "win" over the main opcode).
|
||||
//#define PRECISE_BACKLOG
|
||||
// #define PRECISE_BACKLOG
|
||||
|
||||
Interpreter::Interpreter(DSPCore& dsp) : m_dsp_core{dsp}
|
||||
{
|
||||
|
||||
@@ -105,7 +105,7 @@ static Gen::OpArg GetRegisterPointer(size_t reg)
|
||||
#endif
|
||||
|
||||
#define STATIC_REG_ACCS
|
||||
//#undef STATIC_REG_ACCS
|
||||
// #undef STATIC_REG_ACCS
|
||||
|
||||
DSPJitRegCache::DSPJitRegCache(DSPEmitter& emitter) : m_emitter(emitter), m_is_temporary(false)
|
||||
{
|
||||
|
||||
@@ -672,7 +672,10 @@ void ZeldaUCode::RenderAudio()
|
||||
// Utility to define 32 bit accessors/modifiers methods based on two 16 bit
|
||||
// fields named _l and _h.
|
||||
#define DEFINE_32BIT_ACCESSOR(field_name, name) \
|
||||
u32 Get##name() const { return (field_name##_h << 16) | field_name##_l; } \
|
||||
u32 Get##name() const \
|
||||
{ \
|
||||
return (field_name##_h << 16) | field_name##_l; \
|
||||
} \
|
||||
void Set##name(u32 v) \
|
||||
{ \
|
||||
field_name##_h = v >> 16; \
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#include "DiscIO/Enums.h"
|
||||
|
||||
// Uncomment this to write the system data of the memorycard from directory to disc
|
||||
//#define _WRITE_MC_HEADER 1
|
||||
// #define _WRITE_MC_HEADER 1
|
||||
void MigrateFromMemcardFile(const std::string& directory_name, ExpansionInterface::Slot card_slot,
|
||||
DiscIO::Region region);
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ protected:
|
||||
bool ConnectInternal() override;
|
||||
void DisconnectInternal() override;
|
||||
bool IsConnected() const override;
|
||||
void IOWakeup() override{};
|
||||
void IOWakeup() override {}
|
||||
int IORead(u8* buf) override;
|
||||
int IOWrite(u8 const* buf, size_t len) override;
|
||||
|
||||
|
||||
@@ -399,8 +399,8 @@ constexpr bdaddr_t BDADDR_ANY{};
|
||||
* and OCF (OpCode Command Field) from OpCode.
|
||||
*/
|
||||
|
||||
#define HCI_OPCODE(gf, cf) ((((gf)&0x3f) << 10) | ((cf)&0x3ff))
|
||||
#define HCI_OCF(op) ((op)&0x3ff)
|
||||
#define HCI_OPCODE(gf, cf) ((((gf) & 0x3f) << 10) | ((cf) & 0x3ff))
|
||||
#define HCI_OCF(op) ((op) & 0x3ff)
|
||||
#define HCI_OGF(op) (((op) >> 10) & 0x3f)
|
||||
|
||||
/*
|
||||
@@ -408,10 +408,10 @@ constexpr bdaddr_t BDADDR_ANY{};
|
||||
* PB (Packet boundary) flags.
|
||||
*/
|
||||
|
||||
#define HCI_CON_HANDLE(h) ((h)&0x0fff)
|
||||
#define HCI_PB_FLAG(h) (((h)&0x3000) >> 12)
|
||||
#define HCI_BC_FLAG(h) (((h)&0xc000) >> 14)
|
||||
#define HCI_MK_CON_HANDLE(h, pb, bc) (((h)&0x0fff) | (((pb)&3) << 12) | (((bc)&3) << 14))
|
||||
#define HCI_CON_HANDLE(h) ((h) & 0x0fff)
|
||||
#define HCI_PB_FLAG(h) (((h) & 0x3000) >> 12)
|
||||
#define HCI_BC_FLAG(h) (((h) & 0xc000) >> 14)
|
||||
#define HCI_MK_CON_HANDLE(h, pb, bc) (((h) & 0x0fff) | (((pb) & 3) << 12) | (((bc) & 3) << 14))
|
||||
|
||||
/* PB flag values */
|
||||
/* 00 - reserved for future use */
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
/* Transport Protocol */
|
||||
/* 0x0019 - 0x1000 - reserved for future use */
|
||||
|
||||
#define L2CAP_PSM_INVALID(psm) (((psm)&0x0101) != 0x0001)
|
||||
#define L2CAP_PSM_INVALID(psm) (((psm) & 0x0101) != 0x0001)
|
||||
|
||||
/* L2CAP Connection response command result codes */
|
||||
#define L2CAP_SUCCESS 0x0000
|
||||
@@ -151,9 +151,9 @@
|
||||
|
||||
/* L2CAP Configuration options */
|
||||
#define L2CAP_OPT_CFLAG_BIT 0x0001
|
||||
#define L2CAP_OPT_CFLAG(flags) ((flags)&L2CAP_OPT_CFLAG_BIT)
|
||||
#define L2CAP_OPT_CFLAG(flags) ((flags) & L2CAP_OPT_CFLAG_BIT)
|
||||
#define L2CAP_OPT_HINT_BIT 0x80
|
||||
#define L2CAP_OPT_HINT(type) ((type)&L2CAP_OPT_HINT_BIT)
|
||||
#define L2CAP_OPT_HINT(type) ((type) & L2CAP_OPT_HINT_BIT)
|
||||
#define L2CAP_OPT_HINT_MASK 0x7f
|
||||
#define L2CAP_OPT_MTU 0x01
|
||||
#define L2CAP_OPT_MTU_SIZE sizeof(uint16_t)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user