AG903ライブラリリファレンス
内容インデックスホーム
前へ上へ次へ
usb_msc_api.h

Mass Storage Devices Class Driver API Header

Mass Storage Devices Class Driver提供ヘッダ

none

AXELL CORPORATION

2017_02_22 初版 

2017_10_26 Ver2.0

1: 9: 10: 14: #ifndef __USB_MSC_API_H__ 15: #define __USB_MSC_API_H__ 16: 17: 18: #include "uhs_type.h" 19: 20: 21: #define USBSTOR_ERRCODE_BASE -0x0100 22: 23: 24: 25: #define USBSTOR_SUCCESS 0 26: 27: #define USBSTOR_API_MOUNTED_UNIT (USBSTOR_ERRCODE_BASE - 1) 28: 29: #define USBSTOR_API_PARAM_ERROR (USBSTOR_ERRCODE_BASE - 2) 30: 31: #define USBSTOR_API_UNMOUNT_DRIVE (USBSTOR_ERRCODE_BASE - 3) 32: 33: #define USBSTOR_API_NOT_FOUND_UNIT (USBSTOR_ERRCODE_BASE - 20) 34: 35: #define USBSTOR_API_UNIT_NOT_READY (USBSTOR_ERRCODE_BASE - 21) 36: 37: #define USBSTOR_API_UNIT_NOT_USE (USBSTOR_ERRCODE_BASE - 22) 38: 39: #define USBSTOR_API_ILLIGAL_UNIT (USBSTOR_ERRCODE_BASE - 23) 40: 41: #define USBSTOR_API_ILLIGAL_DRIVE (USBSTOR_ERRCODE_BASE - 24) 42: 43: #define USBSTOR_MEDIUM_COMMAND_ERROR (USBSTOR_ERRCODE_BASE - 4) 44: 45: #define USBSTOR_MEDIUM_COMMAND_NOT_SUPPORT (USBSTOR_ERRCODE_BASE - 5) 46: 47: #define USBSTOR_MEDIUM_FAILED_READ (USBSTOR_ERRCODE_BASE - 6) 48: 49: #define USBSTOR_MEDIUM_FAILED_WRITE (USBSTOR_ERRCODE_BASE - 7) 50: 51: #define USBSTOR_MEDIUM_MAY_HAVE_CHANGED (USBSTOR_ERRCODE_BASE - 8) 52: 53: #define USBSTOR_MEDIUM_NOT_PRESENT (USBSTOR_ERRCODE_BASE - 9) 54: 55: #define USBSTOR_MEDIUM_PARAMETER_ERROR (USBSTOR_ERRCODE_BASE - 10) 56: 57: #define USBSTOR_MEDIUM_PARAMETER_NOT_SUPPORT (USBSTOR_ERRCODE_BASE - 11) 58: 59: #define USBSTOR_MEDIUM_TRANSFER_ERROR (USBSTOR_ERRCODE_BASE - 12) 60: 61: #define USBSTOR_MEDIUM_UNKNOWN_SENSE_ERROR (USBSTOR_ERRCODE_BASE - 13) 62: 63: #define USBSTOR_MEDIUM_WRITE_PROTECT (USBSTOR_ERRCODE_BASE - 14) 64: 65: #define USBSTOR_INTERNAL_FAILED_CORE (USBSTOR_ERRCODE_BASE - 15) 66: 67: #define USBSTOR_INTERNAL_FAILED_MSC (USBSTOR_ERRCODE_BASE - 16) 68: 69: #define USBSTOR_SYS_OUT_OF_RESOURCE (USBSTOR_ERRCODE_BASE - 17) 70: 71: #define USBSTOR_SYS_SYSTEM_ERROR (USBSTOR_ERRCODE_BASE - 18) 72: 73: 74: 75: #define USBSTOR_LOG_ERRCODE_BASE 0x0100 76: 77: 78: #define USBSTOR_LOG_API_MOUNTED_UNIT (USBSTOR_LOG_ERRCODE_BASE + 1) 79: #define USBSTOR_LOG_API_PARAM_ERROR (USBSTOR_LOG_ERRCODE_BASE + 2) 80: #define USBSTOR_LOG_API_UNMOUNT_DRIVE (USBSTOR_LOG_ERRCODE_BASE + 3) 81: 82: #define USBSTOR_LOG_API_NOT_FOUND_UNIT (USBSTOR_LOG_ERRCODE_BASE + 20) 83: #define USBSTOR_LOG_API_UNIT_NOT_READY (USBSTOR_LOG_ERRCODE_BASE + 21) 84: #define USBSTOR_LOG_API_UNIT_NOT_USE (USBSTOR_LOG_ERRCODE_BASE + 22) 85: #define USBSTOR_LOG_API_ILLIGAL_UNIT (USBSTOR_LOG_ERRCODE_BASE + 23) 86: #define USBSTOR_LOG_API_ILLIGAL_DRIVE (USBSTOR_LOG_ERRCODE_BASE + 24) 87: 88: #define USBSTOR_LOG_MEDIUM_COMMAND_ERROR (USBSTOR_LOG_ERRCODE_BASE + 4) 89: #define USBSTOR_LOG_MEDIUM_COMMAND_NOT_SUPPORT (USBSTOR_LOG_ERRCODE_BASE + 5) 90: #define USBSTOR_LOG_MEDIUM_FAILED_READ (USBSTOR_LOG_ERRCODE_BASE + 6) 91: #define USBSTOR_LOG_MEDIUM_FAILED_WRITE (USBSTOR_LOG_ERRCODE_BASE + 7) 92: #define USBSTOR_LOG_MEDIUM_MAY_HAVE_CHANGED (USBSTOR_LOG_ERRCODE_BASE + 8) 93: #define USBSTOR_LOG_MEDIUM_NOT_PRESENT (USBSTOR_LOG_ERRCODE_BASE + 9) 94: #define USBSTOR_LOG_MEDIUM_PARAMETER_ERROR (USBSTOR_LOG_ERRCODE_BASE + 10) 95: #define USBSTOR_LOG_MEDIUM_PARAMETER_NOT_SUPPORT (USBSTOR_LOG_ERRCODE_BASE + 11) 96: #define USBSTOR_LOG_MEDIUM_TRANSFER_ERROR (USBSTOR_LOG_ERRCODE_BASE + 12) 97: #define USBSTOR_LOG_MEDIUM_UNKNOWN_SENSE_ERROR (USBSTOR_LOG_ERRCODE_BASE + 13) 98: #define USBSTOR_LOG_MEDIUM_WRITE_PROTECT (USBSTOR_LOG_ERRCODE_BASE + 14) 99: #define USBSTOR_LOG_INTERNAL_FAILED_CORE (USBSTOR_LOG_ERRCODE_BASE + 15) 100: #define USBSTOR_LOG_INTERNAL_FAILED_MSC (USBSTOR_LOG_ERRCODE_BASE + 16) 101: #define USBSTOR_LOG_SYS_OUT_OF_RESOURCE (USBSTOR_LOG_ERRCODE_BASE + 17) 102: #define USBSTOR_LOG_SYS_SYSTEM_ERROR (USBSTOR_LOG_ERRCODE_BASE + 18) 103: 104: 105: 106: #define USBSTOR_WARNCODE_BASE 0x0400 107: #define USBSTOR_WARNING_OVERCONN (USBSTOR_WARNCODE_BASE + 1) 108: #define USBSTOR_WARNING_NOT_SUPPORT_MULTI_LUN (USBSTOR_WARNCODE_BASE + 2) 109: 110: 111: 112: #define STOR_RW_MILESTONE_ERA FALSE 113: 114: 115: #define USBSTOR_CHECKPOINT_BASE 0x1000 116: #define USBSTOR_CHKPOINTS_API_INITIALIZE (USBSTOR_CHECKPOINT_BASE + 1) 117: #define USBSTOR_CHKPOINTS_API_FINALIZE (USBSTOR_CHECKPOINT_BASE + 2) 118: #define USBSTOR_CHKPOINTS_API_REREGISTCB (USBSTOR_CHECKPOINT_BASE + 3) 119: #define USBSTOR_CHKPOINTS_API_MOUNT (USBSTOR_CHECKPOINT_BASE + 4) 120: #define USBSTOR_CHKPOINTS_API_UNMOUNT (USBSTOR_CHECKPOINT_BASE + 5) 121: #define USBSTOR_CHKPOINTS_API_GETUNMOUNTUNIT (USBSTOR_CHECKPOINT_BASE + 6) 122: #define USBSTOR_CHKPOINTS_API_GETUNITINFO (USBSTOR_CHECKPOINT_BASE + 7) 123: #define USBSTOR_CHKPOINTS_API_GETUNITSTATUS (USBSTOR_CHECKPOINT_BASE + 8) 124: #define USBSTOR_CHKPOINTS_API_READSECTOR (USBSTOR_CHECKPOINT_BASE + 9) 125: #define USBSTOR_CHKPOINTS_API_WRITESECTOR (USBSTOR_CHECKPOINT_BASE + 10) 126: #define USBSTOR_CHKPOINTS_EVNT_ATTACH_DEVICE (USBSTOR_CHECKPOINT_BASE + 11) 127: #define USBSTOR_CHKPOINTS_EVNT_DETACH_DEVICE (USBSTOR_CHECKPOINT_BASE + 12) 128: #define USBSTOR_CHKPOINTS_API_STARTSTOP (USBSTOR_CHECKPOINT_BASE + 13) 129: 130: 131: #define STOR_MAJOR_VERSION (0x01) 132: 133: #define STOR_MINOR_VERSION (0x00) 134: 135: 136: typedef enum _STOR_CALLBACK_ID { 137: CBID_STOR_DEVATTACH, 138: CBID_STOR_DEVATTACH_NOT_READY, 139: CBID_STOR_DEVATTACH_NOT_USE, 140: CBID_STOR_DEVDETACH 141: } STOR_CALLBACK_ID; 142: 143: typedef enum _STOR_UNIT_STATUS { 144: STOR_READY, 145: STOR_NOT_READY, 146: STOR_NOT_USE 147: } STOR_UNIT_STATUS; 148: 149: typedef enum _STOR_IMMED_STATUS { 150: STOR_IMMED_CLR, 151: STOR_IMMED_SET 152: } STOR_IMMED_STATUS; 153: 154: typedef enum _STOR_LOEJ_STATUS { 155: STOR_LOEJ_CLR, 156: STOR_LOEJ_SET 157: } STOR_LOEJ_STATUS; 158: 159: typedef enum _STOR_START_STATUS { 160: STOR_START_CLR, 161: STOR_START_SET 162: } STOR_START_STATUS; 163: 164: 165: 167: typedef struct StorUnit* PSTOR_UNIT; 168: 169: 174: typedef void* PUSER_DRV; 175: 176: 180: typedef struct StorUnitInfo { 181: uhs_ubit16_t u16BlockSize; 182: uhs_ubit32_t u32LastBlockAddress; 183: uhs_boolean_t bRemovable; 184: uhs_ubit8_t u8VendorName[8 + 1]; 185: uhs_ubit8_t u8ProductName[16 + 1]; 186: } STOR_UNIT_INFO, *PSTOR_UNIT_INFO; 187: 188: 189: typedef struct StorStartStopUnitInfo { 190: STOR_IMMED_STATUS Immed; 191: STOR_LOEJ_STATUS LoEj; 192: STOR_START_STATUS Start; 193: } STOR_STARTSTOP_UNIT_INFO, *PSTOR_STARTSTOP_UNIT_INFO; 194: 195: 196: extern uhs_sbit32_t Usbh_Stor_Mount(PSTOR_UNIT pUnit, PUSER_DRV pDrv); 197: extern uhs_sbit32_t Usbh_Stor_Unmount(PUSER_DRV pDrv); 198: extern PSTOR_UNIT Usbh_Stor_GetUnmountUnit(void); 199: extern uhs_sbit32_t Usbh_Stor_GetUnitInfo(PSTOR_UNIT pUnit, STOR_UNIT_INFO *pInfo); 200: extern STOR_UNIT_STATUS Usbh_Stor_GetUnitStatus(PSTOR_UNIT pUnit); 201: extern uhs_sbit32_t Usbh_Stor_ReadSector(PUSER_DRV pDrv, uhs_ubit32_t u32LBA, uhs_ubit16_t u16BlockCount, uhs_ubit8_t *pDataBuffer); 202: extern uhs_sbit32_t Usbh_Stor_WriteSector(PUSER_DRV pDrv, uhs_ubit32_t u32LBA, uhs_ubit16_t u16BlockCount, uhs_ubit8_t *pDataBuffer); 203: extern uhs_sbit32_t Usbh_Stor_GetLastError(void *pObj); 204: extern uhs_status_t Usbh_Stor_GetVersion(uhs_ubit8_t* pu8MajorVersion, uhs_ubit8_t* pu8MinorVersion); 205: extern uhs_status_t Usbh_Stor_Api_StartStop(PSTOR_UNIT pUnit,PSTOR_STARTSTOP_UNIT_INFO pstData ); 206: extern int Usbh_Stor_GetAttachDevNum(void); 207: 208: 209: 210: 211: 212: 213: 214: 215: #define CONTEXT_BASE 0x70000000 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: #endif
 
