Dynamic discovery window for device-to-device wireless communication

JP2025527128A5Pending Publication Date: 2026-08-03ABBOTT DIABETES CARE INC
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
ABBOTT DIABETES CARE INC
Filing Date
2023-07-18
Publication Date
2026-08-03

AI Technical Summary

Technical Problem

Low-power analyte sensor devices face challenges in maintaining communication sessions due to range limitations, leading to delayed data transfer and battery drain, especially when out of range, and inefficient data processing, which affects real-time data availability and battery life.

Method used

Implementing a method to repurpose a reserved communication channel for high-priority data transmission by identifying and transmitting priority-level sensor data subsets, establishing communication sessions, and using encryption keys and dynamic key rotation to ensure efficient data delivery to user devices.

Benefits of technology

Ensures timely delivery of high-priority analyte data to user devices, reduces power consumption, and maintains battery life by optimizing communication protocols and reducing unnecessary power usage during idle states.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Embodiments described herein include a data receiving device for an analyte monitoring system, wherein the data receiving device detects a disconnection between the data receiving device and a sensor control device of the analyte monitoring system, wherein the data receiving device sets the duration of a scan window for receiving connection data packets from the sensor control device to a current length and initiates the scan window, and, in response to determining, based on the connection data packets received during the scan window, that a connection between the data receiving device and the sensor control device has not been established, the data receiving device performs an iteration of the scan window adjustment process, which involves increasing the duration of the scan window to a new length that is longer than the current length and initiating the scan window based on the scan window duration at the new length.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] [Right of priority] This application claims the benefit under 35 U.S.C. §119(e) of U.S. Provisional Patent Application No. 63 / 368,849, filed July 19, 2022, which is incorporated herein by reference.

[0002] The disclosed subject matter relates to a system for transmitting data between an analyte sensor and one or more receiving devices in an environment external to the analyte sensor. [Background technology]

[0003] Some analyte sensor devices can wirelessly transmit and receive data to and from other computing devices. Some of these analyte sensor devices have powerful processors and operate using a permanent power supply, while others are designed to operate efficiently with low power. Low-power analyte sensor devices may also have lower computing power or resources than the devices with which they communicate. Low-power analyte sensor devices may rely on more powerful devices to perform complex processing of the data they are collecting. In some cases, these low-power analyte sensor devices also have limited communication capabilities, typically limited to short-range communication with devices in the same room. Low-power analyte sensor devices may establish communication sessions with other devices to offload data to another device, for example, to send collected analyte data for analysis. However, some low-power analyte sensor devices must maintain a communication session to perform data processing to ensure real-time processing of data and ensure the most important data is available to the user of the low-power analyte sensor device. Even this communication session may use short-range communication. If the low-power analyte sensor device or other device moves out of range, the communication session may end, leaving data unprocessed. In addition to being inconvenient for the user of the low power analyte sensor device, maintaining a communication session with another analyte sensor device may also drain the battery of the low power analyte sensor device and reduce the device's operational lifespan.

[0004] Other low-power analyte sensor devices do not maintain a communication session constantly. Instead, these low-power analyte sensor devices may establish a communication session when there is a backlog of historical data to offload to a more powerful device. To conserve battery life, the communication session terminates once the data has been uploaded. The low-power analyte sensor device may periodically check whether one or more suitable receiving devices are within range to re-establish the communication session after collecting more data, or may rely on the user to request such data using the receiving device. If a receiving device is within range, the low-power analyte sensor device establishes a new communication session to upload the additional data. If the receiving device is out of range or otherwise unavailable while the low-power analyte sensor device is searching for the receiving device, the data cannot be uploaded. Furthermore, when the receiving device returns within range of the analyte sensor device, the receiving device and analyte sensor device must re-establish a communication session, which takes additional time before additional data can be transferred, and the latest analyte data may not be immediately available to the user. Summary of the Invention [Problem to be solved by the invention]

[0005] Thus, there is potential for methods and systems that can be implemented by low-power and low-cost analyte sensor devices to efficiently provide current or high-priority analyte data to other devices for processing and output. [Means for solving the problem]

[0006] Aspects of the invention are set out in the independent claims and preferred features are set out in the dependent claims. Features of one aspect may be applied to each aspect alone or in combination with other aspects.

[0007] The objects and advantages of the presently disclosed subject matter will be set forth in and apparent from the following description, as well as be learned by practice of the presently disclosed subject matter. Additional advantages of the presently disclosed subject matter will be realized and attained by the methods and systems particularly pointed out in the description and claims thereof, as well as by the accompanying drawings.

[0008] To achieve these and other advantages, and in accordance with the objectives of the presently disclosed subject matter as embodied and broadly described, the disclosed subject matter includes systems and methods for quickly providing high priority data from an analyte sensor to one or more receiving devices by repurposing a reserved communication channel. Exemplary systems and methods may include a method of monitoring a subject using an analyte monitoring device. One or more processors of the analyte monitoring device generate sensor data indicative of an analyte level measured by the analyte sensor. At least a portion of the analyte sensor may be transcutaneously positioned in contact with a bodily fluid of the subject. The one or more processors of the analyte monitoring device may identify a sensor data subset based on a priority level associated with the sensor data. The one or more processors of the analyte monitoring device may prepare a data packet including the identified sensor data subset and connection data associated with establishing a communication session with the analyte monitoring device. The one or more processors of the analyte monitoring device may cause a transceiver of the analyte monitoring device to transmit the data packet to one or more user devices within communication range of the transceiver. The one or more processors of the analyte monitoring device may receive an acknowledgment signal indicating receipt of the sensor data from a first user device of the one or more user devices through the transceiver. In certain embodiments, the data packet further includes identification data of the first user device to direct the data packet to the first user device. In certain embodiments, the one or more processors of the analyte monitoring device may receive an activation command from the first user device before causing the transceiver of the analyte monitoring device to transmit the data packet. In certain embodiments, the one or more processors of the analyte monitoring device may identify one or more communication channels associated by a designated communication protocol with establishing a connection between the devices and cause the transceiver to transmit the data packet by generating a signal based on the data packet using the one or more identified communication channels.In certain embodiments, one or more processors of the analyte monitoring device may establish a communication session with the first user device using the transceiver after receiving an acknowledgment signal from the first user device. The one or more processors of the analyte monitoring device may cause the transceiver to transmit a second subset of sensor data to the first user device over the communication session. The second subset of sensor data is data that was not included in the data packet. In certain embodiments, the one or more processors of the analyte monitoring device may encrypt the identified subset of sensor data using an encryption key shared between the analyte monitoring device and the first user device. In certain embodiments, the encryption key may be dynamically determined or identified using a key rotation scheme. In certain embodiments, a priority level associated with the sensor data may be based on the amount of time elapsed since the sensor data was collected. The sensor data with the highest priority may be the most recently collected sensor data. In certain embodiments, a priority level associated with the sensor data is based on a subject's condition determined from the sensor data. In certain embodiments, the one or more processors of the analyte monitoring device prepare connection data associated with establishing a communication session with the analyte monitoring device based on periodically occurring time windows. In certain embodiments, by way of example and not limitation, the analyte can be glucose, ketones, lactate, oxygen, hemoglobin A1C, albumin, alcohol, alkaline phosphatase, alanine transaminase, aspartate aminotransferase, bilirubin, blood urea nitrogen, calcium, carbon dioxide, chloride, creatinine, hematocrit, lactate, magnesium, oxygen, pH, phosphorus, potassium, sodium, total protein, uric acid, etc. In certain embodiments, the data packet further includes the subject's temperature, heart rate, blood pressure, or exercise data.

[0009] According to another aspect of the disclosed subject matter, systems and methods may include a method for monitoring an analyte level of a subject using a user device. One or more processors of the user device may send an operation command to an analyte monitoring device associated with the subject using a communications module of the user device. The one or more processors of the user device may receive a first sensor data set from the analyte monitoring device using the communications module during a first communications session with the analyte monitoring device. The first sensor data set may indicate a first analyte level measured by the analyte monitoring device at a first time point. The one or more processors of the user device may close the first communications session. The one or more processors of the user device may receive a data packet from the analyte monitoring device using the communications module. The data packet may include connection data related to establishing a second communications session with the analyte monitoring device. The data packet may include a second sensor data set from the analyte monitoring device indicating a second analyte level measured by the analyte monitoring device at a second time point. The one or more processors of the user device may output the second sensor data set to an interface of the user device. In certain embodiments, outputting the second sensor data set includes causing one or more processors of the user device to indicate on an interface of the user device that the second sensor data set corresponds to a current or most recently determined analyte level measured by the analyte monitoring device. In certain embodiments, the one or more processors of the user device can output an alarm based on the second sensor data set. In certain embodiments, the one or more processors of the user device can send an acknowledgment signal to the analyte monitoring device using the communications module. The acknowledgment signal can indicate that the second sensor data set has been received. In certain embodiments, the one or more processors of the user device can establish a second communications session with the analyte monitoring device based on the connection data of the data packet.The one or more processors of the user device may receive a third sensor data set indicative of a third analyte level measured by the analyte monitoring device during a time period between the first time point and the second time point. In certain embodiments, the second sensor data set is included in an encrypted data payload of the data packet. The one or more processors of the user device may decrypt the encrypted data payload of the data packet using an encryption key shared between the analyte monitoring device and the user device and extract the second sensor data set from the decrypted data payload. In certain embodiments, the user device is associated with a user authorized by the subject to receive sensor data on the subject's behalf.

[0010] According to another aspect of the disclosed subject matter, systems and methods may include an analyte monitoring device including one or more processors, an analyte sensor, a communications module, and one or more memories communicatively coupled to the one or more processors, the analyte sensor, and the communications module. The one or more processors may be configured to generate sensor data indicative of an analyte level measured by the analyte sensor. At least a portion of the analyte sensor is transcutaneously positioned in contact with a bodily fluid of the subject. The one or more processors may be configured to store the sensor data in one or more memories. The one or more processors may identify a first sensor data subset corresponding to a first time point from the one or more memories. The one or more processors may prepare a data packet including the identified sensor data subset and connection data associated with establishing a communication session with the analyte monitoring device. The one or more processors may cause the communications module to transmit the data packet to one or more user devices within communication range of the communications module. The one or more processors may receive a communication session request from a first user device of the one or more user devices through the communications module. The one or more processors may cause the communication module to transmit a second data packet to the first user device, the second data packet including a second subset of data corresponding to a second point in time.

[0011] For further advantages and in accordance with the objectives of the presently disclosed subject matter as embodied and broadly described, the disclosed subject matter further includes systems and methods for establishing, maintaining, and transmitting data to multiple receiving devices using simultaneous communication sessions. Exemplary systems and methods may include an analyte monitoring device for monitoring a subject using the analyte monitoring device. The analyte monitoring device may include one or more processors, an analyte sensor, a communications module, and one or more memories communicatively coupled to the one or more processors, the analyte sensor, and the communications module. The one or more memories include instructions executable by the one or more processors to configure the one or more processors to perform operations in accordance with the techniques disclosed herein. The one or more processors of the analyte monitoring device generate sensor data indicative of an analyte level measured by an analyte sensor of the analyte monitoring device. At least a portion of the analyte sensor is transcutaneously positioned in contact with a bodily fluid of the subject. The one or more processors of the analyte monitoring device receive a first request for sensor data from a first device and a second request for sensor data from a second device. The one or more processors of the analyte monitoring device select a first sensor data subset in response to the first request. The one or more processors of the analyte monitoring device select a second sensor data subset in response to the second request. The one or more processors of the analyte monitoring device prepare a first data packet including the first sensor data subset and a second data packet including the second sensor data subset. The one or more processors of the analyte monitoring device cause a communication module of the analyte monitoring device to transmit the first data packet to the first device. The one or more processors of the analyte monitoring device cause a communication module of the analyte monitoring device to transmit the second data packet to the second device.

[0012] In certain embodiments, one or more processors of the analyte monitoring device receive an acknowledgment signal indicating receipt of the first sensor data subset from the first device through the communications module before causing the communications module of the analyte monitoring device to transmit the second data packet to the second device. In certain embodiments, the first request and the second request include criteria for selecting the first sensor data subset and the second sensor data subset, respectively. In certain embodiments, the one or more processors of the analyte monitoring device select the first sensor data subset or the second sensor data subset based on a priority level associated with the sensor data. In certain embodiments, the one or more processors of the analyte monitoring device cause the communications module to transmit the first data packet to the first device before causing the communications module to transmit the second data packet to the second device based on the analyte monitoring device receiving the first request for sensor data before receiving the second request for the second data. In certain embodiments, the first device or the second device is a fitness monitor or a fitness device. In certain embodiments, the first device or the second device includes a medical component for use by the subject based on the first or second sensor data subset. In certain embodiments, the first or second device includes a network component that transmits the first or second sensor data subset to one or more remote devices. In certain embodiments, the first device is a smartphone and the second device is a smartwatch.

[0013] In certain embodiments, one or more processors of the analyte monitoring device receive a connection request from the first device via the communications module, the connection request including identification information of the second device received by the first device from the second device during a communication session between the first device and the second device and information facilitating the communication session with the second device; send an acknowledgment of the connection request to the second device using the information facilitating the communication session with the second device; and establish a communication session with the second device via communication with the first device by performing mutual authentication with the second device and generating a shared encryption key for the subsequent communication session. In certain embodiments, the first request for sensor data includes an identifier of the first device. The identifier is an index in a mapping table stored by the analyte monitoring device. The one or more processors of the analyte monitoring device identify the first device based on querying the mapping table using the index from the first request. In certain embodiments, one or more processors of the analyte monitoring device encrypt the first subset of sensor data using a first encryption key shared between the analyte monitoring device and the first device and encrypt the second subset of sensor data using a second encryption key shared between the analyte monitoring device and the second device. In certain embodiments, the first encryption key and the second encryption key are dynamically determined or identified using a key rotation scheme. In certain embodiments, the analyte includes glucose, ketones, lactate, oxygen, hemoglobin A1C, albumin, alcohol, alkaline phosphatase, alanine transaminase, aspartate aminotransferase, bilirubin, blood urea nitrogen, calcium, carbon dioxide, chloride, creatinine, hematocrit, lactate, magnesium, oxygen, pH, phosphorus, potassium, sodium, total protein, or uric acid.

[0014] Analyte sensors can exchange data with other devices, called receivers, controlled by a user. The receivers can use commercial operating systems that communicate with the analyte sensors through a wireless bidirectional communication link. As an example, a mobile device equipped with Bluetooth Low Energy (BLE) circuitry can be utilized to communicate with a particular analyte sensor. The bidirectional communication link can be formed using a wireless communication protocol that includes connection requests or advertisement notifications received by the receiver. The advertisement notifications are broadcast by the analytical device at a predetermined constant frequency. Using advertisement notifications to facilitate the establishment of wireless communication involves significant power consumption of the analyte sensors.

[0015] During a typical advertising operation, an analyte sensor configured to operate using a short-range wireless communication protocol such as BLE sends an advertising notification and looks for a scan request from a receiver. In some cases, the analyte sensor enters a sleep state that consumes relatively low power when it is time to perform the advertising operation. The analyte sensor wakes up from the sleep state to look for a scan request before it can send an advertising notification. The analyte sensor performs certain start-up and initialization actions or tasks each time it wakes up from the sleep state. The sensor uses a certain amount of power to perform all the start-up and initialization tasks associated with waking up. The analyte sensor enters and wakes up from the sleep state a sufficiently large number of times over its lifetime (e.g., several times per hour). As a result, the actions and tasks performed at each wake-up operation, even if only to perform an advertising operation, utilize a relatively large amount of power over the lifetime of the device.

[0016] According to another aspect of the disclosed subject matter, an analyte sensor can include a communications module having communications circuitry configured to wirelessly communicate with at least one other device, such as a receiver. The communications circuitry can be configured to transition between a sleep state, a partially awake state, and a fully awake state. When in the fully awake state, the communications circuitry can be configured to perform tasks and actions associated with a communications protocol activation (CPS) instruction set, including an advertisement scan-related (ASR) instruction subset and a non-ASR instruction subset. When in the partially awake state, the communications circuitry can be configured to perform functions, such as the ASR instruction subset. The partially awake state can be implemented as a limited-functionality branch of a programming and hardware stack intended to operate certain aspects of the communications protocol. These functions can include preparing and transmitting advertisement notifications, which can include a payload comprised of specialized information as described herein, over one or more channels according to the wireless communications protocol, and scanning one or more channels for connection requests from other devices. If no connection request is received, the communications circuitry can return to a sleep state without performing actions or tasks associated with the non-ASR instruction subset of the CPS instruction set. Thus, if the most common operation is to wake up and send advertisement notifications, implementing a partially awake state to perform actions or tasks associated with the non-ASR instruction subset only when a connection request is received reduces the total and average power consumption of the communications circuitry.

[0017] According to another aspect of the disclosed subject matter, an analyte monitoring device may include one or more processors, an analyte sensor, a communications module, and one or more memories communicatively coupled to the one or more processors, the analyte sensor, and the communications module. The one or more processors may be configured to generate sensor data indicative of an analyte level measured by the analyte sensor. At least a portion of the analyte sensor is transcutaneously positioned in contact with a bodily fluid of a subject. The one or more processors may be configured to initialize the communications module using an advertisement scan-related instruction set. The advertisement scan-related instruction set is a subset of a communications protocol activation instruction set that includes an advertisement scan-related instruction set and a non-advertisement scan-related instruction set. The one or more processors may cause the communications module to issue one or more advertisement data packets and receive a connection request from a receiving device. The one or more processors may complete initialization of the communications module using the non-advertisement scan-related instruction set. The one or more processors may select a sensor data subset, prepare a data packet including the sensor data subset, and cause the communications module to transmit the data packet to the receiving device.

[0018] In certain embodiments, the communications module may be initialized in response to detecting expiration of the wake-up timer. In certain embodiments, initializing the communications module includes transitioning the communications module from a sleep state to an active state. In certain embodiments, the one or more processors are further configured to determine that no connection request has been received from the receiving device for a period of time after causing the communications module to issue one or more advertising data packets, transition the communications module from the awake state to a sleep state, and initialize the communications module a second time using an advertisement scan-related instruction set, wherein the connection request is received from the receiving device after the communications module is initialized for the second time. In certain embodiments, the communications module transitions from the awake state to the sleep state without executing a non-advertisement scan-related instruction set. In certain embodiments, the non-advertisement scan-related instruction set includes instructions for initializing a random access memory segment or block, initializing sensing hardware, or initializing operating system services. In certain embodiments, the advertisement scanning related instruction set includes instructions related to detecting expiration of a wake-up timer, waking up a processor, initializing transmit circuitry, forming an advertisement data packet, transmitting the advertisement data packet, scanning one or more channels for a connection request from a receiving device, or validating or rejecting an incoming connection request. In certain embodiments, the connection request includes criteria for selecting the sensor data subset. In certain embodiments, the one or more processors are further configured to select the sensor data subset based on a priority level associated with the sensor data.

[0019] In another aspect, a computer-implemented method is provided. The method may include, under control of one or more processors of an analyte sensor configured with specific executable instructions, collecting a signal related to a detected analyte level and executing program instructions for analyzing the signal and / or managing storage of the signal and / or providing therapy. The method may further include, while in a fully awake state, wirelessly communicating with at least one other device to perform tasks and actions associated with a communications protocol activation (CPS) instruction set including an advertisement scan-related (ASR) instruction subset and a non-ASR instruction subset. The method may include, while in a partially awake state, performing functions such as the ASR instruction subset. These functions may include transmitting advertisement notifications over one or more channels according to a wireless communications protocol, scanning one or more channels for a connection request from another device (e.g., a suitably configured receiver), and returning to a sleep state if no connection request is received without performing actions or tasks associated with the non-ASR instruction subset of the CPS instruction set.

[0020] According to another aspect of the disclosed subject matter, a data receiving device for an analyte monitoring system includes one or more processors, a communications module, and one or more memories communicatively coupled to the one or more processors and the communications module. The one or more memories include instructions executable by the one or more processors to configure the one or more processors to perform operations in accordance with embodiments and objectives described herein. The data receiving device detects a disconnection between the data receiving device and a sensor control device of the analyte monitoring system. The sensor control device includes a communications module and an analyte sensor configured to be transcutaneously placed in contact with a bodily fluid of a subject wearing the sensor control device. The data receiving device sets the duration of a scan window for receiving connection data packets from the sensor control device to a current length. The data receiving device initiates the scan window based on the duration of the scan window at the current length. The data receiving device performs one or more iterations of a process of adjusting the scan window in response to determining that a connection is not established between the data receiving device and the sensor control device based on connection data packets received during the scan window. The iterative process includes increasing the duration of the scan window to a new length that is longer than the current length, and starting the scan window based on the duration of the scan window at the new length.

[0021] In certain embodiments, the data receiving device establishes a connection with the sensor control device after initiating the scan window based on the duration of the scan window at its current length, and in response to establishing the connection, synchronizes a clock maintained by the data receiving device with a clock maintained by the sensor control device. In certain embodiments, the process of adjusting the scan window further includes comparing the duration of the scan window at the new scan window length with a scan window duration threshold. In certain embodiments, the process of adjusting the scan window further includes resetting the duration of the scan window to a length less than the scan window duration threshold in response to determining that the duration of the scan window exceeds the scan window duration threshold. In certain embodiments, the length less than the scan window duration threshold is equal to the duration of the scan window used after detecting the disconnection. In certain embodiments, the amount by which the scan window duration is increased is a fixed amount. In certain embodiments, the amount by which the scan window duration is increased is based on currently available battery power of the data receiving device. In certain embodiments, the amount by which the scan window duration is increased is based on last known available battery power of the sensor control device. In certain embodiments, the amount by which the scan window duration is increased is based on clock drift associated with the sensor control device or the data receiving device. In certain embodiments, the process of adjusting the scan window includes modifying a start time of the scan window. In certain embodiments, the data receiving device establishes a connection with the sensor control device after initiating the scan window based on the duration of the scan window at its current length, and receives analyte data from the sensor control device in response to establishing the connection. In certain embodiments, the data receiving device outputs a value based on the analyte data for display. In certain embodiments, the data receiving device uses the analyte data to modify a therapy delivered by the data receiving device.In certain embodiments, the analyte sensor is configured to generate a data signal measuring the level of an analyte in a bodily fluid, the analyte including glucose, ketones, lactate, oxygen, hemoglobin A1C, albumin, alcohol, alkaline phosphatase, alanine transaminase, aspartate aminotransferase, bilirubin, blood urea nitrogen, calcium, carbon dioxide, chloride, creatinine, hematocrit, lactate, magnesium, oxygen, pH, phosphorus, potassium, sodium, total protein, and uric acid.

[0022] According to another aspect of the disclosed subject matter, a sensor control device of an analyte monitoring system includes one or more processors, an analyte sensor transcutaneously positioned with at least a portion thereof in contact with a bodily fluid of a subject, a communications module, and one or more memories communicatively coupled to the one or more processors, the analyte sensor, and the communications module. The memories include instructions executable by the one or more processors to configure the one or more processors to perform various operations. The sensor control device receives, via the communications module, a request to initiate a communication session with a data receiving device of the analyte monitoring system. The request to initiate the communication session includes identity information of the data receiving device. The sensor control device identifies, from the one or more memories, a preferred communication parameter configuration for the communication session based on the identity information. The sensor control device initiates a communication parameter negotiation procedure with the data receiving device. The negotiation procedure includes providing the preferred communication parameter configuration to the data receiving device. The sensor control device modifies one or more communication parameters for the communication session based on the negotiation procedure.

