IP Library Granted Patent US 8,775,877
Granted Patent B2
US 8,775,877 · App. 13/338,387 · Granted Jul 8, 2014

Dynamic link library integrity checking for handheld medical devices

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,775,877
App. No.
13/338,387
Granted
Jul 8, 2014
Kind
B2
Abstract

A method of checking the integrity of a dynamic link library (DLL) file called by an application being executed on a handheld medical device is described. The method includes loading a DLL from a read only memory (ROM) to a random access memory (RAM) beginning at a fixed location in the RAM. The DLL includes a first routine for performing a safety critical function of the handheld medical device and a second routine for performing a cyclical redundancy check (CRC) once the DLL is loaded to the RAM. The method includes selectively executing the first routine from the RAM. The method includes selectively executing the second routine from the RAM including: calculating a check value based on the DLL; comparing the check value with a predetermined check value; and indicating that an error is present when the check value is different than the predetermined check value.

Claims (73)

1. A method of checking the integrity of a dynamic link library (DLL) file called by an application being executed on a handheld medical device, the method comprising:

loading a DLL from nonvolatile memory to volatile memory beginning at a fixed location in the volatile memory,

the DLL including a first routine for performing a safety critical function of the handheld medical device and including a second routine for performing a cyclical redundancy check (CRC) for the DLL once the DLL is loaded to the volatile memory;

selectively executing the first routine from the volatile memory to perform the safety critical function;

selectively executing the second routine from the volatile memory to perform the CRC including:

calculating a check value based on the DLL loaded to the volatile memory;

comparing the check value with a predetermined check value set for the CRC; and

generating an output indicating that an error is present when the check value is different than the predetermined check value.

2. The method of claim 1 wherein the CRC is a 32-bit CRC.

3. The method of claim 1 further comprising generating the output indicating that the error is not present when the check value is equal to the predetermined check value.

4. The method of claim 3 further comprising selectively taking a remedial action based on whether the output indicates that the error is present.

5. The method of claim 4 further comprising, when the output indicates that the error is present, displaying an indicator of the error on a display of the handheld medical device.

6. The method of claim 1 wherein the safety critical function includes calculating and displaying a suggested amount for a bolus administration of insulin.

7. The method of claim 1 further comprising determining the fixed location in the volatile memory at which a beginning of the DLL is to be loaded.

8. The method of claim 1 further comprising excluding, from the performance of the CRC, one or more portions of the DLL where changeable data is stored,

wherein the changeable data is selectively changed during execution of one or more routines included within the DLL.

9. The method of claim 1 further comprising:

determining a first beginning point and a first ending point of the DLL;

determining a second beginning point and a second ending point of the DLL; and

performing the CRC based on:

(i) a first portion of the DLL between the first beginning and ending points; and

(ii) a second portion of the DLL between the second beginning and ending points,

wherein the first beginning and ending points and the second beginning and ending points are different from each other.

10. The method of claim 1 further comprising:

determining a first location of a first function of the DLL;

determining a second location of CRC data of the DLL function; and

performing the CRC based on a portion of the DLL between the first and second locations.

11. The method of claim 1 wherein the handheld medical device is one of a handheld diabetes management device, a continuous blood glucose (bG) monitor, and an insulin pump.

12. A method of checking the integrity of a shared library file that is called by an application being executed on a handheld medical device and that is callable by one or more other applications that are executable on the handheld medical device, the method comprising:

when called for during execution of the application, loading the shared library file from nonvolatile memory to a volatile memory beginning at a fixed location in the volatile memory,

the shared library file is an executable file that includes a first routine for performing a function of the handheld medical device and including a second routine for performing a cyclical redundancy check (CRC) for the shared library file once the shared library file is loaded to the volatile memory;

when called for during execution of the application, selectively executing the first routine of the shared library file from the volatile memory to perform the function;

when called for during execution of the application, selectively executing the second routine of the shared library file from the volatile memory including:

selectively calculating a check value based on the shared library file;

comparing the check value with a predetermined value set for the CRC; and

generating an output indicating that an error is present when the check value is different than the predetermined value.