名前 
説明 
 
接続されているデバイス数を取得します 
 
最新のエラーを取得 
 
ストレージユニットの情報の取得 
 
ストレージユニットの状態確認と取得 
 
未マウントのストレージユニットの取得 
 
本クラスドライバのファームウェアバージョン情報を取得をする 
 
ストレージユニットのマウント 
 
指定セクタの読み出し 
 
ストレージドライブのアンマウント 
 
指定セクタの書き込み 
名前 
説明 
マスストレージクラスライバ:メジャーバージョン 
マスストレージクラスドライバ:マイナーバージョン 
ReadSector/WriteSector実行時のMilestone表示有無 TRUE=表示、FALSE=非表示 
ドライブエラー 
ユニットエラー 
マウント済みのユニットが指定された 
ユニットが存在しない 
パラメータ指定に誤りがあった 
ユニットの準備ができていない 
ユニットが使用できない 
未マウントのドライブが指定された 
エラーコードの基準値 
内部エラーが発生した(USB Core) 
内部エラーが発生した(MSC Driver) 
USBストレージデバイスに対するコマンド実行時にエラーが発生した 
必要なコマンドをUSBストレージデバイスがサポートしないため処理を継続できない 
USBストレージデバイスからReadエラーが報告された 
USBストレージデバイスからWriteエラーが報告された 
USBストレージデバイスのメディアが交換された 
USBストレージデバイスにメディアが装着されていない 
USBストレージデバイスからコマンドパラメータエラーが報告された 
必要なコマンドパラメータをUSBストレージデバイスがサポートしないため処理を継続できない 
USBストレージデバイスとのUSB通信でエラーが発生した 
USBストレージデバイスが未知のSenseデータを報告してきた 
ライトプロテクトされている 
USB Storage Class Driver が返却するエラーコード(API戻り値) 正常終了 
システムリソース(メモリ、OSオブジェクト)が確保できなかった 
システムエラーが発生した 
警告コード 
 