[0023] In certain embodiments, the sensor control device initiates a communication session with the data receiving device using the modified communication parameters. In certain embodiments, the sensor control device determines an analyte level based on the analyte sensor and transmits the analyte level to the data receiving device in the communication session. In certain embodiments, the sensor control device dynamically determines further modifications to a preferred communication parameter configuration for the communication session, performs a second communication parameter negotiation procedure with the data receiving device, and modifies one or more communication parameters for the communication session based on the second negotiation procedure. In certain embodiments, the sensor control device performs a communication link quality test based on the multiple communication parameter configurations. In certain embodiments, the sensor control device modifies the preferred communication parameter configuration based on an available battery level of the sensor control device or the data receiving device.

[0024] It is to be understood that both the foregoing general description and the following detailed description are exemplary and are intended to provide further explanation of the disclosed subject matter.

[0025] To illustrate and provide a further understanding of the methods and systems of the disclosed subject matter, the accompanying drawings, which are incorporated in and constitute a part of this specification, are included and together with the description serve to explain the principles of the disclosed subject matter.

[0026] The details of the subject matter presented herein, both as to its structure and operation, will become apparent from a study of the accompanying drawings, in which like reference numerals indicate like parts. [Brief explanation of the drawings]

[0027] [Figure 1] FIG. 1 illustrates an operating environment for an example analyte monitoring system for use with the technology described herein. [Figure 2] FIG. 1 is a block diagram illustrating an example analyte sensor in accordance with an exemplary embodiment of the disclosed subject matter. [Figure 3]FIG. 1 is a block diagram illustrating an example data receiving device in communication with a sensor, according to an exemplary embodiment of the disclosed subject matter. [Figure 4] FIG. 10 is a diagram illustrating an example of a packet. [Figure 5] FIG. 1 illustrates an example operational flow for an analyte sensor in accordance with the disclosed subject matter. [Figure 6A] FIG. 1 illustrates an operating environment for an example analyte sensor including multiple data receiving devices. [Figure 6B] FIG. 1 illustrates an operating environment for an example analyte sensor including multiple data receiving devices. [Figure 6C] FIG. 1 illustrates an operating environment for an example analyte sensor including multiple data receiving devices. [Figure 7] FIG. 1 illustrates an example operational flow for an analyte sensor in accordance with the disclosed subject matter. [Figure 8] FIG. 10 illustrates an example initialization block for a BLE peripheral application in a fully awake state. [Figure 9] FIG. 10 illustrates an example initialization block for a BLE advertising application in a partially awake state. [Figure 10] FIG. 10 illustrates an example application switching sequence between a BLE advertising application in a partially awake state and a BLE advertising application in a fully awake state, according to embodiments herein. [Figure 11] FIG. 2 is a state machine diagram illustrating the states of a communication circuit configured in accordance with an embodiment herein. [Figure 12A] 10A-10C illustrate embodiments of a device scan window in accordance with embodiments of the disclosed subject matter. [Figure 12B] 10A-10C illustrate embodiments of a device scan window in accordance with embodiments of the disclosed subject matter. [Figure 12C] 10A-10C illustrate embodiments of a device scan window in accordance with embodiments of the disclosed subject matter. [Figure 13] FIG. 10 illustrates an example operation flow of a data receiving device according to an embodiment of the disclosed subject matter. DETAILED DESCRIPTION OF THE INVENTION

[0028] Reference will now be made in detail to various exemplary embodiments of the disclosed subject matter, as illustrated in the accompanying drawings. The structure and corresponding methods of operation of the disclosed subject matter will be described in conjunction with a detailed system description. The systems and methods presented herein can be used for the operation of sensors used in analyte monitoring systems, such as, but not limited to, wellness, fitness, diet, research, information, or any purpose involving analyte sensing over time. As used herein, an "analyte sensor" or "sensor" can refer, by way of example only, to any device capable of receiving sensor information from a user, including, but not limited to, a temperature sensor, a blood pressure sensor, a pulse or heart rate sensor, a blood glucose sensor, an analyte sensor, a physical activity sensor, a body movement sensor, or any other sensor for collecting physical or biological information. Analytes measured by the analyte sensors can include, by way of example and not limitation, glucose, ketones, lactate, oxygen, hemoglobin A1C, albumin, alcohol, alkaline phosphatase, alanine transaminase, aspartate aminotransferase, bilirubin, blood urea nitrogen, calcium, carbon dioxide, chloride, creatinine, hematocrit, lactate, magnesium, oxygen, pH, phosphorus, potassium, sodium, total protein, uric acid, etc. Objects and advantages of the disclosed subject matter will become apparent from the following description. Further advantages of the disclosed subject matter will be realized and attained by the methods, apparatus, and devices particularly pointed out in the specification and claims hereof, as well as the accompanying drawings.

[0029] By way of example and not limitation, in accordance with the disclosed subject matter, the present disclosure includes a method for quickly delivering high priority data from an analyte sensor to one or more receiving devices by repurposing a reserved communication channel. Exemplary systems and methods may include a method for monitoring a subject using an analyte monitoring device. One or more processors of the analyte monitoring device generate sensor data indicative of an analyte level measured by the analyte sensor. At least a portion of the analyte sensor may be transcutaneously positioned in contact with a bodily fluid of the subject. The one or more processors of the analyte monitoring device may identify a sensor data subset based on a priority level associated with the sensor data. The one or more processors of the analyte monitoring device may prepare a data packet including the identified sensor data subset and connection data associated with establishing a communication session with the analyte monitoring device. The one or more processors of the analyte monitoring device may cause a transceiver of the analyte monitoring device to transmit the data packet to one or more user devices within communication range of the transceiver. The one or more processors of the analyte monitoring device may receive an acknowledgment signal from a first user device of the one or more user devices via the transceiver indicating receipt of the sensor data. In certain embodiments, the data packet further includes identification data of the first user device to direct the data packet to the first user device. In certain embodiments, one or more processors of the analyte monitoring device can receive an activation command from the first user device before causing a transceiver of the analyte monitoring device to transmit the data packet. In certain embodiments, the one or more processors of the analyte monitoring device can identify one or more communication channels associated by a designated communication protocol with establishing a connection between the devices and cause the transceiver to transmit the data packet by generating a signal based on the data packet using the one or more identified communication channels.In certain embodiments, one or more processors of the analyte monitoring device may establish a communication session with the first user device using the transceiver after receiving an acknowledgment signal from the first user device. The one or more processors of the analyte monitoring device may cause the transceiver to transmit a second subset of sensor data to the first user device over the communication session. The second subset of sensor data is data that was not included in the data packet. In certain embodiments, the one or more processors of the analyte monitoring device may encrypt the identified subset of sensor data using an encryption key shared between the analyte monitoring device and the first user device. In certain embodiments, the encryption key may be dynamically determined or identified using a key rotation scheme. In certain embodiments, a priority level associated with the sensor data may be based on the amount of time elapsed since the sensor data was collected. The highest priority level is sensor data that was most recently collected. In certain embodiments, a priority level associated with the sensor data is based on a subject's condition determined from the sensor data. In certain embodiments, the one or more processors of the analyte monitoring device prepare connection data associated with establishing a communication session with the analyte monitoring device based on periodically occurring time windows. In certain embodiments, the analyte can be, by way of example and not limitation, glucose, ketones, lactate, oxygen, hemoglobin A1C, albumin, alcohol, alkaline phosphatase, alanine transaminase, aspartate aminotransferase, bilirubin, blood urea nitrogen, calcium, carbon dioxide, chloride, creatinine, hematocrit, lactate, magnesium, oxygen, pH, phosphorus, potassium, sodium, total protein, uric acid, etc. In certain embodiments, the data packet further includes the subject's temperature, heart rate, blood pressure, or exercise data.

[0030] According to another aspect of the disclosed subject matter, systems and methods may include a user device receiving a data packet from an analyte sensor associated with a subject. The user device may identify a data payload of the data packet. The user device may decrypt the data payload using an encryption key shared between the analyte sensor and the user device. The user device may extract analyte data for the subject from the decrypted data payload. The extracted analyte data may correspond to a most recently generated subset of analyte data collected from the subject. The user device may output the extracted analyte data within an interface of the user device. In certain embodiments, the interface of the user device may indicate, while outputting the extracted analyte data, that the extracted analyte data corresponds to a current or most recently generated analyte measurement for the subject produced by the analyte sensor. In certain embodiments, the user device may output an alarm based on the analyte data. In certain embodiments, the user device may extract identification information for the analyte sensor from the data payload of the data packet. The user device may transmit an acknowledgment signal to the analyte sensor indicating that the extracted analyte data has been received. The user device may establish a communication session with the analyte sensor based on the identification information for the analyte sensor. The user device may receive a set of analyte data for the subject from the analyte sensor. In certain embodiments, the communication session is associated with a current time, and if the analyte sensor and user device have established a previous communication session, the previous communication session corresponds to a previous time. The set of past analyte data includes analyte data for the subject collected by the analyte sensor between the previous time and the current time. In certain embodiments, the user device can be associated with a user authorized by the subject to receive sensor data on the subject's behalf.

[0031] According to another aspect of the disclosed subject matter, systems and methods may include an analyte monitoring device including one or more processors, an analyte sensor, a communications module, and one or more memories communicatively coupled to the one or more processors, the analyte sensor, and the communications module. The one or more processors may be configured to generate sensor data indicative of an analyte level measured by the analyte sensor. At least a portion of the analyte sensor is transcutaneously positioned in contact with a bodily fluid of the subject. The one or more processors may be configured to store the sensor data in one or more memories. The one or more processors may identify a first sensor data subset corresponding to a first time point from the one or more memories. The one or more processors may prepare a data packet including the identified sensor data subset and connection data associated with establishing a communication session with the analyte monitoring device. The one or more processors may cause the communications module to transmit the data packet to one or more user devices within communication range of the communications module. The one or more processors may receive a communication session request from a first user device of the one or more user devices through the communications module. The one or more processors may cause the communication module to transmit a second data packet to the first user device, the second data packet including a second subset of data corresponding to a second point in time.

[0032] For further advantages and in accordance with the objectives of the presently disclosed subject matter as embodied and broadly described, the disclosed subject matter further includes systems and methods for establishing, maintaining, and transmitting data to multiple receiving devices using simultaneous communication sessions. Exemplary systems and methods may include an analyte monitoring device for monitoring a subject using the analyte monitoring device. The analyte monitoring device may include one or more processors, an analyte sensor, a communications module, and one or more memories communicatively coupled to the one or more processors, the analyte sensor, and the communications module. The one or more memories include instructions executable by the one or more processors to configure the one or more processors to perform operations in accordance with the techniques disclosed herein. The one or more processors of the analyte monitoring device generate sensor data indicative of an analyte level measured by an analyte sensor of the analyte monitoring device. At least a portion of the analyte sensor is transcutaneously positioned in contact with a bodily fluid of the subject. The one or more processors of the analyte monitoring device receive a first request for sensor data from a first device and a second request for sensor data from a second device. The one or more processors of the analyte monitoring device select a first sensor data subset in response to the first request. The one or more processors of the analyte monitoring device select a second sensor data subset in response to the second request. The one or more processors of the analyte monitoring device prepare a first data packet including the first sensor data subset and a second data packet including the second sensor data subset. The one or more processors of the analyte monitoring device cause a communication module of the analyte monitoring device to transmit the first data packet to the first device. The one or more processors of the analyte monitoring device cause a communication module of the analyte monitoring device to transmit the second data packet to the second device.

[0033] In certain embodiments, one or more processors of the analyte monitoring device receive an acknowledgment signal indicating receipt of the first sensor data subset from the first device through the communications module before causing the communications module of the analyte monitoring device to transmit the second data packet to the second device. In certain embodiments, the first request and the second request include criteria for selecting the first sensor data subset and the second sensor data subset, respectively. In certain embodiments, the one or more processors of the analyte monitoring device select the first sensor data subset or the second sensor data subset based on a priority level associated with the sensor data. In certain embodiments, the one or more processors of the analyte monitoring device cause the communications module to transmit the first data packet to the first device before causing the communications module to transmit the second data packet to the second device based on the analyte monitoring device receiving the first request for sensor data before receiving the second request for the second data. In certain embodiments, the first device or the second device is a fitness monitor or a fitness device. In certain embodiments, the first device or the second device includes a medical component for use by the subject based on the first or second sensor data subset. In certain embodiments, the first or second device includes a network component that transmits the first or second sensor data subset to one or more remote devices. In certain embodiments, the first device is a smartphone and the second device is a smartwatch.

[0034] In certain embodiments, one or more processors of the analyte monitoring device receive a connection request from the first device via the communications module, the connection request including identification information of the second device received by the first device from the second device during a communication session between the first device and the second device and information facilitating the communication session with the second device; send an acknowledgment of the connection request to the second device using the information facilitating the communication session with the second device; and establish a communication session with the second device via communication with the first device by performing mutual authentication with the second device and generating a shared encryption key for the subsequent communication session. In certain embodiments, the first request for sensor data includes an identifier of the first device. The identifier is an index in a mapping table stored by the analyte monitoring device. The one or more processors of the analyte monitoring device identify the first device based on querying the mapping table using the index from the first request. In certain embodiments, one or more processors of the analyte monitoring device encrypt the first subset of sensor data using a first encryption key shared between the analyte monitoring device and the first device and encrypt the second subset of sensor data using a second encryption key shared between the analyte monitoring device and the second device. In certain embodiments, the first encryption key and the second encryption key are dynamically determined or identified using a key rotation scheme. In certain embodiments, the analyte includes glucose, ketones, lactate, oxygen, hemoglobin A1C, albumin, alcohol, alkaline phosphatase, alanine transaminase, aspartate aminotransferase, bilirubin, blood urea nitrogen, calcium, carbon dioxide, chloride, creatinine, hematocrit, lactate, magnesium, oxygen, pH, phosphorus, potassium, sodium, total protein, or uric acid.

[0035] For purposes of explanation and not limitation, reference is made to an exemplary embodiment of an analyte monitoring system 100 for use with the disclosed subject matter, as shown in FIG. 1 . FIG. 1 illustrates an operating environment for a preferably low-power analyte monitoring system 100 in which the technology described herein may be embodied. The analyte monitoring system 100 may include a system of components designed to provide monitoring of parameters such as analyte levels in a human or animal body, or may provide other operations based on the configuration of various components. For example, the analyte monitoring system 100 may provide continuous glucose monitoring to a user or may provide delivery of medications and other pharmaceuticals. As embodied herein, the system may include a low-power sensor control device 110, also referred to as a sensor, that is worn by a user or attached to the body from which information is collected. As embodied herein, the sensor control device 110 may be a disposable device that is sealed to improve ease of use and reduce the risk of tampering, as described further herein. The low-power analyte monitoring system 100 may further include a data receiving device 120 configured to facilitate retrieval and delivery of data, including analyte data, from the sensor control device 110, as described herein.

[0036] As embodied herein, the analyte monitoring system 100 may additionally or alternatively include a software or firmware library or application provided by a third party that is embedded in a general-purpose hardware device 130, such as a mobile phone, tablet, personal computing device, or other similar computing device, that can communicate with the sensor controller 110 via a communications link. General-purpose hardware may further include embedded devices, including, but not limited to, an insulin pump or insulin pen, that have an embedded library configured to communicate with the sensor controller 110. A general-purpose device 130 that embodies and executes a software library may be referred to as a data receiving device that communicates with the sensor controller 110. As used herein, a data receiving device 120 may refer to a hardware device specifically manufactured to communicate with the sensor controller 110 within the analyte monitoring system 100, while a general-purpose data receiving device 130 refers to a suitably configured hardware device that incorporates a software or firmware library or runs an application. As used herein, a data communication device refers to either or both of the data receiving device 120 or the general-purpose data receiving device 130. It will be understood that the security architecture and design principles described herein are equally applicable to any suitably configured system including a sensor controller 110, a suitably configured data receiving device 120 or a general-purpose data receiving device 130, and other components similar to those described herein. The role of the sensor controller 110 may be determined by the nature of the sensing hardware embodied within the sensor controller 110.

[0037] As embodied herein, the sensor control device 110 can include a small, individually packaged, disposable device having a predetermined active use life (e.g., 1 day, 14 days, 30 days, etc.). The sensor 110 can be applied to the skin of a user's body and remain attached for the duration of the sensor life. As embodied herein, the sensor 110 can be designed to be selectively detached and continue to function upon reapplication.

[0038] While the illustrated embodiment of the analyte monitoring system 100 includes only one each of the sensor control device 110, data receiving device 120, multi-purpose data receiving device 130, user device 140, and remote server 150, the present disclosure contemplates that the analyte monitoring system 100 may incorporate multiple of each component interacting throughout the system. For example, the embodiments disclosed herein include multiple sensors 110 that may be associated with multiple users in communication with the remote server 150. Additionally, while the remote server is shown as a single entity 150, it will be understood that the remote server may include multiple networked servers that may be geographically dispersed to reduce latency and introduce intentional redundancy to avoid downtime of the monitoring system.

[0039] For purposes of explanation and not limitation, reference is made to an exemplary embodiment of a sensor control device 110 for use with the disclosed subject matter, as shown in FIG. 2 . FIG. 2 is a block diagram of an example sensor control device 110 according to an exemplary embodiment that is compatible with the security architecture and communication schemes described herein. As embodied herein, the sensor control device 110 may include an application specific integrated circuit (“ASIC”) 200 communicatively coupled to a communications module 240. By way of example only and not limitation, the example communications module 240 may include a Bluetooth Low-Energy (“BLE”) chipset 241, a near field communication (“NFC”) chipset, or other chipset for use with a personal area network according to the IEEE 802.15 protocol, an IEEE 802.11 protocol, infrared communications according to the Infrared Data Association standard (IrDA), or similar short-range communications schemes. The communications module 240 may transmit and receive data and commands via interaction with a similarly capable communications module of the data receiving device 120 or the general-purpose data receiving device 130. As embodied herein, the ASIC 200 may incorporate several communication chipsets (eg, NFC antenna 225).

[0040] As embodied herein, the sensor control device 110 is designed to be power-efficient, low-cost, and potentially disposable, so the ASIC 200 can include a microcontroller core 210, on-board memory 220, and storage memory 230. The storage memory 230 can store data used in the authentication and encryption security architecture. The data can have a variety of elements and uses, including those described in the examples herein. The ASIC 200 can receive power from a power module 250, such as an on-board battery or an NFC pulse. The power module 250 can store only a relatively small charge. As embodied herein, the sensor control device 110 can be a disposable device with a predetermined useful life and no wide-area network communication capability. As embodied herein, the communication module 240 can provide communication under battery power.

[0041] The microcontroller 210 further includes a timing control circuit 211 used, among other things, to wake the sensor controller 110 from a sleep state. The timing control circuit 211 may include a clock for synchronizing the timing of advertisement or connection events and for going to sleep between advertisement or connection events. The clock may determine when the sensor controller 110 should next wake up after processing an advertisement or connection event and before going to sleep. The timing circuit 211 may then set an event to wake up in time for the next advertisement or connection event. The microcontroller 210 may also include a startup module 212. The startup module may store program instructions in ROM that, when executed, are utilized to control modules within the sensor controller 110, such as the memory 220 and the communications module 240. Additionally or alternatively, the startup module 212 may be located on a separate circuit within the sensor controller 110. The microcontroller 210 includes an operating system module 213. The operating system module 213 supports applications or other individual functions running within the sensor controller 110. Additionally or alternatively, the operating system module 213 may be located on a separate circuit. The sensor controller 110 may include a protocol stack 230, which may include a controller and a host, each of which may include various communication layers. The protocol stack 230 may include or embody operations for the sensor controller 110 to communicate with other devices using one or more communication protocols. Additionally or alternatively, the protocol stack 230 may be located on a separate circuit within the sensor controller 110, such as in the communication module 240.

[0042] Although the present disclosure is described with respect to exemplary configurations of the sensor controller 110 and the ASIC 200, other suitable configurations are contemplated. By way of example, the processing hardware of the sensor controller 110 may be implemented as another type of dedicated processor, such as a field programmable gate array (FPGA). As embodied herein, the processing hardware of the sensor controller 110 may include a general-purpose processing unit (e.g., a CPU) or another programmable processor that is temporarily configured by software to perform the functions of the sensor controller 110. More generally, the processing hardware may be implemented using hardware, firmware, software, or any suitable combination of hardware, firmware, and software. By way of example and not limitation, the processing hardware of the sensor controller 110 may be determined by one or more factors, including computing power, power capacity, memory capacity, availability of network connectivity, etc.

[0043] As embodied herein, the communication module 240 of the sensor 100 may be or may include one or more modules that support the sensor control device 110 in communicating with other devices in the analyte monitoring system 100. In some embodiments, the sensor control device 110 may communicate with, for example, the data receiving device 120 or the user device 140. The communication module 240 may include, for example, a cellular wireless module. The cellular wireless module may include one or more wireless transceivers and / or chipsets for communicating using broadband cellular networks, including, but not limited to, third-generation (3G), fourth-generation (4G), and fifth-generation (5G) networks. The sensor control device 110 may use the cellular wireless module to communicate with a remote device (e.g., a remote server 150) to provide analyte data (e.g., sensor readings) and receive updates or alerts for the user.

[0044] As another example, the communication module 240 may include a BLE module 241 and / or an NFC module to facilitate communication with the data receiving device 120 or user device 140 functioning as an NFC scanner or BLE endpoint. As used throughout this disclosure, Bluetooth Low Energy ("BLE") refers to a short-range communication protocol optimized for simplifying Bluetooth device pairing for end users. The communication module 240 may include additional or alternative chipsets for use with similar short-range communication schemes, such as personal area networks according to the IEEE 802.15 protocol, IEEE 802.11 protocol, or infrared communication according to the Infrared Data Association standard (IrDA). The communication module 240 may transmit and receive data and commands through interaction with similarly capable communication modules in the data receiving device 120 or user device 140. Several communication chipsets (e.g., NFC antenna loops) may be incorporated into the ASIC 200. Also, although not shown, the communications module 240 of the sensor controller 110 may include a radio for communicating using a wireless local area network according to one or more of the IEEE 802.11 standards (e.g., 802.11a, 802.11b, 802.11g, 802.11n (also known as Wi-Fi 4), 802.11ac (also known as Wi-Fi 5), and 802.11ax (also known as Wi-Fi 6)). The communications module 243 may further include its own memory 243 coupled to the microcontroller core of the communications module 240 and / or the microcontroller core 210 of the ASIC 200 of the sensor controller 110.

