-
Notifications
You must be signed in to change notification settings - Fork 46
Command 19 Configure Alerts
Command 0x19 can used to configure a number of different alerts. This command is used multiple times during initial setup and for various other configuration situations like changing the Low Reservoir or Replace Pod Soon alerts and for Confidence Reminders. The $19 command can also follow a Command 1F Cancel-Request, when the user issues a suspend.
19 LL NNNNNNNN IVXX YYYY 0J0K [IVXX YYYY 0J0K]...
-
19
(1 byte): Mtype of $19 specifies a Configure Alerts Command -
LL
(1 byte): Length of command (typically 0x0a, 0x10 or 0x16) -
NNNNNNNN
(4 bytes): Nonce, the 32-bit validator (random looking numbers) -
IVXX
(2 bytes): bit format0iiiabcx xxxxxxxx
as follows:-
0iii
is the 3-bit alert #. In the $1D Status Responseaaaaaaaa
bits and in theTT
byte of the $02 Pod Information Response Type 2, active, unacknowledged alerts are returned as a bit mask (1 << alert #). - The
a
(0x0800) bit being set indicates that this alert is active. - The
b
(0x0400) bit being set indicates that this alert is for setting a low reservoir alert and not a time based alert. - The
c
(0x0200) bit being set indicates that this alert is for the Auto-Off function. -
x xxxxxxxx
is a 9-bit value for the alert duration in minutes
-
-
YYYY
(2 bytes): 14-bit alert value- If
b
bit is 0,YYYY
is the number of minutes from now before alerting, maximum value 4,800 (i.e., 80 hours). - If
b
bit is 1,YYYY
is the number of units for low reservoir alert x 10 (i.e., the # of 0.05U pulses / 2), maximum value 500 (i.e., 50U x 10).
- If
-
0J0K
(2 bytes): 12-bit beep word consisting of two bytes0J
and0K
.-
The
J
nibble is a beep repeat pattern value:-
0
- Beep once -
1
- Beep every minute for 3 minutes and repeat every 60 minutes -
2
- Beep every minute for 15 minutes -
3
- Beep every minute for 3 minutes and repeat every 15 minutes -
4
- Beep at 2, 5, 8, 11, ... 53, 56, 59 minutes -
5
- Beep every 60 minutes -
6
- Beep every 15 minutes -
7
- Beep at 14, 29, 44 and 59 minutes -
8
- Beep every 5 minutes
-
-
The
K
nibble is the beep type to be sounded when the alert is triggered. Recordings for common beep values can be found in All Beep Types. When deactivating an alert (a
== 0), PDMs use aK
nibble value of0x0
. However0x0
cannot be used as a beep type for an actual alert that can be triggered (a
== 1). To implement a non-sounding silent alert, aK
nibble value of0xF
must be used instead. Values not listed for theK
beep type nibble will fail and return an 0x6 Error Response, code 7.-
0x0
No beep (only witha
bit == 0 for alert deactivation) -
0x1
BeepBeepBeepBeep -
0x2
BipBeep BipBeep BipBeep BipBeep -
0x3
BipBip -
0x4
Beep -
0x5
BeepBeepBeep -
0x6
Beeeeeep -
0x7
BipBipBip BipBipBip -
0x8
BeeepBeeep -
0xB
BeepBeep -
0xC
Beeep -
0xD
BipBeeeeep -
0xF
No beep (non-sounding silent alert when triggered)
-
-
The three-word entries can be repeated an arbitrary number of times
for setting multiple alerts with the same $19 command.
The command length LL
for a single alert 0x19 command is 0x0a,
for a double alert 0x19 command is 0x10,
and for a triple alert 0x19 command is 0x16.
Some observed values for different values of I
(0iii
):
0 - Auto-off advisory alert (configurable)
020f 0000 0202 Auto-off disabled ('a' bit off disables Auto-off)
0a0f 003c 0202 Auto-off enabled 1 hour, $003c=60=1 hr, $0f=15 min limit
0a0f 05a0 0202 Auto-off enabled 24 hours, $05a0=1440=24 hrs, $0f=15 min
Beep word of $0202 => 2 sets of beeps every minute
1 - Never Observed
2 - Shutdown imminent alert
2800 1283 0602 2nd alert in startup triple, $1283=4739 min=78.98 hrs Shutdown imminent alert
Beep word $0602 => 2 sets of beeps every 15 minutes
3 - Expiration reminder alert (programmable)
3800 0ff0 0302 Pod startup #3 & Pod expiration configure, $0ff0=4080 min=68 hrs (default) Replace Pod Soon alert
Beep word of $0302 => 2 sets of beeps every minute for 3 minutes and then repeat every 15 minutes
4 - Low Reservoir alert (programmable)
4c00 00c8 0102 Pod startup #1 & low reservoir configure, $00c8=200/10=20U ('b' bit set) Low Reservoir advisory alert
Beep word $0102 => 2 sets of beeps every minute for 3 minutes and then repeat every 60 minutes
5 - Suspend in Progress alert (configurable, always observed paired with #6)
5000 0000 0000 After a Resume Insulin delivery with a Confidence Reminder ('a' bit off clears Suspend alert #5)
580f 000f 0604 As part of a 30 min Suspend, after silent $1F Cancel command ($0f = 15 min)
Beep word $0604 => 1 short beep every 15 minutes
6 - End of Insulin Suspend alert (configurable, always observed paired with #5)
6000 0000 0000 After a Resume Insulin delivery with a Confidence Reminder ('a' bit off clears Suspend alert #6)
6800 001e 0302 As part of a Suspend, after silent $1F Cancel command ($1e = 30 min)
Beep word $0302 => 2 sets of beeps every minute for 3 minutes and then repeat every 15 minutes
7 - Pod Expired alert (multiple uses)
786e 000a 0802 Fake internal call uses this constructed command for a 10 min alert ($6e=110, 10+110=120 min total)
Beep word of $0802 => 2 sets of beeps every 5 minutes
7837 0005 0802 Pod startup #2: 5 minute alert for priming ($37=55, 5+55=60 min total)
Beep word of $0802 => 2 sets of beeps every 5 minutes
7964 003c 0502 $3c=60 min alert in [[Status packets 33U left in reservoir]] ($164=356, 60+356=416 min total)
Beep word of $502 => 2 sets of beeps every 60 minutes
79a4 10df 0502 1st alert of startup triple: $10df=4319 min=71.98 hrs, $1a4=420 min=7 hrs (71.98+7=78.98 hrs total)
Beep word of $502 => 2 sets of beeps every 60 minutes
Except for a small difference for alert #0 case and
some special case code for potentially shutting down
for an expired alert #7 during Pod initialization,
there is no special code to handle
any of the other values of I
any differently from any other cases and
thus the most of the uses seem to just be
by convention as used by the PDM.
Alert #1 appears to have not been used by the PDM
for its Custom Reminders feature (which is all done on the PDM itself).
Alert #1 could be used to create custom or debugging alert
or even a secondary timing or reservoir alert from the Pod.
When an alert is triggered (i.e.,
the specified number of minutes has passed or
the reservoir has dropped to the requested level),
the limit value reached is saved and a flag is
set marking this alert # as unacknowledged.
The Pod can use a
$02 Response Type 1
to return the limit values (time or reservoir) reached
so that the PDM can then use to notify
the user for the reason of each triggered alert.
The $02 Response Type 1
has a fixed length $13
, followed by a 01
byte,
followed by an word, followed by 8 words
for the alert values #0 thru #7 respectively that have been reached or
zeroes if that alert limit has not been reached.
In the aaaaaaaa
bits of the $1D Status Response and
the TT
byte of the Type 2 $02 Response,
active unacknowledged alerts are returned as a bit mask (1 << alert #).
The PDM can issue a
$11 Acknowledge Alerts
command to acknowledge a triggered alert
which will clear the unacknowledged bit for the
specified alert #'s to suppress the audio beeps
without actually clearing the triggered alert.
Alerts can be totally cleared by issuing an
$11 Acknowledge Alerts command
with I
set to alert # to be cleared with the rest of
VXX
, YYYY
and 0J0K
values as all 0's.
The initialization sequence typically sends the
$19 Configure Alerts command three separate times for alerts #4
($4c00
), #7 ($7837
) and #3 ($3800
) in that order.
Different initialization sequences are very similar,
but can have differing YYYY
values depending on the
PDM settings for the IVXX
=$4c00
(Low Reservoir)
and IVXX
=$3800
(Replace Pod Soon) advisory alerts and the exact timing.
19 LL NNNNNNNN IVXX YYYY 0J0K
19 0a ae01a66c 4c00 0064 0102
This command uses alert #4 to be the default
low reservoir advisory alert at $0064 = 100/10 = 10U.
If the PDM has a different low reservoir amount set,
YYYY
will have a different value.
The low reservoir 0J0K
beep word is $102
which is 2 sets of beeps every minute for 3 minutes
and then repeat every 60 minutes.
The following $19 Configure Alerts Command is used before the priming sequence is started:
19 LL NNNNNNNN IVXX YYYY 0J0K
19 0a 305a108b 7837 0005 0802
The Omnipod user manual states:
After filling the Pod with insulin, you should complete
the Pod change process within 60 minutes. As a
reminder that the Pod has been filled, it will beep
every 5 minutes to indicate that time is passing. If you
do not set up the Pod within 60 seconds, you must
deactivate and discard it.
The $19 Configure Alerts command for alert #7
implements this particular policy.
The YYYY
value of 5 denotes the beep after
5 minutes using 0J0K
beep word of $0802
(2 sets of beeps every 5 minutes)
while the XX
value of $37
= 55
means that this alert will repeat for an additional
55 minutes have passed if this condition is not cleared.
19 LL NNNNNNNN IVXX YYYY 0J0K
19 0a 365deab7 3800 0ff0 0302
This command uses alert #3 to set default
Replace Pod Soon alert of $0ff0 = 4080/60 = 68 hours from now
(i.e., 4 hours before the nominal 72-hour Pod expiration time).
If a different Pod expiration warning time has been set,
the YYYY
value will vary.
This alert's 0J0K
beep word is $302 which is
2 sets of beeps every minute for 3 minutes
and then repeat every 15 minutes.
The fourth and final pairing $19 Command sets a triple alert and is used during the Cannula insert. Examples are taken from Pairing, Pairing 4, and Pairing 5 respectively:
19 LL NNNNNNNN IVXX YYYY 0J0K IVXX YYYY 0J0K IVXX YYYY 0J0K
19 16 feb6268b 79a4 10de 0502 2800 1282 0602 020f 0000 0202
19 16 4aa23e25 79a4 10df 0502 2800 1283 0602 020f 0000 0202
19 16 ba952b8b 79a4 10df 0502 2800 1283 0602 020f 0000 0202
These three different examples all have the nearly the same format
and set 3 alerts (LL
= $16) in the same command
to set the #7, #2 and #0 alerts.
The only difference is the exact YYYY
values used
for the first two alerts which can vary depending on how long
it took to get to this part of the pairing sequence
(e.g., in the first example the non-zero YYYY
values are 1
less than in the other two examples which indicates that this pairing sequence took a minute longer than with the other 2 examples).
Let's examine the last triple alert example in more detail.
- Alert #7 is set for $10df=4319/60=71.98 hours
with beep type $502 with an
x xxxxxxxx
value of $1a4=420 minutes=7 hours. This alert presumably sets up the beeping that occurs at 72 hours in the life of the Pod which will continue for the next 7 hours. - Alert #2 is set for $1283=4739/60=78.98 hours with
a
0J0K
beep word of $602 (2 sets of beeps every 15 minutes). This shutdown imminent alert sets up the beeping that occurs at 79 hours, which is the last hour of the Pod's absolute maximum 80 hour life. - Alert #0 has the 'c' ($0200) bit set which indicates
that is an Auto-off alert.
Since the 'a' ($0800) bit is not set,
this alert is disabling the Auto-off alert
and the
XX
value of $0f and the beep word of $0202 are actually not used. Presumably if an Auto-off time had previously been set in the PDM, the 'a' bit would have been set for this alert and theYYYY
value would be the number of minutes for the Auto-off function with anXX
value of $0f = 15 minutes and a0J0K
beep word of $0202 (2 sets of beeps every minute) (e.g., for a 2 hour Auto-off:0a0f 0078 0202
).
As noted in the Suspend section of the Command 1F Cancel Request,
a double alert for #5 and #6 is used
immediately following a $1F
Cancel Request command
as shown this example for a 30 minute Suspend:
1f 05 NNNNNNNN AX 19 LL NNNNNNNN IVXX YYYY 0J0K IVXX YYYY 0J0K
1f 05 b15898b0 03 19 10 b15898b0 580f 000f 0604 6800 001e 0302
For the #5 alert
both XX
and YYYY
values are $0f
or 15 minutes
using 0J0K
beep word of $0604
(beep every 15 minutes)
while for the #6 alert XX
is 0
while YYYY
is $1e
or 30 minutes
using beep type 0J0K
of $0302
(2 sets of beeps every minute for 3 minutes and repeat in 15 minutes).
The Omnipod user manual states that when the Pod is Suspended,
it will beep every 15 minutes until the end of the suspension period
and that at the end of a suspend time (30 minutes in this example),
a Pod advisory alarm will occur.
Presumably these two alerts will implement this policy.
19 LL NNNNNNNN IVXX YYYY 0J0K IVXX YYYY 0J0K
19 10 d4106aba 5000 0000 0000 6000 0000 0000
Double alerts for #5 and #6 can be found with all zeroes in multiple locations to clear both alerts set as part of a resume like operation:
- Resume insulin delivery packets
- Enable Different Preset Basal
- Full life of a Pod
- Temp basal (pc) with suspend cancel
- Temp basal with suspend cancel
These examples are used to cancel
existing alerts for #5 and #6 using all zero values for
VXX
, YYYY
and 0J0K
values.
Consider the following example of setting the maximum 50U low reservoir alert.
19 LL NNNNNNNN IVXX YYYY 0J0K
19 0a df72f66d 4c00 01f4 0102
To set a low reservoir advisory alert,
the PDM uses an IVXX
value of $4c00
which
has 0iii
=4, a
=1, b
=1, c
=0, and x xxxxxxxx
=0.
The b
bit indicates that this is a low reservoir level alert
and so the YYYY
value is the number of units x 10 (or # of pulses/2).
The YYYY
value of $01f4
is 500/10 (or 500x2x0.05U) = 50U and
the 0J0K
value of $0102
(2 sets of beeps every minute for 3 minutes and repeat each hour)
The default PDM low reservoir alert is for 10U
which has a YYYY
value of 10U x 10 = 100 = $0064
.
Examples from Set Low Reservoir Alert:
19 LL NNNNNNNN IVXX YYYY 0J0K
19 0a 76305e3b 4c00 0064 0102 // 10U
19 0a 84e4ce3d 4c00 0096 0102 // 15U
19 0a 25ceba2b 4c00 00c8 0102 // 20U
19 0a 260744b0 4c00 00fa 0102 // 25U
19 0a 483d195a 4c00 012c 0102 // 30U
19 0a 701a7f18 4c00 015e 0102 // 35U
19 0a c70532a2 4c00 0190 0102 // 40U
19 0a 29363c0a 4c00 01c2 0102 // 45U
19 0a df72f66d 4c00 01f4 0102 // 50U
Consider the following example of setting the Replace Pod Soon alert to 2 hours.
19 LL NNNNNNNN IVXX YYYY 0J0K
19 0a cd665f5c 3800 1065 0302
To set a Replace Pod Soon alert,
the PDM uses an IVXX
value of $3800
.
In this case,
alert #3 is for the Replace Pod Sooon alert with YYYY
specifying the number of minutes from now until beeps using
0J0K
beep type $302
(every minute for 3 minutes and repeat every 15 minutes).
In this example,
YYYY
was $1065
= 4197/60 = 69.95 hours from now.
Since the Pod is considered expired at 72 hours and 2 hours earlier would be 70,
the 69.95 value indicates that 0.05 hours = 3 minutes have passed since Pod the pairing
until this $19 command was run.
The default Replace Pod Soon alert is 4 hours before the
72-hour Pod expiration immediately upon Pod startup
which has a YYYY
value of 68 x 60 = 4080 = $0ff0
.
Examples from Set Pod Expiration Alert:
19 LL NNNNNNNN IVXX YYYY 0J0K
19 0a 997f9642 3800 10a0 0302 // 01H
19 0a 9d18848d 3800 1065 0302 // 02H
19 0a 681a38bc 3800 1029 0302 // 03H
19 0a cd665f5c 3800 0fed 0302 // 04H
19 0a 13ae006c 3800 0fb1 0302 // 05H
19 0a 71fcc666 3800 0f75 0302 // 06H
19 0a f3a41f97 3800 0f39 0302 // 07H
19 0a 0cde7b40 3800 0efd 0302 // 08H
19 0a 9d827ce7 3800 0ec1 0302 // 09H
19 0a 5c67daba 3800 0e85 0302 // 10H
19 0a 48843a93 3800 0e49 0302 // 11H
19 0a a767d583 3800 0e0d 0302 // 12H
19 0a ea764dd7 3800 0dd1 0302 // 13H
19 0a 15bad026 3800 0d95 0302 // 14H
19 0a 476eaddb 3800 0d59 0302 // 15H
19 0a a7318e50 3800 0d1d 0302 // 16H
19 0a 2935cbc0 3800 0ce1 0302 // 17H
19 0a 6500694d 3800 0ca5 0302 // 18H
19 0a 6012d12a 3800 0c69 0302 // 19H
19 0a ca334fac 3800 0c2d 0302 // 20H
19 0a 3372c7fb 3800 0bf0 0302 // 21H
19 0a 5239fe3f 3800 0bb4 0302 // 22H
19 0a bf4723b3 3800 0b78 0302 // 23H
19 0a 8f266624 3800 0b3c 0302 // 24H
The YYYY
values of 0b3c
to 10a0
(2877 to 4256)
means that 0J0K
beep type $302
(2 sets of beeps every minute for 3 minutes repeated every 15 minutes)
will be delivered between
47.95 and 70.93 hours from now which is about
24 to 1 hour before the 72-hour nominal Pod expiration.
Taken from Warning if no Pod status is available:
19 LL NNNNNNNN IVXX YYYY 0ZZZ
19 0a 840d3d7d 020f 0000 0202 // Off (Auto-off disabled)
19 0a e4e418da 0a0f 003c 0202 // 1H ($003c = 60 minutes)
19 0a f08922b7 0a0f 0078 0202 // 2H ($0078 = 120 minutes)
19 0a ae644678 0a0f 05a0 0202 // 24H ($05a0 = 1440 minutes)
In all of these Auto-off examples,
the 'c' bit is set indicating that these
alerts are for the Auto-off function.
For the Off (Auto-off disabled) case,
the 'a' bit is clear which disables the Auto-off alarm.
For the other examples,
the 'a' bit is set which enables the Auto-off function.
When Auto-off is enabled ('a' == 1, 'b' == 0, 'c' == 1),
then YYYY
specifies the number of minutes for the Auto-off timer.
The XX
value of $0f
= 15 indicates
that this advisory alarm will escalate to an Auto-off
hazard alarm if not acknowledged within 15 minutes.
19 LL NNNNNNNN IVXX YYYY 0J0K
19 0a ae01a66c 4c00 0064 0102
19 0a 305a108b 7837 0005 0802
19 0a 365deab7 3800 0ff0 0302
19 LL NNNNNNNN IVXX YYYY 0J0K
19 0a 8c61ee59 4c00 00c8 0102
19 0a c0256620 7837 0005 0802
19 0a acf076ca 3800 10a4 0302
19 LL NNNNNNNN IVXX YYYY 0J0K
19 0a b83db892 4c00 0064 0102
19 0a d14d9c49 7837 0005 0802
19 0a fddb8e55 3800 0ff0 0302
19 LL NNNNNNNN IVXX YYYY 0J0K
19 0a c8a1e987 4c00 00c8 0102
19 0a e3955e60 7837 0005 0802
19 0a b76fae1a 3800 10a4 0302
This command can only be used when the current Pod Progress State is between 3 and 12.