13. The method of claim 12 wherein the CRC is a 32-bit cyclical redundancy check (CRC).

14. The method of claim 12 further comprising generating the output indicating that the error is not present when the check value is equal to the predetermined value.

15. The method of claim 14 further comprising selectively taking a remedial action based on whether the error is present.

16. The method of claim 15 further comprising, when the output indicates that the error is present, displaying an indicator of the error on a display of the handheld medical device.

17. The method of claim 12 wherein the function includes displaying a suggested amount for a bolus administration of insulin.

18. The method of claim 12 further comprising excluding, from the performance of the CRC, one or more portions of the shared library file where changeable data is stored,

wherein the changeable data is selectively changed during execution of one or more routines included within the shared library file.

19. The method of claim 12 further comprising:

determining a first beginning point and a first ending point of the shared library file;

determining a second beginning point and a second ending point of the shared library file; and

performing the CRC based on:

(i) a first portion of the shared library file between the first beginning and ending points; and

(ii) a second portion of the shared library file between the second beginning and ending points,

wherein the first beginning and ending points and the second beginning and ending points are different from each other.

20. The method of claim 12 further comprising:

determining a first location of a first function of the shared library file;

determining a second location of CRC data of the shared library file; and

performing the CRC based on a portion of the shared library file between the first and second locations.

21. The method of claim 12 wherein the handheld medical device is one of a handheld diabetes management device, a continuous blood glucose (bG) monitor, and an insulin pump.

22. A method of preparing a dynamic link library (DLL) file for execution by an application on a handheld medical device, the application loading the DLL from nonvolatile memory of the handheld medical device to volatile memory of the handheld device beginning at a fixed location of the volatile memory before execution, the method comprising:

compiling, at a remote computer, the DLL based on code generated based on user input,

the DLL including a first routine for performing a safety critical function of the handheld medical device and including a second routine for a performing a cyclical redundancy check (CRC) on identified portions of the DLL;

calculating, at the remote computer, a check value based on the identified portions of the DLL; and

selectively setting, at the remote computer, a predetermined value in the DLL to the check value,

wherein the performance of the CRC using the handheld medical device includes calculating a second check value based on the identified portions of the DLL once the DLL is loaded to the volatile memory and comparing the second check value with the predetermined value.

23. The method of claim 22 further comprising:

generating, at the remote computer, an output indicative of the check value for display to a user in response to the output; and

receiving, at the remote computer, input indicative of the check value input by a user.

24. The method of claim 23 further comprising:

generating, at the remote computer, an output indicative of the check value for display to a user in response to the output; and

receiving, at the remote computer, input indicative of the check value input by a user.

25. A method of preparing a shared library file for execution by an application on a handheld medical device, the application loading the shared library file from non-volatile memory of the handheld medical device to volatile memory of the handheld device beginning at a fixed location of the volatile memory before execution, the method comprising:

compiling, at a remote computer, the shared library file based on code generated based on user input,

the shared library file including a first routine for performing a safety critical function of the handheld medical device and including a second routine for performing a cyclical redundancy check (CRC) on identified portions of the shared library file;

calculating, at the remote computer, a check value based on the identified portions of the shared library file; and

selectively setting, at the remote computer, a predetermined value in the shared library file to the check value,

wherein the performance of the CRC using the handheld medical device includes calculating a second check value based on the identified portions of the shared library file once the shared library file is loaded to the volatile memory and comparing the second check value with the predetermined value.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2015
From: ROCHE DIAGNOSTICS OPERATIONS, INC.
To: ROCHE DIABETES CARE, INC.
Reel/Frame 036008/0670 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 8, 2012
From: PARKER, MARSHALL M.
To: GALE FORCE SOFTWARE CORPORATION
Reel/Frame 027673/0033 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 7, 2012
From: MCVEY, GORDON L.; WILSON, RICHARD W.
To: ROCHE DIAGNOSTICS OPERATIONS, INC.
Reel/Frame 027664/0081 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 7, 2012
From: GALE FORCE SOFTWARE CORPORATION
To: ROCHE DIAGNOSTICS OPERATIONS, INC.
Reel/Frame 027664/0305 →