[0045] The communications module 240 may include communications circuitry such as an antenna 244, a transceiver 245, a memory 243, a processor 246, and a set of one or more transmit and receive amplifiers (collectively referred to as amplifiers 247). Although not shown, the communications module 240 may include multiple sets of communications circuitry (e.g., one for each supported communications protocol). For simplicity, only a single set of communications circuitry is shown. In some cases, the processor 246 of the communications circuitry may be similar to the microcontroller 210. Optionally, the transceiver 245 may be provided as a single component or as a separate transmitter and separate receiver. The one or more transmit amplifiers 247 are configured to be selectively coupled between the transmitter output of the transceiver 245 and the antenna 244. The one or more receive amplifiers 247 are configured to be selectively coupled between the antenna 244 and the receiver input of the transceiver 245.

[0046] As described herein, the transmitter and receiver of transceiver 245, without the addition of a transmit amplifier 247 or a receive amplifier 247, exhibit certain power and sensitivity limits based on the components and design of a particular implementation. By providing one or more transmit amplifiers 247 selectively connected between the antenna transmitter output, transmit power can be increased up to 10 dBm. As another example, the receiver of transceiver 245, when operating alone without the addition of a separate receive amplifier 247, can exhibit receive sensitivity up to −85 dBm. By providing one or more receive amplifiers 247 selectively connected between the antenna 244 and the receiver input of transceiver 245, receive sensitivity can be increased to −100 dBm.

[0047] As described herein, the transmitter of the transceiver 245 may transmit compositely arranged advertisement notices (e.g., communication packets including at least a payload containing information facilitating discovery and initiation of a communication session with another device) while the communications module 240 is initialized, and then enter a sleep state according to the advertisement interval. The receiver of the transceiver 245 performs a scanning operation during the receive window to scan for connection requests. The connection requests may be transmitted in response to an advertisement notice or independently by another device. The scanning operation during each receive window may be performed during the same period as the transmission of the advertisement notice 224 over the corresponding advertisement channel. Optionally, the receive window and scanning operation may continue after the transmission of the advertisement notice is complete. Thus, the scanning operation and receive window may be aligned in time with the composite advertisement notice or may extend beyond the composite advertisement notice 224 into the advertisement interval sleep state.

[0048] As embodied herein, a first security layer for communications between the sensor control device 110 and other devices can be established based on security protocols specified by and integrated into the communication protocols used for communication (e.g., BLE security protocol, Wi-Fi 5 security protocol). Another security layer can be based on communication protocols that require proximity of the communicating devices. Furthermore, certain packets and / or certain data contained within packets can be encrypted, while other packets and / or data within packets can be encrypted differently or not. As an example, to facilitate discovery by other devices, connection data and / or connection packets allocated to establishing a communication connection between devices can be largely unencrypted, with sensitive analyte data being encrypted, even if contained within the connection packets.

[0049] Additionally or alternatively, another layer of security can be based on the use of application layer encryption by the sensor control device 110 and other communicating devices using one or more block ciphers to establish mutual authentication and encryption of other devices in the analyte monitoring system 100. The use of a non-standard encryption design implemented at the application layer has several advantages. One advantage of this approach is that in some embodiments, the user can complete pairing of the sensor control device 110 with other devices with minimal interaction, such as using only an NFC scan, without requiring further input such as entering a security pin or confirming the pairing.

[0050] To perform its function, the sensor 100 may further include sensing hardware 260 appropriate for that function. As embodied herein, the sensing hardware 260 may include an analyte sensor disposed transcutaneously or subcutaneously in contact with a subject's bodily fluid. The analyte sensor may generate sensor data including a value corresponding to the level of one or more analytes in the bodily fluid. Additionally or alternatively, the sensing hardware 260 may include an autoinjector, for example, prescribed to a user for self-administration of a medication or other pharmaceutical product. Accordingly, the sensing hardware 260 may include a mechanism for driving a needle or plunger of the syringe to administer the medication subcutaneously. The syringe may be pre-filled with the medication and may operate in response to a trigger event. For example, the mechanism may administer the medication subcutaneously through the needle by inserting the needle into the user and advancing the plunger.

[0051] As embodied herein, the sensor control device 110 may be configured as an on-body injector attachable to a user's body tissue (e.g., skin, organ, muscle, etc.) that can automatically deliver a subcutaneous injection of a fixed or user-selected dose of medication over a controlled or selected period of time. In such embodiments, for example, the sensing hardware 260 or analyte sensor may include an adhesive or other means for temporarily attaching the sensing hardware 260 to a user's body tissue, a primary container for storing the drug or medication, a drive mechanism configured to drive or enable release of a plunger to expel the drug from the primary container, a trocar (e.g., a solid needle), a flexible cannula disposed about the trocar, an insertion mechanism configured to insert the trocar and / or flexible cannula into a user and optionally retract the trocar, leaving the flexible cannula within the user, a fluid pathway connector configured to establish fluid communication between the primary container and the flexible cannula upon actuation of the device, and an actuator (e.g., a user-actuable button) configured to actuate the device. As embodied herein, the on-body injector may be pre-filled and / or pre-primed.

[0052] The sensing hardware 260 can also include electrical and / or electronic components in addition to mechanical components. For example, an electronic switch can be coupled to the mechanism. The sensor controller 110 can establish authenticated communications, receive the encrypted signal, decode the signal using techniques of the present disclosure, determine that the signal includes a command to operate the switch, and cause the switch to actuate the needle. Thus, analyte sensors embodied herein can be configured to perform an analyte function using the sensing hardware 260 in response to a remote command.

[0053] As embodied herein, the sensing hardware 260 can include a movement sensor and an analog-to-digital converter that generates a digital signal indicative of the distance traveled by the needle or plunger. The low-power sensor controller 110 can take readings from the sensor upon delivery of the medication, encrypt the readings using techniques of the present disclosure, and securely report the readings to another device. Additionally or alternatively, the sensor controller 110 can report other measurements or parameters, such as the time the medication was delivered, the amount of medication delivered, or any problems encountered during medication delivery. The sensor controller 110 can be configured to provide data regarding the operation of the sensing hardware 260 to a remote device.

