1 /* 2 * Copyright (c) 2025 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef SCSI_DDK_SERVICE_H 17 #define SCSI_DDK_SERVICE_H 18 19 #include "scsi_os_adapter.h" 20 #include "v1_0/iscsi_peripheral_ddk.h" 21 22 namespace OHOS { 23 namespace HDI { 24 namespace Usb { 25 namespace ScsiDdk { 26 namespace V1_0 { 27 28 class ScsiDdkService : public IScsiPeripheralDdk { 29 public: ScsiDdkService(std::shared_ptr<ScsiOsAdapter> & osAdapter)30 ScsiDdkService(std::shared_ptr<ScsiOsAdapter> &osAdapter) : osAdapter_(osAdapter) {}; 31 virtual ~ScsiDdkService() = default; 32 33 int32_t Init() override; 34 35 int32_t Release() override; 36 37 int32_t Open(uint64_t deviceId, uint8_t interfaceIndex, ScsiPeripheralDevice& dev, int &memMapFd) override; 38 39 int32_t Close(const ScsiPeripheralDevice& dev) override; 40 41 int32_t ReadCapacity10(const ScsiPeripheralDevice& dev, const ScsiPeripheralReadCapacityRequest& request, 42 ScsiPeripheralCapacityInfo& capacityInfo, ScsiPeripheralResponse& response) override; 43 44 int32_t TestUnitReady(const ScsiPeripheralDevice& dev, const ScsiPeripheralTestUnitReadyRequest& request, 45 ScsiPeripheralResponse& response) override; 46 47 int32_t Inquiry(const ScsiPeripheralDevice& dev, const ScsiPeripheralInquiryRequest& request, 48 ScsiPeripheralInquiryInfo& inquiryInfo, ScsiPeripheralResponse& response) override; 49 50 int32_t RequestSense(const ScsiPeripheralDevice& dev, const ScsiPeripheralRequestSenseRequest& request, 51 ScsiPeripheralResponse& response) override; 52 53 int32_t Read10(const ScsiPeripheralDevice& dev, const ScsiPeripheralIORequest& request, 54 ScsiPeripheralResponse& response) override; 55 56 int32_t Write10(const ScsiPeripheralDevice& dev, const ScsiPeripheralIORequest& request, 57 ScsiPeripheralResponse& response) override; 58 59 int32_t Verify10(const ScsiPeripheralDevice& dev, const ScsiPeripheralVerifyRequest& request, 60 ScsiPeripheralResponse& response) override; 61 62 int32_t SendRequestByCDB(const ScsiPeripheralDevice& dev, const ScsiPeripheralRequest& request, 63 ScsiPeripheralResponse& response) override; 64 65 private: 66 int32_t GetDeviceMemMapFd(uint16_t busNum, uint16_t devAddr, uint8_t interfaceIndex, int &memMapFd); 67 68 std::shared_ptr<ScsiOsAdapter> osAdapter_; 69 }; 70 } // V1_0 71 } // ScsiDdk 72 } // Usb 73 } // HDI 74 } // OHOS 75 76 #endif // SCSI_DDK_SERVICE_H 77 78