10 likes | 123 Views
Code In The Air : Simplifying Tasking on Smartphones. Tasking Applications. Architecture. Users/Developers. Users/Developers. Run continuously, determine user context/activity and trigger actions. Tasking Framework. Tasking Framework.
E N D
Code In The Air: Simplifying Tasking on Smartphones Tasking Applications Architecture Users/Developers Users/Developers Run continuously, determine user context/activity and trigger actions Tasking Framework Tasking Framework Often involves coordination between multiple users and devices UI Scripting Web Disable Wi-Fi when I am outdoors and moving When I am driving, track and store movement tracks Remind to fax document when I come to office Task Tasks (JavaScript) Task Runtime Task Compiler CITA Server Split-Task Execution Activity Layer Sub task Notify me when my friend is nearby Server Push Service Send me a text message whenever my spouse leaves work Make my phone silent when I am in the lab and I am meeting my advisor Task Coordination Split-Task Execution Split-Task Execution Task Runtime Push Client CITA Client CITA Client CITA Client Activity Layer Phone Sensors - Trivial for end-users to state but non-trivial to develop - Simple implementation can be energy-consuming Activity Layer Demo Code In The Air (CITA) - Several inbuilt activity primitives - Multi-device application InLocation, IsWalking, IsDriving, IsMoving, IsBiking, EnterPlace, LeavePlace, IsOutdoor, … Tiffany would like to be alerted when Hari is nearby. - Rapid development of tasking applications - Activity detection as primitives - CITA helps two groups of people - Energy efficient execution of primitive and complex activities End-Users Developers - State Condition/Action rules in UI - “Mix and match” activities and tasks - Write only server side scripts even for tasks involving * multiple users and devices * a variety of sensors/activities * and the server. - Written in JavaScript Tasking Framework - Single-device application - Server side scripting Disable Wi-Fi when the battery is low and I am not using it. - Program devices as objects - Automatic code partitioning, execution and coordination across multiple devices Reduces coding and deploying effort by 100x