Changeset 3473


Ignore:
Timestamp:
Dec 6, 2012, 7:55:54 AM (3 years 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.