[0054] The sensing hardware 260 can be configured to implement any suitable combination of one or more analyte functions and can include one or more sensing components. The sensing components can be configured to detect the operational state of the sensor control unit 110 (e.g., opening / preparation for administration, removal of sterile barrier, contact with user's body tissue, insertion of cannula and / or needle, initiation of drug delivery, actuator or button displacement, completion of drug delivery, plunger position, occlusion of fluid path, etc.), the state of the sensor control unit 110 or the drug contained therein (e.g., temperature, exposure to shock or vibration, exposure to light, drug color, drug turbidity, drug viscosity, geographic location, spatial orientation, time information, ambient atmosphere, etc.), and / or physiological information about the user (body temperature, blood pressure, pulse or heart rate, blood glucose level, physical activity or movement, fingerprint detection, etc.). This detected information can be offloaded from the sensor control unit 110 to the data receiving device 120, the multipurpose data receiving device 130, a remote server 150, or the like for easy storage and analysis. As embodied herein, sensor control device 110 may be configured to receive encrypted data from other devices and transmit encrypted data to other devices.

[0055] Continuing with reference to FIG. 2 , the ASIC 200 of the sensor controller 110 can be configured to dynamically generate authentication and encryption keys using data maintained in the storage memory 230. The storage memory 230 can also be pre-programmed with sets of authentication and encryption keys valid for use with particular classes of devices. The ASIC 200 can be further configured to use the received data to perform authentication procedures (e.g., handshakes, mutual authentication, etc.) with other devices and to apply generated keys to sensitive data prior to transmission, such as transmitting the sensitive data to the remote server 150 via the communications module 240. The generated keys can be specific to the sensor controller 110, specific to a pair of devices (e.g., specific to a particular pair of the sensor controller 110 and the data receiving device 120), specific to a communication session between the sensor controller 110 and another device, specific to a message transmitted during the communication session, or specific to a data block contained within the message. Techniques implemented by the ASIC 200 and communications module 240 of the sensor controller 110 are described in further detail herein.

[0056] For purposes of explanation and not limitation, reference will be made to an exemplary embodiment of a data receiving device 120 for use with the disclosed subject matter, as shown in FIG. 3 . The data receiving device 120 and associated multi-purpose data receiving device 130 include components relevant to the description of the sensor control device 110 and its operation, and may also include additional components. In certain embodiments, the data receiving device 120 and multi-purpose data receiving device 130 may be or include components provided by a third party and are not necessarily limited to including devices manufactured by the same manufacturer as the sensor control device 110. In certain embodiments, the data receiving device 120 may include a disposable or limited-use device configured for operation for a specific purpose or during a specific period of time. As an example, the data receiving device 120 may include components of a multi-purpose device specifically configured to receive data from the sensor control device 120.

[0057] FIG. 3 illustrates an example data receiving device 120 that conforms to the security and computing architecture described with respect to the exemplary embodiments herein. As embodied herein, the data receiving device 120 may include a small form factor device. The data receiving device 120 may optionally be less memory- or processing-power-constrained than the sensor controller 110, and as embodied herein, the data receiving device 120 may include sufficient memory for storage of operating software and data, and sufficient RAM for execution of software that communicates with the sensor controller 110 as described herein. As shown in FIG. 3, the data receiving device 120 includes an ASIC 300 that includes a microcontroller 310, memory 320, and storage 330 and is communicatively coupled to a communications module 340. As embodied herein, the ASIC 300 may be identical to the ASIC 200 of the sensor controller 110. Additionally or alternatively, the ASIC 300 may be configured to include additional computing capabilities and functionality. Power for the components of the data receiving device 120 may be provided by a power module 350, which may include a rechargeable battery allowing for sustained operation and continuous use as embodied herein.

[0058] Some embodiments of the data receiving device 120 may further include a display 370 to facilitate review of analyte data received from the sensor control device 110 or other devices (e.g., user device 140 or remote server 150). The display 370 may be a power-efficient display with a relatively low screen refresh rate to conserve energy usage and further reduce costs of the data receiving device 120. The display 370 may be a low-cost touch screen that receives user input through one or more user interfaces. Although not shown, the data receiving device 120 may also include other user interface components (e.g., a physical key, a light sensor, a microphone, etc.). Power for the components of the data receiving device 120 may be provided by a power module 350, which may include a rechargeable battery that allows for sustained operation and continued use as embodied herein. In certain embodiments, the data receiving device 120 or the multi-purpose device 130 may be configured without a display and used to relay information from the sensor control device 120 to another component or system.

[0059] Although the processor of the communications module 340 is shown as a separate component, in certain embodiments it may perform processing operations typically performed by the microcontroller 310 of the ASIC 300. Thus, the ASIC 300 may be eliminated and memory and other storage added to the communications module, simplifying the hardware requirements of the data sink 120.

[0060] The communications module 340 may include a BLE 341 module and an NFC module 342. The data receiving device 120 may be configured to wirelessly couple to the sensor controller 110 to send commands to and receive data from the sensor controller 110. In some embodiments, the data receiving device 120 may be configured to operate as an NFC scanner and a BLE endpoint for the sensor controller 110 as described herein via a particular module of the communications module 340 (e.g., the BLE module 342 or the NFC module 343). For example, the data receiving device 120 may issue commands to the sensor controller 110 (e.g., an activation command for a data broadcast mode of the sensor, a pairing command that identifies the data receiving device 120 and the sensor controller 110) using a first module of the communications module 340, and may send and receive data to and from the sensor controller 110 using a second module of the communications module 340.

[0061] As embodied herein, the data receiving device 120 can be configured to communicate via a Universal Serial Bus (USB) module 345 of the communication module 340. The data receiving device 120 can communicate with the user device 140, for example, via the USB module 345. The data receiving device 120 can, for example, receive software or firmware updates via USB, receive bulk data via USB, or upload data to a remote server 150 via the user device 140. The USB connection can be authenticated upon each plug event. The authentication can use, for example, a two-pass, three-pass, four-pass, or five-pass design with different keys. The USB system can support a variety of different key sets for encryption and authentication. The keys can be tailored to different roles (e.g., clinical, manufacturer, user). Sensitive commands that could potentially leak security information can trigger authenticated encryption using an additional authenticated key set.

[0062] As another example, the communication module 340 can include, for example, a cellular radio module 344. The cellular radio module 344 can include one or more wireless transceivers for communicating using broadband cellular networks, including but not limited to third generation (3G), fourth generation (4G), and fifth generation (5G) networks. The data receiving device 120 can use the cellular radio module 344 to communicate with the remote server 150 to receive analyte data or to provide updates or input received from a user (e.g., through one or more user interfaces). The communication module 340 of the data receiving device 120 may also include a Wi-Fi radio module 343 for communicating using a wireless local area network according to one or more of the IEEE 802.11 standards (e.g., 802.11a, 802.11b, 802.11g, 802.11n (also known as Wi-Fi 4), 802.11ac (also known as Wi-Fi 5), and 802.11ax (also known as Wi-Fi 6)).

[0063] As used throughout this disclosure, Bluetooth Low Energy (“BLE”) refers to a short-range communication protocol optimized to simplify pairing of Bluetooth devices for end users. As described herein, the use of BLE on the sensor controller 110 may optionally not rely on a standard BLE implementation of Bluetooth for security but instead use application-layer encryption that employs one or more block ciphers to establish mutual authentication and encryption. The use of a non-standard encryption design implemented at the application layer has several advantages. One advantage of this approach is that it allows the pairing of the sensor controller 110 and the data receiving device 120 to be completed using only an NFC scan, without any further user input, such as entering a security pin or confirming BLE pairing between the data receiving device and the sensor controller 110. Another advantage is that this approach mitigates the possibility of devices not in close proximity to the sensor controller 110 accidentally or intentionally pairing, at least in part because the information used to support the pairing process is shared over a short-range backup short-range communication link (e.g., NFC) rather than a long-range BLE channel. Furthermore, since no BLE pairing and bonding scheme is involved, pairing of the sensor control device 110 can avoid implementation issues by chip vendors or vulnerabilities in the BLE specification.

[0064] As embodied herein, the onboard storage 330 of the data receiving device 120 can provide long-term storage of analyte data received from the sensor control device 110. Additionally, the multipurpose data receiving device 130 or the user computing device 140 as embodied herein can be configured to communicate with a remote server 150 over a wide area network. As embodied herein, the sensor control device 110 can provide sensitive data to the data receiving device 120 or the multipurpose data receiving device 130. The data receiving device 120 can transmit the sensitive data to the user computing device 140. Furthermore, the user computing device 140 (or the multipurpose data receiving device 130) can transmit this data to the remote server 150 for processing and analysis. When communicating with the remote server 150, the multipurpose data receiving device 130 and the user computing device 140 can generate a unique user token according to authentication credentials entered by the user and stored on their respective devices. The authentication credentials can be used to establish a secure connection with the remote server 150 and can further be used to encrypt, if necessary, any sensitive data provided to the remote server 150. As embodied herein, optionally, the general-purpose data receiving device 130 and the user computing device 140 can be less constrained in their use of processing power and therefore can use standard data encryption and transmission techniques when transmitting to the remote server 150.

[0065] As embodied herein, the data receiving device 120 may further include sensing hardware 360 similar to or extending from the sensing hardware 260 of the sensor control device 110. By way of example only and not limitation, in embodiments in which the sensing hardware 260 of the sensor control device 110 is configured for continuous glucose monitoring, the sensing hardware 360 of the data receiving device 120 may be configured to include a blood glucose meter compatible for use with blood glucose test strips, thus extending the blood glucose monitoring of the sensor control device 110. In certain embodiments, a compatible device 130 may be configured to operate in coordination with the sensor control device 110 based on analyte data received from the sensor control device 110. By way of example, if the sensor control device 110 is a glucose sensor, the compatible device 130 may be or include an insulin pump or an insulin injection pen. The compatible device 130 may cooperatively adjust a user's insulin dosage based on the glucose value received from the analyte sensor.

[0066] FIG. 4 illustrates an example packet according to some embodiments. Specifically, FIG. 4 illustrates the layout of a packet 400 used to transmit both analyte data and connection data (e.g., advertising data or data otherwise used to establish a connection between devices). The packet 400 can be prepared in accordance with the techniques disclosed herein. In particular embodiments, the packet 400 can include a packet header 405. The packet header 405 can include, by way of example and not limitation, information used by a receiving device (e.g., the data receiving device 120 or the user device 140) to identify how the payload 410 should be interpreted. As one example, the packet header 405 can identify that the packet 400 contains connection data. As another example, the packet header 405 can identify that the packet 400 contains analyte data. The packet header 405 can include one or more identifying values specified by the manufacturer of the sensor control device 110 or selected according to a communication protocol. The identifying values can uniquely indicate the purpose and potential use of the packet 400 to a receiving device configured to interpret the identifying values. The identification value can be unique across manufacturers using a particular communication protocol, such as one that is compatible with the communication module of the sensor control device 110. For example, the identification value can indicate that the packet 400 is a data connection packet or an advertisement packet. As another example, the identification value can indicate that the packet 400 is an enhanced connection packet or an advertisement packet that includes manufacturer-specific information, such as encrypted analyte data 425.

[0067] Additionally or alternatively, as embodied herein, the packet header 405 may also include information indicating that the packet 400 is from the sensor control device 110. The packet 400 may indicate the manufacturer of the sensor control device 110. In particular embodiments, the amount and extent of identifying information included in the packet header 405 may be selected to ensure that a receiving device can interpret the payload 410 while maintaining the security of the subject's identity, the identity of the sensor control device 110, the analyte data contained in the packet, etc.

[0068] Continuing with reference to FIG. 4 , the packet 400 may include a payload 410. The format of the payload 410 may be predetermined by the manufacturer of the sensor control device 110 to correspond to the information included in the packet header 405. A receiving device may then use the packet header 405 to interpret the data in the payload 410. In particular embodiments, the payload 410 may include a payload header 415, connection data 420, and analyte data 425. The payload header 415 may include additional information to facilitate interpretation of the data included in the payload 410. For example, the payload header 415 may indicate the expected size of the payload 410 or may classify or otherwise indicate what information is included in the payload 410. As embodied herein, the sensor control device 110 may operate in different modes for preparing and broadcasting different categories or types of packets that include corresponding categories or types of payloads. For example, aspects of the data included in a given payload, such as the type of data, the format of the data, or the arrangement or layout of the data, may vary based on the category of the payload. By way of example and not limitation, in the connectable packet mode, the sensor controller 110 may include connection data 420 within the payload 410. The connectable packet mode may be configured to facilitate the sensor controller 110 establishing a communication session with a receiving device to offload stored data. While operating in the connectable packet mode, the sensor controller 110 may allocate more space to the connection data 420 than it would otherwise allocate while operating outside of the connectable packet mode. By way of another example and not limitation, in the informational packet mode, the sensor controller 110 may include analyte data 425. The informational packet mode may be configured to facilitate the sensor controller 110 broadcasting a selected subset of analyte data for the receiving device to receive and interpret, deemphasizing the establishment of a subsequent communication session.While operating in the informational packet mode, the sensor controller 110 may allocate more space to the analyte data 425 than it would otherwise allocate while operating in a non-informational packet mode. As another example and without limitation, in the mixed packet mode, the sensor controller 110 may include both the connection data 420 and the analyte data 425. In addition to or instead of the connectable packet mode, the informational packet mode, and the mixed packet mode, the sensor controller 110 may operate in various other modes and / or include additional information within the payload 410. As an example, the sensor controller 110 may operate in a low-power mode that may adjust the number of packets broadcast and may include data corresponding to a low-power alert. The payload header 415 may specify the category of the payload 410 included in the packet 400. After receiving the packet 400, the receiving device may interpret the payload header 415 of the received packet 400 to determine the category of the payload 410 of the received packet. Based on determining the category of the payload 410, the receiving device may efficiently determine how to interpret the payload 410 of the received packet. Additionally or alternatively, the receiving device may detect errors in payload 410 based on, for example, data retrieved from payload 410 not corresponding to an expected format or arrangement.

[0069] In certain embodiments, the payload 410 may include connection data 420. The connection data 420 may include a set of parameters that facilitate the receiving device establishing a connection with the sensor controller 110. For example, the connection data 420 may include information detailing the connection procedure expected by the sensor controller 110. The connection procedure may include an encoding scheme used by the sensor controller 110. In certain embodiments, the connection data 420 may include identifiers for the sensor controller 110 and / or the device to which the sensor controller 110 intends to connect, if these identifiers are known. By way of example and not limitation, the identifier may include a unique device identifier, an identifier associated with a communication protocol (e.g., a Bluetooth or BLE identifier), an identifier associated with the networking and / or communication hardware of the sensor controller 110 (e.g., a media access control address (“MAC address”)), or other suitable identifier. If the communication protocol used by the analyte sensor (e.g., a communication protocol compatible with the communication module 240 of the sensor controller 110) supports the use of multiple communication channels and / or channel hopping, the connection data may include information for the receiving device to initiate a communication session accordingly. In certain embodiments, the packet 400 can be configured to appear as a data packet or an advertisement packet that conforms to an established communication protocol or standard supported by the communication module 240 of the sensor control device 110. For example, the sensor control device 110 can use one or more connection facilitation or advertisement data formats specified by the communication protocol to facilitate wide compatibility with the sensor control device 110. The connection data 420 included in the payload 410 can be configured according to these formats.

[0070] In certain embodiments, the payload 410 can further include analyte data 425. As described herein, the sensor controller 110 can include sensing hardware 260, which can include one or more sensors. The analyte data 425 can include data received from one or more sensors. By way of example and not limitation, this data can include raw data from one or more components of the sensing hardware 260 (e.g., signal values read from an analog-to-digital converter), data used to process the raw data from components of the sensing hardware 260 (e.g., temperature levels, noise levels, etc.), data processed by the sensor controller 110 into another usable format (e.g., human-readable data), etc. The data can further include derived values calculated from the sensor data, such as calculated rates of change, trend values, and predicted values. Additionally or alternatively, the sensing hardware 260 can include components for administering therapy to the subject analyte data. For example, the sensor controller 110 can include an insulin pump, and the sensing hardware 260 can include hardware for injecting a fixed amount of insulin. The specimen data 425 may include information regarding treatments administered, including, but not limited to, the frequency of treatments administered, the cumulative amount or effect of treatments administered, the remaining capacity of the sensing hardware 260 to administer the treatment, the time of the most recent treatment administered, etc.

[0071] In certain embodiments, the payload 410 may further include an integrity check value 430. The integrity check value 430 may be a value calculated or derived from the data contained in the payload 410 or packet 400 that can serve as an efficient way for a receiving device to determine whether the data in the payload 410 has been intentionally or unintentionally modified during transmission, encryption / decryption, etc. As discussed above, the data stored in the payload 410 may include subject analyte data 425 or other sensitive data. Ensuring data integrity is an important feature of the analyte monitoring system 100, especially when such data can be used to generate alerts or inform diagnoses regarding the subject's health. In certain embodiments, upon receiving the packet 400 (and, if the integrity check value 430 is stored in the payload 410, upon decrypting the payload 410), the receiving device may compare the value of the integrity check value 430 to a counterpart check value 430. If the received integrity check value 430 does not correspond to the other party check value 430, the receiving device may ignore the payload 410 or may notify the sensor control device 110, the subject, or a user of the receiving device of a possible error. In particular embodiments, the other party check value may include a value calculated by the receiving device after receiving the packet 400 using the same algorithm or formula and input data that the sensor control device 110 would have used in preparing the integrity check value 430 prior to transmission. By way of example and not limitation, the integrity check value 430 may include an error detection code of a size determined based on the size of the payload 410 and / or packet 400. By way of another example and not limitation, the integrity check value 430 may also include a checksum or other cryptographic hash value derived from the data in the payload 410 or packet 430.

[0072] The packet 400 may also include other values not shown in FIG. 4 . As one example, the packet 400 may include a counter value corresponding to the total operational hours of the sensor control device 110. The packet 400 may include a value representing the expected remaining functional life of the sensor control device 110 (e.g., the expected remaining battery life of the sensor control device 110, the expected remaining usefulness of any limited-life materials within the sensor control device 110, etc.). The packet 400 may include a timestamp, for example, corresponding to the time the analyte data 425 was collected or the time the packet 400 was transmitted. The receiving device may use the timestamp to verify that the analyte data 425 corresponds to data useful to a subject and / or user of the receiving device. For example, if the timestamp associated with the packet 400 has an elapsed time greater than a threshold elapsed time, the receiving device may decide to represent the analyte data 425 as containing only the most recent value rather than as containing a current value. In certain embodiments, the packet 400 may include manufacturer-specific data set or required by the manufacturer of the sensor control device 110 and / or the operator of the analyte monitoring system 100.

[0073] In certain embodiments, some or all of the data included in the data payload 410 may be encrypted. For example, the entire payload 410 may be encrypted, the data included in the payload 410 other than the payload header 415 may be encrypted, or only the analyte data 425 or the connection data 420 may be encrypted. In certain embodiments, the sensor controller 110 may encrypt the appropriate data before preparing the payload 410 and packet 400. As described herein, the encryption performed by the sensor controller 110 may be informed by balancing the computational complexity of the encryption with low-cost components used within the sensor controller 110.

[0074] 5 illustrates an example process 500 for transmitting analyte data in a connection packet from a sensor control device 110, such as an analyte monitoring device, according to embodiments disclosed herein. The example process 500 further includes actions that the sensor control device 110 can take after transmitting the analyte data. Through the process 500, the analyte data is transmitted in an encrypted payload of the data packet over a communication channel used for device discoverability to facilitate delivery of high-priority analyte data. As shown, the process 500 can be iterative, and each iteration of the process 500 can follow one or more paths based at least in part on the operation of the sensor control device 110 and other devices in the analyte monitoring system 100.

[0075] At 505, the sensor control unit 110 can collect analyte data from the subject. As described herein, the sensor control unit 110 can include sensing hardware useful for monitoring the health of the subject (e.g., a person wearing the sensor control unit 110). In certain embodiments, the sensing hardware can include analyte sensors that measure the level of an analyte (e.g., glucose, lactate, oxygen, etc.) in the subject's bodily fluids (e.g., blood, sweat, extracellular fluid, interstitial fluid, etc.). In certain embodiments, the sensing hardware can include temperature sensors, activity or motion sensors, heart rate sensors, or other sensing hardware. The sensor control unit 110 can receive input from the sensing hardware (e.g., analyte sensors, temperature sensors, etc.) in a streaming manner that includes or corresponds to a health characteristic or condition of the subject (e.g., analyte level, blood or skin temperature, etc.). In certain embodiments, the input from the sensing hardware can be processed by the analyte sensors. The input can be temporarily stored in memory of the sensor control unit 110 (e.g., volatile memory or RAM of an ASIC or other control unit). As mentioned above, the sensor controller 110 can be a relatively low-cost sensor controller 110 that may lack significant computing, storage, or output capabilities (e.g., to output information related to analyte data). Thus, the sensor controller 110 can store received data in its memory before offloading it to another device, for example, for further processing or display.

[0076] At 510, the sensor controller 110 can determine its operational mode regarding the preparation and broadcast of different categories or types of packets containing corresponding category or type payloads as described herein. Specifically, the sensor controller 110 can periodically broadcast data and / or information from sensing hardware to facilitate connectivity between the sensor controller 110 and a receiving device (e.g., the data receiving device 120, the general-purpose data receiving device 130, or the user device 140). The sensor controller 110 can prepare and broadcast packets, such as packet 400, containing selected data. By way of example, the sensor controller 110 can prepare and broadcast packets every 1 second, every 2 seconds, every 5 seconds, etc. As embodied herein, the sensor controller 110 can select which information to include in the packets. For example, the sensor controller 110 can periodically select which information to include (e.g., packets containing connection data evenly divided among packets containing analyte data, five packets containing analyte data for every packet containing connection data, 50 packets containing analyte data followed by five packets containing connection data, etc.). The sensor control device 110 can select what information to include based on the last time the sensor control device 110 connected with the receiving device, or the last time the data contained in the analyte sensor's memory was offloaded to the receiving device, the remaining battery life of the sensor control device 110, or the length of time the sensor control device 110 has been useful, etc.

[0077] If the sensor controller 110 determines at 510 that it is operating in informational packet mode, then at 515 it identifies analyte data for inclusion in the data packet. The analyte sensor may select the analyte data to include in the packet from memory in the sensor controller 110. In particular embodiments, the amount of space available within the packet (e.g., within the payload 410 of the packet 400) may be adjusted to frequently reduce the computational cost of preparing and transmitting a packet and to reduce the likelihood that a receiving device will only receive a portion of the packet. Thus, a subset of the analyte data stored by the sensor controller 110 may be identified for inclusion in the packet.

[0078] In certain embodiments, the sensor controller 110 may use a prioritization scheme to determine which analyte data to include in a packet. The sensor controller 110 may determine a priority level for the analyte data and select the data to include in the packet based on the priority level. As one example, the priority level may relate to the age of the analyte data (e.g., the time since the analyte data was collected). In certain embodiments, the sensor controller 110 may assign the highest priority to the most recently collected data so that a user of the receiving device can view the most recent or current analyte data when the receiving device receives the packet and outputs the analyte data. As another example, the sensor controller 110 may assign the highest priority to the criticality or urgency of the analyte data. For example, the analyte data may include the level of an analyte in a subject's bodily fluid. The analyte level may be associated with one or more thresholds indicating, for example, a range of safe levels, levels higher or lower than a level determined to be safe, levels that are dangerously high or low, etc. The priority level of the analyte data may be determined by comparing the analyte data to one or more thresholds. As a result, when the receiving device receives the packet and outputs the analyte data, a user of the receiving device can receive the most urgent or important data. Another prioritization scheme can also be used in conjunction, for example, all specimen data of the same urgent priority level can be ordered according to the age of the specimen data.

[0079] At 520, the sensor controller 110 may encrypt the analyte data identified for inclusion in the data packet. As described herein, the analyte data may include sensitive information related to the subject's health or identity. To protect the sensitive information, the sensor controller 110 may encrypt the analyte data using one or more block ciphers or other encryption schemes. In certain embodiments, the sensor controller 110 may use a private key stored on the sensor controller 110 as the encryption key. As described herein, a user device configured (and optionally authorized) to receive and process analyte data from the subject may be provided with a public key related to the sensor controller 110's private key to decrypt the data upon receipt. In embodiments where the sensor controller 110 and the receiving device are identified to one another (e.g., the sensor controller 110 and the receiving device have previously established a communication session or the receiving device has issued an operational command to the sensor controller 110), the sensor controller 110 and the receiving device may agree on an encryption key to use for subsequent iterations of the process. In certain embodiments, encryption keys can be dynamically generated based on, for example, a device secret or private value and a deterministically changing value (e.g., a monotonically increasing value or a timestamp). A receiving device can calculate a decryption key using the same device secret value and deterministically changing value. In certain embodiments, encryption keys can be selected using a key rotation scheme.

[0080] In one embodiment, a public key shared by the sensor controller 110 and the receiving device can be established through the use of a multi-step process in which the sensor controller 110 authenticates itself to the receiving device and the receiving device authenticates itself to the sensor controller 110. This process is used to verify that the sensor controller 110 is a certified sensor compatible with the receiving device and that the receiving device is authorized to receive data from the sensor controller 110. For example, the receiving device can provide the sensor controller 110 with a valid certificate or token digitally signed by the manufacturer of the sensor controller 110 or receiving device or the operator of the analyte monitoring system 100. The certificate or token can be validated by verifying that it was digitally signed using a key associated with the appropriate manufacturer or operator. Similarly, the sensor controller 110 can provide the receiving device with a valid certificate or token that is also digitally signed using a key associated with the appropriate manufacturer or operator. Each certificate or token can include a public key uniquely paired with a private key known to the device providing the certificate or token. The private key can also be established by the appropriate manufacturer or operator of the analyte monitoring system. When a valid certificate or token is received, the device providing the certificate or token can also prove that it controls the private key. Proof of control can be established by decrypting selected information (e.g., random or non-sequential values) that was encrypted using the public key contained in the valid certificate. This information can also be used to generate a shared symmetric authentication key, which can be used for subsequent authentication and encryption.

[0081] If the analyte sensor determines at 510 that it is operating in a connectable packet mode or a non-informational packet mode, the sensor control device 110 prepares connection data 525 to be included in the data at 525. As described herein, the connection data 525 may include data that facilitates a receiving device requesting and opening a communication session with the sensor control device 110. The connection data 525 may include data specifying protocols that the sensor control device 110 can use to accept communication session requests.

[0082] In certain embodiments, the sensor controller 110 can include either or both connection data and analyte data in a single packet, for example, while operating in a mixed packet mode (not shown in FIG. 5 ). For example, the determination at 510 can include determining whether connection data should be included if all packets contain analyte data, rather than determining whether analyte data or connection data should be included. The determination at 510 can also include determining whether analyte data should be included if all packets contain connection data. In certain embodiments, the size allocated to a packet can be limited to help reduce transmission errors. The determination of which data to include (e.g., connection data or analyte data) can result from a programmed or dynamic determination of whether the sensor controller 110 prioritizes establishing a connection or broadcasting a packet containing analyte data. Additionally or alternatively, other types of data can optionally be included in a packet, and the determination at 510 can also include determining whether other types of data should be included along with the analyte data or connection data.

[0083] At 530, the sensor controller 110 can prepare a data packet for broadcast. The data packet can include analyte data, connection data, or other data, depending on the operational mode determined at 510. The sensor controller 110 can prepare selected data in a payload by formatting the collected data into a predetermined format that the receiving device can interpret. The sensor controller 110 can prepare a header for the payload that provides information to the receiving device so that the receiving device can determine how to interpret the payload. The sensor controller 110 can validate the payload, such as by providing one or more integrity check values for the payload. The sensor controller 110 can prepare a header for the data packet containing the payload to facilitate a receiving device in the sensor controller 110's environment that is not configured to interpret the payload determining whether the data in the packet can be used. In certain embodiments, such as when the sensor controller 110 has previously paired with a receiving device as described herein, the header of the data packet can include identification data for the receiving device to direct the data packet to the receiving device.

[0084] At 535, the sensor control device 110 may use the analyte sensor's communication module to broadcast data packets into the analyte sensor's environment and / or transmit data packets to one or more receiving devices within communication range of the analyte sensor. The environment may include multiple receiving devices (e.g., data receiving device 120, general-purpose data receiving device 130, user device 140, etc.). Broadcasting may involve causing one or more transceivers (e.g., of the analyte sensor's communication module 240) to transmit signals containing data packets into the environment using one or more communication channels specified by the communication protocol used by the communication module. The signals may not be directed to a specific receiving device in the environment. Communication channels may be reserved exclusively for broadcast packets containing connection information that facilitates discovery and establishment of communication sessions between devices.

[0085] At 540, the sensor control device 110 can wait a determined period of time after broadcasting the data packet in the environment to receive an acknowledgment signal from a user device in the environment. As described herein, the environment of the sensor control device 110 can include multiple receiving devices. Each receiving device can receive a signal containing a packet broadcast by the sensor control device 110. Each receiving device can process the packet and attempt to determine whether it can or should use the data in the packet. For example, the receiving device can analyze the header of the data packet to determine whether the data packet is intended for the receiving device. If the data packet is not intended for another device, the receiving device can attempt to read the payload, for example, according to a protocol defined in the data packet header. If the payload is encrypted, the receiving device can attempt to decrypt the data packet, for example, using a stored encryption key. If the receiving device has the appropriate decryption key, it can decrypt the payload and process the data contained therein. For example, if the data in the payload includes analyte data, the receiving device may extract the subject's analyte data from the decoded data payload, process the extracted analyte data as needed, and output the analyte data to a user of the receiving device (e.g., provide the analyte data on a display of the receiving device, output one or more alerts or alarms based on the analyte data, upload the analyte data to a remote server, etc.). While outputting the extracted analyte data, the receiving device may indicate that the analyte data corresponds to highest priority data (e.g., most recently collected data, most urgent data according to the user's condition, etc.).

[0086] After processing the data packet and payload, the receiving device can attempt to send an acknowledgment signal to the sensor controller 110 to indicate that the data packet payload was received. As one example, if the payload did not include connection data, the receiving device can broadcast an undirected packet containing information interpretable by the sensor controller 110. This undirected packet can include an encrypted payload encrypted using a shared encryption key or scheme containing information for the sensor controller 110 to confirm that the payload was received. As another example, if the payload included connection data, the receiving device can attempt to send an acknowledgment signal along with a connection request using, for example, a connection protocol specified by the connection data.

[0087] If the sensor control device 110 receives an acknowledgment signal during a period open to receive the acknowledgment signal, the sensor control device 110 can take further action based on the acknowledgment signal at 540. For example, as shown, the sensor control device 110 can establish a communication session with the receiving device from which the acknowledgment signal was received at 545. Establishing the communication session can include employing a multi-step device authentication and handshake in which a shared encryption key can be reused and in addition or instead, data exchanged between the sensor control device 110 and the receiving device in transmission can be encrypted using an additional communication session key.

[0088] At 550, the sensor controller 110 can use the communication session to backfill analyte data with the receiving device. For example, the sensor controller 110 can use the communication session to offload analyte data stored by the analyte sensor that has not previously been offloaded to one or more receiving devices for processing and / or reporting. As described herein, the analyte sensor can collect analyte data in a streaming manner, for example, continuously over the life of the sensor controller 110 or periodically, such as once per minute. The sensor controller 110 can become disconnected or out of range from the receiving device. Thus, the sensor controller 110 stores a certain amount of analyte data (e.g., for a predetermined period of time). When the sensor controller 110 reconnects with the receiving device, the analyte sensor can determine which data has not yet been offloaded and prepare that data for transmission over the communication session and transmit it to the receiving device. In certain embodiments, the sensor controller 110 can delete all analyte data that has previously been offloaded to the receiving device, for example, after transmission. Additionally or alternatively, the sensor controller 110 may include sufficient memory to store the analyte data generated during its lifetime, particularly if the sensor controller 110 is designed for a limited lifespan. Additionally or alternatively, the sensor controller 110 may store the analyte data until space is needed, with certain data segments being overwritten first (e.g., the oldest, lowest priority, or least relevant data may be deleted or overwritten first).

[0089] In some embodiments, after a communication session is established by the sensor controller 110, the receiving device can determine the data that the sensor controller 110 should backfill. As one example, the receiving device can track analyte data received over a period of time (e.g., via one or more communication sessions). As another example, the received analyte data can be stored with a timestamp associated with when the analyte data was generated and / or a date and time associated with the analyte reading used to generate the analyte data. As another example, the received analyte data can be stored with a counter value uniquely attributed to the analyte data set. For example, the counter value can be incremented each time additional analyte data is read by the sensor controller 110. The receiving device can determine that a gap exists in the stored analyte data based on the timestamp and / or counter value. The receiving device can request the sensor controller 110 to transmit the missing data, for example, by specifying a range of timestamps and / or counter values. In response, the sensor controller 110 can identify the analyte data corresponding to the timestamp range and / or counter value range and transmit the analyte data to the receiving device. Once all analyte data specified by the range has been provided to the sensor control device 110 and / or receiving device, confirmation is provided that all specified data has been received.

[0090] Additionally or alternatively, the sensor controller 110 determines the data to backfill after establishing the communication session. Once the sensor controller 110 identifies the analyte data to backfill, it can offload all stored data except the highest priority data (which was included in the broadcast data packet). As another example, the analyte sensor can store a timestamp of the last time analyte data was offloaded from the sensor controller 110. The analyte sensor can identify analyte data records between that timestamp and the current timestamp and transmit the identified analyte data. In certain embodiments, the backfill procedure can also use a data prioritization scheme (e.g., first-in-first-out, last-in-first-out, highest priority, most important, other prioritization schemes, or a combination thereof).

[0091] As embodied herein, the sensor controller 110 may maintain a record of the time elapsed since the sensor controller 110 received an acknowledgment signal from a user device and / or the time elapsed since a communication session was successfully completed. By way of example, the sensor controller 110 may associate a timestamp with the acknowledgment signal and update the timestamp in response to receiving the acknowledgment signal. Additionally or alternatively, the sensor controller 110 may maintain other records indicative of the status of analyte data stored in the sensor controller 110 and the communication history between the sensor controller 110 and the receiving device. By way of example, the sensor controller 110 may include a record of the time since the last communication session, a record of the oldest analyte data stored in the analyte sensor, etc. The sensor controller 110 may update the record related to the time since the last communication session after the communication session is closed. Note that the sensor controller 110 may store separate timestamps associated with the acknowledgment signal and the communication session. By maintaining two timestamps (or other records indicating communication between the sensor controller 110 and the receiving device), the sensor controller 110 can track the presence of the receiving device in the environment of the specimen 110, as well as track the historical integrity of data offloaded from the sensor controller 110. As described herein, the sensor controller 110 can use the indication of the presence or lack thereof of a receiving device in the environment to alter its behavior in an attempt to facilitate a connection.

[0092] If the analyte sensor determines at 540 that it has not received an acknowledgment from the receiving device, the sensor controller 110 may determine at 555 whether the time since the sensor controller 110 last received an acknowledgment meets a threshold time. Additionally or alternatively, the sensor controller 110 may determine whether the time since the last communication session or the elapsed time of the most recent analyte record received meets a threshold. Other metrics may also be used to determine whether the sensor controller 110 should modify its operation to attempt to facilitate a connection. For example, the metrics may indicate that a connection problem exists between the sensor controller 110 and the receiving device, that the sensor controller 110 and receiving device are not within a suitable proximity range (e.g., a distance based on the communication range of the sensor controller 110's communication module 240), that the receiving device is disabled, etc. In embodiments in which only a subset of packets transmitted by the sensor controller 110 contain connection data, failure to receive an acknowledgment signal may be an indication that the sensor controller 110 and receiving device are not within the required range at the appropriate time (e.g., when the packet containing the connection data is being broadcast).

[0093] If the sensor control device 110 determines at 555 that the time since the last acknowledgment or communication session exceeds a threshold, or determines that other indications of a potential communication problem exist, then at 560 the sensor control device 110 may be configured to modify its discoverability behavior to attempt to increase the probability that the receiving device will receive a proper data packet and / or provide an acknowledgment signal, or otherwise reduce constraints that may cause an acknowledgment signal to be unavailable. Modifying the discoverability behavior of the sensor controller 110 can include, for example, but not limited to, changing how often connection data is included in data packets, changing how often data packets are generally transmitted, lengthening or shortening the broadcast window of data packets, changing the amount of time the sensor controller 110 listens for an acknowledgment signal after a broadcast, including directional transmissions to one or more devices that have previously communicated with the sensor controller 110 (e.g., through one or more trial transmissions) and / or one or more devices on a whitelist of known or authorized devices, changing the transmit power associated with the communications module when broadcasting data packets (e.g., to increase the range of the broadcast or reduce energy consumption to extend the battery life of the analyte sensor), changing the rate at which data packets are prepared and broadcast, or a combination of one or more other modifications. Additionally or alternatively, a receiving device can similarly adjust parameters related to its listening behavior to increase the likelihood of receiving a data packet containing connection data. For example, a receiving device may increase the time or frequency that its communications hardware is active and available to receive connection data (e.g., increase the window during which it scans for data packets, particularly those containing connection data) after a threshold period of time during which it does not receive data packets. The sensor controller 110 and receiving device may revert to their original settings if attempts to increase discoverability are unsuccessful after a certain period of time.

[0094] As embodied herein, the sensor controller 110 can be configured to broadcast data packets using two types of windows. The first window indicates the percentage of time the sensor controller 110 is configured to operate its communications hardware. The second window indicates the percentage of time the sensor controller 110 is configured to actively transmit (e.g., broadcast) data packets. As an example, the first window can indicate that the sensor controller 110 operates its communications hardware to transmit and / or receive data packets (including connection data) during the first two seconds of each 60-second period. The second window can indicate that the sensor controller 110 transmits data packets every 60 milliseconds during each two-second window. The sensor controller 110 listens for the remainder of the two-second window. The sensor controller 110 can lengthen or shorten either window to modify the discoverability behavior of the sensor controller 110. For example, the two-second window can be extended to four seconds (e.g., the first four seconds of each 60-second period) or shortened to one second (e.g., the first second of each 60-second period). As another example, the 60 second period can be increased (e.g., to conserve battery by reducing the amount of time the communications hardware is active) or decreased (e.g., to increase the likelihood that the communications hardware will be active while the receiving device is within range). As another example, the 60 millisecond period can be increased or decreased.

[0095] In certain embodiments, the discoverability behavior of the analyte sensor may be stored in a discoverability profile and modified based on one or more factors, such as the state of the sensor controller 110, and / or by applying rules based on the state of the sensor controller 110. For example, if the battery level of the sensor controller 110 is below a certain amount, these rules may cause the sensor controller 110 to reduce the power consumed by the broadcast process. As another example, configuration settings related to the broadcasting or other transmission of packets may be adjusted based on the ambient temperature, the temperature of the sensor controller 110, or the temperature of particular components of the sensor controller 110's communications hardware. For example, when the temperature of the sensor controller 110 or its communications hardware reaches a first threshold temperature (e.g., below or above a threshold), the transmit power associated with the broadcast process may be reduced. Also, when the temperature reaches a second threshold temperature, the process of transmitting packets containing connectivity data (e.g., advertising data packets) may be paused entirely. After the temperature again meets another threshold, the process may be resumed and / or the transmit power may be adjusted. In addition to modifying transmit power, other parameters associated with the transmit capabilities or processes of the communication hardware of the sensor controller 110 may also be modified, including, but not limited to, transmit rate, frequency, and timing. As another example, if the analyte data indicates that the subject is experiencing or about to experience an adverse health event, the rules may cause the sensor controller 110 to increase its discoverability and alert receiving devices of the adverse health event. Because the process 500 is iterated multiple times and can be repeated throughout the operational life of the sensor controller 110, changes made to the discoverability of the device may be propagated to affect future iterations of the process 500.

[0096] If, at 555, the sensor control device 110 determines that the time since the last acknowledgement does not exceed a threshold or that there are no other indications of a communication problem, the analyte sensor returns to 505 to continue collecting analyte data 110 and repeat process 500.

[0097] In certain embodiments, the sensor controller 110 may receive an activation command from a particular user device. In certain embodiments, the sensor controller 110 may receive the activation command via a first communication interface (e.g., NFC) while broadcasting packets via a second communication interface (e.g., BLE). The activation command may be received before the sensor controller 110 begins collecting analyte data, before the analyte sensor broadcasts data, or at any time during process 500. The sensor controller 110 and receiving device may use the activation command to positively identify each device to the other. The activation command may include instructions regarding the broadcast or discoverable operation of the sensor controller 110. These instructions may affect, for example, the rate at which the analyte sensor prepares data (including, but not limited to, connection data, analyte data, or other data), the rate at which the analyte sensor broadcasts packets, whether the packets are directed to a particular user device or broadcast into the analyte sensor's external environment, or other relevant parameters of the sensor controller 110 executing process 500 shown in FIG. 5 . The activation command may further include instructions regarding whether process 500 should be used at all. For example, the sensor controller 110 may be configured to operate in a connectable packet mode and not transmit analyte data in packets (e.g., all packets include connection data but no analyte data) prior to receiving an activation command. Thereafter, the sensor controller 110 may be configured to selectively operate in an informational packet mode after receiving an activation command and transmit analyte data in broadcast packets, which may be transmitted according to a predetermined or user-defined schedule, as described herein. As embodied herein, the sensor controller 110 and receiving device may use an activation command to initiate a first communication session during which analyte data (e.g., currently stored by the sensor controller 110) may be offloaded to the receiving device.This first communication session may be a preliminary step performed before the process 500 shown in Figure 5. The sensor control device 110 and the receiving device may close the communication session before the process 500.

[0098] As one example, a subject (or user of a receiving device) can send an activation command to the sensor control device 110 to instruct the receiving device to enter a broadcast mode in which current analyte data is transmitted via data packets in accordance with embodiments disclosed herein. The sensor control device 110 can continue to operate in broadcast mode for a fixed or specified time period, or until the sensor control device 110 receives a stop command. As one example, an athlete running on a track may wear the sensor control device 110 and desire to transmit analyte data to a receiving device that is substantially stationary around the track (e.g., held by a coach or other observer). In normal (e.g., non-broadcast) mode, the sensor control device 110 cannot establish a communication session with the receiving device to transmit the appropriate analyte data to be output by the receiving device. Before starting to run on the track, the athlete can have the receiving device issue an activation command to the sensor control device 110, causing the sensor control device 110 to enter broadcast mode and identify the receiving device. Thereafter, while the athlete is running on the track, the sensor control device 110 can broadcast analyte data to be received by the receiving device. The receiving device can process the sample data, output current sample data, and use embodiments disclosed herein to alert athletes about their health and quickly transmit the highest priority sample data.

[0099] As embodied herein, the sensor controller 110 can increase the speed and reliability with which high-priority or current analyte data is delivered to a user of a receiving device by inserting the analyte data into data packets broadcast on or using a communication channel normally used only for communication session discovery and establishment. Rather than waiting for a communication session to be established and the appropriate data to be offloaded from the sensor controller 110 to the receiving device, the sensor controller 110 and the receiving device can exchange the most important data first, allowing the user of the receiving device to review the most important data while the remaining data stored on the sensor controller 110 is offloaded. Thus, in addition to increasing the actual delivery speed of the most important data, the user's perception of the delivery speed of the remaining data is also improved.

[0100] According to aspects of the disclosed subject matter, as embodied herein, the sensor controller 110 can be configured to communicate with multiple devices simultaneously by adapting the characteristics of the communication protocol or medium supported by the hardware and radio of the sensor controller 110. As an example, the BLE module 241 of the communication module 240 can be provided with software or firmware that enables multiple simultaneous connections between the sensor controller 110 as a central device and other devices as peripheral devices, or as peripheral devices with another device as the central device. While the examples described herein refer to the term BLE, this term is intended to balance conciseness with a complete description of the technology of the present disclosure and should not be construed as limiting to only a specific technology protocol or standard.

[0101] A connection and subsequent communication session between two devices using a communication protocol such as BLE can be characterized by a similar physical channel operating between the two devices (e.g., the sensor control device 110 and the data receiving device 120). The physical channel can include a single channel or a set of channels, including, for example, but not limited to, the use of an agreed-upon set of channels determined by a common clock and a channel or frequency hopping sequence. The common clock can be controlled by a hardware clock of the control devices in the pair. The channel or frequency hopping sequence can be determined based on unique attributes of one or more devices in the communication session, such as the device's identifier (e.g., unique identifier, BLE identifier, etc.). The communication sessions can use a similar amount of available communication spectrum, and multiple such communication sessions can exist in close proximity. In some embodiments, each group of devices in a communication session uses a different physical channel or set of channels to manage interference with devices within the same proximity. In some embodiments, devices within the same proximity can share a channel through a channel multiplexing scheme, such as one based on code division or time division algorithms.

[0102] BLE devices, such as the sensor control device 110 and the data receiving device 120 or the multipurpose data receiving device 130, switch channels based on time division multiplexing to participate in multiple simultaneous communication sessions. In some embodiments, devices may be prevented from controlling multiple communication sessions simultaneously to avoid collisions. In addition to being classified as a control device or participant in a communication session, devices may also be categorized as advertisers or scanners. An advertiser is a device that invites connections with other devices by broadcasting a connection packet on a common communication channel. Devices that can interpret the connection packet can initiate communication with the advertiser. A scanner is a device that listens for connection packets sent by an advertiser.

[0103] 6A-6C illustrate an operating environment for an example analyte sensor with multiple data receiving devices. FIGS. 6A-6C illustrate an environment in which the sensor control device 110 initiates or maintains simultaneous communication sessions with both a data receiving device 125a and a data receiving device 125b. One or both of the data receiving device 125a and the data receiving device 125b can be a data receiving device 120 as described herein or a multi-purpose data receiving device 130 as described herein. As an example, the data receiving device 125a can be a data receiving device 120 provided by the manufacturer of the sensor control device 110 to facilitate monitoring of the output of the sensor control device 110. The data receiving device 125b can be a second data receiving device 120, for example, associated with a different user or available as a backup device (e.g., if the user loses the data receiving device 125b). As another example, data receiving device 125b can be a multi-purpose data receiving device 130 of a different form factor than data receiving device 125a, such as a smartphone, tablet, smartwatch, wearable fitness monitor, or health device such as an insulin pump or insulin, cardiac device, wearable health monitor, or other device that benefits from the availability of output provided by sensor controller 110. In particular embodiments, one or both of data receiving device 125a or data receiving device 125b can be a home monitor or server relay configured to provide output from sensor controller 110 to a remote device, such as user device 140 or remote server 150. In this manner, sensor controller 110 can use the techniques described herein to simultaneously provide output to both a local data receiving device 125a and a secondary remote device using a short-range communication protocol such as BLE or high-frequency Wi-Fi. The techniques described herein can be used with data receiving devices 125a and 125b that include medical and non-medical functions.In particular, the techniques described herein can be used with data receiving devices 125a that do not have medical functionality and are used for assessment purposes, such as consumer fitness monitors, whether standalone or integrated into other multi-purpose devices. Although only two data receiving devices are shown, these environments can also be expanded to include situations where more than two data receiving devices are in communication with the sensor control device 110, where multiple sensors 110 are in communication, or where multiple data receiving devices are in communication with each other.

[0104] 6A illustrates an environment 600 in which the sensor controller 110 communicates with the data receiver 125b via the data receiver 125a. In this environment, the data receiver 125a acts as a relay between the sensor controller 110 and the data receiver 125b, allowing other devices to piggyback on the connection between the sensor controller 110 and the data receiver 125a and the connection between the data receiver 125a and the data receiver 125b. The data receiver 125a is a trusted third party or intermediary between the sensor controller 110 and the data receiver 125b. The data receiver 125a can act as a gateway or router for data between the sensor controller 110 and the data receiver 125b. For example, the data receiver 125a can perform security checks to authenticate the sensor controller 110 and the data receiver 125b (and potentially enable further direct communication between the sensor controller 110 and the data receiver 125b, as described herein).

[0105] The data receiver 125a can assist one or both of the sensor controller 110 and the data receiver 125b by preparing requests for the other device and responding to requests issued by the other device. As an example, the data receiver 125a can receive requests for the sensor controller 110 from the data receiver 125b and interpret or translate the requests into a format usable by the sensor controller 110. Acting as a router for requests, the data receiver 125a can enable the sensor controller 110 and the data receiver 125b to operate more efficiently or expand their capabilities with minimal additional overhead when translating requests for the sensor controller 110 on behalf of the data receiver 125b. The data receiver 125a can also present a device-agnostic interface for both devices, enhancing interoperability between the sensor controller 110 and the data receiver 125b.

[0106] In certain embodiments, one or both of the sensor controller 110 and the data receiver 125b are unaware of other devices in the environment 600. For example, the sensor controller 110 may provide output data to the data receiver 125a as part of normal operation. The data receiver 125b may request access to data corresponding to the output from the sensor controller 110. However, the data receiver 125b may request the data without knowing the source of the data, such as the identity of the sensor controller 110 in the environment 610. This arrangement may be advantageous, for example, when the data receiver 125a is a central hub or common device for a system involving the sensor controller 110 and the data receiver 125a, and a system involving the sensor controller 110 and the data receiver 125b. Furthermore, the identities of the devices may be protected throughout the system, thereby protecting the privacy and security of the user of the sensor controller 110 and the data receiver 125b and other potential users. Even if the sensor controller 110 and the data receiver 125b are aware of the other device, the data receiver 125a can process the output and data from the sensor controller 110 on behalf of the data receiver 125b. For example, the sensor controller 110 can output raw values to the data receiver 125a, which can then apply one or more algorithms to the data to enable the data receiver 125b to use the data more effectively. The data receiver 125a can also generate data or instructions to be displayed by the data receiver 125b. As an example, the data receiver 125a can generate instructions to modify the user interface of the data receiver 125b based on data from the sensor controller 110. In such an example, the data receiver 125b does not directly access the data from the sensor controller 110, but instead accesses user interface instructions or passes data directly to the user interface for review by the user.

[0107] 6B illustrates an environment 610 in which the sensor control device 110 communicates with a data sink 125a and a data sink 125b through separate communication sessions. In the environment 610, the sensor control device 110 may maintain multiple simultaneous communication sessions. In some embodiments, maintaining one or more simultaneous communication sessions may involve receiving a request from each of the data sink 125a and the data sink 125b, determining the identity of the requesting device (e.g., whether the request was issued by the data sink 125a or the data sink 125b), determining an appropriate response (which may depend, for example, but not limited to, on the identity of the requesting device), and transmitting the response in a format understood by the requesting device. In some embodiments, security measures may be taken to reduce the risk of crosstalk, interference, or data interception between the data receiving device 125a and the data receiving device 125b (e.g., the data receiving device 125a unintentionally interfering with communications between the sensor controller 110 and the data receiving device 125b, or the data receiving device 125b attempting to access communications between the sensor controller 110 and the data receiving device 125a). These security measures may include the use of unique encryption keys to protect data packets transmitted between the sensor controller 110 and the data receiving device 125a or the data receiving device 125b, a unique communication channel or channel hopping procedure for a communication session between the sensor controller 110 and the data receiving device 125a or the data receiving device 125b, and other similar measures.

[0108] In certain embodiments, the sensor controller 110 identifies the device that issued the request based on the communication medium of the request. For example, the sensor controller 110 and the data receiver 125a may agree that the sensor controller 110 will receive requests using a particular communication channel, while the sensor controller 110 and the data receiver 125b may agree to use a different communication channel or that the sensor controller 110 will receive requests. As a result, the sensor controller 110 may assume that a request received on a particular communication channel is from the data receiver 125a. In certain embodiments, the sensor controller 110 identifies the device that issued the request based on the request itself. For example, the request may include information identifying the device that issued the request. A request from the data receiver 125a may include a unique identifier for the data receiver 125a, and a request from the data receiver 125b may include a unique identifier for the data receiver 125b. When the sensor controller 110 receives a request, it reviews the information provided in the request to identify the device that issued the request. The sensor control device 110 can store a library or mapping of unique identifiers to data receiving devices. Using this mapping, requests from the data receiving device 125a and the data receiving device 125b can avoid including cleartext identifiers. As an example, the sensor control device 110 and the data receiving device 125a can agree on an identifier for the data receiving device 125a, or a scheme for determining the identifier for the data receiving device 125a, during the initiation phase of pairing between the sensor control device 110 and the data receiving device 125a. When the sensor control device 110 receives a request, it can reference the mapping to reliably determine that the data receiving device 125a issued the request. A third party without access to the mapping cannot determine the identifier for the data receiving device 125a.

[0109] FIG. 6C illustrates an environment 620 in which, for example, the sensor control device 110 acts as a relay for the data receiving devices 125a and 125b by receiving input or commands from the data receiving device 125a and transmitting data to the data receiving device 125b in response. Thus, the sensor control device 110 facilitates indirect communication between the data receiving device 125a and the data receiving device 125b. In the environment 620, the data receiving device 125a and the data receiving device 125b can operate without direct knowledge of the other device. In some embodiments, the data receiving device 125a and the data receiving device 125b are not compatible or cannot communicate directly. However, the sensor control device 110 can form a secure communication session with each, thereby facilitating the exchange of information between these devices. As an example, the data receiving device 125a can be a connected medical device, such as an insulin pump, and the data receiving device 125b can be a smartphone configured to include a software application that facilitates monitoring of the output from the sensor control device 110. As embodied herein, data receiving device 125a and data receiving device 125b are not configured to communicate. However, it may be advantageous to enable a software application to recognize medical interventions initiated by an insulin pump. Thus, the insulin pump (data receiving device 125a) can notify sensor control device 110 when it is dispensing insulin, and sensor control device 110 can relay this information to the software application (data receiving device 125b), so that a smartphone, for example, can directly record the event rather than indirectly inferring its existence. As demonstrated, sensor control device 110 configured to operate in an environment such as environment 620 can enhance the interoperability of data receiving device 125a and data receiving device 125b.

[0110] FIG. 7 illustrates a process for establishing a communication session between the sensor control device 110 and the data receiving device 125b using the data receiving device 125a and transmitting analyte data according to the communication session.

[0111] At 705, the data receiving device 125a and the sensor control device 110 establish a connection or communication session. In particular embodiments, the sensor control device 110 and the data receiving device 125a may use a first communication protocol for short-range wireless communication, such as Bluetooth or BLE. The connection may be performed through a pairing process supported by the communication protocol. As one example, the sensor control device 110 may be configured to periodically broadcast a connection packet to facilitate other devices discovering and connecting to the sensor control device 110. The data receiving device 125a may receive the connection packet and use the information contained therein to establish a connection and mutual authentication with the sensor control device 110. As another example, the data receiving device 125a may establish a communication session between the sensor control device 110 and the data receiving device 125a using a second communication protocol. For example, the data receiving device 125a may initiate an NFC communication session upon coming within suitable proximity to exchange information so that the sensor control device 110 and the data receiving device 125a can pair and mutually authenticate.

[0112] At 710, data receiving device 125a and data receiving device 125b establish a connection or communication session. By way of example and not limitation, as described herein, data receiving device 125a and data receiving device 125b can be different instances of the same type of data receiving device (e.g., two data receiving devices including a multi-purpose data receiving device 130 configured to include a downloaded library or software application), two separate data receiving devices owned by the same user (e.g., a multi-purpose data receiving device 130 and a smartwatch), two separate data receiving devices owned by a user wearing sensor control device 110 and an authorized monitor such as a parent, coach, or medical caregiver, a data receiving device for monitoring the output of sensor control device 110 and a data receiving device that acts based on the output of sensor control device 110, such as a connected medical device such as an insulin pump or pen, or connected exercise equipment such as a treadmill or exercise bike, or various other suitable combinations. Data receiving device 125a and data receiving device 125b can communicate using one or more short-range or medium-range communication protocols.

[0113] At 715, the data receiver 125b receives a request to connect with the sensor controller 110. The request to connect with the sensor controller 110 may be initiated by a user of the data receiver 125b. The request may indicate that the user wants to use the data receiver 125b to monitor the output of the sensor controller 110 or to pair the data receiver 125b and the sensor controller 110 to enable additional functionality of the data receiver 125b. In some embodiments, the request may be initiated automatically in response to the user indicating that they have a sensor controller 110 available to use with the data receiver 125b. In response to receiving the request, the data receiver 125b determines that it cannot connect directly with the sensor controller 110 and must establish a connection with the sensor controller 110 using the existing connection between the data receiver 125a and the sensor controller 110.

[0114] At 720, the data receiving device 125b sends a connection request to the data receiving device 125a. In response to determining to establish a connection with the sensor control device 110 using the existing connection between the data receiving device 125a and the sensor control device 110, the data receiving device 125b prepares a connection request to the data receiving device 125a indicating a request to use the existing connection. For example, the data receiving device 125b can include in the request information identifying the data receiving device 125b (e.g., the address of the data receiving device 125b, the BLE handle of the data receiving device 125b), information identifying the user of the data receiving device 125b or the sensor control device 110 (e.g., a unique identifier for the user or a public authentication key prepared by or for the data receiving device 125b or the sensor control device 110), information identifying how the sensor control device 110 and the data receiving device 125b will initiate the connection (e.g., the communication channel or channel hopping protocol the devices should use), and other information to acknowledge and act on the request.

[0115] At 725, the data receiver 125a receives the connection request and prepares a connection request for the sensor control device 110. In some embodiments, the data receiver 125a can perform steps to validate the request and authenticate the data receiver 125b and the user of the data receiver 125b. For example, the data receiver 125a can query information included in the connection request from the data receiver 125b. The data receiver 125a can provide this information to a remote server 150 associated with the sensor control device 110. The remote server 150 can validate the information and take other security-related actions, such as determining that the data receiver 125b is not reusing expired credentials or attempting to establish a connection with the wrong sensor control device 110. Additionally or alternatively, the data receiver 125a can be configured to perform operations to validate the connection request.

[0116] At 730, the data receiving device 125a sends a connection request to the sensor controller 110. After validating the connection request from the data receiving device 125b, the data receiving device 125a can repackage information from the connection request from the data receiving device 125b for use by the sensor controller 110. The data receiving device 125a can also include information along with the connection request that asserts or validates the data receiving device 125b and the connection request. The sensor controller 110 can use the validating information from the data receiving device 125b to validate the request, streamlining the process of initiating a connection between the sensor controller 110 and the data receiving device 125b.

[0117] At 735, the sensor controller 110 receives a connection request from the data receiving device 125a. The sensor controller 110 identifies the data receiving device 125b from the connection request (e.g., using the BLE handle of the data receiving device 125b included in the connection request) and identifies the mechanism to be used to initiate the connection. For example, the connection request may include the security algorithm type to be used for the connection, or the communication channel or channel hopping scheme to be used to facilitate the connection. The sensor controller 110 can determine whether the data receiving device 125b has previously initiated a connection with the sensor controller 110 to expedite the connection procedure. For example, the sensor controller 110 can store a mapping table of devices it has connected to. The mapping table may include a device identifier or handle and a locally assigned identifier (e.g., an index in a table) generated by the sensor controller 110 to serve as a shorthand for referencing the device in the future. If the identifier of the data receiving device 125b is found in the table, or if the data receiving device 125b provides a valid locally assigned identifier, the sensor controller 110 can conclude that the data receiving device 125b has previously been able to communicate with the sensor controller 110. If the identifier of the data receiving device 125b is not found in the mapping table, the sensor controller 110 can create a new entry for the data receiving device 125b and proceed to establish pairing with the data receiving device 125b.

[0118] At 740, the sensor control device 110 sends a connection acknowledgment to the data receiving device 125b. The connection acknowledgment may indicate to the data receiving device 125b that the sensor control device 110 has received the connection request. The connection acknowledgment may further identify the sensor control device 110 to the data receiving device 125b. The connection acknowledgment may further include information used to initiate mutual authentication between the sensor control device 110 and the data receiving device 125b. As an example, the connection acknowledgment may include the public key of the sensor control device 110 or a shared authentication key that is generated based on information included in the connection request from the data receiving device 125b.

[0119] At 745, the data receiving device 125b receives the connection confirmation response. In response to receiving the connection confirmation response, the data receiving device 125b verifies that the connection confirmation response is from the correct sensor control device 110. For example, the connection confirmation response may include information identifying the sensor control device 110, and the data receiving device 125b compares this information with information stored by the data receiving device 125b for identifying the sensor control device 110. In some embodiments, the data receiving device 125b verifies the identity of the sensor control device 110 by presenting information identifying the sensor control device 110 to a user of the data receiving device 125b in response to the connection request. The user verifies the identity of the sensor control device 110 by responding to a prompt in the data receiving device 125b.

[0120] At 750, the sensor controller 110 and the data receiver 125b can perform mutual authentication. The sensor controller 110 and the data receiver 125b can independently generate a shared secret based on information exchanged between the sensor controller 110 and the data receiver 125b (e.g., in a connection request and connection acknowledgment). The shared secret can be based on the public and private keys of the sensor controller 110 and the data receiver 125b applied to random data agreed upon by the sensor controller 110 and the data receiver 125b. The shared secret can be selected such that only a device that has both the public key of the sensor controller 110 and the data receiver 125b and the private key (e.g., an unshared key) of at least one of the sensor controller 110 or the data receiver 125b can generate the shared secret. The sensor controller 110 and the data receiver 125b can use the shared secret to verify the identity of the other device by verifying that the other device has access to the private key corresponding to the shared public key. After the sensor control device 110 and the data receiving device 125b verify the identity of the other device, they can generate a mutual encryption value or scheme for subsequent communication sessions between the sensor control device 110 and the data receiving device 125b.

[0121] After performing mutual authentication, the sensor control device 110 and the data receiving device 125b are ready to initiate a secure communication session. In certain embodiments, the sensor control device 110 may store an identifier of the data receiving device 125b to facilitate the sensor control device 110 recognizing a connection request from the data receiving device 125b. For example, the sensor control device 110 may store in local storage 230 or memory 220 a mapping between the identifier of the data receiving device 125b and a mutual encryption value.

[0122] 7, these actions may be performed when the data receiving device 125b is not capable of directly connecting to the sensor control device 110 on its own. For example, the data receiving device 125b may have user input capabilities such that a user controls the data receiving device 125b using the data receiving device 125a. If the data receiving device 125b is capable of directly initiating a connection to the sensor control device 110, the process of establishing a communication session between the sensor control device 110 and the data receiving device 125b follows standard procedures and may be performed without exchanging data facilitating the request between the data receiving device 125a and the data receiving device 125b.

[0123] At 755, the data receiving device 125b initiates a request for data from the sensor controller 110, and at 760, the data receiving device 125a initiates a request for data from the sensor controller 110. While the requests are shown in a particular order, this is for illustrative purposes only, and the data receiving device 125a may initiate a data request to the sensor controller 110 before the data receiving device 125b. In certain embodiments, requests from the data receiving device 125a or the data receiving device 125b may be initiated periodically. For example, the data receiving device 125a and the data receiving device 125b may be configured to send data requests intended for the sensor controller 110 according to a preset schedule (e.g., once every 60 seconds, once every 10 seconds, twice every second, etc.). The schedule may be determined based on factors such as the computing capabilities of the device and the power or battery level of the device. The schedule may further be determined based on the amount of data to be requested or the time since the requesting device was last able to obtain data from the sensor controller 110. In some embodiments, the schedule is determined solely between the sensor controller 110 and each of the data sinks 125a and 125b, i.e., the data sinks 125a and 125b are unaware of the other's schedule times. In other embodiments, the schedule is determined by input from the data sinks 125a and 125b, allowing the two devices to negotiate the schedule and avoid interfering with each other's requests. This approach adds some computational complexity and requires the devices to be aware of each other in some way, but it allows for load balancing of the sensor controller 110 and minimizes the occurrence of parallel requests and processing.

[0124] In certain embodiments, a request from the data receiving device 125a or data receiving device 125b can be initiated when the data receiving device 125a or data receiving device 125b comes within communication range of the sensor control device 110. For example, the data receiving device 125a and data receiving device 125b can be configured to send polling requests to determine the identities of nearby devices. Additionally or alternatively, the sensor control device 110 can be configured to periodically send advertisement requests or connection requests to all nearby devices. The data receiving device 125a or data receiving device 125b can initiate a data request upon receiving an advertisement request.

[0125] At 765, the sensor controller 110 processes the data requests from the data receiver 125a and the data receiver 125b. In certain embodiments, to process a data request, the sensor controller 110 first verifies the authentication of the data receiver 125a or the data receiver 125b. As an example, the sensor controller 110 first identifies which device sent the request. As an example, as described above, the request may include information to identify the requesting device, such as a unique or local identifier (e.g., an abbreviation for a BLE handle or a handle managed internally by the sensor controller 110) of the data receiver 125a or the data receiver 125b, respectively. The sensor controller 110 then verifies that the requesting device has permission or is otherwise authenticated to request data from the sensor controller 110. If the device does not have the required permission, the request is rejected or converted into a request to establish a direct connection with the sensor controller 110. As an example, determining that the requesting device has permission may include comparing the requesting device's identifier with identifiers stored by the sensor controller 110 as a result of previous connection requests to identify the set of permissions granted to the device. Once the requesting device's identity and permissions are established, the sensor controller 110 proceeds to determine how to respond to the request.

[0126] In certain embodiments, data requests from the data receiving device 125a and the data receiving device 125b may include information indicating what type of data each device is requesting. As an example, the sensor control device 110 may process and store data regarding levels of designated analytes detected in a user. The data may be stored according to a key or queueing system that allows the data to be easily indexed to specific events or time periods. Thus, data regarding levels of designated analytes may be stored with a timestamp unique to each data record. Data requests from the data receiving device 125a and the data receiving device 125b may be associated with a key that represents the range of analyte data being requested by the device. As an example, the request may include a timestamp, a range of timestamps, a unique identifier, or a life count associated with the data record being requested by the requesting device. In response to each request, the sensor control device 110 may retrieve the requested data from its storage 230.

[0127] In certain embodiments, the sensor controller 110 can track which data it has provided to which data receiving devices. As an example, each entry containing an analyte level (or other sensed level) can be annotated with information including the identity of the data receiving device that requested and received the data, a timestamp or count associated with the request, and a timestamp or count associated with the data receiving device that received a response to the request. In such a case, unless otherwise specified, a request for data from data receiving device 125 or data receiving device 125b can be interpreted as a request to provide all missing data. When preparing information to be provided to a data receiving device, the sensor controller 110 can determine which data records have not yet been provided to the requesting device.

[0128] Once the appropriate record is identified, the sensor controller 110 packages that data into a response to the data request. As an example, the sensor controller 110 prepares a response message with a payload containing the requested data (or data otherwise identified for the data sink that initiated the request). The sensor controller 110 receives the request and asynchronously sends the response, and may also record which data sink the response message is intended for. Thus, the data requested by data sink 125a and the data requested by data sink 125b may be different. As an example, data sink 125a may update more frequently and therefore have smaller individual responses. As another example, data sink 125b may only require a subset of data associated with a specified time period (e.g., overnight or after a meal) and therefore may not request all data from the sensor controller 110.

[0129] At 770, the sensor control device 110 responds to the request from the data receiving device 125a. To respond to the request, the sensor control device 110 sends a response packet prepared for the data receiving device 125a to the data receiving device 125a, for example, using a communication scheme agreed upon between the two devices or using an established communication session.

[0130] At 775, the sensor controller 110 processes the data request from the data receiver 125b. Although the processes for processing the request from the data receiver 125b are shown as separate steps, much of the process can be similar to the process for the request from the data receiver 125a, except that the sensor controller 110 identifies the data for the data receiver 125b and prepares the packets for reception by the data receiver 125b. At 780, the sensor controller 110 responds to the request from the data receiver 125b.

[0131] As described above, the sensor control device 110 can respond to requests in a variety of orders, such as the same order as received, according to pre-established priorities (e.g., requests from data receiving device 125a always take priority over requests from data receiving device 125b), based on time since the request was received, based on a schedule (e.g., respond to pending requests from data receiving device 125a 10 seconds into each minute and respond to pending requests from data receiving device 125b 40 seconds into each minute), size of the request, size of the pending response, and other suitable response schemes.

[0132] The data receiving device 125a and the data receiving device 125b can continue to initiate requests to the sensor control device 110 to maintain an active communication session. In some embodiments, the communication session can time out through inactivity to preserve battery life of the sensor control device 110, and possibly the data receiving device 125a and the data receiving device 125b. Thus, the data receiving device 125a and the data receiving device 125b can initiate requests to the sensor control device 110 to keep the connection active while within communication range of the sensor control device 110. If the connection is released through inactivity, the data receiving device 125a or the data receiving device 125b can initiate a new communication session with the sensor control device 110 using a shared secret key or an existing authentication key, or can request and generate a new authentication key using the techniques described herein.

[0133] The sensor controller 110 can modify aspects of its hardware operation to further manage its battery life. As an example, if the sensor controller 110 expects to communicate in simultaneous communication sessions with two or more data receiving devices, it monitors additional channels that correlate to the communication session information established by the data receiving devices. This additional monitoring uses more battery life. The sensor controller 110 uses more battery life to carry out additional communication sessions with the additional devices. Monitoring on additional channels involves several hardware processes that can be dynamically changed based on the number of potential communication sessions the sensor controller 110 is monitoring. As an example, the sensor controller 110 can adjust the number of connection packets sent as advertising data packets, adjust the time each transmission is active, adjust the number of transmission cycles or the repetition rate of transmission cycles, adjust the time in active receive mode or the frequency of transitions to active receive mode, or make other dynamic adjustments as needed to balance the sensor controller 110's ability to initiate and maintain communication sessions with its adjusted battery life.

[0134] The communication module 240 of the sensor controller 110 can be configured to operate or manage a bidirectional communication link between the sensor controller 110 and the receiver 120. The communication module 240 can include communication circuitry configured to transition between a sleep state, a partially awake state, and a fully awake state. For example, the communication circuitry can be configured, when in the fully awake state, to perform tasks and actions associated with a communication protocol activation (CPS) instruction set 221, which can include an advertisement scan related (ASR) instruction subset 222 and a non-ASR instruction subset 223. The communication circuitry can be configured to execute the ASR instruction subset 222 when in the partially awake state. The ASR instruction subset 222 can include transmitting an advertisement notification 224 over one or more channels according to a wireless communication protocol (e.g., BLE) and scanning one or more channels for connection requests from a receiver or other device. Alternatively, the advertisement notification 224 can be stored in the communication module 240. Conversely, if no connection request is received, the communications circuitry may return to a sleep state without performing actions or tasks associated with the non-ASR instruction subset 223 of the CPS instruction set 221. In the example of FIG. 2 , the CPS instruction set 221 may be stored in memory 220 and / or 243 accessed by the microcontroller 210 and / or processor 246 of the communications module 240, respectively. The CPS instruction set 221 may provide a wireless protocol syntax for the microcontroller 210 and / or processor 246 to assemble data packets, advertisement notifications, connection requests, connection responses, establish a communications link, and / or segment data received from the receiver 120. Additionally or alternatively, the CPS instruction set 221 may be stored in ROM, RAM, firmware, or other memory on the communications module 240 or the sensor controller 110 generally. As a further example, the CPS instruction set 221 may be “stored” through configuration of hardware circuitry within the communications module 240 or the sensor controller 110.

[0135] In one embodiment, when the communications circuitry of communications module 240 executes CPS instruction set 221 when the BLE peripheral application is in a fully awake state, it may utilize a first power budget. Furthermore, when the communications circuitry of communications module 240 executes ASR instruction subset 222 when the BLE peripheral application is in a partially awake state, CPS instruction set 221 may utilize a second power budget that is lower than the first power budget. CPS instruction set 221 may include more tasks and actions that require longer durations and more power to execute than the tasks and actions of ASR instruction subset 222. For example, the second power budget and time for executing the ASR instruction subset may be 40% to 80% of the first power budget and time for executing the entire CPS instruction set. As another example, the second power budget and time for executing the ASR instruction subset may be 50% to 65% of the first power budget and time for executing the entire CPS instruction set.

[0136] The communication module 240 includes a receiver that scans for connection requests from the receiver 120. As described herein, the communication module 240 can be controlled by the microcontroller 210 and can support one or more wireless communication protocols, such as Bluetooth low energy (e.g., using the BLE module 241), Bluetooth, Medical Implant Communication Service (MICS), Wi-Fi, cellular communication, or other similar protocols, while communicating with the receiver 120. The communication module 240 can include a transmitter, a receiver, and / or a transceiver. Optionally, the communication module 240 can be electrically coupled to an antenna.

[0137] The microcontroller 210 is coupled to the memory 220 by a suitable data / address bus 296. The memory 220 can store programmable operating parameters used by the microcontroller 210. The microcontroller 210 can change the operating parameters as needed to customize the operation of the sensor control device 110 to the needs of a particular wearer. The memory 220 can also store data sets (raw data, summarized data, historical data, trends, histograms, etc.) such as one or more analyte levels over a period of time (e.g., 1 hour, 24 hours, 7 days, 1 month). Data sets stored in the memory 220 can be selected, packaged into data packets (e.g., data packet 400), and transmitted to a receiving device (e.g., receiver 120). The memory 220 can store instructions that direct the microcontroller 210 to analyze the electrical signals from the sensing hardware 260 to identify characteristics of interest and derive values for storage and presentation.

[0138] Memory 220 also stores a CPS instruction set 221. The CPS instruction set 221 may be loaded into memory 220 at the time of manufacture, at the time of commissioning, at the time of installation, or throughout operation. For example, receiver 120 may provide updates to the CPS instruction set stored in memory 220 during a communication session. CPS instruction set 221 includes an ASR instruction subset 222 and a non-ASR instruction subset 223. ASR instruction subset 222 may include instructions related to at least two of: expiration of a wake-up timer, waking up a processor, initializing transmit circuitry, forming an advertising data packet, transmitting an advertising data packet, scanning one or more channels for connection requests from other devices (e.g., receiver 120), and validating or rejecting an incoming connection request. Non-ASR instruction subset 223 may include instructions related to at least two of: initialization of random access memory (RAM) segments / blocks, initialization of sensing hardware 260, initialization of operating system services, and initialization of CPS instruction set 221. In one embodiment, the ASR instruction subset 222 does not include instructions related to at least two of initialization of random access memory (RAM) segments / blocks, initialization of detection hardware 260, initialization of operating system services, and initialization of the CPS instruction set 221.

[0139] In embodiments herein, the advertising schedule included in the CPS instruction set 221 can balance fast advertisements at low power and low sensitivity with slow advertisements at high power and high sensitivity. This balance can provide quick communication and a longer-range automatic connection for remote monitoring. As described herein, once a connection is established between the receiver 120 and the sensor control device 110, the communication module 240 can set the transmit power and receive sensitivity to a desired communication session level (e.g., high) for the duration of the communication session. Setting the transmit power and receive sensitivity to a desired communication session level regardless of whether the connection is established using short-range or long-range advertisements can provide a desired communication distance during an active communication session. For example, if a subject wishes to force a communication session, the patient can hold the receiver 120 close to the sensor control device 110 to initiate a communication session according to a short-range advertisement. Once the connection is made, the communication module 240 adjusts the transmit power and receive sensitivity to the communication session level (e.g., maximum power setting), allowing the subject to leave the receiver 120 on a table or otherwise out of reach without experiencing an interruption in the communication session.

[0140] Additionally or alternatively, one or more independent advertisement schedules included in the CPS instruction set 221 may be stored in memory 220 and used in association with each corresponding receiver 120. For example, when the sensor controller 110 first initiates communication with a particular receiver 120, the receiver 120 may download the corresponding advertisement schedule included in the CPS instruction set 221 and instructions for utilizing the advertisement schedule included in the CPS instruction set 221 until instructed otherwise. Thereafter, the sensor controller 110 may communicate with another receiver 120, which downloads a corresponding new advertisement schedule included in the CPS instruction set 221 and instructions for utilizing the new advertisement schedule included in the CPS instruction set 221 until instructed otherwise. As a further example, the sensor controller 110 may update the advertisement schedule included in the CPS instruction set 221 throughout operation based on the success rate of establishing a communication link, the delay in establishing the communication link, etc.

[0141] Operating parameters of the sensor controller 110, including but not limited to the CPS instruction set 221, can be non-invasively programmed into the memory 220 through the communications module 240 in two-way wireless communication with the receiver 120. In some embodiments, the communications module 240 is controlled by the microcontroller 210 and can receive data to transmit from the microcontroller 210. The communications module 240 enables data from the sensing hardware 260 (such as that contained in the microcontroller 210, memory 220, or storage 230) and status information regarding the operation of the sensor controller 110 to be transmitted to the receiver 120 over the established two-way communications link. The communications module 240 also enables the receiver 120 to program new parameters and advertising schedules for the sensor controller 110.

[0142] The communications module 240 transmits one or more advertisement notifications or packets 400 on one or more advertisement channels. Each advertisement channel is a point-to-multipoint, unidirectional channel that carries a repeating pattern of system information messages, such as network identification, allowable RF channels for establishing a communication link, and the like, contained within the advertisement notification. As described herein, in some embodiments, an advertisement notification may include specimen data 425 in addition to connection data 420 within its payload 410. The advertisement notification may be repeatedly transmitted based on an advertisement schedule stored in memory 220 after a set duration or advertisement interval, until a communication link is established with the receiver 120.

[0143] 8 illustrates an example sequence of initialization operations that may be performed, for example, when a BLE peripheral application enters a fully awake state. While described in the context of the BLE communication protocol, similar operations may be performed when the sensor controller 110 is configured to operate using other communication protocols. The illustrated process represents a non-limiting example sequence of initialization actions or tasks for a BLE peripheral application that may operate while the communication circuitry of the communication module 240 is in a fully awake state.

[0144] At 810, the wake-up timer expires and the BLE peripheral application is activated. For example, the sensor controller 110 can wake up from a predetermined sleep interval. This interval can occur between connection events or advertisement events. These connection events or advertisement events can be controlled by the timing control circuit 211 as shown in FIG. 2. The timing control circuit 211 can include a sleep clock. When the wake-up timer expires at the end of a sleep interval, the timing control circuit 211 can process the current connection event or advertisement event and establish a new sleep interval using the sleep clock.

[0145] At 815, a processor startup routine begins. For example, the startup module 212 can be used to control the processor boot process. For example, the startup module 212 can include or access a ROM (e.g., memory 220 or 243) or non-volatile flash memory with boot code utilized to control the boot process after the timing control circuit 211 determines the wake-up interval of the sensor control device 110. The ROM can load the boot process. The boot process can include power-on, loading an operating system, and transferring control to the operating system. For example, after a power-on operation initiated by a user, a condition, a timer, or other stimulus, a routine can be executed to ensure device drivers are functioning properly. If there is a problem, the boot process can be stopped. Each device in the boot list can load its own routine that ensures proper communication between the device and the startup module 212. After the routine completes successfully, the operating system 213 can be loaded.

[0146] At 820, the communication circuitry of the communication module 240 is initialized. The communication module 240 is controlled by the microcontroller 210 and may support one or more wireless communication protocols, such as BLE, Bluetooth, and / or MICS, while communicating with the receiver 120. The communication module 240 transmits one or more advertisement notifications on one or more advertisement channels. Each advertisement channel is a point-to-multipoint, unidirectional channel carrying a recurring payload that may include connection data 420, including system information messages such as network identification or allowance channels for establishing a communication link. The advertisement notifications may be transmitted repeatedly based on an advertisement schedule stored in the memory 220 after a set duration or advertisement interval, until a communication link is established with the receiver 120.

[0147] At 825, memory 220 is initialized. For example, operating parameters may be loaded into specific memory locations and / or registers. Memory 220 may store programmable operating parameters used by microcontroller 210. Memory 220 also stores data sets, such as data from or generated by sensing hardware 260, or data processed by microcontroller 210 from data from or generated by sensing hardware 260. Memory 220 may also store instructions that direct microcontroller 210 to analyze the data from or generated by sensing hardware 260 to identify characteristics of interest or preference and derive values for presentation to receiver 120. Memory 220 also stores one or more advertising schedules included in CPS instruction set 221.

[0148] At 830, the sensing hardware 260 may be initialized. For example, the sensing hardware 260 may require a short warm-up period before usable data can be retrieved from or by the sensing hardware 260. This warm-up period may be forced during initialization, or a voltage may be applied to the sensing hardware 260 to hasten the warm-up period. Once the sensing hardware 260 is ready, data or other values may be retrieved from the sensing hardware 260. For example, current level values of one or more particular analytes may be recorded and processed by the microcontroller 210.

[0149] At 835, if the sensor control device 110 supports the operating system 213 as a base operating layer, the operating system services are initialized. After the BIOS has successfully completed, the operating system 213 can begin executing applications or other functions of the sensor control device 110. The operating system 213 can include various application programs for collecting and analyzing biological signals, such as analyte levels.

[0150] At 840, the BLE protocol stack 230 is initialized. The protocol stack 230 may include a host and a controller that include multiple layers used for communication.

[0151] At 845, the BLE peripheral application sends one or more advertisement notifications. The protocol stack 230 controls when the advertisement notifications are sent. The link layer (LL) of the controller of the protocol stack 230 can control the radio frequency (RF) state of the device, which can include the advertisement state. Scan request and scan response operations occur during the advertisement intervals of both applications.

[0152] At 850, the sensor controller 110 determines whether a connection request has been received (e.g., from a receiver 120 in the environment of the sensor controller 110), for example, via a BLE peripheral application. If there is no connection request, the process ends and the IMD goes back to sleep, as shown at 860. On the other hand, if a connection request has been received, the process proceeds to 855.

[0153] At 855, the sensor controller 110, e.g., via a BLE peripheral application, analyzes the content of the connection request to determine whether the connection request is being sent by an authorized receiver 120, etc. If the connection request is being sent by an authorized receiver 120, the sensor controller 110 and receiver 120 can exchange additional information and begin a communication session. The receiver 120 and sensor controller 110 can connect, and the sensor controller 110 can send data it has collected (e.g., via sensor hardware 260). As an example, the sensor controller 110 can backfill data that has not yet been sent to the receiver 120, either automatically or based on a request from the receiver 120. The sensor controller 110 is fully awake at this point in the process.

[0154] 9 illustrates an example of the initialization operation of a BLE peripheral application process 900 while in a partially awake state. The BLE peripheral application operates in a partially awake state until full power is needed, and is illustrated from the perspective of firmware interacting with a Bluetooth Low Energy system-on-chip (SoC). Although illustrated in the context of the BLE communication protocol, similar applications and processes can be used for the sensor controller 110 when operating using other communication protocols.

[0155] At 910, the wake-up timer expires, activating a partial wake (low power) BLE application. For example, the sensor controller 110 may wake up from a predetermined sleep interval. This interval may occur between connection events or advertisement events. These connection or advertisement events may be controlled by the timing control circuit 211 as shown in FIG. 2. The timing control circuit 211 may include a sleep clock. When the wake-up timer expires at the end of the sleep interval, the timing control circuit 211 may process the current connection or advertisement event and establish a new sleep interval using the sleep clock. The sensor controller 110 is partially awake at this point in the process.

[0156] At 915, a processor startup routine is performed similar to the routine described in connection with the operations at 810. At 920, the communications circuitry of communications module 240 is initialized similar to the routine described in connection with the operations at 815.

[0157] A low power BLE application operating using process 900 skips steps 825-840 as shown for a BLE peripheral application in a fully awake state. The low power BLE application does not necessarily initialize memory blocks, sensing hardware 260, or the complete BLE protocol stack during this part of the process. This process change reduces the amount of time the processor and hardware blocks need to be active during each advertising opportunity, conserving battery power.

[0158] At 925, the BLE peripheral application constructs and transmits one or more advertisement notifications. In some embodiments, the advertisement notifications are pre-formed and include a payload 410 having only connection data 420. In some embodiments, the advertisement notifications are generated to further include most recent or most prioritized sample data 425, which may be encrypted before inclusion in the advertisement packet payload 410.

[0159] At 930, the BLE peripheral application determines whether a connection request has been received. The connection request may be received from one or more receiving devices (e.g., receiver 120) in the sensor controller 110's environment. If a connection request is not received, the process ends and the sensor controller 110 returns to sleep, as shown at 940. However, if a connection request is received, the process proceeds to 935. At 935, the BLE peripheral application analyzes the connection request and initiates a communication session if appropriate. At this point in the process, the sensor controller 110 begins to transition to a fully awake state by performing skipped operations.

[0160] 10 illustrates an example application switching sequence between a low-power (partially awake) advertising application and a (fully awake) BLE peripheral firmware application. While in a partially awake state, the sensor controller 110 transmits advertising notifications 1010 at advertising intervals 1012 during different advertising periods. The receiver 120 transmits a scan request 1015 to request a connection to the sensor controller 110. Upon receiving the scan request 1015, the sensor controller 110 can transmit a scan response 1020 to the receiver 120. If the scan response 1020 indicates that the receiver 120 is authorized to connect 1040 and subsequently communicate 1045 with the sensor controller 110, a switching operation 1025 is initiated, and upon receiving a connection request 1035, the partial awake advertising application 1005 switches to a fully awake advertising application 1030. The partial awake advertising application 1005 hands over the process to the fully awake advertising application 1030. The scan request 1015 may be processed by analyzing the identifying characteristics of the receiver 120 .

[0161] Once the fully awake advertising application 1030 takes control, the memory block 220 is initialized within the fully awake advertising application (operation 825 of FIG. 8 ). For example, program instructions or parameters may be loaded into RAM, registers, or other memory locations. Various indexes into memory are initialized. The sensing hardware 260 is also initialized (operation 830). Operating system services may also be initialized (operation 835), and the BLE protocol stack 230 may also be fully initialized (operation 840). A communication session is then established.

[0162] 11 is a state machine diagram illustrating the states of the communication circuitry of the sensor control device 110 configured in accordance with embodiments disclosed herein. Initially, the communication circuitry starts in a sleep state 1110. The communication circuitry remains in the sleep state until a wake-up timer expires. When the wake-up timer expires, the communication circuitry transitions from the sleep state to a partially awake state 1120, which may also be referred to as a low-power advertising state. While in the partially awake state, the communication circuitry is configured to transmit advertisement notifications over one or more channels according to a wireless communication protocol and to scan one or more channels for connection requests from receivers.

[0163] When a connection request is received from the receiver 120, the connection circuitry can be configured to transition to a fully awake state 1130. The fully awake state can also be considered a full power state or a standard advertising state. While in the fully awake state, the communications circuitry is configured to perform tasks and actions associated with the communications protocol start (CPS) command set, including the advertisement scan related (ASR) command subset and the non-ASR command subset. After completing any necessary handling duties, the communications circuitry can return to a sleep state until the next expiration of the wake-up timer.

[0164] On the other hand, if no connection request is received, the communications circuit may return directly to sleep state 1110 without performing any actions or tasks associated with the non-ASR instruction subset of the CPS instruction set.

[0165] When executing the CPS instruction set while the communications circuitry is in a fully awake state, the sensor controller 1100 uses a first amount of power. When executing the ASR instruction subset while in a partially awake state, the sensor controller 110 uses a second amount of power that is lower than the first amount of power. The full CPS instruction set includes more tasks and actions that require longer durations and more power to execute than the limited set of tasks and actions of the ASR instruction subset.

[0166] The communications circuitry may also include additional or different hardware or firmware, in which case the ASR instruction subset may include instructions for at least two of: expiring a wake-up timer, waking up a processor, initializing transmit circuitry, transmitting advertising data packets, scanning one or more channels for connection requests from receiver 120, or validating or rejecting incoming connection requests. In some embodiments, the ASR instruction subset may not include the non-ASR instruction subset. The non-ASR instruction subset may include instructions for at least two of: initializing a random access memory (RAM) segment or block, initializing an external device component, initializing an operating system service, or initializing a communications protocol stack.

[0167] As described herein, to establish a communication session, the sensor control device 110 and the data receiving device 120 (or the multipurpose device 130, etc.) communicate initial data packets containing information useful for establishing the communication session. This data, which may be referred to as connection data or connection parameters, may be exchanged in specially constructed packets, which may be referred to as advertising data packets. A device attempting to initialize a connection may broadcast the advertising data packets according to a predetermined schedule established by the communication protocol it uses. By way of example only and not limitation, a device utilizing the BLE communication protocol may broadcast the advertising data packets according to a set time schedule using a specific communication frequency reserved for use for advertising data packets. The sensor control device 110 may repeatedly broadcast the advertising data packets if no active communication session exists. When another device receives the advertising data packets, it can interpret the data contained in the data packets and determine whether it can and should respond to the advertising data packets to initialize a communication session with the sensor control device 120.

[0168] A device receives advertising packets only when it is actively listening for them while operating in scan mode. A device, such as the data receiving device 120, risks missing advertising data packets and other requests to initiate a communication session if it is not operating in scan mode. Therefore, it may be desirable to maximize the time spent in scan mode to avoid missing potentially important advertising data packets. However, operating in scan mode can consume a significant amount of battery power. Scan mode requires constant use of communication hardware (e.g., a suitable radio) and processing hardware to interpret received data packets. This use of battery power can significantly reduce the overall battery life of the data receiving device 120 and limit its effectiveness in performing other functions. Therefore, a balance is often required between the time spent in scan mode and the time spent in a low-power state. One approach is to schedule the time spent in scan mode so that the device spends only a small portion of its time in scan mode. To increase the likelihood that the data receiving device 120 will be able to receive communication packets from the sensor controller 110, a scan window can be selected or dynamically changed to coincide with the advertising data packet schedule used by the sensor controller 110.

[0169] FIG. 12A illustrates a first embodiment of an advertisement schedule and a scan window schedule used by two devices. Specifically, FIG. 12A illustrates an example in which the advertisement schedule of the sensor control device 110 is synchronized with the scan window schedule of the data receiving device 120. The sensor control device 110 is configured to periodically and repeatedly prepare and broadcast advertisement data packets 1205. As an example, the sensor control device 110 can be configured to broadcast advertisement data packets 1205 once every 10 seconds, 30 seconds, 1 minute, 2 minutes, 5 minutes, etc. As another example, the sensor control device 110 can be configured to simultaneously broadcast bursts or clusters of advertisement data packets (e.g., broadcasting five data packets in rapid succession every two minutes). As another example, the sensor control device 110 can be configured to rapidly broadcast advertisement data packets 1205 during a short, periodically repeating window (e.g., broadcasting advertisement data packets repeatedly for two seconds every two minutes). The described advertisement schedule is merely an example for illustrative purposes, and other variations are possible.

[0170] The data receiving device 120 can operate in scan mode during designated, recurring time windows 1210 to facilitate reception of the advertising data packets 1205. As an example, the data receiving device 120 can operate on a two-minute cycle and operate in scan mode for the first 10-second window 1210 of the two-minute cycle. The data receiving device 120 can conserve battery power by operating in a low-power state during the remaining 110 seconds. To maximize the data receiving device 120's ability to receive the advertising data packets 1205 from the sensor control device 110, the start of the window 1210 can be selected or adjusted to coincide with the timing of the advertising packet broadcast 1205. For example, the manufacturer of the data receiving device 120 can be provided with the advertising schedule for the sensor control device 110 in advance so that the data receiving device 120 can be pre-configured to operate in scan mode while the advertising data packets 1205 are being broadcast. As another example, during an initial communication session between the sensor control device 110 and the data receiving device 120 (e.g., during a pairing process), the sensor control device 110 may provide details of its advertising schedule to the data receiving device 120, and the data receiving device 120 may adjust its scan window schedule accordingly. Similarly, in some embodiments, the sensor control device 110 may adjust its advertising schedule to the scan window schedule of the data receiving device 120. In other embodiments, the advertising and / or scan window schedule may be determined by the communication protocol itself or by the provider of the communication module used by one or both of these devices.

[0171] Although an agreed-upon advertisement window and scan window schedule can increase the overlap rate of advertisement windows and scan windows, this approach has weaknesses. For example, maintaining the overlap requires both devices to accurately time their respective windows. Both devices must maintain consistent internal clocks to maintain synchronization. Variations or errors in one or both internal clocks can lead to loss of synchronization, as shown in FIG. 12B. One approach to overcoming the possibility of internal clock errors is to include a buffer time in the scan window length and start period (e.g., by increasing the window beyond strictly necessary or by starting the scan window earlier than the actual advertisement data packets are expected to be broadcast). However, this requires the devices to operate in scan mode for longer periods, consuming additional battery power.

[0172] 12B illustrates a second embodiment of the advertisement schedule and scan window schedule used by the two devices. Specifically, FIG. 12B illustrates an example in which the advertisement schedule of the sensor control device 110 is not synchronized with the scan window schedule of the data receiving device 120. In the illustrated example, because the advertisement schedule and scan window schedule are not synchronized, the data receiving device 120 cannot receive advertisements from the sensor control device 110 while in scan mode. Therefore, the sensor control device 110 and the data receiving device 120 cannot connect and communicate.

[0173] The situation shown in FIG. 12B may arise, for example, when the ASIC or other processor used by one or both of the sensor controller 110 and the data receiver 120 fails to maintain an accurate clock. In some embodiments, the sensor controller 110 and the data receiver 120 may be designed as disposable devices with limited number of uses and / or limited duration. Therefore, component costs are tightly controlled, and one area for cost savings may be within the ASIC or other processor. As an example, a processor may naturally suffer from slight drift (e.g., less than 5%, less than 3%, or less than 1%) or other errors that may be exacerbated by environmental conditions (e.g., extreme heat or cold may affect the processing speed of the processor or ASIC, further exacerbating errors). If two devices are expected to communicate frequently, this frequent communication may allow the two devices to periodically resynchronize, and / or the degree of difference between the internal clocks of the sensor controller 110 and the data receiver 120 may be determined to be above a certain threshold, and a level of drift may often be deemed acceptable. Furthermore, for two devices that are expected to communicate in close proximity at all times, such as a sensor control device 110 and a data receiving device 120 used as disposable monitoring components of a larger, multi-purpose hardware system, it can be assumed that the two devices can periodically resynchronize. However, resynchronization opportunities are not necessarily guaranteed, and if they can go for an extended period without resynchronization, the drift between the internal clocks of the two devices may exceed an acceptable threshold, resulting in the situation shown in FIG. 12B. Because the two devices are out of sync, they cannot reconnect and resynchronize. In some embodiments, to mitigate the risk of desynchronization, the frequency of advertisement windows and / or scan window schedules can be reduced (so that advertisement packet broadcasts or scan operations occur more frequently) or the active window for each period can be increased. However, these approaches can significantly increase the battery power consumed by these operations.

[0174] As described herein, another approach can be to dynamically modify the scan window schedule to attempt to re-establish overlap between the advertisement windows and the scan windows. Figure 12C illustrates a third embodiment of the advertisement schedule and scan window schedule used by two devices. Specifically, Figure 12C illustrates an example in which the data receiving device 120 employs techniques consistent with those described herein to ameliorate potential synchronization issues between the data receiving device 120 and the sensor control device 110. The particular method employed by the data receiving device 120 in the example illustrated in Figure 12C can be referred to as a recursive or recursive-expanding scan window schedule.

[0175] In the example shown in FIG. 12C , the data receiving device 120 and the sensor control device 110 were initially synchronized with respect to advertisement and scan window schedules. However, the two devices lose synchronization due to an extended period of connectivity, for example, due to environmental conditions of the devices. The data receiving device 120 can determine that the device has become disconnected (or has been disconnected for a threshold time). The data receiving device 120 can initiate a protocol that dynamically modifies the scan window schedule to attempt to reestablish overlap between advertisement and scan windows. The data receiving device 120 uses a first scan window 1210a (e.g., lasting for a first period of time) corresponding to standard operation. Upon being unable to detect advertisement data packets 1205 and / or otherwise initiate a communication session with the sensor control device 110, the data receiving device 120 increases the length of the scan window to last for a second period of time. In embodiments, the data receiving device 120 can additionally or alternatively modify the start of the scan window (e.g., to an earlier or later period of time). In the illustrated example, the data receiving device 120 expands the scan window from the center outward so that some of the additional time added to the first scan window 1210a is added to the beginning of the second scan window 1210b and some of the additional time is added to the end of the second scan window. If the data receiving device 120 is unable to receive the advertising data packet 1205 during the second scan window 1210b, the period is expanded again. This process continues until the scan window 1210c again overlaps with the advertising packet 1205 during the illustrated sixth scan window 1210c, and the sensor control device 110 and data receiving device 120 are able to reconnect and resynchronize.

[0176] FIG. 13 illustrates an example operational flow of a data receiving device 120 in accordance with embodiments of the disclosed subject matter. Specifically, FIG. 13 illustrates an example method 1300 performed by the data receiving device 120 to implement a recurring, expanding scan window schedule, such as the scan window schedule illustrated in FIG. 12C . At 1310, the data receiving device 120 detects that the data receiving device 120 and the sensor control device 110 have disconnected. As one example, the data receiving device 120 may detect that communication between the devices has timed out due to a lack of communication traffic for a threshold period of time. As another example, the data receiving device 120 may detect that the data receiving device 120 has not received an advertising packet from the sensor control device 110 for longer than a threshold period of time. In some embodiments, the data receiving device 120 and the sensor control device 110 do not maintain a continuous communication session, but instead establish a short connection window to transmit data before disconnecting. In such embodiments, the data receiving device 120 may detect that a device has disconnected by evaluating the length of time since the last successful data transmission.

[0177] At 1320, data receiving device 120 may set the scan window to an initial duration. In some embodiments, the initial duration may be a period of similar length to a standard scan window (e.g., a scan window used outside of an iterative search process when different scan windows are used for different purposes). In some embodiments, the initial duration may be shorter than a standard scan window. The initial scan window may be, for example, 1 second, 2 seconds, 3 seconds, etc. In some embodiments, the initial scan window may be selected based on an expected delay for processing connection data to minimize irrelevant scans.

[0178] At 1330, the data receiving device 120 initiates a scan window according to the periodic scan schedule and the initial scan window. As an example, the periodic scan schedule may determine that a scan window is initiated approximately every 1 minute, 2 minutes, or 5 minutes, regardless of its size. Thus, the data receiving device 120 initiates a scan window for the length of the initial scan window duration at the next instance of a scan window cycle.

[0179] At 1335, the data receiving device 120 determines whether it was able to establish a connection with the sensor control device 110 based on the advertising data packets received during the scan window. For example, the data receiving device 120 can monitor whether any advertising data packets were received during the scan window. The data receiving device 120 can determine whether any of the received advertising data packets are from a sensor control device 110 that was recently disconnected. The data receiving device 120 can further determine whether the connection data in the advertising data packets was sufficient for the data receiving device 120 to re-establish a connection with the sensor control device 110. If so, at 1350, the data receiving device 120 and the sensor control device 110 can exchange data and resynchronize their internal clocks, or otherwise proceed with normal operation.

[0180] If the data receiving device 120 determines that it was unable to establish a connection with the sensor control device 110, it increases the duration of the scan window at 1340. In some embodiments, the scan window is increased by a fixed amount (e.g., 0.5 seconds, 1 second, etc.). In some embodiments, the scan window is increased by a formulaic amount based, for example, on at least one of the current duration of the scan window, the number of iterations of method 1300, the duration since the sensor control device 110 and data receiving device 120 were disconnected, the current available battery power of the data receiving device 120, and other considerations. By way of example, the formulaic amount may be based on or retrieved from a value stored in a lookup table in the data receiving device's storage or a pre-programmed function in the data receiving device's 120 programming. In some embodiments, the scan window duration is increased by an amount based on the likely drift between the internal clock of the data receiving device 120 and the internal clock of the sensor control device 110, including, but not limited to, worst-case scenario or average drift.

[0181] In addition to or instead of adjusting the duration of the scan window, the data receiving device 120 can also change the timing of the scan window. As an example, an additional amount of time can be added to the beginning of the window (so that the window starts earlier in time), to the end of the window (so that the window extends longer), or a combination of the two. Correspondingly, the scan window can be moved in time by removing an equivalent amount of time from the beginning or end of the time window. One approach is to add time "outward from the center" so that the window expands on both sides. This approach can force advertising data packet broadcasts to earlier or later start times by allowing the data receiving device 120 to account for possible drift in the start times of advertising periods.

[0182] At 1345, the data receiving device 120 can determine whether the duration of the increased scan window exceeds a threshold scan window duration. As described herein, the data receiving device 120 can have a limited battery, and the length of the scan window is a factor in maximizing battery life. Accordingly, the data receiving device 120 can be configured to have a maximum allowable scan window that limits the amount of time the data receiving device 120 is in scan mode. In some embodiments, the maximum scan window duration can be based on factors such as the current environment of the data receiving device 120, the currently available battery life of the data receiving device 120, the last known battery life of the sensor control device 110, and / or characteristics of the advertising schedule of the sensor control device 120. As an example, the sensor control device 110 can be configured to have a fixed-duration advertising schedule such that an advertising packet is transmitted at least once every cycle. The cycle length can be, for example, 30 seconds, 1 minute, 2 minutes, 5 minutes, etc. The data receiving device 120 can be provided with this cycle and use the cycle length as the maximum scan window duration. Thus, the scan window, when at its maximum level, can be guaranteed to overlap with the expected advertising period despite any desynchronization experienced. Extending the maximum scan window beyond the cycle length is redundant and wastes battery power.

[0183] If the increased scan window duration does not exceed the threshold scan window duration, the data receiving device 120 returns to 1330 and starts a scan window based on the increased scan window duration, and the process then continues as described above.

[0184] If the increased scan window duration exceeds the maximum scan window threshold, the data receiving device 120 is performing a scan window that is longer than the cycle length, and other factors are likely preventing the data receiving device 120 and the sensor control device 110 from establishing a connection (e.g., the sensor control device 110's battery is dead, environmental factors are preventing a connection, etc.). Therefore, further extending the scan window would be redundant. To better utilize the data receiving device 120's battery and reduce the average battery cost of the scan window, the data receiving device 120 returns to 1320 and resets the scan window duration to the initial scan window duration (or another scan window duration that is shorter than the maximum value), and then continues the scanning process described herein.

[0185] Method 1300 may be repeated repeatedly until data receiving device 120 is able to resynchronize or otherwise exchange data with sensor control device 110. In some embodiments, method 1300 may be repeated for a certain number of cycles, after which data receiving device 120 may enter a more aggressive power saving mode under the assumption that communication with sensor control device 110 will be permanently lost. In some embodiments, various steps of method 1300 may be modified as multiple iterations of method 1300 are performed. For example, the maximum scan window threshold may be increased or decreased, the amount of increase in scan window duration (e.g., at 1340) may be increased or decreased, the criteria for determining whether a connection can be established at 1335 may be changed, and other similar modifications may be made.

[0186] The dynamically and iteratively determined scan window approach described in method 1300 can reduce the average battery power used when using a scan window to re-establish a connection between the data receiving device 120 and the sensor control device 110. As an example, this approach uses a shorter scan window if the disconnection is recent, assuming that any drift that occurred is relatively minor. This approach also includes a mode in which the maximum scan window is based on the advertising cycle length used by the sensor control device 110, thereby ensuring that an overlap period exists unless there are external factors that prevent the connection. Thus, this approach incorporates an improvement over prior techniques that rely on a fixed scan window length.

[0187] In certain embodiments, connection parameter information is exchanged when a communication session between the data receiving device 120 and the sensor control device 110 is initiated. The connection parameter information can be used by the devices to initiate the communication session. In some embodiments, one or both of the data receiving device 120 or the sensor control device 110 can select the connection parameter information to improve the connection quality ensuring the communication session. By way of example and not limitation, the connection parameter information can include at least one of a connection retry timeout, an inter-connection retry timeout, a supervision timeout, a maximum interval, a minimum interval, a wait time, and a supervision timeout. Once the connection parameter information is selected, the device (e.g., the sensor control device 110) can request that the connection parameter configuration be adjusted to the selected parameters in a process known as negotiation. Not all devices support negotiation for all devices.

[0188] In some examples, a peripheral device (e.g., the sensor control device 110) supports communication with various devices using a standard protocol (e.g., BLE). Often, each possible communication partner device can maintain a communication session across various parameter configurations. The differences between the available communication parameters can vary based on, for example, the goals and preferences of the manufacturer of the other device or a component of the device (e.g., the manufacturer of the communication module itself), the physical configuration of the other device, or the available battery power or operating mode of the device. As an example, a first manufacturer may make a particular communication parameter configuration available only for connections that use a communication protocol that maintains a consistent security or power consumption experience for use. Such communication parameter configuration can be more stringent than available configurations from other manufacturers. However, it is common for devices to support only a strict configuration as a way to simplify integration with various partner devices, even if that configuration is not ideal for a particular use case.

[0189] In certain embodiments, the sensor controller 110 can be configured to access or determine connection parameter information based on the identity of the data receiving device 120 with which it is initiating a communication session. As an example, the identity of the data receiving device 120 or its manufacturer can be exchanged during the communication session initiation process. The sensor controller 110 can be configured to have a database of appropriate connection parameter information that it can access based on the identity of the data receiving device 120. Upon initiating a communication session, the sensor controller 110 can retrieve the appropriate connection parameter information and provide this connection parameter information to the data receiving device 120 as a request to modify the communication parameter configuration for the communication session. The selected communication parameter configuration can thus be customized for the specific data receiving device 120 to improve communication data quality, reliability, throughput speed, etc. This process allows the sensor controller 110 to dynamically determine the connection parameter information to use with a given data receiving device, thereby maintaining support for the most stringent requirements while taking advantage of looser tolerance parameter ranges made available by other manufacturers and partners.

[0190] As described herein, some manufacturers of data receiving devices 120 may impose individual requirements for specific communication parameters to be used with the sensor control device 110 and other example peripheral devices. Table 1 shows example parameters that different manufacturers may use for different devices, illustrating the challenges of supporting optimal communication settings across a variety of devices. Table 1 TIFF2025527128000002.tif34155

[0191] Accordingly, embodiments herein provide greater adaptability and expansion opportunities for future data receiving devices 120 and multipurpose devices 130 for use with the sensor control device 110. For example, a desired combination of communication parameters can be determined through collaborative sharing of communication parameter configurations and communication quality and reliability measures. As described herein, the analyte monitoring system 100 can provide accuracy values and field test parameter values based on feedback from the data receiving device 120 or its user. A closed-loop feedback system can be provided that i) continuously improves connection reliability and quality, ii) adapts to manufacturing changes in the data receiving device 120 and multipurpose device 130, and iii) adapts to the data receiving device 120 and multipurpose device 130 as they are deployed. Furthermore, the method and system avoid the need for software updates of the sensor control device for different or new mobile devices, thus reducing the number of submissions.

