Commit graph

186 commits

Author SHA1 Message Date
Andrei Vereha
7c0e2af053 dash: rename EAP AKA to SessionEstablisher 2021-03-03 14:24:23 +01:00
Andrei Vereha
b2797fa57f dash: undo ktLint 2021-03-03 14:22:09 +01:00
Andrei Vereha
da84c35b31 format: CTRL+Alt+L 2021-03-03 14:18:20 +01:00
Andrei Vereha
154e74fc22 dash ble: fix detekt issues 2021-03-03 14:10:33 +01:00
Andrei Vereha
c9beb21404 format: klintFormat 2021-03-02 22:22:03 +01:00
Andrei Vereha
ada3560f49 format: remove trailing commas 2021-03-02 22:20:30 +01:00
Andrei Vereha
e90bda0234 dash eap-aka: complete the session key exchange
Fake pod logs
```
INFO[0021] got CK: daff384a4098571975d136a480a71b36
INFO[0021] got Nonce: 33a0c6dd0a0a0a0a
```

The application logs:
```
[OmnipodDashBleManagerImpl$connect$1.subscribe():139]: CK: daff384a4098571975d136a480a71b36
 [OmnipodDashBleManagerImpl$connect$1.subscribe():140]: noncePrefix: 33a0c6dd0a0a0a0a
```
2021-03-02 22:17:11 +01:00
Andrei Vereha
9c42e5749f ble/milenage: fix and add tests 2021-03-02 18:39:03 +01:00
Andrei Vereha
099ec0a328 ble scan: improve log message 2021-03-02 18:37:45 +01:00
Andrei Vereha
b6692a5ac6 WIP: add Milenage
AUTN is not correct yet
2021-03-02 10:44:36 +01:00
Andrei Vereha
e82826bf5a dash/ble: start implement EAP-AKA 2021-03-01 15:22:52 +01:00
Andrei Vereha
0523f7c17c format: remove trailing commas 2021-03-01 15:20:02 +01:00
AdrianLxM
89ff502518 a bit more formatting 2021-03-01 14:35:50 +01:00
AdrianLxM
5ef07dd0be detekt resolve a few more 2021-03-01 13:52:43 +01:00
AdrianLxM
e7b3d85639 detekt resolve a few 2021-03-01 13:49:39 +01:00
AdrianLxM
77c816e813 ktlint format 2021-03-01 13:39:02 +01:00
AdrianLxM
9a6a81248d Merge remote-tracking branch 'origin/bart/implement-managers' into adrian/linting 2021-03-01 12:40:42 +01:00
AdrianLxM
070ba1cfc2 add ktlint and detekt 2021-03-01 12:34:47 +01:00
Bart Sopers
59bfa7a04d Implement Pod activation command flow 2021-03-01 01:23:40 +01:00
Bart Sopers
82d2f9ae36 Merge branch 'dash' into bart/improvements 2021-02-28 21:10:09 +01:00
Andrei Vereha
c8bded99ab remove tailing comma 2021-02-28 19:45:21 +01:00
Andrei Vereha
a7ca5fd863 format code: Ctrl+Alt+L 2021-02-28 19:44:10 +01:00
Bart Sopers
8e7b1d3612 Review: use fold in AlertUtil.encodeAlerts 2021-02-28 19:28:52 +01:00
Andrei Vereha
57c2d2d9a1 Address review comments:
- move think dependency to core_dependencies and make it's version
   configurable: https://github.com/0pen-dash/AndroidAPS/pull/10#discussion_r584329468
 - add message string to exceptions. Renames
2021-02-28 19:11:42 +01:00
Bart Sopers
8e7e2450ae Update active alerts from default status response in Pod state 2021-02-28 18:46:49 +01:00
Bart Sopers
bf060da878 Fix typo 2021-02-28 18:42:17 +01:00
Andrei Vereha
b1f099c506 rename LTK to Pair 2021-02-28 18:38:43 +01:00
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