Patent Description:
Implantable neurostimulator devices are devices that generate and deliver electrical stimuli to body nerves and tissues for the therapy of various biological disorders, such as pacemakers to treat cardiac arrhythmia, defibrillators to treat cardiac fibrillation, cochlear stimulators to treat deafness, retinal stimulators to treat blindness, muscle stimulators to produce coordinated limb movement, spinal cord stimulators to treat chronic pain, cortical and deep brain stimulators to treat motor and psychological disorders, and other neural stimulators to treat urinary incontinence, sleep apnea, shoulder subluxation, etc. The description that follows will generally focus on the use of the invention within a Deep Brain Stimulation (DBS) or Spinal Cord Stimulation (SCS) system, such as that disclosed in <CIT> and <CIT>. However, the present invention may find applicability with any implantable neurostimulator device system, including peripheral nerve stimulation systems.

A DBS or SCS system typically includes an Implantable Pulse Generator (IPG) <NUM> shown in <FIG>. The IPG <NUM> includes a biocompatible device case <NUM> that holds the circuitry and a battery <NUM> for providing power for the IPG to function. Battery <NUM> may comprise a rechargeable battery or a primary cell battery which is not rechargeable. The IPG <NUM> is coupled to tissue-stimulating electrodes <NUM> via one or more electrode leads that form an electrode array. For example, one or more percutaneous leads <NUM> can be used having electrodes <NUM> carried on a flexible body. In another example, a paddle lead <NUM> provides electrodes <NUM> positioned on one of its generally flat surfaces. Lead wires within the leads are coupled to the electrodes <NUM> and to proximal contacts <NUM> insertable into lead connectors <NUM> fixed in a header <NUM> on the IPG <NUM>, which header can comprise an epoxy for example. Once inserted, the proximal contacts <NUM> connect to header contacts <NUM> within the lead connectors <NUM>, which are in turn coupled by feedthrough pins <NUM> through a case feedthrough <NUM> to stimulation circuitry <NUM> within the case <NUM>. The number and type of leads, and the number of electrodes on such leads, can vary depending on the application. The conductive case <NUM> can also comprise an electrode.

In a SCS application, as is useful to alleviate chronic back pain for example, the electrode lead(s) are typically implanted in the spinal column proximate to the dura in a patient's spinal cord, preferably spanning left and right of the patient's spinal column. The proximal contacts <NUM> are tunneled through the patient's tissue to a distant location such as the buttocks where the IPG case <NUM> is implanted, at which point they are coupled to the lead connectors <NUM>. In a DBS application, as is useful in the treatment of tremor in Parkinson's disease for example, the IPG <NUM> is typically implanted under the patient's clavicle (collarbone). Percutaneous leads <NUM> are tunneled through and under the neck and the scalp where the electrodes <NUM> are implanted through holes drilled in the skull and positioned for example in the subthalamic nucleus (STN) and the pedunculopontine nucleus (PPN) in each brain hemisphere.

IPG <NUM> can also comprise functionally-similar devices that are not fully implantable in the patient, such as an External Trial Stimulator (ETS). An ETS has leads implantable in the patient but connected to a circuitry portion that is external to the patient. When an ETS is used, stimulation can be tried on a prospective implant patient without going so far as to implant the IPG's case <NUM>. ETS devices are explained further in <CIT>. For purpose of this disclosure, an IPG should be understood to include ETSs as well.

IPG <NUM> can include an antenna 34a allowing it to communicate bi-directionally with a number of external devices discussed subsequently. Antenna 34a as shown comprises a conductive coil within the case <NUM>, although the coil antenna 34a can also appear in the header <NUM>. When antenna 34a is configured as a coil, communication with external devices preferably occurs using near-field magnetic induction, using a communication scheme like Frequency Shift Keying (FSK) for example. See, e.g., <CIT> (describing the use of FSK in magnetic-inductive implantable medical device telemetry). IPG <NUM> may also include a Radio-Frequency (RF) antenna 34b. In <FIG>, RF antenna 34b is shown within the header <NUM>, but it may also be within the case <NUM>. RF antenna 34b may comprise a patch, slot, or wire, and may operate as a monopole or dipole. RF antenna 34b preferably communicates using far-field electromagnetic waves, and may operate in accordance with any number of known RF communication standards, such as Bluetooth, Bluetooth Low Energy (BLE), Zigbee, WiFi, MICS, and the like.

Stimulation in IPG <NUM> is typically provided by pulses, as described in the above-referenced '<NUM> Publication. Pulses can be formed by stimulation circuitry <NUM> in the IPG, again as described in the '<NUM> Publication. Stimulation circuitry <NUM> can comprise a part of, or can communicate with, the IPG's control circuitry <NUM>. The control circuitry <NUM> can comprise a microcontroller, microprocessor, Field Programmable Grid Array, Programmable Logic Device, Digital Signal Processor or like devices. In one example, control circuitry <NUM> can comprise or include an MSP430 microcontroller device, manufactured by Texas Instruments, Inc. Control circuitry <NUM> may also be based on well-known ARM microcontroller technology. Control circuitry <NUM> may include a central processing unit capable of executing instructions, with such instructions stored in volatile or non-volatile memory within the control circuitry. Control circuitry <NUM> may also include, operate in conjunction with, or be embedded within, an Application Specific Integrated Circuit (ASIC), such as described in <CIT>, <CIT>, <CIT>, or <CIT>. The control circuitry <NUM> may comprise an integrated circuit with a monocrystalline substrate, or may comprise any number of such integrated circuits. Control circuitry <NUM> may also be included as part of a System-on-Chip (SoC) or a System-on-Module (SoM) which may incorporate memory devices and other digital interfaces.