[0192] Optionally, information exchanged before or during the establishment of a communication session may include battery status information of the data receiving device 120 and the sensor control device 110. The sensor control device 110 may further incorporate the battery status information in determining the selection of appropriate connection parameter information to provide to the data receiving device 120 as a request to adjust its communication parameter configuration. Additionally, other available information may be used to dynamically adjust the communication parameter configuration based on the current state of the device and environmental conditions. For example, the ambient noise level of the environment may be measured and used to adjust communication parameters to improve data connection reliability.

[0193] In some embodiments, appropriate communication parameter settings can be determined prior to the initiation of a communication session between the sensor control device 110 and the data receiving device 120. As an example, a manufacturer of the sensor control device 110 can test various potential data receiving devices 120 and multi-purpose devices 130 to determine ideal communication parameters to be used between the devices for various environmental conditions. Such a process can be performed, for example, during a certification process required before a data receiving device 120 can be used with the sensor control device 110. The results of the testing can include a compact database linking device make, make, model, and software version information to a particular set of communication parameter information. The certification or manual testing process can allow for expert opinion on the optimal parameters to use for a particular data receiving device 120.

[0194] In some embodiments, communication parameter information can be dynamically determined at the start of a communication session. As one example, the sensor controller 110 can be configured to request maximum and minimum settings for associated communication parameters to be enabled by the data receiving device 120 at the start of a communication session. The sensor controller 110 determines whether it can support the maximum settings, modifies them as needed, and uses the maximum values as the requested communication parameter configuration. As another example, the sensor controller 110 can be configured with the capability to perform a data link quality test or self-authentication procedure. During a data link quality test, the sensor controller 110 can request a set of communication parameter configurations, evaluate the link quality between the sensor controller 110 and the data receiving device 120, and select a communication parameter configuration based on the evaluation.

