add gps
fix send/recv of structs

Structure layout can differ between compilers.
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.