IPG <NUM> may also include a magnetic field sensor <NUM>, such as a Hall effect sensor. Magnetic field sensor <NUM> can also comprise other devices or circuits in the IPG, for example as taught in <CIT> and <CIT>. Use of the magnetic field sensor <NUM> in an IPG <NUM> is explained further below.

<FIG> shows various external devices that can wirelessly communicate with the IPG <NUM>, including a patient hand-held remote controller (RC) <NUM> and a clinician programmer (CP) <NUM>. Both of devices <NUM> and <NUM> can be used to wirelessly transmit information, such as a stimulation program, to the IPG <NUM>-that is, to program stimulation circuitry <NUM> to produce stimulation (e.g., pulses) with a desired amplitude and timing. Both devices <NUM> and <NUM> may also be used to adjust one or more stimulation parameters of a stimulation program that the IPG <NUM> is currently executing, to update software in these devices, or to place the IPG into different operational modes as discussed further below. Devices <NUM> and <NUM> may also wirelessly receive information from the IPG <NUM>, such as various status information, etc..

Clinician programmer (CP) <NUM> is described further in <CIT>, and can comprise a computing device <NUM>, such as a desktop, laptop, notebook computer, tablet, mobile smart phone, or Personal Data Assistant (PDA)-type mobile computing device, etc. In <FIG>, computing device <NUM> is shown as a laptop computer that includes typical computer user interface means such as a screen <NUM>, a mouse, a keyboard, speakers, a stylus, a printer, etc., not all of which are shown for convenience. Also shown in <FIG> are accessory devices for the CP <NUM> that are usually specific to its operation as a stimulation controller, such as a communication "wand" <NUM> coupleable to suitable ports (e.g., USB ports <NUM>) on the computing device <NUM>.

The antenna used in the CP <NUM> to communicate with the IPG <NUM> can depend on the type of antennas included in the IPG. If the patient's IPG <NUM> includes a coil antenna 34a, wand <NUM> can likewise include a coil antenna 70a to establish near-field magnetic-induction communications at small distances. In this instance, the wand <NUM> may be affixed in close proximity to the patient, such as by placing the wand in a belt or holster wearable by the patient and proximate to the patient's IPG <NUM>. If the IPG <NUM> includes an RF antenna 34b, the wand <NUM>, the computing device <NUM>, or both, can likewise include an RF antenna 70b to establish communication at larger distances.

To program stimulation programs or parameters for the IPG <NUM>, or to otherwise control the IPG <NUM>, the clinician interfaces with a clinician programmer graphical user interface (GUI) <NUM> provided on the display <NUM> of the computing device <NUM>. As one skilled in the art understands, the GUI <NUM> can be rendered by execution of clinician programmer software <NUM> stored in the computing device <NUM>, which software may be stored in the device's non-volatile memory <NUM>. Execution of the clinician programmer software <NUM> in the computing device <NUM> can be facilitated by control circuitry <NUM> such as one or more microprocessors, microcomputers, FPGAs, DSPs, other digital logic structures, etc., which are capable of executing programs in a computing device, and which may comprise their own memories. For example, control circuitry <NUM> can comprise an i5 processor manufactured by Intel Corp, as described at https://www. com/ content/ www/ us/ en/ products/ processors/ core/ i5-processors. Such control circuitry <NUM>, in addition to executing the clinician programmer software <NUM> and rendering the GUI <NUM>, can also enable communications via antennas 70a or 70b to communicate stimulation parameters chosen through the GUI <NUM> to the patient's IPG <NUM>.

Remote controller (RC) <NUM> can be as described in <CIT> for example, and may comprise a controller dedicated to work with the IPG <NUM>. RC <NUM> may also comprise a general purpose mobile electronics device such as a mobile phone which has been programmed with a Medical Device Application (MDA) allowing it to work as a wireless controller for the IPG <NUM>, as described in <CIT>. Like the CP <NUM>, RC <NUM> includes a graphical user interface including a display <NUM> and means for entering commands or selections, such as buttons <NUM> or selectable graphical elements rendered on the display. The RC <NUM>'s graphical user interface also enables a patient to adjust stimulation parameters, although it may have limited functionality when compared to the more-powerful CP <NUM> described above. The RC <NUM> may also include a lock screen button <NUM> to unlock the display and otherwise power up the RC after it has gone into a power-down mode, and a programming button <NUM> as explained further below.

