btdrv: Added btdrvGetEventInfo/btdrvGetHidEventInfo, etc.

This commit is contained in:
yellows8 2020-07-22 23:28:16 -04:00
parent 0075672b93
commit e0ee2ffc86
2 changed files with 31 additions and 0 deletions

View File

@ -20,7 +20,9 @@ typedef enum {
/// HidEventType
typedef enum {
BtdrvHidEventType_Unknown0 = 0, ///< Unknown. Only used with \ref btdrvGetHidEventInfo.
BtdrvHidEventType_Unknown4 = 4, ///< Unknown.
BtdrvHidEventType_Unknown7 = 7, ///< Unknown. Only used with \ref btdrvGetHidEventInfo.
BtdrvHidEventType_Unknown8 = 8, ///< Unknown.
BtdrvHidEventType_Unknown9 = 9, ///< Unknown.
} BtdrvHidEventType;
@ -250,6 +252,15 @@ Result btdrvGetAdapterProperty(BtdrvBluetoothPropertyType type, void* buffer, si
*/
Result btdrvSetAdapterProperty(BtdrvBluetoothPropertyType type, const void* buffer, size_t size);
/**
* @brief GetEventInfo
* @note This is used by btm-sysmodule.
* @param[out] buffer Output buffer. 0x400-bytes from state is written here.
* @param[in] size Output buffer size.
* @oaram[out] type Output EventType.
*/
Result btdrvGetEventInfo(void* buffer, size_t size, u32 *type);
/**
* @brief WriteHidData
* @param[in] addr \ref BtdrvAddress
@ -281,6 +292,15 @@ Result btdrvSetHidReport(BtdrvAddress addr, u32 type, BtdrvHidReport *buffer);
*/
Result btdrvGetHidReport(BtdrvAddress addr, u8 unk, u32 type);
/**
* @brief GetHidEventInfo
* @note This is used by btm-sysmodule.
* @param[out] buffer Output buffer. 0x480-bytes from state is written here.
* @param[in] size Output buffer size.
* @oaram[out] type \ref BtdrvHidEventType, always ::BtdrvHidEventType_Unknown0 or ::BtdrvHidEventType_Unknown7.
*/
Result btdrvGetHidEventInfo(void* buffer, size_t size, BtdrvHidEventType *type);
/**
* @brief RegisterHidReportEvent
* @note This also does sharedmem init/handling if needed, on [7.0.0+].

View File

@ -119,6 +119,10 @@ Result btdrvSetAdapterProperty(BtdrvBluetoothPropertyType type, const void* buff
);
}
Result btdrvGetEventInfo(void* buffer, size_t size, u32 *type) {
return _btdrvCmdOutU32OutBuf(buffer, size, type, 15);
}
Result btdrvWriteHidData(BtdrvAddress addr, BtdrvHidReport *buffer) {
size_t size = hosversionBefore(9,0,0) ? sizeof(BtdrvHidData) : sizeof(BtdrvHidReport);
return serviceDispatchIn(&g_btdrvSrv, 19, addr,
@ -159,6 +163,13 @@ Result btdrvGetHidReport(BtdrvAddress addr, u8 unk, u32 type) {
return serviceDispatchIn(&g_btdrvSrv, 22, in);
}
Result btdrvGetHidEventInfo(void* buffer, size_t size, BtdrvHidEventType *type) {
u32 tmp=0;
Result rc = _btdrvCmdOutU32OutBuf(buffer, size, &tmp, 27);
if (R_SUCCEEDED(rc) && type) *type = tmp;
return rc;
}
Result btdrvRegisterHidReportEvent(Event* out_event) {
Result rc=0;
Handle tmphandle=0;