IP Library Patent Application 11148980
Patent Application
App. No. 11/148,980

Device interoperability runtime establishing event serialization and synchronization amongst a plurality of separate processing units and method for coordinating control data and operations

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 None
App. No.
11/148,980
Abstract

System, device, method, and computer program and computer program products for providing communicating between devices having similar or dissimilar characteristics and facilitating seamless interoperability between them. Computer program software and methods of and systems and devices for sharing of content, applications, resources and control across similar and dissimilar permanently or intermittently connected electronic devices. Devices, systems, appliances, and the like communicating and/or interoperating within the framework provided. An interoperability runtime, such as a DartRuntime provides a method and system for establishing the tight coordination of control, data and operations between separate processing units of a running application or Dart whether the processing units are running on single device or across team of recruited devices. This is accomplished by event driven system which ensures serialization and synchronization of events flowing thorough processing units of application so that processing units can have access to directives in same order needed to coordinate and synchronize data and operations between processing units.

Claims (106)

1 . A method for an interoperability runtime system to carry out the execution of an event driven software application package of digitally encoded data, code and content, along with meta information in the form of data, code and content needed to carry out an intended purpose (intent) on one or more connected or intermittently connected devices, the method comprising:

(a) selecting and loading a separately executable image from a given package of independently executable images;

(b) recruiting devices into a team by the executing image;

(c) distributing at least one of code, renditions, data, and/or content amongst the team of recruited devices;

(d) processing in an orderly manner of synchronous and asynchronous events to carry out the intent;

(e) synchronization and serializing event processing within and between devices of the recruited team of devices; and

(f) saving of running packages of individually executable images including saving data and state in a storage.

2 . The method of claim 1 , wherein the (a) selecting and loading of a separately executable image from a given package of independently executable images is the selecting and loading of exactly one separately executable image from a given package of independently executable images.

3 . The method of claim 1 , wherein the runtime is the DartRuntime.

4 . The method of claim 1 , wherein the selecting and loading, recruiting, distributing, processing, and synchronizing and reserializing are carried out according to the a recruitment procedure.

5 . The method of claim 1 , wherein the saving of running packages including data and state is carried out by the SAVE_INSTRUCTION of the DartInstructionSet.

6 . The method of claim 1 , wherein the saving of running packages including data and state comprises:

getting a pointer to a table which contains a plurality of records and where each record provides information about a single separately executable image;

processing each record of the table in turn; and

creating an interoperability software package of one or more individually executable images based on the processed records.

7 . The method of claim 6 , wherein the table is a renditions table.

8 . The method of claim 6 , further comprising optionally forming a header with one or more header fields.

9 . The method of claim 6 , further comprising optionally forming a trailer with one or more trailer fields.

10 . The method of claim 7 , wherein the processing of each record of the renditions table in turn comprises:

(a) getting a pointer to a rendition table which contains records, each renditions table record comprising:

(i) a part ID (partid) which identifies or references a part image that is to be included in the saved package;

(ii) a linear contiguous address range for the code from the running package's main code needed to be included for the separately executable image corresponding to the information of the record of the renditions table being processed; and

(iii) a linear contiguous address range for the data from the running package's main data needed to be included for the separately executable image corresponding to the information of the record of the renditions table being processed;

(b) accumulating all the partids;

(c) accumulating the outside bounds for the main code linear address ranges of all previously processed records; and

(d) accumulating the outside bounds for the data code linear address ranges of all previously processed records.

11 . The method of claim 7 , wherein at least one of the created individually executable images includes:

(i) the renditions table;

(ii) the rendition tables;

(iii) a main code part with at least the range of data accumulated during the processing of each record;

(iv) a main data part with at least the range of data accumulated during the processing of each record;

(v) all the accumulated parts; and

(vi) a part table with a record for each part in the package.

12 . The method of claim 7 , wherein the part table with a record for each part in the package includes at least the following:

(i) a partid that this record refers to;

(ii) a starting offset within the image of the part image; and

(iii) an ending offset and or length of the image of the part image.

13 . The method of claim 7 , wherein the individually executable images further includes an optional header if one was formed.

14 . The method of claim 7 , wherein the individually executable images further includes an optional trailer if one was formed.

15 . The method of claim 6 , wherein a header and or trailer or any other data structure with a known same fixed offset is required in all instances of software application packages.

16 . The method of claim 15 , wherein the header and/or trailer and or other data structure once located using the fixed offset, provides the offset of the part table or part database data.

17 . The method of claim 15 , wherein where the header and/or trailer or other data structure includes the part table or part database data.

18 . The method of claim 1 , wherein the saving of running packages including data and state is carried out by the SAVE_INSTRUCTION of the DartInstructionSet.

19 . The method of claim 1 , wherein the runtime is embodied and carried out through an interoperability platform comprising at least the following:

(1) an object oriented framework for specifying code, data, content and resources for use in interoperability application packages;

(2) a source for specifying the code, data, content and resources, including that of the object oriented framework, for an interoperability application package;

(3) a known process for storing the interoperability application package as a set of parts and meta information for finding, accessing, and loading the package or portions of the package on a device to carry out the execution of the package and therefore carry out the intent embodied in the application package;

(4) an Interoperability Instruction set for providing a binary code compatibility between two or more devices;

(5) a first computer program software product or product(s) tool(s) which take the source and generate one or more interoperability application package, where some or all of the code elements are represented by sequences of instructions from the interoperability instruction set;

(6) a second computer program software product which loads and executes interoperability application packages;

(7) a procedure for ordering the execution of the various processing units embodied in the framework;

(8) a procedure for intelligently spreading code, data, and content to one or more other devices as needed to carry out a software application; and

(9) a procedure for serializing and synchronizing the activities of the code and data once distributed across one or more devices.

