Difference between revisions of "Phonegap Healthcare Adapter Design"
Cwdesautels (talk | contribs) (Created page with 'Category: NexJ_Express category: NexJ Express PhoneGap category: NexJ Express Research '''''NexJ Medical Peripheral Mobile Adapter''''' Will be designed to enable Ne…') |
|||
(16 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 == | ||
− | [[File:NexjBluetooth.png]] | + | [[File:NexjBluetooth.png|right]] |
+ | === 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 ==== | ||
+ | * [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 === | ||
+ | ==== [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] ==== | ||
+ | * Supports many 'paired' devices | ||
+ | * [http://developer.android.com/reference/android/bluetooth/BluetoothAdapter.html BluetoothAdapter] is the starting point for all Bluetooth communication | ||
+ | ** Discover devices | ||
+ | ** Query addresses | ||
+ | ** Get remote [http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html BluetoothDevice] objects | ||
+ | ** Control [http://developer.android.com/reference/android/bluetooth/BluetoothProfile.html BluetoothProfile]'s | ||
+ | ** Create listening sockets to addresses | ||
+ | * Classes Implementing [http://developer.android.com/reference/android/bluetooth/BluetoothProfile.html BluetoothProfile] can be queried for [http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html BluetoothDevice] Objects, implementing classes: | ||
+ | ** [http://developer.android.com/reference/android/bluetooth/BluetoothA2dp.html BluetoothA2dp] | ||
+ | ** [http://developer.android.com/reference/android/bluetooth/BluetoothHeadset.html BluetoothHeadset] | ||
+ | ** [http://developer.android.com/reference/android/bluetooth/BluetoothHealth.html BluetoothHealth] | ||
+ | * [http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html BluetoothDevice] objects allow the creation secure and insecure [http://developer.android.com/reference/android/bluetooth/BluetoothSocket.html 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 |
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