Difference between revisions of "Phonegap Healthcare Adapter Design"
Cwdesautels (talk | contribs) (→Bluetooth) |
|||
(8 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
+ | {{Admon/obsolete}} | ||
+ | |||
[[Category: NexJ_Express]] | [[Category: NexJ_Express]] | ||
[[category: NexJ Express PhoneGap]] | [[category: NexJ Express PhoneGap]] | ||
Line 5: | Line 7: | ||
'''''NexJ Medical Peripheral Mobile Adapter''''' Will be designed to enable NexJ's Mobile Healthcare solutions to interact with Bluetooth peripherals. | '''''NexJ Medical Peripheral Mobile Adapter''''' Will be designed to enable NexJ's Mobile Healthcare solutions to interact with Bluetooth peripherals. | ||
− | : ''{{Main|Phonegap Healthcare Adapter}}'' | + | : ''{{Main|Mobile Medical Device Integration}}'' |
+ | : ''{{See Also|Phonegap Healthcare Adapter Bluetooth Implementation|Phonegap Healthcare Adapter Bluetooth Spec}}'' | ||
== Class Diagram == | == Class Diagram == | ||
Line 40: | Line 43: | ||
=== iOS === | === iOS === | ||
==== Wifi ==== | ==== Wifi ==== | ||
− | * | + | * Unknown at this time |
==== Bluetooth ==== | ==== Bluetooth ==== | ||
+ | * [http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CBCentralManager_Class/translated_content/CBCentralManager.html#//apple_ref/doc/uid/TP40011284 CBCentralManager] entry point to Bluetooth communication | ||
+ | ** Allows querying of devices | ||
+ | ** Can list connected devices | ||
+ | ** Can connect to devices, creating [http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CBPeripheral_Class/translated_content/CBPeripheral.html#//apple_ref/doc/c_ref/CBPeripheral CBPreripheral] Objects | ||
+ | * [http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CBPeripheral_Class/translated_content/CBPeripheral.html#//apple_ref/doc/c_ref/CBPeripheral CBPeripheral]'s allows reading and writing of [http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CBCharacteristic_Class/translated_content/CBCharacteristic.html#//apple_ref/doc/c_ref/CBCharacteristic CBCharacteristic] Objects | ||
+ | ** Can listen for changes to characteristics | ||
+ | ** Writing and reading is event driven programing via callback parameters | ||
+ | * [http://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CBCharacteristic_Class/translated_content/CBCharacteristic.html#//apple_ref/doc/c_ref/CBCharacteristic CBCharacteristic]'s represent a piece of data from a device along with semantic data | ||
+ | |||
=== Android === | === Android === | ||
==== [http://developer.android.com/reference/android/net/wifi/p2p/package-summary.html Wifi] ==== | ==== [http://developer.android.com/reference/android/net/wifi/p2p/package-summary.html Wifi] ==== | ||
+ | * [http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html WifiP2pManager] is the starting point for all peer to peer communication | ||
+ | ** Upon initialization devices connections can be established | ||
+ | ** Peers can be queried | ||
==== [http://developer.android.com/reference/android/bluetooth/package-summary.html Bluetooth] ==== | ==== [http://developer.android.com/reference/android/bluetooth/package-summary.html Bluetooth] ==== | ||
+ | * Supports many 'paired' devices | ||
* [http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html BluetoothAdapter] is the starting point for all Bluetooth communication | * [http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html BluetoothAdapter] is the starting point for all Bluetooth communication | ||
− | |||
** Discover devices | ** Discover devices | ||
** Query addresses | ** Query addresses | ||
Line 59: | Line 74: | ||
** These all data transfer between physical devices | ** These all data transfer between physical devices | ||
** Bluetooth protocols are transparent | ** Bluetooth protocols are transparent | ||
+ | |||
+ | === Comparison === | ||
+ | ==== Requirements ==== | ||
+ | * Querying of devices | ||
+ | ** Supported by both platforms on both communication mediums | ||
+ | * The ability to fetch data from devices | ||
+ | ** Supported by both platforms on both communication mediums | ||
+ | ** Assuming connections have been created with medical devices, this requires a known address to be cross referenced with current devices from the ''query'' functionality above | ||
+ | * ''Optional'' The ability to push data to devices | ||
+ | ** See above | ||
+ | ==== Assumptions ==== | ||
+ | * NexJ's spec dictates that devices can be assumed paired | ||
+ | * Any semantic information required will be provided upon initialization |
Latest revision as of 19:37, 26 January 2014
NexJ Medical Peripheral Mobile Adapter Will be designed to enable NexJ's Mobile Healthcare solutions to interact with Bluetooth peripherals.
- Main article: Mobile Medical Device Integration
Contents
Class Diagram
Classes
phonegapMedicalDeviceInterface
- Interface to a medical device for use by the NexJ mobile health solution
- Implemented in Javascript
medicalDevice
- Representation of a medical device
- Delegates to a native medical device interface
- Implemented in Javascript
nativeMedicalDeviceInterface
- Private interface to physical medical devices
- Implemented in native code (Objective C on iOS, java on Android)
bluetoothAdapter
- Adapter to allow medical device objects to interact with communication libraries on the device
- In the future a Wifi adapter will also be needed to fulfill the same role of communication over another protocol
- Implemented in native code
bloodPressureBluetoothAdapter
- Adapter to allow medical device objects to interact with specific medical peripherals
- These will be needed for each type of medical peripheral
- Implemented in native code
Native Bluetooth API
- Libraries on the mobile devices SDK that allows programmable interaction with Bluetooth devices
Blood Pressure Device
- Physical medical device peripheral
Flaws
- Should we be concerned about managing the instances of medicalDevice or will the rest of the solution
- Rest of the application: It becomes more of a Medical device factory
- This Project: Another layer should be added to represent a device manager
- bloodPressureBluetoothAdapter should know about specific device communication without relying on any specific communication protocol, otherwise it will need be reimplemented per communication adapter(eg. BluetoothAdapter, WifiAdapter)
Mobile Device Libraries
iOS
Wifi
- Unknown at this time
Bluetooth
- CBCentralManager entry point to Bluetooth communication
- Allows querying of devices
- Can list connected devices
- Can connect to devices, creating CBPreripheral Objects
- CBPeripheral's allows reading and writing of CBCharacteristic Objects
- Can listen for changes to characteristics
- Writing and reading is event driven programing via callback parameters
- CBCharacteristic's represent a piece of data from a device along with semantic data
Android
Wifi
- WifiP2pManager is the starting point for all peer to peer communication
- Upon initialization devices connections can be established
- Peers can be queried
Bluetooth
- Supports many 'paired' devices
- BluetoothAdapter is the starting point for all Bluetooth communication
- Discover devices
- Query addresses
- Get remote BluetoothDevice objects
- Control BluetoothProfile's
- Create listening sockets to addresses
- Classes Implementing BluetoothProfile can be queried for BluetoothDevice Objects, implementing classes:
- BluetoothDevice objects allow the creation secure and insecure Bluetooth socket's
- These all data transfer between physical devices
- Bluetooth protocols are transparent
Comparison
Requirements
- Querying of devices
- Supported by both platforms on both communication mediums
- The ability to fetch data from devices
- Supported by both platforms on both communication mediums
- Assuming connections have been created with medical devices, this requires a known address to be cross referenced with current devices from the query functionality above
- Optional The ability to push data to devices
- See above
Assumptions
- NexJ's spec dictates that devices can be assumed paired
- Any semantic information required will be provided upon initialization