名前 
説明 
 
スタートストップユニットコマンド型 
 
ストレージユニットの情報を格納する構造体
本ドライバがストレージユニットの情報を報告するために使用します。
生成タイミング : Usbh_Stor_GetUnitInfo APIの実行前に呼び出す側がメモリ領域を確保して下さい。
削除タイミング : Usbh_Stor_GetUnitInfo APIの呼び出し側の任意のタイミング 
 
スタートストップユニットコマンド型 
 
ストレージユニットの情報を格納する構造体
本ドライバがストレージユニットの情報を報告するために使用します。
生成タイミング : Usbh_Stor_GetUnitInfo APIの実行前に呼び出す側がメモリ領域を確保して下さい。
削除タイミング : Usbh_Stor_GetUnitInfo APIの呼び出し側の任意のタイミング 
 
スタートストップユニットコマンド型 
 
ストレージユニットの情報を格納する構造体
本ドライバがストレージユニットの情報を報告するために使用します。
生成タイミング : Usbh_Stor_GetUnitInfo APIの実行前に呼び出す側がメモリ領域を確保して下さい。
削除タイミング : Usbh_Stor_GetUnitInfo APIの呼び出し側の任意のタイミング 
名前 
説明 
本ドライバの内部データ管理単位であるストレージユニット構造体の参照用データ型
ストレージユニット構造体(struct StorUnit)はドライバの内部データであるため、本API群では保持のために参照用ポインタ型のみを公開します。 
上位ユーザアプリケーションが定義するドライブ表現オブジェクトを受けるためのポインタ型
ストレージクラスドライバの各種APIに対するドライブ指定に使用します。
本ドライバは、ファイルシステム定義のドライブ表現によるドライブを受け取るためにPUSER_DRV型を使用しますが、 ポインタが指すオブジェクト(アドレス)が一致するかどうかでドライブを判定しているためアドレスを変更してのドライブ指定は行わないで下さい。
書き換えた場合の動作保証はありません。 
コールバックID 
Copyright (c) 2017-2025 Axell Corporation. All rights reserved.