The RC <NUM> can have one or more antennas capable of communicating with the IPG <NUM>. For example, the RC <NUM> can have a near-field magnetic-induction coil antenna 54a capable of wirelessly communicating with the coil antenna 34a in the IPG <NUM>. The RC <NUM> can also have a far-field RF antenna 54b capable of wirelessly communicating with the RF antenna 34b in the IPG <NUM>. The RC <NUM> includes control circuitry <NUM> which may be similar to the control circuitry in the CP <NUM>, and which includes memory for storing software and the like. The RC <NUM> typically has a battery (not shown) to provide operating power, and such battery is usually rechargeable (similar to a cell phone).

The IPG <NUM>, RC <NUM>, and CP <NUM>, as well as communicating with each other, can communicate with a network <NUM>. Network <NUM> can comprise a WiFi gateway and the Internet for example, and communication between the devices can occur using the network <NUM> as an intermediary. A server <NUM> can be connected to the network, which can for example be used to send stimulation programs or other useful information (e.g., software updates) to the various devices in the system.

<FIG> further shows a permanent bar magnet <NUM> in the communication system for the IPG <NUM>. Use and function of the bar magnet <NUM> is described further below. <CIT> and <CIT> disclose implantable medical devices.

An implantable medical device (IMD) is disclosed that is configured to communicate with an external device. The IMD may comprise: control circuitry programmed with an advertising algorithm, wherein the advertising algorithm is configured to: establish a first communication session with the external device, wherein the first communications session enables the exchange of first data between the external device and the IMD; terminate the first communication session; and upon terminating the first communication session, cause advertisement data to be repeatedly transmitted to the external device, wherein the advertisement data is configured to allow the external device to establish a second communication session with the IMD; increase a time interval between the transmitted advertisement data packets over time.

In one example, the control circuitry is programmed with an inactivity duration, wherein the advertising algorithm is configured to terminate the first communication session after the inactivity duration is exceeded. In one example, the advertising algorithm is configured to determine a first time when the first data is no longer being exchanged during the first communication session, wherein the advertising algorithm is configured to terminate the first communication session when a duration after the first time exceeds the inactivity duration. In one example, the advertising algorithm is configured to terminate the first communication session by transmitting a disconnection instruction to the external device. In one example, the advertising algorithm is configured to establish the first communication session by receiving a connection request from the external device. In one example, the advertising algorithm is further configured to establish the first communication session by transmitting an acknowledgment to the external device in response to the connection request. In one example, the advertising algorithm is configured, upon terminating the first communication session, to cause the advertisement data to be repeatedly transmitted to the external device at a first time interval for a first duration, and thereafter to cause the advertisement data to be repeatedly transmitted to the external device at a second time interval, wherein the first time interval is shorter than the second time interval. In one example, the control circuitry is configured to store programmable values for the first duration, the first time interval, and the second time interval. In one example, the advertising data comprises an identification code for the IMD. In one example, the advertising data is transmitted using a Bluetooth or Bluetooth Low Energy communication standard. In one example, the advertising algorithm is further configured to establish the second communication session with the external device, wherein the second communications session enables the exchange of second data between the external device and the IMD. In one example, the control circuitry stores pairing information for the external device indicating that the IMD and external device are paired, wherein the advertising algorithm is configured to establish the first communication session with the paired external device.

A method is disclosed for facilitating communications between an implantable medical device (IMD) and an external device. The method may comprise: establishing a first communication session between the external device and the IMD, wherein the first communications session enables the exchange of first data between the external device and the IMD; terminating the first communication session; and upon terminating the first communication session, repeatedly transmitting from the IMD advertisement data to the external device, wherein the advertisement data is configured to allow the external device to establish a second communication session with the IMD, wherein a time interval between the transmitted advertisement data packets increases over time.

In one example, the first communication session is terminated after an inactivity duration stored in the IMD is exceeded. In one example, the method further comprises determining a first time when the first data is no longer being exchanged during the first communication session, wherein the first communication session is terminated a duration after the first time exceeds the inactivity duration. In one example, the first communication session is terminated by transmitting a disconnection instruction from the IMD to the external device. In one example, the first communication session is established by receiving at the IMD a connection request from the external device. In one example, the first communication session is established by transmitting an acknowledgment from the IMD to the external device in response to the connection request. In one example, upon terminating the first communication session, the advertisement data is repeatedly transmitted to the external device at a first time interval for a first duration, and thereafter the advertisement data is repeatedly transmitted to the external device at a second time interval, wherein the first time interval is shorter than the second time interval. In one example, the method further comprises programming into the IMD values for the first duration, the first time interval, and the second time interval. In one example, the advertising data comprises an identification code for the IMD. In one example, the advertising data is transmitted using a Bluetooth or Bluetooth Low Energy communication standard. In one example, the method further comprises establishing the second communication session between the external device and the IMD, wherein the second communications session enables the exchange of second data between the external device and the IMD. In one example, the method further comprises pairing the external device with the IMD, wherein the first communication session is established between the paired external device and the IMD.

