iXpand SDK – Data Sheet

Revision 1.0

2nd SEP, 2016

Western Digital Technologies, Inc.

951 SanDisk Drive Milpitas, CA 95035-7933 Phone: 408-801-1000

C O N F I D E N T I A L

iXpand SDK – Data Sheet

Table of Contents

INTRODUCTION ...... 3 IXPAND SDK ARCHITECTURE ...... 3 IXPAND SYSTEM CONTROLLER ...... 3 IXAND CONTROLLER ...... 4 IXPAND ACCESSORY CONTROLLER ...... 4 IXPAND FILE SYSTEMS SUPPORT ...... 4 IXPAND HARDWARE ABSTRACTION LAYER ...... 4 IXPAND SDK SUMMARY ...... 4 IXPAND SDK BUNDLE ...... 4 HOW DEVELOPERS INTEGRATE SDK? ...... 5 LICENSE ...... 5

SanDisk® Proprietary & Confidential Copyright © 2016 Western Digital Corporation or its affiliates iXpand SDK – Data Sheet

Introduction iXpand SDK enables third party application developers to seamlessly access and manage iXpand devices from their own iOS applications. iXpand SDK APIs are categorized as System APIs and File System APIs. System APIs are meant for initializing iXpand device, managing iXpand device sessions and other functionalities. iXpand File system APIs provide all the file system functionalities required to manage data.

iXpand SDK Architecture iXpand SDK contains a number of controllers – System controller, file system controller and accessory controller, actual file system implementation and hardware abstraction layer.

3rd Party APPLICATION

iXpand SDK API (System & File System API)

iXpand System Controller iXpand File System Controller

File System (FAT32 & exFAT)

iXpand Accessory Controller

Hardware Abstraction Layer

iXpand Device

Figure 1 Block Diagram

Following sections will provide details of all the modules. iXpand System Controller iXpand system controller contains the initialization part of the iXpand Device. The drive initialization is done by initialization drive and session APIs. Third party application has to initialize the drive first followed by open session. These initialization APIs initialize accessory controller and calls the iXpand Device via H/W layer.

SanDisk® Proprietary & Confidential Copyright © 2016 Western Digital Corporation or its affiliates iXpand SDK – Data Sheet

iOS framework allows only one application to access the drive at a time. Our SDK overcomes that limitation with proper acquire/release mechanism to facilitate multiple applications access the drive, one after other. If the application doesn’t use accessory, application has to immediately release accessory so that other applications can use the drive. System controller implements logic for multiple applications synchronization. iXand File System Controller iXpand file system controller is the interface between the iXpand filesystem API’s and the actual file system API’s. The filesystem with interact with the accessory controller which calls H/W layer and communicate to the iXpand device. iXpand file system initialization done from the system controller open session. The filesystem initialization checks for the FAT32 and exFAT filesystem and return success to open session. iXpand Accessory Controller iXpand Accessory Controller is the interface between iXpand system controller, iXpand filesystem controller and the H/W layer. The Accessory controller calls the H/W abstraction layer which directly communicate to the iXpand device. iXpand File Systems Support iXpand SDK supports FAT32 and exFAT filesystems. The iXpand filesystem controller manages the FAT32 and exFAT filesystem API’s and calls the filesystem API’s based on the filesystem type. iXpand Hardware Abstraction Layer iXpand SDK communicates with drive over iAP protocol which in turn implemented over USB protocol. iAP(iPod Accessory Protocol) is proprietary protocol implemented by Apple to facilitate communication between accessories and iOS devices. iXpand SDK APIs Summary Following table summarizes iXpand APIs functionalities. File System APIs System APIs File Open Drive Initialization File Read Session Open File Write Session Search File / Directory Battery Level Delete File / Directory File System Type Seek File Multi-apps synchronization Close File Drive history Get File Size Device Type Get Drive Space Drive Connection Status Get / Set File Attributes SDK Version Get / Set Drive label Drive Initialization iXpand SDK Bundle Following components are bundled in the iXpand SDK.  iXpand SDK Binary  iXpand SDK User Guide  Release Note

SanDisk® Proprietary & Confidential Copyright © 2016 Western Digital Corporation or its affiliates iXpand SDK – Data Sheet

 Sample Application  iXpand Simulator  iXpand Simulator User Guide  iXpand SDK Documentations

How developers integrate SDK?

1. Take iXpandSDKlib.framework which is present under SDK_Binary folder. 2. Integrate with your application x-code project. 3. Include the iXpandSDKlib/iXpandSDKlib.h in your application files. 4. Use the System API’s and the FileSystem API’s which are available in the header file. 5. Initdrive and the open session is the first initialization part before calling any file system API’s. 6. Get the iXpand Device and check the application with our integrated SDK. Refer demo application for easy usage of iXpand SDK and the iXpand SDK API’s.

LICENSE iXpand SDK contains the FATFS open source taken from following link http://elm-chan.org/fsw/ff/00index_e.html

More details on FAT FS file system can be found under the following link http://elm-chan.org/fsw/ff/en/appnote.html#license

SanDisk® Proprietary & Confidential Copyright © 2016 Western Digital Corporation or its affiliates