안드로이드에 터치IC 드라이버 포팅 후 마우스처럼? 인식되는 현상

adiyoung의 이미지

안녕하세요

임베디드리눅스도 처음이고 안드로이드도 직접적으로 개발하는게 처음이다보니까
개념자체가 제대로 안잡혀있고 터치드라이버 포팅도 겨우 한 수준이다보니 모르는게 너무많네요..

일단 안드로이드 4.3에 TSC2007 터치ic를 올렸습니다
커널단에서 좌표값을 제대로 찍어주는것까지 확인했습니다
x, y 좌표의 최대값은 4096인것 같구요
LCD는 해상도가 800*480입니다
그렇다면 드라이버에서 report할 때 값을 800*480에 맞게 수정해서 리포트하면 되는게 맞는건가요?

그리고 첨부파일처럼 포인터가 동그랗게 하나가 생겨있습니다
예를들어 (x:100,y:200) 만큼 드래그했다고 하면, 제가 처음 누른 부분에서부터 100,200을 이동한게 아니라
마우스 포인터마냥 현재찍혀있는 동그라미포인터위치에서부터 100,200만큼 이동이 됩니다
위에서 말씀드렸든 드라이버 개념이 좀 부족하다보니 이게 커널의 문제인지 안드로이드의 문제인지 구분도 잘 안되고 원인을 모르겠네요
도움 주시면 감사하겠습니다

File attachments: 
첨부파일 크기
Image icon 141.png286.92 KB
goforit의 이미지


> 그렇다면 드라이버에서 report할 때 값을 800*480에 맞게 수정해서 리포트하면 되는게 맞는건가요?

예 그게 맞는 것 같습니다.
저도 아주 오래전에 같은 고민을 해서, X Window Server 의 마우스 포인트 값 받는 Event Loop까지 보았습니다.
그 때 드라이버단에서 Scale 값을 유저 영역에 넘겨준 것 같아요. (너무 오래돼서 100% 자신은 없습니다)

adiyoung의 이미지

답변 감사드립니다
해상도 사이즈에 맞게 나눠서 800*480으로 맞췄는데 일단 값은 그럭저럭 잘 올라오는걸로 보입니다.
아직도 마우스처럼 보이는 현상이 있어서 디버깅중인데
안드로이드 프레임웍의 InputReader.cpp에서 로그를 보면 deviceType이 터치스크린이 아닌 마우스로 잡혀있네요
커널에서 InputReader까지의 연결이 어떻게되는지 아직 감을 못잡아서(JNI일까싶긴한데) 좀더 디버깅해봐야 알것 같습니다

adiyoung의 이미지

일정 관계상 모르는 부분을 계속 붙들고 늘어질 여유가 없어서 일단 땜빵처리했습니다;
정확한 원인은 모르나, framework단에서 로그를 확인한 결과 deviceType에 대한 configure가 되어있지 않아서
터치스크린 타입이 아닌 마우스타입으로 동작했던 것입니다
InputReader.cpp에 DEVICE_TYPE_TOUCH_SCREEN 을 강제로 때려박으니 동작에는 문제가 없어서 일단 그렇게 진행하려고합니다
혹 정상적인 방법을 아시는분 계시면 한수 가르쳐주시면 감사하겠습니다

참고로 드라이버 세팅은 다음과 같습니다

input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS);
input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
input_dev->absbit[0] = BIT_MASK(ABS_X) | BIT_MASK(ABS_Y) | BIT_MASK(ABS_PRESSURE);

input_set_abs_params(input_dev, ABS_X, 0, LCD_XRES, pdata->fuzzx, 0);
input_set_abs_params(input_dev, ABS_Y, 0, LCD_YRES, pdata->fuzzy, 0);
input_set_abs_params(input_dev, ABS_PRESSURE, 0, MAX_12BIT,
pdata->fuzzz, 0);

adiyoung의 이미지

감사합니다 덕분에 해결되었습니다

jyw123의 이미지

간단하게 쓰면..
/system/usr/idc/driver_name.idc

driver_name은 deivce driver 안에 있는 input->name 에 들어가는 값을 driver_name.idc 로만들어서 저폴더 안에 넣어두시고
안에 내용은
touch.deviceType = touchScreen

이것만 들어가면 됩니다.

adiyoung의 이미지

idc파일을 system/usr/idc/ 경로에 넣고싶은데 잘 안들어가서 한동안 헤메다가 성공했습니다
BoardConfig.mk에서 PRODUCT_COPY_FILES을 사용해서 집어넣도록 했는데
out폴더로 복사가 안되더라구요.. 컴파일이 문젠지 mk파일을 잘못골랐는지 뭐가문젠지 카피가 제대로 안되더니
여기저기 mk파일들을 건드리다보니 어느샌가 됐네요 결국은 BoardConfig에 넣으면 확실하게 되는건지 아닌지 아직도 아리송하네요 ㅎ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.