20 . The method of claim 19 , further comprising providing at least one of:

(i) a procedure for application level error recovery;

(ii) a procedure for application level power management;

(iii) a procedure for tightly coupling execution units by having a single semantic entity generated and used by all the execution units whether performing high level application tasks or low level communications or hardware access tasks; and

(iv) a procedure for ordering and managing event driven execution and runtime environments of a plurality of event processing units of a software application.

21 . The method of claim 19 , wherein one or more or any combination of the following are true:

(1) the interoperability platform is a DartPlatform;

(2) the framework is a DartFramework;

(3) the interoperability application packages are Darts;

(4) the source is a DartSource;

(5) the framework is a DartFramework;

(6) the known process for storing the interoperability application package is any method for creating a package conforming to a DartFormat;

(7) the Interoperability Instruction Set is a DartInstructionSet;

(8) the software product or product(s) tools are a DartTools;

(9) the computer program software product which loads and executes interoperability application packages is a DartEngine;

(10) the procedure for ordering the execution of the various processing units embodied in the framework is a Dart Linear Tasking; and

(11) the procedure for ordering the execution of the various processing units embodied in the framework is a Dart Linear Tasking.

22 . The method of claim 19 , wherein:

(1) the interoperability platform comprises a DartPlatform;

(2) the framework comprises a DartFramework;

(3) the interoperability application packages comprise Darts;

(4) the source comprises a DartSource;

(5) the framework comprises a DartFramework;

(6) the known process for storing the interoperability application package is any method for creating a package conforming to a DartFormat;

(7) the Interoperability Instruction Set comprises a DartInstructionSet;

(8) the software product or product(s) tools comprises DartTools;

(9) the software product which loads and executes interoperability application packages comprises a DartEngine;

(10) the procedure for ordering the execution of the various processing units embodied in the framework comprises a Dart Linear Tasking; and

(11) the procedure for ordering the execution of the various processing units embodied in the framework comprises Dart Linear Tasking.

23 . The method of claim 19 , wherein the intelligently spreading code, data and content to one or more other devices as needed comprises recruitment and/or renditioning.

24 . The method of claim 23 , wherein the recruitment comprises DartRecruitment and the renditioning comprises DartRenditioning.

25 . The method of claim 19 , wherein the serializing and synchronizing the activities of the code and data once distributed across one or more devices is performed by recruitment.

26 . The method of claim 25 , wherein the recruitment comprises DartRecruitment.

27 . The method of claim 20 , wherein the method for application level error recovery application level error recovery is built into an Interoperability Platform, from an Interoperability Source, sn Interoperability Tools, an Interoperability Runtime, and an Interoperability engine to ensure that intermittent interruptions in communications can often be elegantly handled without the need for the application to stop all operations or terminate, or be explicitly reset.

28 . The method of claim 20 , wherein the method for application level power management includes tracking an exact response time need so that efficient power management techniques such as slowing down the processor can extend the lifetime of batteries, limit the amount of energy consumed or limit the amount of heat generated on devices.

29 . The method of claim 20 , wherein the method for tightly coupling execution units comprises using vertical layering so that regardless of their level, processing units can communicate directly with all other processing units through the use of event structures and event queues which are accessible and understandable by all processing units without translation.

30 . The method of claim 20 , wherein the method for ordering and managing event driven execution comprises any device recruitment or DartRecruitment.

31 . A computer program product for use in conjunction with a computer system or information appliance, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising:

a program module that directs the computer system or information appliance to function in a specified manner to provide an interoperability runtime system to carry out the execution of an event driven application package of digitally encoded data, code and/or content, along with meta information in the form of data, code and/or content needed to carry out an intended purpose on one or more connected or intermittently connected devices, the program module including instructions for:

(a) selecting and loading a separately executable image from a given package of independently executable images;

(b) recruiting devices into a team by the executing image;

(c) distributing at least one of code, renditions, data, and/or content amongst the team of recruited devices;

(d) processing in an orderly manner of synchronous and asynchronous events to carry out the intent;

(e) synchronization and serializing event processing within and between devices of the recruited team of devices; and

(f) saving of running packages of individually executable images including saving data and state in a storage.

32 . An interoperability runtime system for carrying out the execution of an event driven software application package of digitally encoded data, code and/or content, optionally along with meta information in the form of data, code and/or content needed to carry out an intended purpose (intent) on one or more connected or intermittently connected devices, the system comprising:

(a) a processor and a memory coupled with the processor;

(b) means, accessible by the processor, for selecting and loading a separately executable image from a given package of independently executable images;

(c) means, accessible by the processor, for recruiting devices into a team by the executing image;

(d) means, accessible by the processor, for distributing at least one of code, renditions, data, and/or content amongst the team of recruited devices;

(e) means, accessible by the processor, for processing in an orderly manner of synchronous and asynchronous events to carry out the intent;

(f) means, accessible by the processor, for synchronization and serializing event processing within and between devices of the recruited team of devices; and

(g) means, accessible by the processor, for saving of running packages of individually executable images including saving data and state in a storage.

Assignments (3)
CHANGE OF NAME Recorded Jan 7, 2010
From: DARTDEVICES INTEROP CORPORATION
To: COVIA LABS, INC.
Reel/Frame 023750/0011 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2009
From: DARTDEVICES CORPORATION
To: DARTDEVICES INTEROP CORPORATION
Reel/Frame 022473/0861 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2006
From: ILLOWSKY, DANIEL; BERNSTEIN, BRUCE; MIRABELLA, RICHARD; PIEB, WOLFGANG; SIDNEY, RAYMOND; TIBERI, RICHARD; WENOCUR, MICHAEL
To: DARTDEVICES CORPORATION
Reel/Frame 017211/0765 →