As noted earlier, communications between an IPG <NUM> and an external device such as the remote controller (RC) <NUM> or clinician programmer (CP) <NUM> can occur in accordance with a communication scheme such as Bluetooth or Bluetooth Low Energy (BLE). BLE is favored as a standard for such communications as it includes mechanisms that reduce power consumption in the devices. This is especially beneficial as concerns the IPG <NUM>. As noted earlier, the IPG <NUM> includes a battery <NUM> to provide its power, and it is preferred that communications not unduly drain this battery. If communication schemes are used that are too power intensive, the IPG <NUM> will need to be replaced early if the battery <NUM> is a primary cell, or recharged too frequently if the battery is rechargeable.

When a communication standard such as BLE is used between the IPG <NUM> and an external device, the devices will operate in either a central role or a peripheral role, with the BLE chips in the devices being programmed to operate in these roles. Typically, the IPG <NUM> acts in the peripheral role, and so is able advertise its presence (provide advertising data packets) to allow an external device to which it is paired to connect with the IPG <NUM>. The external device, acting in the central role, is able to scan for the IPG <NUM> and to receive its advertising data, which then allows the external device to connect to the IPG <NUM>. After a central role device and peripheral role device connect, a communication session is started, with these devices respectively operating as a server (master) and client (slave) to transmit data between them as dictated by the BLE standard.

A goal of BLE communications, as already noted, is to reduce power consumption, and in this regard advertising data is broadcast only periodically from the IPG <NUM>. This means that the IPG <NUM> need only enable and power its telemetry circuitry (e.g., antenna 34b and its related modulation/demodulation circuitry) for limited times. The constant time interval at which advertising data packets is broadcast is programmable, and typically is programmed into the BLE chip that governs the IPG's communications. This advertising interval can range from <NUM> to as long as <NUM> seconds. In reality, advertising data is transmitted on up to three dedicated channels (frequencies) to reduce interference. Still further, to avoid consecutive collisions, a random delay of up to <NUM> can be added to each advertising data packet. That being said, the advertising interval is still said to be constant for all intents and purposes.

The constant advertising interval can thus be adjusted (increased) to reduce power consumption in the IPG <NUM>. However, in the inventors' view, this can come at a disadvantage. The goal of the IPG <NUM> in advertising its presence is to enable a paired external device to connect it so that a communication session can be established between them, during which data can be exchanged. For example, during such a communication session, a user (patient or clinician) can use their RC <NUM> or CP <NUM> to transmit new stimulation parameters for the IPG <NUM> to execute. Eventually, the established communication session will end. As explained further below, this can occur automatically when the IPG <NUM> and the external device stop transmitting data. Specifically, the IPG can end the communication session after data transmission between the IPG <NUM> and external device have ceased for an inactivity duration. Because maintaining the communication session takes power in the IPG <NUM>, this inactivity period is preferably kept to a minimum (e.g., a few minutes) so as not to waste power in the IPG <NUM>. Once the communication session has ended, the IPG <NUM> will again begin transmitting its advertisement data at its constant advertising interval. That way, the external device can again connect with the IPG if need be, and a second communication session can be established.

But this can be frustrating from the perspective of the user of the external device. Suppose for example that a clinician is using an external device such as CP <NUM> to try and find optional stimulation parameters for a patient. This may occur during a patient fitting session, which may take tens of minutes, or even hours. At a first point in time, the clinician may use the CP <NUM> to transmit stimulation parameters to the patient's IPG <NUM> during a first communication session. It may then be a while (several minutes) before the clinician uses the CP <NUM> again to transmit new stimulation parameters, at which time the first communication session may have ended and the IPG <NUM> and external device are disconnected. The CP <NUM> can connect again to the IPG <NUM>, but it will have to wait until it receives an advertising data packet to do so. If the constant advertising interval is set to a long value (to save power in the IPG <NUM>), it may be slow to establish this connection. This is particularly true if an advertising data packet is not reliably received at the external device and thus the external device needs to wait for receipt of a next advertising packet. As a result, the clinician may not be able to transmit the new stimulation parameters quickly to the IPG <NUM>. Particularly if the fitting session with the patient is long, with the external device and IPG <NUM> needing to connect and disconnect several times, delay in reestablishing communication sessions with the IPG can negatively impact the timeliness of the programming session. This problem is exacerbated if the inactivity duration is set to a short value in the IPG <NUM> (again, to save power), as this will cause the IPG to disconnect from communication sessions more quickly.

To address this concern, the inventors disclose an advertising algorithm, which can operate in the IPG <NUM> to adjust the interval at which the IPG will transmit advertising data packets. When a communication session between the IPG and an external device is terminated, the advertising algorithm will issue advertising data packets at a higher rate for a set duration. This will allow the external device to connect more quickly with the IPG. After the set duration, when it may be assumed that the external device is less likely to connect with the IPG, the algorithm reduces the rate at which advertising data packets are issued, which saves power in the IPG.

