universal serial bus 컴퓨터와 주변기기를 연결하는 데 쓰이는 입출력 표준...
TRANSCRIPT
USBUr Special Back-up
2008315971 임혁준2007314869 성노섭
Ur Special Back Up
Ur Special Back Up
Contents
I. Introduction of USB
II. Topology of USB
III. Hierarchy of USB Device
IV. Motivation
V. What is Ur Special Back-up
VI. Sequence of Back-up
VII. Class Diagram
VIII. Priority of Method
IX. Task Allocation
X. Difficulties of implementation
Ur Special Back Up
1. Introduction
Ur Special Back Up
Introduction of USB
Universal Serial Bus
컴퓨터와 주변기기를 연결하는 데 쓰이는 입출력 표준 가운데 하나 (USB 1.0, 1.1, 2.0, 3.0 등 )
Ur Special Back Up
Topology of USB Bus
UsbHostController - On-borad - PCI cards
Ur Special Back Up
Hierarchy of USB Device
Ur Special Back Up
2. Ur Special Back-up
Ur Special Back Up
Motivation
Ur Special Back Up
What is Ur Special Back-up
SAVE
Ur Special Back Up
Get Busses Info
.
Get Mounted Busses
Lis-ten-ing
Get Newl
y Mounted
Busses
Get De-vice Info
.
Get GUID
File I/O
Back-up
Sequence of Back-up
Ur Special Back Up
Class DiagramRunUsbController
OBSERVATION_TIME : private static final intRunUSBControllerTest : publiclstDeviceNames : private static Listhost : private HostAboutMountedbusses : private static TextAreaAboutComer : public static TextAreaProcessing : public static TextAreaing : public static Checkboxal : public static ArrayListbtnExit : Button
actionPerformed : public voidsetupGui : public voidsetupTextGui : public voidprintUSBStack : private static voidprintDeviceDescriptor : public static voidprintDeviceDescriptorJUSB : public static voidprintConfigurationDescriptor : public static voidprintInterfaceDescriptors : public static voidprintConfigurationDescriptor2 : public static voidprintEndpointDescriptors : public static void
RunUsbControllerTest Root Bus 에 연결된 Usb Device 들의 정보 수집 및 출력
printUSBStack 버스에 연결된 USB Device 들의 port, uniqueID, driverKeyName,friendlyDeviceName 출력 , 장치를 JUSB, NON-JUSB 로 구분 .
printDeviceDescriptor idVendor, idProduct, Max Packet Size 등 특정 장치에 관한 세부적인정보 출력
printDeviceDescriptorJUSB장치가 JUSB driver 를 사용할 수 있을 경우 printDeviceDescriptor 정보와동일한 정보를 출력한다 .
printConfigurationDescriptorgetTotalLength, getNumInterfaces, getConfigurationValue, getAttributes 등의 정보를 출력한다 .
actionPerformedEXIT 버튼 클릭시 시스템을 종료한다 .
Ur Special Back Up
printInterfaceDescriptors :Configuration 정보가 있는 경우 이 장치의 InterfaceClass,getInterfaceProtocol 등의 정보를 출력한다 .
printConfigurationDescriptor2 :JUSB driver 를 이용할 수 있는 경우 사용되며 내용은printInterfaceDescriptors 와 동일하다 .
printEndpointDescriptors :EndpointAddress, MaxPacketSize, Attribute 를 얻는다 .
setupGui :기본 frame 을 생성하고 이 위에 생성되는 객체의 글씨체 , 위치 등을설정 및 WindowListener 에 창 종료를 이벤트를 연결한다 .실행시 Bus 들의 정보를 출력한다 .
setupTextGui :USBListener 에 마운트 되는 device 정보와 파일 전송 시 파일전송목록을 표시한다 .
Class DiagramRunUsbController
OBSERVATION_TIME : private static final intRunUSBControllerTest : publiclstDeviceNames : private static Listhost : private HostAboutMountedbusses : private static TextAreaAboutComer : public static TextAreaProcessing : public static TextAreaing : public static Checkboxal : public static ArrayListbtnExit : Button
actionPerformed : public voidsetupGui : public voidsetupTextGui : public voidprintUSBStack : private static voidprintDeviceDescriptor : public static voidprintDeviceDescriptorJUSB : public static voidprintConfigurationDescriptor : public static voidprintInterfaceDescriptors : public static voidprintConfigurationDescriptor2 : public static voidprintEndpointDescriptors : public static void
Ur Special Back Up
GetGUID
getGUID : public static Ar-rayList
getGUID :프로그램이 동작할 시에 할당된 GUID 정보에 USBListener 에 의해 추가 된 GUID정보를 비교하고 파일이 전송 될 GUID 정보를 얻기 위해 사용된다 .
Class Diagram
UsbCopyTo
CopyFrom : public static voidCopyTo : public static void
CopyFrom :원본파일이 위치한 곳의 정보와 저장할 곳의 위치 정보를 입력 받고 , 원본파일이위치한 곳의 위치에 폴더가 존재할 경우 하위 폴더를 탐색을 위해 CopyTo 메소드를 호출한다 .
CopyTo :CopyFrom 으로 부터 전달 받은 Path 정보를 바탕으로 원본파일 위치가 폴더일 경우폴더 아래 모든 파일을 복사하기 위해 CopyTo 메소드를 recursive 하게 호출한다 .
Ur Special Back Up
ControllerUSBListener
bus : private Busal2 : static ArrayListal3 : static ArrayList
busAdded : public voidbusRemoved : public voiddeviceAdded : public voiddeviceRemoved : public voidprintUSBStack : private void
busAdded :USBListener 에서 새로운 Bus 장치가 Mount 되었을 경우에 대한 action 을 처리한다 .
busRemoved :USBListener 에서 새로운 Bus 장치가 Mount 되었을 경우에 대한 action 을 처리한다 .
deviceAdded :USBListener 에서 새로운 USB 가 Mount 되었을 경우에 대한 action 을 처리한다 .USB 장치가 새롭게 Mount 됨과 동시에 USB 에 저장된 모든 파일을 Hard-disk 로전송한다 .
deviceRemoved :USBListener 에서 USB 장치가 제거 되었을 경우에 대한 action 을 처리한다 .제거 된 장치 정보를 출력해 준다 .
printUSBStack :Device 정보를 출력한다 .
Class Diagram
Ur Special Back Up
ControllerUSBListener Rating
busAddedbusRemoveddeviceAddeddeviceRemovedprintUSBStack
33121
Priority of Method
GetGUID Rating
getGUID 1 ★
UsbCopyTo Rating
CopyFrom CopyTo
12
RunUsbController Rating
actionPerformedsetupGui setupTextGuiaprintUSBStack printDeviceDescriptorprintDeviceDescriptorJUSBprintConfigurationDescriptorprintInterfaceDescriptorsprintConfigurationDescrip-tor2printEndpointDescriptors
6551 ★143332
Ur Special Back Up
3. Conclusion
Ur Special Back Up
Task allocation
임혁준 - printUSBStack() * printDeviceDescriptor(); * printDeviceDescriptorJUSB() * printConfigurationDescriptor(); * printInterfaceDescriptors(); * printEndpointDescriptors();
성노섭 - setupGui(); - setupTextGui(); - getGUID() - CopyTo() - CopyFrom() - ControllerUSBListener * deviceRemoved() * deviceAddes()
Ur Special Back Up
Difficulties of Implementation
임혁준
1. USB 구조의 이해
2. 구조의 이해 후 구현에 있어서 Device Descriptor 를 얻기 위한
JAVA 예제가 전무한 것이 가장 힘들었다 .
3. Compile 시에 라이브러리와의 연동을 위해서 SYSTEM32 에 JUSB.SYS 를 복사하고 ,
장치정보를 등록하기 위해서 레지스트리에 PATH 정보를 등록
4. LISTENER 를 위해 정보를 추출해야 하는데 얻은 DEVICE DESCRIPTOR 의 정보를
하나씩 출력하면서 추적하는 것도 힘들었다 .”
Ur Special Back Up
Difficulties of Implementation
성노섭
1. LISTENER 의 구현을 위해서 필요한 정보의 획득
2. 그 후에 얻은 DEVICE 정보를 토대로 어떻게 전송을 할 것인가
3. USB 통신에서의 4 가지 방식 (bulk, interrupt, control, isomorphic) 중에서 일반적인
bulk 통신을 기반으로 파일전송을 시도했는데 , API 상으로는 구현되어 있지 않았다 .
4. 전송을 위해서 Mount 된 드라이버의 GUID 를 얻는 것이 선행되어야 했는데 ,
Device Descriptor 에서 얻은 Unique ID 에 그 정보가 있다는 것을 알았지만 ,
보안을 위해서 암호화되어 있었기 때문에 우회적인 방법의 탐색
Ur Special Back Up
Thank you ~
Ur Special Back Up