[0195] According to at least some embodiments, parameter values may be identified through machine learning methods implemented on one or more systems (e.g., remote server 150) of the analyte monitoring system 100. The sensor control devices 110 and data receiving devices 120 may be configured to report the communication parameters being used to the analyte monitoring system 100. The analyte monitoring system 100 may collect performance measures over a period of time relating to one or more characteristics of interest associated with communication sessions of a group of sensor control devices 110 and data receiving devices 120. Based on the information collected over a period of time, the analyte monitoring system 100 may identify a predetermined set of parameters that exhibit favorable performance in the communication session.

[0196] The term "communication parameters" refers to one or more parameters related to a wireless protocol of interest. As described herein, non-limiting examples of wireless protocols include Bluetooth Low Energy (BLE), Bluetooth, and ZigBee. For example, the BLE protocol is defined in the Bluetooth Specification Version 4.1, published December 3, 2013, which is incorporated herein by reference. The BLE protocol is a master-slave protocol that operates in the 2400-2483.5 MHz frequency range (including guard bands). The BLE protocol uses 20 RF channels with a 2 MHz bandwidth. The 20 RF channels are assigned to two channel types: data channels (with 37 channels) and advertising channels (with 3 channels). The data channels are used by devices on a BLE network for communication between connected devices. The advertising channels are used by devices on a BLE network to discover new devices, initiate connections, and broadcast data. Each RF channel (data and advertising channels) is assigned a unique channel index, so if two devices wish to communicate, they must simultaneously tune their transceivers to the same RF channel. Optionally, additional or different communication protocols can be utilized. A non-limiting list of BLE connection parameters includes connection retry timeout, inter-connection retry timeout, and supervision timeout. A non-limiting list of BLE data transfer parameters includes normal minimum interval, normal maximum interval, normal wait time, normal supervision timeout, low battery minimum interval, low battery maximum interval, low battery wait time, and low battery supervision timeout.

[0197] Not shown are the manufactures of the devices used in the analyte monitoring system 100 shown in FIG. 1 , including the sensor control device 110, the data receiving device 120, and software or application programming interfaces usable by or with the remote server 150, the multi-purpose data receiving device 130, and other user devices 140. The manufacturer may choose to provide the information and programming necessary for the devices to communicate securely through secure programming and updates (e.g., one-time programming, encrypted software or firmware updates, etc.). For example, the manufacturer may provide information that can be used to generate encryption keys for each device, including a secure root key for the sensor control device 110 and optionally the data receiving device 120, which can be used in combination with device-specific information and operational data (e.g., entropy-based random values) to generate encryption values specific to the device, session, or data transmission, as needed. These encryption keys can be used, for example, to validate data sent to the analyte sensor 110 from external devices (e.g., the data receiving device 120, the multi-purpose data receiving device 130, the user devices 140, etc.).

[0198] The manufacturer may assign each sensor controller 110 a unique identifier (“UID”) and other identifying information, such as a manufacturer's identifier, a communications module and manufacturer's identifier, or any other suitable identifying information for the sensor or sensor component. By way of example, the UID may be derived from sensor-specific data, such as a serial number assigned by an ASIC vendor to each ASIC 200 embodied in the sensor controller 110, a serial number assigned by a communications module vendor to the communications module 240 embodied in the sensor controller 110, or a random value generated by the sensor manufacturer. Additionally or alternatively, the UID may be derived from manufacturing values, including the lot number of the sensor controller 110 or its components, the day of the week, date, or time of manufacture of the sensor controller 110 or its major components, the manufacturing location, manufacturing process, or line of the sensor or its major components, and other information that can be used to identify how and when the sensor was manufactured. The UID may involve an encryption key and multiple generated random values, similarly unique to each sensor controller 110. A similar process may be used to establish the secure identity of a receiving device, such as the data receiving device 120.

