Initial commit. Basic driverkit dext works, no USB functionality.

This commit is contained in:
Madeline
2022-08-11 22:38:03 -04:00
commit 2c105dd302
21 changed files with 1019 additions and 0 deletions

View File

@@ -0,0 +1,105 @@
//
// HackRFDriver.cpp
// HackRFDriver
//
// Created by maddiefuzz on 7/28/22.
//
#include <os/log.h>
#include <DriverKit/IOUserServer.h>
#include <DriverKit/IOLib.h>
#include <USBDriverKit/IOUSBHostInterface.h>
#include <USBDriverKit/IOUSBHostPipe.h>
#include <USBDriverKit/IOUSBHostDevice.h>
#include "HackRFDriver.h"
struct HackRFDriver_IVars
{
IOUSBHostInterface *interface;
IOUSBHostDevice *device;
IOUSBHostPipe *inPipe;
OSAction *ioCompleteCallback;
IOBufferMemoryDescriptor *inData;
uint16_t maxPacketSize;
};
static const uint32_t kMyEndpointAddress = 1;
kern_return_t
IMPL(HackRFDriver, Start)
{
kern_return_t ret;
ret = Start(provider, SUPERDISPATCH);
os_log(OS_LOG_DEFAULT, "Beginning Start function...");
os_log(OS_LOG_DEFAULT, "All the start stuff went good, captain.");
return ret;
}
kern_return_t
IMPL(HackRFDriver, Stop)
{
kern_return_t ret;
ret = Stop(provider, SUPERDISPATCH);
os_log(OS_LOG_DEFAULT, "Goodbye World");
return ret;
}
void HackRFDriver::free()
{
return;
}
bool HackRFDriver::init()
{
if(!super::init()) {
return false;
}
ivars = IONewZero(HackRFDriver_IVars, 1);
if(!ivars) {
return false;
}
os_log(OS_LOG_DEFAULT, "HackRFDriver Init Function Called.");
return true;
}
//kern_return_t HackRFDriver::CopyDescriptor(uint8_t type, uint16_t *length, uint8_t index, uint16_t languageID, uint8_t requestType, uint8_t requestRecipient, uint8_t *descriptor)
//{
// return 0;
//}
//
//const IOUSBDeviceDescriptor * HackRFDriver::CopyDeviceDescriptor(void)
//{
// return NULL;
//}
//
//const IOUSBStringDescriptor * HackRFDriver::CopyStringDescriptor(uint8_t index)
//{
// return NULL;
//}
//
//const IOUSBStringDescriptor * HackRFDriver::CopyStringDescriptor(uint8_t index, uint16_t languageID)
//{
// return NULL;
//}
//
//const IOUSBBOSDescriptor * CopyCapabilityDescriptors(void)
//{
// return NULL;
//}
//kern_return_t
//IMPL(HackRFDriver, CopyDescriptor)
//{
// kern_return_t ret;
// ret = CopyDescriptor(0, 0, 0, 0, 0, 0, 0);
// return ret;
//}

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.driverkit</key>
<true/>
</dict>
</plist>

View File

@@ -0,0 +1,31 @@
//
// HackRFDriver.iig
// HackRFDriver
//
// Created by maddiefuzz on 7/28/22.
//
#ifndef HackRFDriver_h
#define HackRFDriver_h
#include <Availability.h>
#include <DriverKit/IOService.iig>
#include <USBDriverKit/IOUSBHostDevice.iig>
struct HackRFDriver_IVars;
class HackRFDriver: public IOService
{
public:
virtual bool init () override;
virtual kern_return_t Start(IOService * provider) override;
virtual kern_return_t Stop(IOService * provider) override;
virtual void free () override;
private:
// kern_return_t CopyDescriptor(uint8_t type, uint16_t *length, uint8_t index, uint16_t languageID, uint8_t requestType, uint8_t requestRecipient, uint8_t *descriptor) override;
// const IOUSBDeviceDescriptor * CopyDeviceDescriptor(void) override;
// const IOUSBStringDescriptor * CopyStringDescriptor(uint8_t index) override;
// const IOUSBStringDescriptor * CopyStringDescriptor(uint8_t index, uint16_t languageID) override;
};
#endif /* HackRFDriver_h */

28
HackRFDriver/Info.plist Normal file
View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IOKitPersonalities</key>
<dict>
<key>HackRFDriver</key>
<dict>
<key>IOResourceMatch</key>
<string>IOKit</string>
<key>CFBundleIdentifier</key>
<string>info.maddie.HackRFProto.HackRFDriver</string>
<key>CFBundleIdentifierKernel</key>
<string>com.apple.kpi.iokit</string>
<key>IOClass</key>
<string>IOUserService</string>
<key>IOProviderClass</key>
<string>IOUserResources</string>
<key>IOUserClass</key>
<string>HackRFDriver</string>
<key>IOUserServerName</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
</dict>
</dict>
<key>OSBundleUsageDescription</key>
<string></string>
</dict>
</plist>