Как отправить команду SCSI на USB-накопитель с помощью приложения Swift для macOS? - PullRequest
1 голос
/ 10 мая 2019

Я создаю приложение macOS, которое будет обновлять прошивку запоминающего устройства USB. Для этого есть только два шага: скопируйте файлы на устройство хранения (сделано с этим) и отправьте команду перезагрузки на устройство, используя наборы команд SCSI.

Я попробовал библиотеку ниже, чтобы отправить команду, однако устройство не перезагрузилось. Я не уверен, что с моей просьбой что-то не так.

https://github.com/Arti3DPlayer/USBDeviceSwift

Я обратился к разработчику этой библиотеки, однако он ответил мне: «Извините, я не работал с USB и Swift около года и не помню этого :)»

Команда перезагрузки - "0xdf 0x40".

Это запрос, который я отправил на устройство.

''» guard let deviceInterface = self.deviceInfo.deviceInterfacePtrPtr? .pointee? .pointee else { throw STM32DeviceError.DeviceInterfaceNotFound }

    var kr:Int32 = 0
    let length:Int = 6
    var requestPtr:[UInt8] = [UInt8](repeating: 0, count: length)
    // Creating request
    var request = IOUSBDevRequest(bmRequestType: USBmakebmRequestType(direction: kUSBIn, type: kUSBDevice, recipient: kUSBStandard),
                                  bRequest: STM32REQUEST.DETACH.rawValue,
                                  wValue: UInt16(0xdf),
                                  wIndex: 0,
                                  wLength: UInt16(length),
                                  pData: &requestPtr,
                                  wLenDone: 255)

    kr = deviceInterface.DeviceRequest(self.deviceInfo.deviceInterfacePtrPtr, &request)

    if (kr != kIOReturnSuccess) {
        throw STM32DeviceError.RequestError(desc: "Get device status request error: \(kr)")
    }

'' '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...