<FIG> shows circuitry that is implicated by the disclosed technique in the IPG <NUM> and an external device <NUM>. External device <NUM> can represent either the remote controller (RC) <NUM> of the clinician programmer (CP) <NUM> described earlier, or another external device capable of communicating with the IPG <NUM>. In this example, it is assumed that communications between the IPG <NUM> and the external device <NUM> are RF in nature, and preferably occur using the BLE communication standard. As such, the IPG <NUM> and external device <NUM> have RF antennas 34b and <NUM>, with RF antenna <NUM> comprising antenna 54b in the RC <NUM> or antenna 70b in the CP <NUM>. Communications could also occur using magnetic induction (e.g., FSK), in which case the antennas would comprise coil antennas, as described previously.

The IPG <NUM>'s control circuitry <NUM> is programmed with mode logic <NUM> which can set the IPG <NUM> into different modes, and can issue control signals consistent with those modes. For example, the IPG <NUM> can operate in a normal mode, which comprises the basic mode in which the IPG is active and providing stimulation to the patient, and where telemetry is enabled with a paired external device. Mode logic <NUM> can also cause IPG <NUM> to operate in a pairing mode to allow the IPG to be paired for communications with the external devices <NUM>. Pairing can occur using a bar magnet <NUM> (<FIG>). Briefly, the magnetic field sensor <NUM> in the IPG <NUM> can be held proximate to the IPG's magnetic field sensor <NUM>, which can inform the mode logic <NUM> in IPG <NUM> to enter the pairing mode. The details of how the IPG <NUM> and external device <NUM> can be paired, and the information exchanged when doing so, is unnecessary to elaborate upon here. Use of the bar magnet <NUM> can also be used to reset the IPG <NUM>, which causes stimulation to cease.

Mode logic <NUM> can also cause the IPG <NUM> to operate in a peripheral role, which as noted above enables the IPG <NUM> advertise its presence (provide advertising data packets) to external devices to which it is paired. Mode logic <NUM> can further cause the IPG <NUM> to enter into a communication session with an external device, and to enter either a slow or fast advertising mode, as explained further below. Control of the peripheral role, communication sessions, and operation in the slow or fast advertising modes can occur through use of an advertisement algorithm <NUM> explained further below. Mode logic <NUM> can also cause the IPG to operate in other modes not of importance here.

As just noted, the IPG <NUM> can include an advertisement algorithm <NUM>, which may be programmed into the IPG <NUM>'s control circuitry <NUM>, and more specifically may comprise part of the IPG's mode logic <NUM>. The advertising algorithm <NUM> generally speaking dictates how the IPG <NUM> will advertise its presence, and under what circumstances, as explained further below. Aspects of the advertising algorithm <NUM> are preferably programmable, and the algorithm <NUM> may include or communicate with a number of programmable memories that hold parameters of interest.

For example, memory <NUM> can store a value for a first advertising interval (Adv Int <NUM>) which dictates a first set time interval at which the IPG <NUM> will issue advertising data packets. In the example that follows, this first advertising interval is a longer interval that operates during the slow advertising mode. In one example, the first advertising interval may be approximately <NUM> seconds. Memory <NUM> can store a value for a second advertising interval (Adv Int <NUM>) which dictates a second set time interval at which the IPG <NUM> will issue advertising data packets. In the example that follows, this second advertising interval is a shorter interval that operates during the fast advertising mode. In one example, the second advertising interval may be on the order of tenths of seconds, such as <NUM> seconds.

Memory <NUM> sets a value for an inactivity duration. The inactivity duration comprises a time period of inactivity during a communication session. When this time period is exceeded, the advertisement algorithm <NUM> causes the IPG <NUM> to enter the fast advertising mode, as explained further below. In one example, the inactivity duration may be on the order of one minute or so. Memory <NUM> sets a value for the duration of the fast advertising mode, and after the expiration of this duration the advertising algorithm <NUM> causes the IPG <NUM> to enter the slow advertising mode. In one example, the inactivity duration may be on the order of one minute or so. The fast advertising mode duration may be on the order of a few minutes, such as <NUM> minutes. A timer <NUM> can be used to control and monitoring the various timings that are used in the advertising algorithm <NUM>. The values in memories <NUM>-<NUM> can be programmed or adjusted using the GUI of the external device <NUM>, although the interface for doing so isn't shown for simplicity.

The advertising algorithm <NUM> preferably works in conjunction with a communications chip, such as BLE chip <NUM>. BLE chip <NUM> as per its normal function can control many of the communication aspects in the IPG <NUM>, and is preferably programmable by the advertising algorithm <NUM>. For example, when the advertising algorithm <NUM> decides to enter the slow or fast advertising modes, the algorithm <NUM> can transmit the relevant advertising intervals (Adv Int <NUM> of Adv Int <NUM>) to the BLE chip <NUM> for implementation. In this regard, the BLE chip <NUM> can include memories to hold relevant values, and may include memories duplicative of the memories <NUM>-<NUM>, although this detail isn't shown. Alternatively, memories <NUM>-<NUM> can appear exclusively within the BLE chip <NUM>. Because the BLE chip <NUM> can be used to control the IPG's various modes, it can be considered as part of the mode logic <NUM>.

