앱 동작 설계 - USB 인터페이스
MainActivity에서 USB 인터페이스 클래스(쓰레드) 생성 


USB 쓰레드는 loop를 돌며 1ms 마다 state를 읽어옴

state에는 에러코드. GPIO값, ADC값, UART/I2C/SPI/CAN의 read data count가 들어있음


state에서 GPIO의 input값이 변화하거나, 

UART/I2C/SPI/CAN에서 읽어올 데이터가 있다면

해당 endpoint를 읽어와서

main thread로 sendMessage함


UART/I2C/SPI/CAN으로 써야할 데이터가 있다면

USB 클래스의 writeUART/I2C/SPI/CAN(buffer, length) 함수를 호출

호출된 함수내에서는 write data를 자신의 버퍼에 복사하고

length만큼 write data count를 증가시킴

쓰레드의 loop내에서 write data count를 체크해 

해당 endpoint에 데이터를 씀



* usb thread에서 읽어온 데이터를 main thread로 패치할 때, usb thread의 버퍼 덮어쓰기로 데이터가 오염될 가능성은?

-> usb thread에 잡아 놓은 read buffer가 overflow 되지 않도록, usb에서 read data 하는 것을 일시정지

-> 호스트단에서 읽어온데이터를 처리하는 것이 지연된다면, 디바이스단 버퍼 overflow가 나겠지
    이럴경우 error state에 반영

-> 하지만 디바이스단 보다 호스트단이 월등히 빠르므로 일어날 가능성은 적겠네..

by 바람처럼날다 | 2018/03/10 14:41 | 안드로이드 USB I/O보드 | 트랙백 | 덧글(0)
트랙백 주소 : http://muosys.egloos.com/tb/6308095
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >