add gps
remove cmd return value and make callback asynchronous

Some sensor functions cannot be called on rendering thread
so it is very difficult to know the return value w/o
complicated synchronization.