As also shown in <FIG>, the external device <NUM> also includes control circuitry <NUM>, which may comprise control circuitries <NUM> or <NUM> in the RC <NUM> or CP <NUM>. Control circuitry <NUM> may also be programmed with mode logic <NUM> to cause the external device <NUM> to operate in a number of different modes. For example, the mode logic <NUM> can control operation in the central role, thus allowing communications to be established with the IPG <NUM> when it operates in the peripheral role. In other examples, the external device can operate in a peripheral role at certain times (e.g., when it needs to communicate with another external device). Mode logic <NUM> can also cause the external device <NUM> to operate in a pairing mode to allow it to be paired to the IPG <NUM>, although as noted above such details are not relevant here. Lastly, the mode logic <NUM> can cause the external device to issue listening windows as is necessary for the detection of advertising data packets that may be provided by the IPG <NUM>. As was the case in the IPG <NUM>, the mode logic <NUM> can control or include a BLE chip <NUM>.

The control circuitries <NUM> and <NUM> in the IPG <NUM> and external device <NUM> can further include memories that are relevant to establishing communications with each other. Memories <NUM> and <NUM> store the devices' ID codes (IPG1, Ext1), and possibly other credentials or certificates that allow the device to communicate with other devices in the system. These ID codes can include or comprise serial numbers for the respective devices. Memories <NUM> and <NUM> store the ID codes (and other credentials and certificates) for devices which with they have previously been paired for communications. For example, it is assumed in <FIG> that the external device <NUM> has paired with the IPG <NUM> and thus stores the ID code for this device (IPG1) in memory <NUM>. Consistent with this, IPG <NUM> stores the ID code for the external device (Ext1) in its <NUM>. Memories <NUM> and <NUM> can store the ID codes for several devices.

<FIG> and <FIG> illustrate operation of an example of the advertising algorithm <NUM>, and of the data that is shared between the IPG <NUM> and the external device <NUM> when this algorithm in operating. <FIG> describes the advertising algorithm <NUM> in a flow chart form, with steps performed in the IPG <NUM> in solid boxes, and other steps (e.g., performed by the external device) in dotted lined boxes.

Operation is explained chronologically starting with <FIG>, and between t0 and t1 it is assumed that the IPG <NUM> and external device <NUM> are paired (<FIG>, <NUM>). This step isn't necessarily part of the advertising algorithm <NUM>, but is shown for completeness. As noted above, the IPG <NUM> and external device <NUM> can be paired in different manners (such as through use of an external bar magnet <NUM>). Pairing will cause each of the devices to store information about the other device (its ID code, etc.), in memories <NUM> and <NUM> (<FIG>), which facilitates their ability to form a communication session, as explained below.

At time t1, after the devices are paired, the IPG <NUM> preferably enters a slow advertisement mode, and begins transmitting advertising data packets <NUM> in accordance with the slower advertising interval (Adv Int <NUM>; e.g., <NUM>) stored in memory <NUM> (<FIG>) (<FIG>, <NUM>). The slow advertisement mode can be understood as the default advertisement mode that the advertising algorithm <NUM> will use when the devices have not established a communication session, or when it has been some time since the last communication session, as explained further below.

At time t2, it is assumed that the external device <NUM> has prepared "payload data" for the IPG <NUM> (<NUM>, <FIG>). This payload data can comprise different types of information, and may be sent by the external device <NUM> automatically or under control of the user. For example, the payload data can comprise new or adjusted stimulation parameters for the IPG <NUM> to execute. These stimulation parameters may have been entered into the external device <NUM>'s GUI by the user, or may be determined automatically by the external device <NUM>. The payload data could also comprise information that doesn't involve the particulars of stimulation therapy. For example, the payroll data could comprise software updates for the IPG <NUM>, instructions to place the IPG into a particular mode, instructions to have the IPG <NUM> report certain data it might have stored, etc..

In any event, once such payload data is prepared for transmission to the IPG <NUM>, the external device <NUM> will issue one or more listening windows <NUM> (<NUM>, <FIG>). The listening window <NUM> may issue automatically once the payload data is prepared. Alternatively, because the listening windows may be scheduled at the external device <NUM>, the listening window <NUM> may comprise a next-scheduled listening window. During the listening window <NUM>, the external device <NUM> will power its telemetry antenna <NUM> and any related telemetry circuitry, and await the receipt of an advertising data packet <NUM> being transmitted by the IPG <NUM>. Because the IPG is currently transmitting in the slow advertising mode, the listening window <NUM> is preferably maintained for a duration that at least equals the first advertising interval (t1). If this interval is set to <NUM> seconds for example, the listening window <NUM> may need to be issued for at least this long to ensure that an advertising data packet <NUM> will be received. If there is interference or other factors at play that would affect the reliability of receipt of the advertising data packets <NUM>, the listening window <NUM> may issue for longer until a packet <NUM> is reliably received. Although not shown, listening windows <NUM> may also issue with some periodicity (e.g., on a schedule as noted above) to save power in the external device <NUM>. If scheduled, listening windows <NUM> may issue at a higher frequency when payload data for the IPG is ready at the external device <NUM>.