[0199] Because the data collected by the sensor control device 110 and exchanged between the sensor control device 110 and other devices in the analyte monitoring system 100 pertains to medical information about the user, it is believed that such data is highly sensitive and beneficial to protect. User-related analyte data is sensitive at least in part because this information can be used for a variety of purposes, including health monitoring and medication decisions. In addition to user data, the analyte monitoring system 100 can also implement security enhancements against reverse engineering efforts by external parties. The security architecture described herein can include various combinations of the control features described herein, including, but not limited to, protecting communications between devices, protecting proprietary information within components and applications, and protecting secrets and primary keying material. As embodied herein, encryption and authentication can be used as exemplary technical controls for providing protection. As embodied herein, various components of the analyte monitoring system 100 can be configured to comply with security interfaces designed to protect the confidentiality, integrity, and availability (“CIA”) of this communication and associated data. To address these CIA concerns, security features may be built into the hardware and software design of the analyte monitoring system 100.

[0200] As embodied herein, to facilitate data confidentiality, a communication connection between any two devices (e.g., a sensor control device 110 and a receiving device) can be mutually authenticated before either device transmits sensitive data. The communication connection can be encrypted using a device-specific or session-specific encryption key. As embodied herein, encryption parameters can be configured to change for each data block of a communication.

[0201] As embodied herein, encrypted or unencrypted communications between any two devices (e.g., the sensor controller 110 and a receiving device) can be verified using a transmission integrity check incorporated into the communications to protect data integrity. As one example, as described herein, data transmitted by the sensor controller 110 to a receiving device over a communication session can be validated using a transmission integrity check before the receiving device acts on or stores the data. As another example, as described herein, the payload of a broadcast data packet can include an integrity check value. Additionally, data written to the memory of the sensor controller 110 can be verified or validated using an integrity check before execution. As embodied herein, after the devices are each authenticated, session key information can be exchanged between the two devices that can be used to encrypt communications. For example, the integrity check value can include an error detection or correction code, including, by way of example and not limitation, a non-secure error detection code, minimum distance coding, repetition code, parity bit, checksum, cyclic redundancy check, cryptographic hash function, error correction code, and other suitable methods of detecting the presence of errors in a digital message.

[0202] As embodied herein, minimum distance coding includes random error correcting codes that strictly guarantee the number of detectable errors. Minimum distance coding selects a codeword representing a received value that minimizes the Hamming distance between the value and the representation. Minimum distance coding or nearest neighbor coding can be supported using standard constellations. Minimum distance coding is considered useful when the probability of an error occurring does not depend on the position of a given symbol and errors can be considered as independent events. These assumptions may be particularly applicable to transmission over binary symmetric channels.

[0203] Additionally or alternatively, as embodied herein, a repetition code refers to a coding scheme that repeats bits throughout a channel to ensure that a communication message is received error-free. Given a data stream to be transmitted, data is divided into blocks of bits. Each block is transmitted and retransmitted a predetermined number of times. An error is detected if any transmission of a repeated block differs.

[0204] Additionally or alternatively, as embodied herein, a checksum is a value for a message or stored data block based on the modular arithmetic sum of message code words of a fixed word length. A checksum can be derived from the entire data block or a subset thereof. A checksum is generated using a checksum function or cryptographic hash function configured to output significantly different checksum values (or hash values) for small variations in the target message. A parity bit is a bit added to a group of bits during transmission that ensures that the count of a particular bit in the result is even or odd. For example, a parity bit can be used to ensure that the number of bits with a value of 0 is odd. A parity bit can detect a single error or a fixed number of repeated errors. A parity bit can be considered a special case of a checksum.

[0205] As embodied herein, to further reduce or prevent unauthorized access to devices in the analyte monitoring system 100, the root key (e.g., a key used to generate device-specific or session-specific keys) may optionally not be stored on the sensor control device 110 but may be encrypted in storage by the remote server 150 or on another device (e.g., the data receiving device 120) that has greater computing power than the sensor control device 110. As embodied herein, the root key may be stored in an obfuscated manner to prevent easy access by third parties. The root key may also be stored in different encryption states depending on where it is stored in storage. As embodied herein, to facilitate data availability, the operation of the sensor control device 110 may be protected from tampering during its useful life, during which the sensor control device 110 may be configured to be disposable, for example, as embodied herein, by restricting access to write functionality to the memory 220 via communication interfaces (e.g., BLE and NFC). The sensor can be configured to allow access only to known devices (e.g., identifiers by MAC address or UID) or devices that can provide a predetermined code associated with the manufacturer or otherwise authenticated user. Access to the memory 220 read function can also be enforced, including, for example, if the read function attempts to access specific areas of the memory 220 designated as secure or sensitive. Additionally, the sensor controller 110 can reject any communication connection request that does not complete authentication within a specified time to protect against certain denial-of-service attacks on the communication interface, including man-in-the-middle (MITM)-style attacks. Furthermore, the general authentication and encryption design described herein can support interoperable use, where data from the sensor controller 110 can be made available to other “trusted” data recipients without being permanently bound to a single device.

[0206] As embodied herein, devices within the sensor controller 110, including receiving devices (e.g., data receiving device 120, general-purpose data receiving device 130, user device 140, etc.), can each employ various security measures to ensure the confidentiality of data exchanged over communication sessions and to facilitate associated devices' discovery and connection to trusted endpoints. By way of example, the sensor controller 110 can be configured to proactively identify and connect to trusted local-area, wide-area, or cellular broadband networks and continuously verify the integrity of these connections. Furthermore, the sensor controller 110 can reject connection requests and shut down if the requester fails to complete a dedicated login procedure via the communication interface within a predetermined period of time (e.g., within four seconds). For example, but not by way of limitation, such a configuration can further prevent denial-of-service attacks.

[0207] As embodied herein, the sensor control device 110 and receiving devices can support the establishment of long-term connection pairs by storing encryption and authentication keys associated with other devices. For example, the sensor control device 110 or data receiving device can associate a connection identifier with the encryption and authentication keys used to establish a connection to another device. In this manner, the devices can more quickly re-establish a dropped connection, at least in part because they can avoid establishing a new authentication pairing and proceed directly to exchanging information via an encrypted communications protocol. Devices can refrain from broadcasting connection identifiers and other information to establish new connections after a successful connection has been established and can communicate using an agreed-upon channel hopping scheme to reduce the opportunity for third parties to listen in on communications.

[0208] The integrity of data transmission and storage can be actively managed using on-chip hardware features. While encryption can provide a means of securely transmitting data in a tamper-proof manner, encryption and decryption are computationally expensive processes. Furthermore, it can be difficult to distinguish a transmission failure from an attack. As described above, fast hardware-based error detection codes can be used for data integrity. By way of example, as embodied herein, an error detection code appropriately sized for the message length (e.g., a 16-bit CRC) can be used, although other suitable hardware-based error detection codes can be used in accordance with the disclosed subject matter. Programming instructions that access, generate, or manipulate sensitive data can be stored in memory blocks or containers that are further protected with additional security measures, such as encryption.

[0209] As embodied herein, the analyte monitoring system 100 may employ periodic key rotation to further reduce the likelihood of key compromise and exploitation. The key rotation strategy employed by the analyte monitoring system 100 may be designed to ensure backward compatibility for devices deployed or distributed in the field. As an example, the analyte monitoring system 100 may employ keys for downstream devices (e.g., devices in the field or that cannot conveniently provide updates) designed to be compatible with multiple generations of keys used by upstream devices. Additionally, in accordance with the subject matter herein, keys may be securely updated by invalidating memory blocks containing outdated keys and replacing them with data written to new memory. Key rotation may be initiated by the manufacturer or operator of the analyte monitoring system 100. For example, the manufacturer or operator of the analyte monitoring system 100 may generate a new set of keys or define a new set of key generation procedures. The manufacturer may propagate the new key set to newly manufactured sensors 110 during the manufacture of sensors 110 that use the new key set. The manufacturer may also push updates to deployed devices in communication with the remote server 150 to disseminate new sets of keys or key generation procedures to deployed devices. Alternatively, key rotation may be based on an agreed-upon schedule where devices are configured to adjust the keys used according to some time or event-driven function.

[0210] In summary, embodiments described herein include a data receiving device for an analyte monitoring system, wherein the data receiving device detects a disconnection between the data receiving device and a sensor control device of the analyte monitoring system, wherein the data receiving device sets the duration of a scan window for receiving connection data packets from the sensor control device to a current length and initiates the scan window, and, in response to determining, based on the connection data packets received during the scan window, that a connection between the data receiving device and the sensor control device has not been established, the data receiving device performs an iteration of the scan window adjustment process, which involves increasing the duration of the scan window to a new length that is longer than the current length and initiating the scan window based on the scan window duration at the new length.

[0211] Furthermore, the disclosed subject matter relates to other embodiments having any other possible combinations of the subordinate features claimed below, as well as the features disclosed above and in the accompanying drawings, in addition to the specific embodiments claimed below. Thus, specific features disclosed herein can be combined with each other in other ways within the scope of the disclosed subject matter, such that it can be recognized that the disclosed subject matter specifically relates to other embodiments having any other possible combinations. Thus, the descriptions of specific embodiments of the disclosed subject matter set forth above have been presented for purposes of illustration and description. These descriptions are not intended to be exhaustive or to limit the disclosed subject matter to the disclosed embodiments.

[0212] It will be apparent to those skilled in the art that various modifications and variations can be made in the methods and systems of the disclosed subject matter without departing from the spirit or scope of the disclosed subject matter. Thus, it is intended that the disclosed subject matter cover such modifications and variations as come within the scope of the appended claims and their equivalents.

[0213] Embodiments are further illustrated in the following numbered clauses:

[0214] Clause 1: A data receiving device for an analyte monitoring system, comprising: means for detecting a disconnection between a data receiving device and a sensor control device of an analyte monitoring system, the sensor control device including a communications module and an analyte sensor configured to be transcutaneously placed in contact with a bodily fluid of a subject wearing the sensor control device; means for setting the duration of a scan window for receiving connection data packets from the sensor control device to a current length; means for initiating a scan window based on the scan window duration at its current length; means for performing one or more iterations of a process of adjusting the scan window in response to determining that a connection between the data receiving device and the sensor control device is not established based on connection data packets received during the scan window; The means for carrying out the above steps comprises: means for increasing the duration of the scan window to a new length greater than the current length; means for initiating a scan window based on the new length of the scan window duration; A data receiving device comprising:

[0215] Clause 2: A means for establishing a connection with a sensor control device after starting a scan window based on the duration of the scan window at the current length; means for synchronizing a clock maintained by the data receiving device with a clock maintained by the sensor control device in response to establishing the connection; The data receiving device of clause 1 further comprising:

[0216] Clause 3: The data receiving device of clause 1 or 2, further comprising means for comparing the duration of the scan window at the new scan window length with a scan window duration threshold.

[0217] Clause 4: The data receiving device of clause 3, further comprising means for resetting the duration of the scan window to a length less than the scan window duration threshold in response to determining that the duration of the scan window exceeds the scan window duration threshold.

[0218] Clause 5: The data receiving device of clause 4, wherein the length less than the scan window duration threshold is equal to the duration of the scan window used after the disconnection is detected.

[0219] Clause 6: The data receiving device of any one of clauses 1 to 5, wherein the amount by which the duration of the scan window is increased is a fixed amount.

[0220] Clause 7: The data receiving device of any of clauses 1 to 6, wherein the amount by which the duration of the scan window is increased is based on currently available battery power of the data receiving device.

[0221] Clause 8: The data receiving device of any of clauses 1 to 7, wherein the amount by which the duration of the scan window is increased is based on the last known available battery power of the sensor control device.

[0222] Clause 9: The data receiving device of any one of clauses 1 to 8, wherein the means for adjusting the scan window includes means for correcting a start time of the scan window.

[0223] Clause 10: A means for establishing a connection with a sensor control device after starting a scan window based on the duration of the scan window at the current length; means for receiving analyte data from the sensor controller in response to establishing the connection; The data receiving device according to any one of clauses 1 to 9 further comprises:

[0224] Clause 11: The data receiving device of clause 10, further comprising means for outputting for display a value based on the specimen data.

[0225] Clause 12: A data receiving device of clause 10 or 11, further comprising means for using the analyte data to modify a treatment performed by the data receiving device.

[0226] Clause 13: The data receiving device of any of clauses 1 to 12, wherein the analyte sensor includes means for generating a data signal measuring the level of an analyte in a bodily fluid, the analyte including glucose, ketone bodies, lactate, oxygen, hemoglobin A1C, albumin, alcohol, alkaline phosphatase, alanine transaminase, aspartate aminotransferase, bilirubin, blood urea nitrogen, calcium, carbon dioxide, chloride, creatinine, hematocrit, lactate, magnesium, oxygen, pH, phosphorus, potassium, sodium, total protein, or uric acid.

[0227] Clause 14: A sensor control device for an analyte monitoring system, comprising: an analyte sensor for transcutaneous placement in contact with at least a portion of the subject's bodily fluid; a communication module; means for receiving, via a communications module, a request to initiate a communications session with a data receiving device of the analyte monitoring system, the request including identity information of the data receiving device; means for identifying a preferred communication parameter configuration for the communication session based on the identity information; means for initiating a communications parameter negotiation procedure with the data receiving device, including providing the data receiving device with a preferred communications parameter configuration; means for modifying one or more communication parameters for the communication session based on the negotiation procedure; A sensor control device comprising:

[0228] Clause 15: The sensor control device of clause 14, further comprising means for initiating a communication session with the data receiving device using the modified communication parameters.

[0229] Clause 16: Means for determining the level of an analyte in a subject based on an analyte sensor; means for transmitting the analyte level to a data receiving device in a communication session; 16. The sensor control device of clause 14 or 15, further comprising:

[0230] Clause 17: Means for dynamically determining further modifications of the preferred communication parameter configuration for the communication session; means for performing a second communications parameter negotiation procedure with the data receiving device, including providing a further modification of the preferred communications parameter configuration to the data receiving device; means for modifying one or more communication parameters for the communication session based on the second negotiation procedure; The sensor control device according to any one of clauses 14 to 16, further comprising:

[0231] Clause 18: The sensor control device of clause 17, wherein dynamically determining further modifications to the preferred communication parameter configuration for the communication session includes performing a communication link quality test based on the plurality of communication parameter configurations.

[0232] Clause 19: A sensor control device of clause 17 or 18, wherein dynamically determining further modifications to the preferred communication parameter configuration for the communication session includes modifying the preferred communication parameter configuration based on an available battery level of the sensor control device or the data receiving device. [Explanation of symbols]

[0233] 1300 methods 1310 Disconnection Detected 1320 Set initial scan window 1330 Start Scan Window 1335 Connection established? 1340 Increase scan window duration 1345 Maximum scan window? 1350 Sensor Control Unit and Data Exchange

Claims

1. A data receiving device for a specimen monitoring system, One or more processors, Communication module and One or more processors and one or more memories communicably coupled to the communication module, The memory comprises one or more of the above-mentioned memories, The detection of a disconnection between the data receiving device and the sensor control device of the specimen monitoring system, wherein the sensor control device includes a communication module and a specimen sensor configured to be positioned transcutaneously in contact with the bodily fluids of a subject wearing the sensor control device, The duration of the scan window for receiving connection data packets from the aforementioned sensor control device is set to the current length, Starting the scan window based on the duration of the scan window at its current length, In response to determining, based on the connection data packets received during the scan window, that a connection has not been established between the data receiving device and the sensor control device, The duration of the scan window is increased to a new length that is longer than the current length, Starting the scan window based on the duration of the scan window with the new length, Performing one or more iterations of the process of adjusting the scan window, which includes the operation, Instructions that can be executed by the one or more processors to configure the one or more processors to perform an operation including, A data receiving device characterized by the following features.

2. The instruction starts the scan window based on the duration of the scan window at the current length, To establish a connection with the aforementioned sensor control device, In response to establishing the aforementioned connection, the clock maintained by the data receiving device is synchronized with the clock maintained by the sensor control device, The data receiving device according to claim 1, further executable by the one or more processors to configure the one or more processors to perform further operations including,

3. The process of adjusting the scan window is, The operation further includes comparing the duration of the scan window at the new scan window length with a scan window duration threshold, A data receiving device according to claim 1 or 2.

4. The process of adjusting the scan window is, The operation further includes, in response to determining that the duration of the scan window exceeds the scan window duration threshold, resetting the duration of the scan window to a length less than the scan window duration threshold, The data receiving device according to claim 3.

5. The length less than the scan window duration threshold is equal to the duration of the scan window used after the disconnection was detected. The data receiving device according to claim 4.

6. The amount by which the duration of the scan window is increased is a fixed amount. The data receiving device according to claim 1.

7. The amount by which the duration of the scan window is increased is based on the currently available battery power of the data receiving device. The data receiving device according to claim 1.

8. The amount by which the duration of the scan window is increased is based on the last known available battery power of the sensor control device, The data receiving device according to claim 1.

9. The process of adjusting the scan window is, The operation further includes correcting the start time of the scan window, The data receiving device according to claim 1.

10. The instruction starts the scan window based on the duration of the scan window at the current length, To establish a connection with the aforementioned sensor control device, In response to establishing the aforementioned connection, sample data from the sample sensor is received from the sensor control device, The data receiving device according to claim 1, further executable by the one or more processors to configure the one or more processors to perform further operations including,

11. The aforementioned instruction is, The one or more processors can further perform the one or more processors to configure themselves to perform further operations, including outputting values ​​based on the sample data for display, The data receiving device according to claim 10.

12. The aforementioned instruction is, The one or more processors can be further configured to perform further operations, including modifying treatments performed by the data receiving device using the sample data. The data receiving device according to claim 10.

13. The sample sensor is configured to generate a data signal that measures the level of the sample in the body fluid, and the sample includes glucose, ketone bodies, lactate, oxygen, hemoglobin A1C, albumin, alcohol, alkaline phosphatase, alanine transaminase, aspartate aminotransferase, bilirubin, blood urea nitrogen, calcium, carbon dioxide, chloride, creatinine, hematocrit, lactate, magnesium, oxygen, pH, phosphorus, potassium, sodium, total protein, or uric acid. The data receiving device according to claim 1.

14. A sensor control device for a specimen monitoring system, One or more processors, A specimen sensor is placed transcutaneously, with at least a portion of it in contact with the subject's bodily fluids, Communication module and The one or more processors, the sample sensor, and one or more memories communicably coupled to the communication module, The memory comprises one or more of the above-mentioned memories, A request to initiate a communication session with the data receiving device of the sample monitoring system, the request including the identity information of the data receiving device, is received via the communication module. From the one or more memories, identify a preferred communication parameter configuration for the communication session based on the identity information, This includes initiating a communication parameter negotiation procedure with the data receiving device, which involves providing the data receiving device with the preferred communication parameter configuration, Based on the negotiation procedure, modify one or more communication parameters for the communication session, Instructions that can be executed by the one or more processors to configure the one or more processors to perform an operation including, A sensor control device characterized by the following:

15. The aforementioned instruction is, The one or more processors can be further configured to perform an operation which further includes initiating the communication session with the data receiving device using the modified communication parameters, The data receiving device according to claim 14.

16. The aforementioned instruction is, Determining the level of the subject's sample based on the sample sensor, In the aforementioned communication session, the level of the sample is transmitted to the data receiving device, The sensor control device according to claim 14 or 15, further executable by the one or more processors to configure the one or more processors to perform an operation that further includes the operation.

17. The aforementioned instruction is, Dynamically determining further modifications to the preferred communication parameter configuration for the aforementioned communication session, Performing a second communication parameter negotiation procedure with the data receiving device, which includes providing the data receiving device with the further modifications to the preferred communication parameter configuration, Based on the second negotiation procedure described above, modify one or more communication parameters for the communication session, The sensor control device according to claim 14, further executable by the one or more processors to configure the one or more processors to perform an operation further including the operation.

18. Dynamically determining further modifications to the preferred communication parameter configuration for the communication session includes performing communication link quality tests based on multiple communication parameter configurations. The sensor control device according to claim 17.

19. Dynamically determining further modifications to the preferred communication parameter configuration for the communication session includes modifying the preferred communication parameter configuration based on the available battery level of the sensor control device or data receiving device. The sensor control device according to claim 17.