Andrei Vereha
ee0ac46c5a
Finish implementing the LTK exchange
...
On the fake pod:
```
INFO[0067] LTK 21f4a9d825ce5e57bad5b4958c6ff95e
```
Logcat:
```
2021-02-28 18:21:04.763 19530-22490/info.nightscout.androidaps I/PUMPCOMM: [AsyncTask #4 ]: [OmnipodDashBleManagerImpl.connect():86]: Got LTK: 21f4a9d825ce5e57bad5b4958c6ff95e
``
2021-02-28 18:37:36 +01:00
Andrei Vereha
ddb1c18349
ble ltk: implement encryption and message parsing
2021-02-28 18:33:07 +01:00
Andrei Vereha
ddfbd2e7bd
dash ble tlk: start generating keys
2021-02-28 18:33:07 +01:00
Andrei Vereha
39408ac535
BLE LTK: define all the steps
2021-02-28 18:33:07 +01:00
Andrei Vereha
1aa6d02893
ble: implement message reading&joining
...
Now are able to read the first message:
```
INFO[0005] Received SPS1 6b943ec06b594f8a0383f384a3c916da75e1c7846c3e1b73f72f86ee2dc48774b2b4e5ad62d798b76cfd06be1cd4c937
DEBU[0005] Donna LTK: b874cb3cbe487040442138452faeb02d284ac55f489f19593265ff52f7310f1f
DEBU[0005] First key 58cb3b742dc48774000000001cd4c937 :: 16
DEBU[0005] CMACY: 16
DEBU[0005] Intermediar key 4c13eebc4cf09795a07c50bf13786c18 :: 16
DEBU[0005] Pod public 2fe57da347cd62431528daac5fbb290730fff684afc4cfc2ed90995f58cb3b74 :: 32
DEBU[0005] Pod nonce 00000000000000000000000000000000 :: 16
DEBU[0005] Generated SPS1: 535053313d00302fe57da347cd62431528daac5fbb290730fff684afc4cfc2ed90995f58cb3b7400000000000000000000000000000000
TRAC[0005] CMD notification return: 4/00
TRAC[0005] received CMD: 01
TRAC[0005] Sending message: 54570003000006e00000109100001092535053313d00302fe57da347cd62431528daac5fbb290730fff684afc4cfc2ed90995f58cb3b7400000000000000000000000000000000
TRAC[0005] DATA notification return: 23/000354570003000006e000001091000010925350
TRAC[0005] DATA notification return: 23/0153313d00302fe57da347cd62431528daac5fbb
TRAC[0005] DATA notification return: 23/02290730fff684afc4cfc2ed90995f58cb3b7400
TRAC[0005] DATA notification return: 23/030f7d02931d0000000000000000000000000000
TRAC[0005] DATA notification return: 23/0401000000000000000000000000000000000000
TRAC[0005] received CMD: 04
```
2021-02-28 18:33:05 +01:00
Andrei Vereha
81ad52ebce
implement SPS1 command
...
I had to add a new dependency: `tink-android:1.5.0` for X25519
2021-02-28 18:32:21 +01:00
Andrei Vereha
11633995f6
Merge pull request #11 from 0pen-dash/bart/observable-connect
...
Make OmnipodDashBleManager.connect() return an Observable of PodEvents
2021-02-28 18:30:06 +01:00
Bart Sopers
c93705e88f
Add retry for connecting to Pod
2021-02-28 18:22:56 +01:00
Bart Sopers
256cfe077d
Replace single booleans for alerts with EnumSet of AlertType and introduce sealed class AlertTrigger
2021-02-28 18:20:17 +01:00
Bart Sopers
5c8ba98682
Remove TODO
2021-02-28 15:30:12 +01:00
Bart Sopers
aa14843d33
Address review findings
2021-02-28 15:18:10 +01:00
AdrianLxM
76756fabaa
a bit more readable
2021-02-28 14:18:17 +01:00
AdrianLxM
6dce871ed4
fix database
2021-02-28 03:55:01 +01:00
AdrianLxM
2d0d38f70f
database integration test working
2021-02-28 03:30:13 +01:00
Bart Sopers
634b9c20e7
Add interceptors for PodEvents and errors
2021-02-28 00:42:32 +01:00
Bart Sopers
8d629977ec
Improvement
2021-02-27 23:52:06 +01:00
AdrianLxM
86d965a7f1
initial history database
2021-02-27 23:50:51 +01:00
Bart Sopers
7e5667705d
Minor improvement
2021-02-27 23:46:57 +01:00
Bart Sopers
d08a979da3
Make OmnipodDashManager.connect() return an Observable of PodEvents
2021-02-27 23:21:09 +01:00
Andrei Vereha
5ca622a923
Merge branch 'dash-bart-random' into ble-message
2021-02-27 18:45:01 +01:00
Andrei Vereha
899a3d4213
Merge branch 'dash-bart-random' into ble-message
2021-02-27 18:35:14 +01:00
Bart Sopers
dcf7672a24
More cleanup after conversion
2021-02-27 00:39:55 +01:00
Bart Sopers
ba65a47380
Merge branch 'dash-bart-random' into adrian/something
2021-02-26 22:12:39 +01:00
Bart Sopers
0a013b6d2b
Serializable instead of Any for data in PodEvent
2021-02-26 22:10:25 +01:00
AdrianLxM
ae30387a25
cleanups
2021-02-26 21:45:17 +01:00
Andrei Vereha
fb7a84bdf7
ble: add meaninful constants in the PayloadSplitter and getPodId
2021-02-26 21:30:29 +01:00
Andrei Vereha
358748654e
ble: reformat(Ctrl+Alt+L)
2021-02-26 18:30:59 +01:00
Bart Sopers
dbff1c6e50
Add Profile to BasalProgram mapper function, add some preliminary code in OmnipodDashManagerImpl
2021-02-26 17:38:45 +01:00
Andrei Vereha
9170cc6f76
move the test code to "connect"
...
this is wrong, for now I just need an easy way to test the initial handshake
2021-02-26 17:06:03 +01:00
Andrei Vereha
4664d21ddf
format, cleanups
2021-02-26 17:01:53 +01:00
Andrei Vereha
badf8fe24d
ble: sending the first SP1/SP2 pairing command
...
from the fake pod logs
```
INFO[0007] Received SP1 SP2 payload 5350313d0004000010912c5350323d000bffc32dbd08030e0100008a
TRAC[0007] Read field: SP1= :: 00001091 :: 4
TRAC[0007] Read field: ,SP2= :: ffc32dbd08030e0100008a :: 11
INFO[0007] Received SP1 SP2: 00001091 :: ffc32dbd08030e0100008a
```
2021-02-26 17:01:53 +01:00
Andrei Vereha
318c0c642c
WIP: sp1sp2
2021-02-26 17:01:53 +01:00
Andrei Vereha
4e6ad3f113
add comments with the LTK steps
2021-02-26 17:01:53 +01:00
Andrei Vereha
1661d978d0
mark not implemented yet functions
2021-02-26 17:01:53 +01:00
Andrei Vereha
ea4db2c17b
ble: start implementing message reading
2021-02-26 17:01:53 +01:00
Andrei Vereha
af1d505e36
ble:
...
- address review comments: renames and removed unused vars
- implement serialization for BlePackets
- improve logging, add .toHex() where we have []byte
```
INFO[0009] Received SP1 SP2 payload 5350313d0004024200032c5350323d000bffc32dbd20030e01000016
TRAC[0009] Read field: SP1= :: 02420003 :: 4
TRAC[0009] Read field: ,SP2= :: ffc32dbd20030e01000016 :: 11
INFO[0009] Received SP1 SP2: 02420003 :: ffc32dbd20030e01000016
```
2021-02-26 17:01:53 +01:00
Andrei Vereha
08ff02dd4f
ble: start implementing message splitting and sending
2021-02-26 17:01:50 +01:00
Bart Sopers
29c0b62978
Merge branch 'dash' into dash-bart-random
2021-02-26 16:11:21 +01:00
Andrei Vereha
72d0ca774f
define connection status as enum class
2021-02-26 16:04:26 +01:00
Bart Sopers
69c0b5afa7
Add Omnipod Dash GetStatusCommand and ProgramBeepsCommand
2021-02-26 14:41:18 +01:00
Andrei Vereha
f0e333da6c
format
2021-02-26 13:37:44 +01:00
Andrei Vereha
a23c3f2cd8
Define OmnipodDashBleManager interface
2021-02-26 13:35:01 +01:00
Andrei Vereha
2675592a54
Revert "Define OmnipodDashBleManager interface"
...
This reverts commit 2c9e9e7e74
.
2021-02-26 13:34:16 +01:00
Andrei Vereha
2c9e9e7e74
Define OmnipodDashBleManager interface
2021-02-26 13:33:13 +01:00
Bart Sopers
f2922057c0
Convert Omnipod Dash tests to Kotlin
2021-02-26 13:21:27 +01:00
Bart Sopers
85140dfb01
More formatting
2021-02-26 10:41:13 +01:00
Bart Sopers
29617b5d8c
Remove redundant qualifiers
2021-02-26 10:26:30 +01:00
Bart Sopers
04cd03f99f
Address review comments
2021-02-26 10:21:26 +01:00
Bart Sopers
1a12d6cd9d
Formatting after Kotlin conversion
2021-02-26 10:04:33 +01:00
Bart Sopers
cc3b9b7f32
Copied from OmnipodErosOverviewFragment to OmnipodDashOverviewFragment and added lots of TODOS there
2021-02-26 04:12:11 +01:00
Bart Sopers
acfd40e6d1
Add methods to OmnipodDashManager
2021-02-26 02:49:13 +01:00
Bart Sopers
97aac063ee
Add OmnipodDashManagerImpl
2021-02-26 02:45:44 +01:00
Bart Sopers
f32d605567
Add OmnipodDashManager interface
2021-02-26 02:34:30 +01:00
Bart Sopers
a348cb74e7
Implement more methods in OmnipodDashPodStateManagerImpl
2021-02-26 02:15:49 +01:00
Bart Sopers
bd0afdaf16
Resolve TODO
2021-02-26 01:31:13 +01:00
Bart Sopers
41b2602d61
Add OmnipodDashPodStateManager
2021-02-26 01:26:21 +01:00
Bart Sopers
bc8eefaffd
Convert OmnipodDashPumpPlugin to Kotlin
2021-02-25 23:55:12 +01:00
Bart Sopers
d5679e51dd
Merge remote-tracking branch 'origin/adrian/kotlinify-driver-pod' into dash-mgr
2021-02-25 23:22:16 +01:00
AdrianLxM
566d8f172b
make automatic kotlin conversion build - untested, still not idiomatic
2021-02-25 23:11:18 +01:00
Andrei Vereha
9b7d31ba2c
ble: address review comments: renames and removed unused vars
2021-02-25 19:19:06 +01:00
Andrei Vereha
f2fed8adc4
Implement more suggestions after the switch to Kotlin
2021-02-25 11:20:10 +01:00
AdrianLxM
2a14d60bee
kotlin a bit more idiomatic after conversion from Java
2021-02-25 11:20:10 +01:00
Andrei Vereha
647793e0b7
Switch to Kotlin.
...
and
small fixes after conversion
2021-02-25 11:19:59 +01:00
Andrei Vereha
b4d769844c
ble-io: implement confirmation for writes
...
and make sure there is only one one IO operation in progress.
In theory, we could have parallel IO operations on each characteristic,
but I'm not sure yet if we really need to support that.
implement reads
enable notifications. Use BlockingQueue for write confirmations
2021-02-25 11:16:39 +01:00
Andrei Vereha
1ca69ec414
Ble updates
...
- stop Thread.sleep()ing and use CountDownLatches for connection
and service discovery state
- prepare BleIO for reading/writing
- define CharacteristicType for the CMD/DATA characteristics
- prepare BlePacket for DATA packets(the equivalent of BleCommand)
2021-02-24 11:49:24 +01:00
Andrei Vereha
d9cebbbad7
mark BleCommand as abstract
2021-02-23 21:41:20 +01:00
Andrei Vereha
fa8fdd9816
Implement ble-scanning for a new pod
2021-02-23 21:21:17 +01:00
Bart Sopers
12ff37123d
Add and wire some Omnipod Dash UI
2021-02-23 01:26:57 +01:00
Bart Sopers
567c215388
More work in progress on moving stuff from omnipod-eros to omnipod-common
2021-02-21 22:01:59 +01:00
Bart Sopers
b56a3d8132
Merge remote-tracking branch 'upstream/dev' into dash
2021-02-20 18:48:06 +01:00
Bart Sopers
d7a9413a18
Remove redundant class
2021-02-20 17:01:47 +01:00
Bart Sopers
9d2fadf00d
Add PumpDescription in OmnipodDashPumpPlugin
2021-02-20 03:43:04 +01:00
Bart Sopers
c2c9f391dd
Add Omnipod Dash overview
2021-02-20 03:31:50 +01:00
Bart Sopers
87d4ba14cb
WIP on moving parts of omnipod-eros to omnipod-common
2021-02-19 21:19:40 +01:00
Milos Kozak
b6788d210b
Dana module test & lints
2021-02-19 10:29:35 +01:00
Bart Sopers
ecfabccffb
Move several parts of Omnipod Eros driver to omnipod-common, did some renaming and added some preliminary Dash stuff
2021-02-19 09:40:59 +01:00
Milos Kozak
d7ad8eeefc
migrate rest of gradle module files
2021-02-18 23:35:23 +01:00
Bart Sopers
2a38578439
Add empty omnipod-common module
2021-02-18 23:31:31 +01:00
Bart Sopers
9d21338f10
Rename
2021-02-18 10:51:29 +01:00
Bart Sopers
d142da37e8
Finish program temp basal command for Omnipod Dash
2021-02-18 10:42:50 +01:00
Bart Sopers
5347ae4f2d
WIP on Omnipod program temp basal command
2021-02-18 00:31:25 +01:00
Bart Sopers
e961a7990e
Move Omnipod Dash dependencies to core
2021-02-17 19:34:01 +01:00
Bart Sopers
23450aee7e
Add Omnipod Dash bolus command
2021-02-17 19:20:27 +01:00
Bart Sopers
cfbd8aeea4
Remove print statement
2021-02-17 16:10:36 +01:00
Bart Sopers
a3b0044874
Finished Omnipod Dash program basal command
2021-02-17 16:10:18 +01:00
Bart Sopers
8d554fa35b
Rename Omnipod Dash address to uniqueId
2021-02-17 14:42:01 +01:00
Bart Sopers
79c9e9a938
More WIP on Omnipod Dash program basal command
2021-02-17 14:34:08 +01:00
Bart Sopers
1c490f72ae
WIP on Omnipod Dash program basal command
2021-02-17 12:38:16 +01:00
Bart Sopers
c183a68798
WIP on Omnipod Dash set basal and some refactoring
2021-02-14 21:12:22 +01:00
Bart Sopers
6972405809
WIP on Omnipod Dash set basal
2021-02-14 19:45:43 +01:00
Bart Sopers
34553bbcf6
Refactoring
2021-02-14 18:39:18 +01:00
Bart Sopers
d1bf9cefad
Add Encodable interface
2021-02-12 21:47:16 +01:00
Bart Sopers
d944df725f
WIP on ProgramBasalCommand
2021-02-12 21:06:10 +01:00
Bart Sopers
e2e2c579d4
Small fix
2021-02-12 20:17:12 +01:00
Bart Sopers
323f7ae30e
Introduce builder for Omnipod Dash commands
2021-02-12 17:36:58 +01:00
Bart Sopers
1a866e970f
Variable version in Omnipod Eros and Omnipod Dash build.gradle
2021-02-11 11:24:31 +01:00
Bart Sopers
b2c56ba48e
Update Omnipod Eros and Omnipod Dash build.gradle
2021-02-11 11:01:18 +01:00
Bart Sopers
fa05163019
Add test for SilenceAlertsCommand
2021-02-11 00:10:14 +01:00
Bart Sopers
e7e6f52305
Add StopDeliveryCommand, add test for NakResponse
2021-02-10 23:52:48 +01:00
Bart Sopers
93e4e924fa
Add NakResponse (untested)
2021-02-10 22:55:42 +01:00
Bart Sopers
43c3b42912
Add SilenceAlertsCommand (untested)
2021-02-10 22:35:44 +01:00
Bart Sopers
1afc0ae2a9
Remove comment
2021-02-10 21:58:14 +01:00
Bart Sopers
d4ec8464ea
Add AlarmStatusResponse (Status response page 2)
2021-02-10 21:53:26 +01:00
Bart Sopers
e77f08cd23
Add DefaultStatusResponse
2021-02-10 19:36:45 +01:00
Bart Sopers
eb46c973a3
Add ProgramAlertsCommand
2021-02-10 18:00:34 +01:00
Bart Sopers
af35253f0b
Add SetUniqueIdCommand and DeactivateCommand; add captures for ProgramAlertsCommand
2021-02-10 15:16:28 +01:00
Bart Sopers
f1d095d9c8
Add GetVersionCommand
2021-02-10 01:22:53 +01:00
Bart Sopers
fc4065b71c
Add GetVersionResponse and SetUniqueIdResponse; add some definitions
2021-02-10 00:17:14 +01:00
Bart Sopers
43409eb864
Add empty Omnipod Dash module
2021-02-09 21:21:30 +01:00