ECE 411 Final Presentation

1,033 views

Published on

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

  • Be the first to like this

No Downloads
Views
Total views
1,033
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

ECE 411 Final Presentation

  1. 1. Assisted Living Device Overview and Software Implementation Cham Oh December 5, 2005
  2. 2. TOPICS <ul><li>Medical Devices Overview </li></ul><ul><li>RFID Devices Overview </li></ul><ul><li>Cell Phone Programming </li></ul>
  3. 3. Medical Devices <ul><li>Criteria </li></ul><ul><ul><li>Wireless Technology </li></ul></ul><ul><ul><li>Medical Features </li></ul></ul><ul><ul><li>Pluggability </li></ul></ul><ul><ul><li>Programmability </li></ul></ul><ul><ul><li>Design </li></ul></ul><ul><ul><li>Cost </li></ul></ul>
  4. 4. Nonin Pulse Oximeter <ul><li>Bluetooth (30 ft range) </li></ul><ul><li>SpO 2 , heart rate, plethysmographic data </li></ul><ul><li>Can be connected to any bluetooth-enabled device </li></ul><ul><li>Open communication protocols </li></ul><ul><li>Development kit support </li></ul><ul><li>$495 </li></ul><ul><li>www.nonin.com </li></ul>
  5. 5. RFID Devices <ul><li>Long-range detection </li></ul><ul><li>Tracking/locationing </li></ul><ul><li>Programmability </li></ul><ul><li>Design </li></ul><ul><li>Cost </li></ul>
  6. 6. RFID Products <ul><li>RFIDeas </li></ul><ul><li>Xtag </li></ul><ul><li>IAutomate </li></ul>
  7. 7. RFID Issue <ul><li>Is it possible to exactly locate the tag? </li></ul>
  8. 8. Cell Phone Programming <ul><li>Embedded Runtime Environments </li></ul><ul><ul><li>BREW (Binary Runtime Environment for Wireless) </li></ul></ul><ul><ul><ul><li>Developed by Qualcomm </li></ul></ul></ul><ul><ul><ul><li>C/C++ </li></ul></ul></ul><ul><ul><li>J2ME (Java 2 Platform Micro Edition) </li></ul></ul><ul><ul><ul><li>Developed by Sun </li></ul></ul></ul><ul><ul><ul><li>Java </li></ul></ul></ul>
  9. 9. BREW vs. J2ME <ul><li>Deal </li></ul><ul><ul><li>We don’t need a complex program. </li></ul></ul><ul><ul><li>We want freedom in programming. </li></ul></ul><ul><ul><li>We want it for free! </li></ul></ul>Java Runs on VM (Slow) Platform-independent Device-independent Free C/C++ Better for complex apps. Qualcomm-specific Device-dependent Costly J2ME BREW
  10. 10. Cell Phone Programming <ul><li>Which cell phone do we need to purchase? </li></ul><ul><ul><li>Bluetooth </li></ul></ul><ul><ul><li>J2ME </li></ul></ul><ul><ul><li>SDK support </li></ul></ul><ul><li>Motorola </li></ul><ul><ul><li>Bluetooth-enabled </li></ul></ul><ul><ul><li>J2ME support </li></ul></ul><ul><ul><li>Motorola SDK v5.2.1 for J2ME </li></ul></ul><ul><ul><li>Device emulator support </li></ul></ul>
  11. 11. J2ME Development <ul><li>J2ME IDE </li></ul><ul><ul><li>JDK 5.0 Update 6 </li></ul></ul><ul><ul><li>NetBeans with Mobility Pack ( http://www.netbeans.org/downloads/index.html ) </li></ul></ul><ul><ul><li>CodeWarrior Wireless Studio 7.0 ( http://www.metrowerks.com ) – pay toolkit </li></ul></ul><ul><li>Java APIs </li></ul><ul><ul><li>Bluetooth Wireless Technology (JABWT), JSR082 </li></ul></ul><ul><ul><li>Network APIs </li></ul></ul>
  12. 12. Bluetooth Stack
  13. 13. Bluetooth Application
  14. 14. Initialization <ul><li>... </li></ul><ul><li>private LocalDevice localDevice; // local Bluetooth Manager </li></ul><ul><li>private DiscoveryAgent discoveryAgent; // discovery agent ... </li></ul><ul><li>/** * Initialize */ </li></ul><ul><li>public void btInit() throws BluetoothStateException </li></ul><ul><li>{ </li></ul><ul><li>localDevice = null; </li></ul><ul><li>discoveryAgent = null; </li></ul><ul><li>// Retrieve the local device to get to the Bluetooth Manager localDevice = LocalDevice.getLocalDevice(); </li></ul><ul><li>// Servers set the discoverable mode to GIAC localDevice.setDiscoverable(DiscoveryAgent.GIAC); </li></ul><ul><li>// Clients retrieve the discovery agent </li></ul><ul><li>discoveryAgent = localDevice.getDiscoveryAgent(); } </li></ul><ul><li>... </li></ul>
  15. 15. DiscoveryAgent / DiscoveryListener
  16. 16. Device Discovery State
  17. 17. Service Discovery State
  18. 18. Discovering Nearby Dervices <ul><li>public class BtClient implements DiscoveryListener { </li></ul><ul><li>... </li></ul><ul><li>Vector discoveredDevices = new Vector(); </li></ul><ul><li>... </li></ul><ul><li>// DiscoveryListener Callbacks /////////////////////// </li></ul><ul><li>/** </li></ul><ul><li> * deviceDiscovered() is called by the DiscoveryAgent when </li></ul><ul><li> * it discovers a device during an inquiry. </li></ul><ul><li> */ </li></ul><ul><li>public void deviceDiscovered ( javax.bluetooth.RemoteDevice remoteDevice, javax.bluetooth.DeviceClass deviceClass) { </li></ul><ul><li>// Keep track of discovered remote devices by inserting </li></ul><ul><li>// them into a Vector </li></ul><ul><li> ... </li></ul><ul><li>} </li></ul><ul><li>/** </li></ul><ul><li> * inquiryCompleted() is called by the DiscoveryAgent when </li></ul><ul><li> * a device discovery cycle finishes. </li></ul><ul><li> */ </li></ul><ul><li>public void inquiryCompleted (int param) { </li></ul><ul><li>// Now that the inquiry has been completed, if any </li></ul><ul><li>// devices were discovered trigger the search for services </li></ul><ul><li>... </li></ul><ul><li>} </li></ul>
  19. 19. Discovering Nearby Services <ul><li>/** </li></ul><ul><li> * servicesDiscovered() is called by the DiscoveryAgent when </li></ul><ul><li> * a service search finds services. </li></ul><ul><li> * transID identifies the service search that returned results. </li></ul><ul><li> * serviceRecord holds references to the services found. </li></ul><ul><li>*/ </li></ul><ul><li>public void servicesDiscovered (int transID, javax.bluetooth.ServiceRecord[] serviceRecord) { </li></ul><ul><li>// Keep track of discovered services, adding them </li></ul><ul><li>// to a Vector </li></ul><ul><li>... </li></ul><ul><li>} </li></ul><ul><li> /** </li></ul><ul><li> * serviceSearchCompleted() is called by the DiscoveryAgent </li></ul><ul><li> * implementation when a service search finishes. </li></ul><ul><li> * transID identifies a particular service search. </li></ul><ul><li> * responseCode indicates why the service search ended. </li></ul><ul><li> */ </li></ul><ul><li>public void serviceSearchCompleted (int transID, int responseCode) { </li></ul><ul><li> // Now that the service discovery has been completed, </li></ul><ul><li> // dispatch thread to handle the discovered services </li></ul><ul><li>... </li></ul><ul><li>} </li></ul>
  20. 20. UUID Class <ul><li>Universally Unique Identifier required for each service </li></ul><ul><li>Represents short (16 or 32-bit) and long (128-bit) UUIDs </li></ul><ul><li>Use command uuidgen (Windows), or uuidgen –t (Linux) </li></ul><ul><li>Ex) 2d266186-01fb-47c2-8d9f-10b8ec891363 </li></ul>
  21. 21. SDDB and ServiceRecord Class
  22. 22. Device Management LocalDevice Class
  23. 23. RemoteDevice Class
  24. 24. Bluetooth Communication
  25. 25. Network APIs <ul><li>CommConnection for serial interface </li></ul><ul><li>HTTP connection </li></ul><ul><li>HTTPS connection </li></ul><ul><li>Socket Support </li></ul><ul><li>UDP </li></ul><ul><li>SSL </li></ul>
  26. 26. Socket Connection
  27. 27. Socket Connection
  28. 28. References <ul><li>Sun’s J2ME: http://java.sun.com/j2me </li></ul><ul><li>Bluetooth Development Article: http://developers.sun.com/techtopics/mobility/apis/articles/bluetoothintro/index.html </li></ul><ul><li>Network Implementation: http://developers.sun.com/techtopics/mobility/midp/articles/midp2network/ </li></ul><ul><li>Motorola Developer Program: http://www.motocoder.com </li></ul>

×