Upon receipt of an advertising data packet <NUM>, which includes the IPG <NUM>'s ID code (IPG1), the external device <NUM> can realize that the received packet is from a device with which it is paired (see memory <NUM>, <FIG>). In response, the external device <NUM> can stop the listening window <NUM>, and transmit a connection request <NUM> to the IPG <NUM> at time t3 (<NUM>, <FIG>). Upon receipt of the connection request <NUM>, the IPG <NUM> can issue a connection request acknowledgment (ACK) <NUM> very soon thereafter. This starts a communication session (Comm Session <NUM>) between the IPG <NUM> and the external device <NUM> shortly after time t3 (<NUM>, <FIG>).

During the communication session, the external device <NUM> and IPG <NUM> can exchange data <NUM> (<NUM>, <FIG>). Data <NUM> would likely include the payload data referred to earlier. The IPG <NUM> may also have data <NUM> to transmit to the external device during the communication session, either in response to the payload data, or independent of such data. For example, during a communication session, the IPG <NUM> may upload certain data (e.g., status data) that it has saved to the external device <NUM>. The exchange of data <NUM> is governed by connection packets which can issue relatively quickly, on the order of tens of milliseconds. The telemetry antennas and communication circuitry in both the IPG <NUM> and the external device <NUM> can be constantly powered during the communication session in preparation to send or receive data packets <NUM>. The exchange of data <NUM> between the external device <NUM> and the IPG <NUM> can comprise data entirely transmitted from the external device <NUM> to the IPG <NUM>, data transmitted entirely from the IPG <NUM> to the external device <NUM>, or data transmitted in both of these directions.

Timer <NUM> monitors data <NUM> exchange between the external device <NUM> and the IPG <NUM>, and in particular monitors a duration after data exchange has ceased. This can occur in different manners, but in a simple example the timer <NUM> counts, but is reset when data <NUM> is transmitted or received during the communication session (<NUM>, <FIG>). At time t4, it is assumed that no further data <NUM> is being exchanged between the external device <NUM> and the IPG <NUM>, and thus the timer <NUM> begins counting without being reset. The advertising algorithm <NUM> will monitor the count of the timer <NUM>, and when this count exceeds the programmed inactivity duration <NUM> (e.g., one minute) (<NUM>, <FIG>), the algorithm <NUM> will end the communication session by transmitting a disconnection instruction <NUM>, as shown at time t5 (<NUM>, <FIG>). As noted earlier, it can be beneficial to program the inactivity duration <NUM> to a lower value to reduce power consumption in the IPG <NUM>, and so that communication sessions are not needlessly extended when no data <NUM> is being transmitted.

Once the communication session has ended, the IPG <NUM> will once again start transmitting advertising data packets <NUM>, although under control of the advertisement algorithm <NUM> it will so do at a faster rate in accordance with its fast advertisement mode. Specifically, the IPG <NUM> will begin transmitting advertising data packets <NUM> at the faster advertising interval (Adv Int <NUM>, e.g., <NUM>) stored in memory <NUM> (<FIG>) (<FIG>, <NUM>). Preferably, advertising data packets <NUM> are transmitted during the fast advertisement mode for a limited fast advertising mode duration stored in memory <NUM> (e.g., <NUM> minutes) before switching to the slow advertisement mode, as explained further below. Timer <NUM> can be reset at the beginning of the fast advertising mode (<FIG>, <NUM>), with its count used to determine when the fast advertisement mode duration <NUM> has been exceeded (<FIG>, <NUM>).

Although issuing fast advertising data packets will increase power consumption in the IPG <NUM>, it can also assist the external device <NUM> to re-establish a connection to the IPG <NUM> faster. This can be particularly beneficial when the external device <NUM> is used during a patient fitting session, but where the clinician only occasionally uses the external device <NUM> to transmit new payload data to the IPG <NUM>. In this context, it is possible or likely that the clinician will want to send data to the IPG for a short time after a previous communication session has ended (<FIG>, <NUM>), and thus will want to reestablish communications quickly so that new payload data can be transmitted to the IPG <NUM> without undue delay. This is shown in <FIG> at time t6. Here, the external device <NUM> has determined that it has new payload data for the IPG <NUM> (<FIG>, <NUM>), and prepares this payload data and issues a listening window <NUM> (<FIG>, <NUM>). It is assumed in <FIG> that this listening window <NUM> issues while the IPG <NUM> is still in the fast advertising mode, because the fast advertising mode duration <NUM> has not yet been exceeded (<FIG>, <NUM>). Because the advertising data packets <NUM> issue more quickly in the fast advertisement mode, a packet will be received more quickly during the listening window <NUM>. This allows the external device <NUM> to more quickly issue a connection request <NUM> (at time t7) (<FIG>, <NUM>), and the IPG <NUM> to issue an acknowledgement <NUM>, which then starts a second communication session (Comm Session <NUM>) (<FIG>, <NUM>). In short, the fast advertisement mode facilitates a quicker reconnection between the external device <NUM> and the IPG <NUM>.

