Changeset 3473


Ignore:
Timestamp:
Dec 6, 2012, 7:55:54 AM (23 months ago)
Author:
quozl
Message:

OLPC XO-4 - touchscreen and menu interaction, add reference counting to open/close, clean the buffer in stream-poll? so that previous events are not processed again, fix stack effect of selftest, close and reopen the touchscreen over the menu driven test of the touchscreen (not the best solution), all this for #12357.

Location:
cpu/arm/olpc
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • cpu/arm/olpc/cl4/testitems.fth

    r3378 r3473  
    3535: wlan-item     ( -- )  " /wlan"          mfg-test-dev  ; 
    3636: timer-item    ( -- )  " /timer"         mfg-test-dev  ; 
    37 : touch-item    ( -- )  " /touchscreen"   mfg-test-dev 
    38                         " mouse"          mfg-test-dev  ; 
     37: touch-item    ( -- ) 
     38   ?close-touchscreen 
     39   ?close-mouse 
     40   " /touchscreen"   mfg-test-dev 
     41   " mouse"          mfg-test-dev 
     42   ?open-mouse 
     43   ?open-touchscreen 
     44; 
    3945: keyboard-item ( -- )  " keyboard"       mfg-test-dev  ; 
    4046: switch-item   ( -- )  " /accelerometer" mfg-test-dev 
  • cpu/arm/olpc/nn-touchscreen.fth

    r3440 r3473  
    158158; 
    159159 
     160variable refcount  0 refcount ! 
     161 
    160162: open  ( -- okay? ) 
    161    pbuf-alloc 
    162163   my-unit " set-address" $call-parent 
    163    set-gpios 
    164    no-data?  if 
    165       reset 
     164   refcount @ 0=  if 
     165      pbuf-alloc 
     166      set-gpios 
    166167      no-data?  if 
    167          ." no response to reset" cr 
     168         reset 
     169         no-data?  if 
     170            ." no response to reset" cr 
     171            pbuf-free  false  exit 
     172         then 
     173         ['] read-boot-complete  catch  ?dup  if 
     174            .error 
     175            ." failed to boot" cr 
     176            pbuf-free  false  exit 
     177         then 
     178      else 
     179         flush-input 
     180      then 
     181      ['] configure  catch  ?dup  if 
     182         .error 
     183         ." failed to configure" cr 
    168184         pbuf-free  false  exit 
    169185      then 
    170       ['] read-boot-complete  catch  ?dup  if 
    171          .error 
    172          ." failed to boot" cr 
    173          pbuf-free  false  exit 
    174       then 
    175    else 
    176       flush-input 
    177    then 
    178    ['] configure  catch  ?dup  if 
    179       .error 
    180       ." failed to configure" cr 
    181       pbuf-free  false  exit 
    182    then 
     186   then 
     187   refcount @ 1+  refcount ! 
    183188   true 
    184189; 
    185190 
    186191: close 
    187    deconfigure 
    188    pbuf-free 
     192   refcount @ 1-  0 max  refcount ! 
     193   refcount @ 0=  if 
     194      deconfigure 
     195      pbuf-free 
     196   then 
    189197; 
    190198 
     
    195203 
    196204: stream-poll?  ( -- false | x y buttons true ) 
     205   0 pbuf 2+ c! 
    197206   in?  if 
    198207      \ FIXME: only handles one subpacket 
     
    10421051      .error 
    10431052      ." No touchscreen present" cr  false exit 
    1044    then 
     1053   then                         ( okay? ) 
     1054   0=  if  false exit  then 
    10451055 
    10461056   diagnostic-mode?  if 
Note: See TracChangeset for help on using the changeset viewer.