Method and system for interoperable device enabling hardware abstraction layer modification and engine porting
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. Interoperability device enabling provides a process for turning a conventional device into a highly interoperable device such as a Dart Device through the porting of an engine such as a Dart Engine as part of a player such as a DartPlayer.
1 . A method for using common software source code for an interoperability engine to create interoperability software needed to make a device an interoperability device, the method comprising:
(1) creating an interoperability engine object or instance;
(2) creating a device Hardware Abstraction Layer (HAL) object or instance;
(3) identifying and filling in the functionality of all the predefined required halBase member functions of the halBase class or specification; and
(4) creating a device specific Player object that substantially continually runs the engine on a thread of execution.
2 . A method as in claim 1 , wherein the creating a device specific Player object that substantially continually runs the engine on a thread of execution runs the engine as follows:
(a) call the engine's initialization function;
(b) call the engine's process function in a loop that ends if a returned value indicates an unrecoverable error occurred or that the engine is to be closed down;
(c) call the engine's un-initialize function; and
(d) stop the thread of execution.
3 . A method as in claim 2 , wherein the creating includes creating by inheriting from a halBase object.
4 . A method as in claim 2 , wherein the returned value returned comprises a non-zero value returned.
5 . A method as in claim 2 , wherein the loop that calls a player base process member function comprises a loop that calls a playerBase::Process( ) member function in a loop until a non-zero value is returned.
6 . A method as in claim 1 , wherein the creating of a device specific playback object includes creating by inheriting from a playerBase object.
7 . A method as in claim 1 , wherein the processing engine comprises a software processing engine.
8 . A method as in claim 1 , wherein the processing engine comprises a firmware processing engine.
9 . A method as in claim 1 , wherein the processing engine comprises a Dart software processing engine.
10 . A method as in claim 1 , wherein the software includes C++ programming code instructions.
11 . A method as in claim 1 , wherein the functions of the HAL object that are identified include at least one function from the set of functions consisting of: allocating a single consecutive block of memory of a given size, returning the time in milliseconds, moving a bitmap in one of an identified standard format, compile time variants to the screen at a given location, a virtual function for getting profile characteristics of another physical device on which the processing engine will execute.
12 . A method as in claim 1 , further comprising communicating the device specific playback object to the device.
13 . A method as in claim 12 , wherein the device comprises at least one of: a computer, a personal data assistant (PDA), a cellular or wireless telephone, a radio, a printer, an electronic device, a music player, a media player, a camera, or any one combination of thereof.
14 . A method as in claim 2 , wherein the hal functions include interface functions for interacting with the device specific hardware, software, firmware, or content for one or more of the following purposes:
(1) getting device specific capabilities and/or settings and/or status for a given id value or set of values that identify specific profile words, profile structures, or the enumeration of profile structures that are to be gotten; and
(2) executing predefined asynchronous operations so that the execution of other activities of the interoperability device running on the engine's tread of execution can continue to run while the asynchronous operations continue.
15 . A method as in claim 14 , wherein one of the parameters to the interface function is a value uniquely assigned to each different manufacturer and another parameter is a pointer to a parameter block so that each manufacturer can optionally define whatever sub-interface functions and/or parameters required to expose any unique capabilities, status, content, or operations not otherwise accessible through the other interface functions.
16 . The method as in claim 15 , wherein the uniquely assigned values are used to ensure there will be no conflicts with other manufacturer generated sub interfaces.
17 . The method as in claim 16 , wherein the manufacturer can control access to their own developed sub-interfaces in one or more of the following manners:
(1) publish their manufacturer id, parameter block specification and/or sub-interface function specifications so that any other manufacturer can make use of the developed sub interface functions to develop compatible devices and applications;
(2) keep their manufacturer id and or parameter block specification and or sub-interface specifications as trade secrets; and
(3) protect the parameters or functions using the cryptographic instruction implementations in the engine, a shared secret based algorithm, or any other cryptographic means so that it will be difficult or impossible for other manufactures to understand or make use of the manufacturer developed sub interface functions.
18 . 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 for using software source code common among potentially interoperable devices for an interoperability engine to create interoperability software needed to make a device an interoperability device, the program module including instructions for:
(1) creating an interoperability engine object or instance;
(2) creating a device Hardware Abstraction Layer (HAL) object or instance;
(3) identifying and filling in the functionality of all the predefined required halBase member functions of the halBase class or specification; and
(4) creating a device specific Player object that substantially continually runs the engine on a thread of execution.
19 . A computer program product as in claim 18 , wherein the instruction for creating a device specific Player object that substantially continually runs the engine on a thread of execution runs the engine according to the steps of:
(a) calling the engine's initialization function;
(b) calling the engine's process function in a loop that ends if a returned value indicates an unrecoverable error occurred or that the engine is to be closed down;
(c) calling the engine's un-initialize function; and
(d) stopping the thread of execution.
19 . A computer program product as in claim 17 , wherein the functions of the HAL object that are identified include at least one function from the set of functions consisting of: allocating a single consecutive block of memory of a given size, returning the time in milliseconds, moving a bitmap in one of an identified standard format, compile time variants to the screen at a given location, a virtual function for getting profile characteristics of another physical device on which the processing engine will execute.
20 . A computer program product as in claim 18 , wherein the hal functions include interface functions for interacting with the device specific hardware, software, firmware, and/or content for one or more of the following purposes:
(1) getting device specific capabilities and/or settings and/or status for a given id value or set of values that identify specific profile words, profile structures, or the enumeration of profile structures that are to be gotten; and
(2) executing predefined asynchronous operations so that the execution of other activities of the interoperability device running on the engine's tread of execution can continue to run while the asynchronous operations continue.
21 . A computer program product as in claim 20 , wherein one of the parameters to the interface function is a value uniquely assigned to each different manufacturer and another parameter is a pointer to a parameter block so that each manufacturer can optionally define whatever sub-interface functions and/or parameters required to expose any unique capabilities, status, content, or operations not otherwise accessible through the other interface functions.