To save power in the IPG <NUM>, it is preferred that the fast advertisement mode duration <NUM> is limited. Once this fast advertisement mode duration <NUM> has expired (<FIG>, <NUM>), it is preferred that the IPG <NUM> enter the slow advertisement mode (<FIG>, <NUM>). This example is shown in <FIG>. At time t8 (during Comm Session <NUM>), data exchange between the external device <NUM> and IPG <NUM> has stopped, and at time t9 the inactivity duration <NUM> has been exceeded (<FIG>, <NUM>). As described earlier, this causes the IPG to send a disconnection instruction <NUM>, which ends the communication session (Comm Session <NUM>) (<FIG>, <NUM>). As just discussed, ending the communication session causes the IPG <NUM> to enter the fast advertisement mode (<FIG>, <NUM>) for duration <NUM> (<FIG>, <NUM>). In <FIG>, it is assumed that the fast advertising mode duration <NUM> has expired at time t10 before the external device <NUM> and IPG <NUM> can reconnect. Presumably, this is because the external device <NUM> does not presently have payload data prepared for the IPG.

To save power, the advertising algorithm <NUM> then enters the slow advertising mode at time t10 (<FIG>, <NUM>), which as noted earlier sends advertising data packets <NUM> less frequently (e.g., Adv Int <NUM> = <NUM>). Thus, the external device <NUM> can still connect to the IPG <NUM>, although this may occur more slowly. This is shown at time t11, when the external device <NUM> has once again prepared payload data for the IPG <NUM>, and has issued a listening window <NUM> (<FIG>, <NUM>). Eventually an advertising data packet <NUM> is received <NUM> (although perhaps more slowly), and a connection request is sent at time t12 (<FIG>, <NUM>). The IPG <NUM> responds (ACK <NUM>), and a new communication session (Comm Session <NUM>) is started (<FIG>, <NUM>). In short, even though the fast advertisement mode is over, the external device can still connect with the IPG <NUM> in the slow advertising mode, which operates as the default advertising mode used to conserve power in the IPG <NUM>.

Note that both the fast duration <NUM> and the inactivity period <NUM> can be adjusted to appropriate values based on user experience with the goal of reestablishing faster communications-i.e., with the goal of cause the external device <NUM> to connect with the IPG <NUM> during the fast advertising mode. For example, if the clinician realizes that he uses the external device <NUM> about every seven minutes or so, the inactivity period <NUM> and the fast advertisement mode duration <NUM> can be adjusted to improve the likelihood that the clinician will be able to re-establish communications quickly during the fast advertisement mode. For example, an inactivity duration of two minutes could be set in memory <NUM>, while a fast advertisement mode duration of six minutes could be set in memory <NUM>. Alternatively, an inactivity duration of five minutes could be set in memory <NUM>, while a fast advertisement mode duration of three minutes could be set in memory <NUM>. In either example, the sum of these durations (eight) is larger that the estimated seven-minute interval at which the clinician tends to use the external device <NUM>, thus making it more likely that the external device <NUM> will quickly reconnect with the IPG <NUM> in the fast advertising mode.

In the example of the advertising algorithm <NUM> disclosed thus far, it has been assumed that advertising data packets are sent in slow and fast modes. However, this is not strictly necessary. For example, upon disconnecting from a communication session, the advertising algorithm <NUM> in the IPG <NUM> could send advertising data packets progressively more slowly. For example, the advertising data packets could be sent at a fast rate (e.g., every <NUM> second) for a first duration, then at a medium rate (e.g., every <NUM> sec) for a second duration, and then at a default slow rate (e.g., every <NUM> seconds). Still alternatively, the advertising interval could be gradually increase after disconnecting from a communication session.

It has also been assumed and illustrated thus far that the IPG <NUM> uses its advertising algorithm <NUM> to communicate with a single external device <NUM>. For example, in <FIG>, the IPG <NUM> establishes a first communication session with external device <NUM> at time t3; eventually disconnects with the external device <NUM> at time t5; sends advertising data pursuant to the algorithm; and then later reconnects with this same external device <NUM> at time t7 for a second communication session. However, it is not strictly required that the IPG <NUM>, through use of the advertising algorithm <NUM>, will connect with only a single external device. For example, the IPG <NUM> can have a first communication session with a first external device <NUM> (t3); eventually disconnects with that external device <NUM> (t5); sends advertising data pursuant to the algorithm; and then later connects with a second external device <NUM>' (t7) to which the IPG <NUM> has previously been paired.

Claim 1:
An implantable medical device, IMD, configured to communicate with an external device, comprising:
control circuitry programmed with an advertising algorithm, wherein the advertising algorithm is configured to:
establish a first communication session with the external device, wherein the first communications session enables the exchange of first data between the external device and the IMD;
terminate the first communication session; and
after terminating the first communication session, cause advertisement data to be repeatedly transmitted to the external device at a first time interval for a first duration, and thereafter to cause the advertisement data to be repeatedly transmitted to the external device at a second time interval, wherein the first time interval is shorter than the second time interval, wherein the advertisement data is configured to allow the external device to establish a second communication session with the IMD.