btdrv: split RespondToPinRequest service wrapper into legacy and current versions

This commit is contained in:
ndeadly 2021-04-18 14:19:18 +02:00 committed by Dave Murphy
parent 3c7d4921dd
commit e20d779bd0
2 changed files with 31 additions and 20 deletions

View File

@ -501,14 +501,21 @@ Result btdrvRemoveBond(BtdrvAddress addr);
Result btdrvCancelBond(BtdrvAddress addr);
/**
* @brief RespondToPinRequest
* @brief RespondToPinRequest [1.0.0-11.0.1]
* @note The official sysmodule only uses the input \ref BtdrvAddress.
* @param[in] addr \ref BtdrvAddress
* @param[in] flag Flag
* @param[in] pin_code \ref BtdrvBluetoothPinCode
* @param[in] length Length of pin_code
*/
Result btdrvRespondToPinRequest(BtdrvAddress addr, bool flag, const BtdrvBluetoothPinCode *pin_code, u8 length);
Result btdrvLegacyRespondToPinRequest(BtdrvAddress addr, bool flag, const BtdrvBluetoothPinCode *pin_code, u8 length);
/**
* @brief RespondToPinRequest [12.0.0+]
* @param[in] addr \ref BtdrvAddress
* @param[in] pin_code \ref BtdrvPinCode
*/
Result btdrvRespondToPinRequest(BtdrvAddress addr, const BtdrvPinCode *pin_code);
/**
* @brief RespondToSspRequest

View File

@ -229,8 +229,10 @@ Result btdrvCancelBond(BtdrvAddress addr) {
return _btdrvCmdInAddrNoOut(addr, 12);
}
Result btdrvRespondToPinRequest(BtdrvAddress addr, bool flag, const BtdrvBluetoothPinCode *pin_code, u8 length) {
if (hosversionBefore(12,0,0)) {
Result btdrvLegacyRespondToPinRequest(BtdrvAddress addr, bool flag, const BtdrvBluetoothPinCode *pin_code, u8 length) {
if (hosversionAtLeast(12,0,0))
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
const struct {
BtdrvAddress addr;
u8 flag;
@ -239,16 +241,18 @@ Result btdrvRespondToPinRequest(BtdrvAddress addr, bool flag, const BtdrvBluetoo
} in = { addr, flag!=0, length, *pin_code };
return serviceDispatchIn(&g_btdrvSrv, 13, in);
}
else {
}
Result btdrvRespondToPinRequest(BtdrvAddress addr, const BtdrvPinCode *pin_code) {
if (hosversionBefore(12,0,0))
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
const struct {
BtdrvAddress addr;
BtdrvBluetoothPinCode pin_code;
uint8_t length;
} in = { addr, *pin_code, length };
BtdrvPinCode pin_code;
} in = { addr, *pin_code };
return serviceDispatchIn(&g_btdrvSrv, 13, in);
}
}
Result btdrvRespondToSspRequest(BtdrvAddress addr, u8 variant, bool flag, u32 unk) {