Amora: A mobile remote assistant

1,491 views
1,414 views

Published on

Adenilson Cavalcanti

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,491
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
19
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Amora: A mobile remote assistant

  1. 1. Amora: A mobile remote assistant Adenilson Cavalcanti Community Group – INdT (Nokia) adenilson.silva@indt.org.br cavalcantii@gmail.com 1 © INdT 2007 | Company Confidential
  2. 2. Objectives •Explain reasons for design/implementation of Amora •Present tools used •Share knowledge and lessons 2 © INdT 2007 | Company Confidential
  3. 3. Why create Amora Free/OSS 'remote controllers' @ 2007/06 •Abandoned, no longer maintained •Unstable/bad performance •Confusing user interface •Windows only (or poor support for Linux) •Almost impossible to install 3 © INdT 2007 | Company Confidential
  4. 4. Project Size • 3342LOC (8 persons/month): • 3000 visits/month, 132 different 55% ANSI C, 37% Python, 8% C++ nations (november@2007) 4 © INdT 2007 | Company Confidential
  5. 5. ... do brazilians love python+amora? september@2008 5 © INdT 2007 | Company Confidential
  6. 6. Project •GPL 2.0: free/opensource software •officially packaged: Mandriva, Fedora Core, Debian •code base is small •contributors are welcome Webpage http://amora.googlecode.com/ Repository http://amora.googlecode.com/svn/trunk/ 6 © INdT 2007 | Company Confidential
  7. 7. Concept A long way to go... *The project was codenamed P4X (Presenter 4 X) 7 © INdT 2007 | Company Confidential
  8. 8. Concept: design A long way to go... 8 © INdT 2007 | Company Confidential
  9. 9. Implementation Coding can get messy! 9 © INdT 2007 | Company Confidential
  10. 10. Implementation “Programmers shalt not do user interface...” 10 © INdT 2007 | Company Confidential
  11. 11. Implementation Clear vision of where to go is important! 06/16 2.5 months spare time 08/31 rev. 186 1616 LOCs 11 © INdT 2007 | Company Confidential
  12. 12. Today usability 12 © INdT 2007 | Company Confidential
  13. 13. Architecture 13 © INdT 2007 | Company Confidential
  14. 14. Amora lib •ANSI C/POSIX: protocol + communication •Xlib/XTest: window events (portable to other *nix) •imlib: screenshot, resize, rotation •BlueZ: communication •D-BUS: dongle disconnection 14 © INdT 2007 | Company Confidential
  15. 15. Amora library Exec. Server size 25KB... 15 © INdT 2007 | Company Confidential
  16. 16. UI applet 16 © INdT 2007 | Company Confidential
  17. 17. Client Classes •Amora: main loop •Application: main application logic •Wallpaper: main app background image •Help: display help text •Bluetooth: communication •Keyboard: required to draw in Canvas 17 © INdT 2007 | Company Confidential
  18. 18. Protocol •Default log when connecting: [Apr 15 18:34:31]: Accepted connection. Client is 00:18:42:E3:EC:44 [Apr 15 18:34:31]: Read buffer = SCREEN_MODE_ON [Apr 15 18:34:31]: Read buffer = SCREEN_RESOLUTION [Apr 15 18:34:31]: Read buffer = 240 [Apr 15 18:34:31]: Read buffer = 320 •Protocol is: - set screenshot on or off - screen width - screen height 18 © INdT 2007 | Company Confidential
  19. 19. Protocol •Log for screenshot event: [Apr 15 18:39:17]: Read buffer = SCREEN_TAKE •Protocol is: - set orientation (rotate or not) - client ask for screenshot (SCREEN_TAKE) - server answers with image size (56732) - server starts to write data in socket - client must read this data 19 © INdT 2007 | Company Confidential
  20. 20. Screenshot client code 20 © INdT 2007 | Company Confidential
  21. 21. Other protocol commands 21 © INdT 2007 | Company Confidential
  22. 22. Why use Python for client side? Symbian x Java x Python _LIT(Scnst, “Welcome to darkness...”); TBufC8<20> buffer(Scnst); TBufC8<20> copy; TPtr8 ptr = copy.Des(); ptr.Copy(buffer); //Deprecated! printf(“symbian string = %sn”, ptr.PtrZ()); String tmp = new String(quot;Hello, Java is cool!quot;); StringBuffer newer = new StringBuffer(tmp); System.out.println(newer); a = 'Python rulez!'; b = a; print b 22 © INdT 2007 | Company Confidential
  23. 23. How many lines a simple 'hello world' has? LOC por linguagem 70 60 50 Lines of Code 40 LOC 30 import appuifw 20 appuifw.note(u'Hello!') 10 0 Symbian Java Python 23 © INdT 2007 | Company Confidential
  24. 24. Summing up: Python is fun! 24 © INdT 2007 | Company Confidential
  25. 25. Tools •logging: helped to track on missing call to XFlush(); •electric fence: helped to find one memory leak in logging functions; •gtk-devel-list: help for get real root window for GTK apps; •valgrind: server can run fine inside it; •autotools: buildsystem help to support Linux flavors; •doxygen: source code documentation; •subversion: today I would use git... •utest: help to optimize uloop code; 25 © INdT 2007 | Company Confidential
  26. 26. BT terminal •Script to create a terminal sdptool add --channel=1 SP sdptool browser local while true; do rfcomm listen /dev/rfcomm0 1; done 26 © INdT 2007 | Company Confidential
  27. 27. BT terminal 27 © INdT 2007 | Company Confidential
  28. 28. BT Terminal 28 © INdT 2007 | Company Confidential
  29. 29. BT Terminal 29 © INdT 2007 | Company Confidential
  30. 30. Help is welcome •tablet amora: client for internet tablet •ports: Mac OSX, FreeBSD, Solaris (if at least it has a bluetooth stack...) •j2me client: cover other cellphones models •Qt applet: needs some love •features: see project issues list 30 © INdT 2007 | Company Confidential
  31. 31. What is next • D-BUS integration • Tamora (Tablet amora) • Java client 31 © INdT 2007 | Company Confidential
  32. 32. Acknowledgments • INdT (Instituto Nokia de Tecnologia): for contributing to development of this project: hardware, some coding hours, travels, etc • Wilson Prata: the UI, usability and graphic design guy • My fellow programmer friends: Ademar Reis, Thiago M. P. Santos and Tomaz Noleto • Ros Macmahon(j2me), Allison Azevedo (Fedora), Axel Beckert (Debian) 32 © INdT 2007 | Company Confidential
  33. 33. Why packagers are important? • “It just works for me with my new, yes, Nokia 6120c smartphone... so easy! Run apt-get install amora-server” (smihael blog) • “The best remote program i have found is Amora. Works well” (Ubuntu forum) • “And it must have been written by someone with my exact problem... and am thrilled at how easy it was to set up and how smoothly it works.” (Foosel blog) • “Oh, and many thanks to foosel since I found Amora in her blog. ” (Axel Beckert, 2 months before making debian package) 33 © INdT 2007 | Company Confidential
  34. 34. Pycon@BR staff •O rio de janeiro continua lindo... 34 © INdT 2007 | Company Confidential

×