Open main menu

CDOT Wiki β

Changes

Phonegap Healthcare Adapter Design

5,705 bytes added, 20:37, 26 January 2014
no edit summary
{{Admon/obsolete}}
 
[[Category: NexJ_Express]]
[[category: NexJ Express PhoneGap]]
'''''NexJ Medical Peripheral Mobile Adapter''''' Will be designed to enable NexJ's Mobile Healthcare solutions to interact with Bluetooth peripherals.
: ''{{Main|Mobile Medical Device Integration}}'': ''{{See Also|Phonegap Healthcare AdapterBluetooth Implementation|Phonegap Healthcare Adapter Bluetooth Spec}}''
== Class Diagram ==
[[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