Senior Fitness - Exercise and Nutrition for Aging Men and Women
FREE Article Feed for your website.
Home Ownership Magazine
Party Planning Information
Article Marketing Resources
Bio-Medical Research Article Database
Informative Articles on Life, Love and Happiness
Tutorials on Business to Writing
Famous Quotes from Famous People
Song Lyric Information
New US Patent Information
Comprehensive List of Content by Category
Online Auctions and Shopping Related Articles
Article Search
Most Recent Articles
 

Gambling stories 101
Category:
Hobbies / Pastimes  

aspen nightlife the ultimate taxi
Category:
Travel  

Ideas for Deck Designs
Category:
Home And Family  

How Your Bank Can Save You Money
Category:
Marketing  

Best Destinations For Florida Family Vacations
Category:
Travel  

The Success of British Airways
Category:
Travel  

How Does Cosmetic Dentistry Work
Category:
Health / Fitness  

Essential Elements the Perfect Opportunity must Possess
Category:
Marketing  

Two Important Questions Every Network Marketer Must Know How To ...
Category:
Business  

Selling software online How do you present your software
Category:
Marketing  

Important Information on Sleep Disorders
Category:
Health / Fitness  

Stamps Collecting has Never Been So Easy
Category:
Entertainment / Television  

Myths and Misconceptions About Starting an Online Business
Category:
Marketing  

Break Into the High Flying Crowd
Category:
Marketing  

Attending Camp with a Friend
Category:
Sports  

Coping with the pain
Category:
Home And Family  

Perinate Herpes Simplex Viral Infection
Category:
Health / Fitness  

Off Line Marketing Secrets to Getting More Customers
Category:
Marketing  

Baby Shower Poems How to Write Baby Poems Like a Pro
Category:
Home And Family  

Simple Ways To Debt Relief
Category:
Finance / Investment  

From Domain s Purchase To The Real Gain
Category:
Business  

South Africa s Convenience Store Market A Toddler Amongst Sprint...
Category:
Business  

Does Your Online Copy Talk
Category:
Marketing  

Your Home Is Your Sanctuary
Category:
Home And Family  

Acne Prevention Do and Dont s
Category:
Health / Fitness  

Sarcopenia As we Age Muscle Loss Occurs
Category:
Health / Fitness  

Looking For A Home Based Business Opportunity K I S S
Category:
Business  

Cialis
Category:
Self Help  

How To Drop Your Weight and Become Healthier Using These 7 Every...
Category:
Health / Fitness  

EMPLOYEE ENGAGEMENT AND MENTAL HEALTH
Category:
Business  

Eating Out and Loosing Weight
Category:
Health / Fitness  

The Surefire Increase To Your Traffic From Yesterday
Category:
Marketing  

When To Use A Collection Agency
Category:
Finance / Investment  

Pakistan Pharma Industry going International
Category:
Business  

6 Secret Signs of an Easy Home Business
Category:
Business  

How old should you be before buying a loft bed
Category:
Home And Family  

Using Autoresponders To Multiply Marketing Power Save Time
Category:
Marketing  

Health Insurance Quotes
Category:
Finance / Investment  

Informative Free Report Guides You To Antenna Cell Flashing Phon...
Category:
Business  

Cruise stocks a risk vs reward analysis
Category:
Business  

Instant Lottery Tickets How To Make Money With Losing Lottery Ti...
Category:
Entertainment / Television  

Bird Flu Vaccines What is Taking So Long
Category:
Health / Fitness  

A Solid Choice for Business cards
Category:
Business  

Secured loans for unemployed tone down the bitterness of unemplo...
Category:
Finance / Investment  

Cashing in on Coca Cola Memorabilia New Ideas for Old Art
Category:
Home And Family  

10 Skin Care Tips Look Stunning in Your 40s
Category:
Health / Fitness  

5 Ways to Manage your Diet for Diabetes
Category:
Health / Fitness  

Marquis Theater A Modern Musical Experience
Category:
Entertainment / Television  

Get Online Knowledge About Alcoholism Treatment
Category:
Health / Fitness  

Kissing Tips Make a Kiss More Passionate
Category:
Self Help  

Make Your Office a Paper Free Zone
Category:
Business  

How to Submit Articles on the Internet
Category:
Business  

Mutual Funds and Their Risks
Category:
Business  

The Cost of Diabetes and Free Diabetic Supplies
Category:
Health / Fitness  

When You Go On Vacation This Summer
Category:
Travel  

6 Simple Ways to Create the Best Most Fantastic Valentines
Category:
Home And Family  

Type of computer games
Category:
Entertainment / Television  

Pregnancy and Diabetes What You Should Know
Category:
Health / Fitness  

Chew slowly and digest the rules
Category:
Business  

An Introduction to CD Mastering
Category:
Hobbies / Pastimes  

WiMAX to constitute a major share of wireless broadband market
Category:
Marketing  

Acne Products The Different Categories
Category:
Home And Family  

Trading the Forex Markets with the Forex Trading Machine
Category:
Finance / Investment  

Energy Savings by Use of the Correct Spray Nozzle
Category:
Business  

Digging Deep To Get The Most From RSS Technology for Marketing
Category:
Marketing  

If You Want To Be Successful in Trading There s Only One Thing Y...
Category:
Finance / Investment  

Choosing the Right Wedding Music
Category:
Home And Family  

The Truth About Vitamin Deficiencies
Category:
Health / Fitness  

Online Casino Gamble
Category:
Hobbies / Pastimes  

Plasma Television Myths and Facts
Category:
Home And Family  

Generate MEANINGFUL Traffic to Your Site
Category:
Marketing  

Understanding Legal Advice
Category:
Real Estate  

Where adsense should appear
Category:
Marketing  

The process of buying a new home from a home builder
Category:
Real Estate  

How to sell property to overseas property buyers
Category:
Finance / Investment

Script instruction for jumping to a location, interpreting a predetermined number of instructions and then jumping back Number:7,436,345 from the United States Patent and Trademark Office (PTO) owispatent

Home    Author Login    Submit Article    Article Search    Add Your Link    Edit Your Link    Contact Us    Advertising    Disclaimer

   

 
Web LinkGrinder.com

Top Breaking News
     Greek, Cypriot Leaders Resume Unification Talks in Nicosia by Nathan Morley
     Indonesia Tobacco Sales Grow, Raising Health Fears
     South Korea Allows Top Defector to Travel Overseas by VOA News

Title: Script instruction for jumping to a location, interpreting a predetermined number of instructions and then jumping back

Abstract: A "call relative counted" script instruction is interpreted by a script interpreter of an eight-bit, register-based, virtual machine. In one embodiment, the script instruction has a first argument field and a second argument field. Interpreting the script instruction causes a jump to a location identified by a label in the first argument field. After a number of script instructions identified by the second argument have been interpreted, the interpreting of script instructions automatically returns to the next script instruction after the call relative counted script instruction. In one example, the first argument is a label, the label in turn identifying the location to jump to. In another example, the first argument directly indicates the location to jump to. The instruction is useful in allowing multiple higher-level scripts to reuse different parts of a common lower-level block of script. The common block performs a common function required by the higher-level scripts.

Patent Number: 7,436,345 Issued on 10/14/2008 to Provis,   et al.


Inventors: Provis; Adam P. G. (Isle of Wright, GB), Miramontes; Oscar C. (El Paso, TX), Vergis; George C. (Fremont, CA)
Assignee: ZiLOG, Inc. (San Jose, CA)
Appl. No.: 10/928,014
Filed: August 27, 2004


Related U.S. Patent Documents

Application NumberFiling DatePatent NumberIssue Date
10777023Feb., 20047259696
60576941Jun., 2004

Current U.S. Class: 341/173 ; 340/825.72; 341/176
Current International Class: H04L 17/02 (20060101)
Field of Search: 341/173,176,23 340/825.22,825.24,825.25,825.69,825.72 348/734 398/106-112 717/115,118,139


References Cited [Referenced By]

U.S. Patent Documents
4623887 November 1986 Welles, II
4703359 October 1987 Rumbolt et al.
4866434 September 1989 Keenan
5081534 January 1992 Geiger et al.
5099233 March 1992 Keenan
5228077 July 1993 Darbee
5282028 January 1994 Johnson et al.
5386251 January 1995 Movshovich
5629868 May 1997 Tessier et al.
5850304 December 1998 Elmers et al.
5987256 November 1999 Wu et al.
6040829 March 2000 Croy et al.
6104334 August 2000 Allport
6260157 July 2001 Schurecht et al.
6308317 October 2001 Wilkinson et al.
6408435 June 2002 Sato
6424285 July 2002 Perdue et al.
6473893 October 2002 Kay et al.
6539437 March 2003 Windheim et al.
6640144 October 2003 Huang et al.
6650248 November 2003 O'Donnell et al.
6774813 August 2004 van Ee et al.
6785579 August 2004 Huang et al.
6813707 November 2004 Batcher
6844900 January 2005 Yuen
6959865 November 2005 Walczyk
2001/0033243 October 2001 Harris et al.
2002/0158772 October 2002 Mears
2003/0034957 February 2003 Dubil et al.
2003/0095211 May 2003 Nakajima
2003/0193426 October 2003 Vidal
2004/0119894 June 2004 Higgins et al.

Other References

Harkey, Appajodu and Larkin, "Wireless Java Programming for Enterprise Applications," Wiley Publishing (2002) ISBN 0-471-21878-2, chapters 5 and 7, 48 pages total. cited by other.

Primary Examiner: Holloway, III; Edwin C
Attorney, Agent or Firm: Imperium Patent Works Wallace; T. Lester Wallace; Darien K.

Parent Case Text



CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation in part of, and claims priority under 35 U.S.C. .sctn.120 from, nonprovisional U.S. patent application Ser. No. 10/777,023, now U.S. Pat. No. 7,259,696, entitled "Interactive Web-Based Codeset Selection and Development Tool," filed on Feb. 10, 2004, the subject matter of which is incorporated herein by reference.

This application claims the benefit under 35 U.S.C. .sctn.119 of provisional application Ser. No. 60/576,941, entitled "A Compact Register-Based Virtual Machine And Its Use On Resource-Constrained Devices", filed Jun. 3, 2004. The subject matter of provisional application Ser. No. 60/576,941 is incorporated herein by reference.
Claims



What is claimed is:

1. A method of a processor performing a script instruction that is interpretable by a script interpreter, the method comprising: (a) jumping from a first location in a script to a second location in the script, wherein the script instruction is a first script instruction disposed at the first location, the second location being identified by the first script instruction, a second script instruction being disposed at the second location, wherein the first script instruction includes an indication of a number of script instructions; (b) sequentially interpreting the number of indicated script instructions starting with and including the second script instruction; and (c) after the number of script instructions has been sequentially interpreted, then automatically returning to a third location, the third location being a location that immediately follows the first location.

2. The method of claim of claim 1, wherein each of the first location, the second location, and the third location is a one-byte location in a memory.

3. The method of claim 1, wherein the script instruction includes an argument field, the argument field containing an address that identifies the second location.

4. A method of a processor performing a script instruction that is interpretable by a script interpreter, the method comprising: (a) jumping from a first location in a script to a second location in the script, wherein the script instruction is a first script instruction which is disposed at the first location, a second script instruction being disposed at the second location (b) sequentially interpreting the number of indicated script instructions starting with and including the second script instruction; and (c) after the number of script instructions has been sequentially interpreted, then automatically returning to a third location, the third location being a location that immediately follows the first location, wherein the first script instruction includes a set of argument fields, the set of argument fields including an argument field containing an indication of a number of script instructions and an argument field containing a reference to a storage location, the storage location storing a label, the label identifying the second location, and wherein the set of argument fields does not include an argument field identifying a return location.

5. A method of a processor performing a script instruction that is interpretable by a script interpreter, the method comprising: (a) jumping from a first location in a script to a second location in the script, wherein the script instruction is a first script instruction which is disposed at the first location, a second script instruction being disposed at the second location, (b) sequentially interpreting the number of indicated script instructions starting with and including the second script instruction; and (c) after the number of script instructions has been sequentially interpreted, then automatically returning to a third location, the third location being a location that immediately follows the first location, wherein the first script instruction includes an argument field containing an indication of a number of script instructions and an argument field containing a label, the label identifying the second location.

6. The method of claim 1, wherein one of the number of script instructions interpreted in (b) is the last script instruction interpreted, and wherein said last script instruction is not a function call RETURN script instruction.

7. The method of claim 1, wherein the processor comprises an eight-bit processor.

8. A method of a processor performing a script instruction that is interpretable by a script interpreter, the method comprising: (a) jumping from a first location in a script to a second location in the script, wherein the script instruction is a first script instruction which is disposed at the first location, a second script instruction being disposed at the second location, (b) sequentially interpreting the number of indicated script instructions starting with and including the second script instruction; and (c) after the number of script instructions has been sequentially interpreted, then automatically returning to a third location, the third location being a location that immediately follows the first location, wherein the processor is part of a remote control device, and the remote control device transmits an operational signal to control an electronic consumer device.

9. The method of claim 1, wherein the script instruction is interpreted such that a jump is made to a block of script, the block of script being a block of script which when interpreted causes a common function to be performed, the common function being a function required in generating operational signals in accordance with at least one codeset.

10. A computer-readable medium storing a script instruction that is interpretable by a script interpreter, interpretation of the script by the script interpreter causing: (a) jumping from a first location in a script to a second location in the script, wherein the script instruction is a first script instruction disposed at the first location, the second location being identified by the first script instruction, a second script instruction being disposed at the second location, wherein the first script instruction includes an indication of a number of script instructions; (b) sequentially interpreting the number of indicated script instructions starting with and including the second script instruction; and (c) after the number of script instructions has been sequentially interpreted, then automatically returning to a third location, the third location being a location that immediately follows the first location.

11. A method comprising: providing a first portion of a script, the first portion of script causing a device to output an operational signal in accordance with a first protocol, the first portion of script containing a first script instruction; and providing a second portion of script, the second portion of script causing the device to output a second operational signal in accordance with a second protocol, the second portion of script containing a second script instruction, wherein the first script instruction causes a first jump to a third portion of script such that a first predetermined number of script instructions of the third portion are interpreted and then automatically causes a first return jump back to the first portion independent of identification of the first portion by a last interpreted instruction in the first predetermined number of script instructions of the third portion, and wherein the second script instruction causes a second jump to the third portion of script such that a second predetermined number of script instructions of the third portion are interpreted and then automatically causes a second return jump back to the second portion independent of identification of the second portion by a last interpreted instruction in the second predetermined number of script instructions of the third portion.

12. The method of claim 11, wherein the first predetermined number and the second predetermined number are identical.

13. The method of claim 11, wherein the first predetermined number and the second predetermined number are different.

14. The method of claim 11, wherein interpreting of the first script instruction causes the first jump to a first location in the third portion of script, the first location being identified by the first script instruction, and wherein interpreting of the second script instruction causes the second jump to a second location in the third portion of the script, the second location being identified by the second script instruction.

15. The method of claim 11, wherein the first location and the second location are different locations.

16. The method of claim 11, wherein the third portion of script performs a codeset bit encoding function.

17. A method of a processor performing a script instruction that is interpretable by a script interpreter, the method comprising: (a) jumping from a first location in a script to a second location in the script, wherein the script instruction is a first script instruction disposed at the first location, the second location being identified by the first script instruction, a second script instruction being disposed at the second location, wherein the first script instruction includes an indication of a number of script instructions; (b) sequentially interpreting the number of indicated script instructions starting with and including the second script instruction; and (c) after the number of script instructions has been sequentially interpreted, then automatically returning to a third location, the third location being a location that immediately follows the first location, wherein the processor does not execute a real-time operating system, wherein the script is interpreted by a virtual machine, and wherein the virtual machine comprises a script interpreter and a processor.

18. A method comprising: providing a first portion of a script, the first portion of script causing a device to output an operational signal in accordance with a first protocol, the first portion of script containing a first script instruction; and providing a second portion of script, the second portion of script causing the device to output a second operational signal in accordance with a second protocol, the second portion of script containing a second script instruction, wherein the first script instruction causes a first jump to a third portion of script such that a first predetermined number of script instructions of the third portion are interpreted and then automatically causes a first return jump back to the first portion independent of identification of the first portion by a last interpreted instruction in the first predetermined number of script instructions of the third portion, and wherein the second script instruction causes a second jump to the third portion of script such that a second predetermined number of script instructions of the third portion are interpreted and then automatically causes a second return jump back to the second portion independent of identification of the second portion by a last interpreted instruction in the second predetermined number of script instructions of the third portion, wherein the protocol is taken from the group consisting of: an encoding protocol for encoding a digital bit, a modulation protocol for modulating a data signal onto a carrier frequency, a keypad encoding protocol for encoding a signal from a pressed key, and a transmission protocol for transmitting data over an infrared signal.
Description



CROSS REFERENCE TO COMPACT DISC APPENDIX

The Compact Disc Appendix, which is a part of the present disclosure, is one recordable Compact Disc (CD-R) containing information that is part of the disclosure of the present patent document. A portion of the disclosure of this patent document contains material that is subject to copyright protection. All the material on the Compact Disc is hereby expressly incorporated by reference into the present application. The copyright owner of that material has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights.

TECHNICAL FIELD

The present invention relates generally to the programming and control of inexpensive resource-constrained devices such as, for example, IR remote control devices and devices including embedded inexpensive microcontrollers.

BACKGROUND

Electronic consumer devices (for example, televisions, radios, digital video disk (DVD) players, video cassette recorders (VCRs), sound systems, home entertainment systems, video game controllers, set-top boxes, personal computers) and home appliances (for example, ceiling fans, lights, alarm systems, garage door openers, kitchen appliances, heating controls) are often controllable by one or more remote control devices. Such a remote control device is often a handheld device with a set of keys and a transmitter (for example, an infrared (IR) transmitter).

Each device to be controlled recognizes and responds to a particular set of incoming codes communicated on a carrier. Information describing one such set of codes is sometimes called a codeset. A particular television may, for example, respond to codes of one codeset, whereas a particular DVD player may respond to codes of a different codeset. One or more codesets are therefore typically stored on a remote control device so that the remote control device can control one or more types of devices.

The format in which such codeset information is stored on a remote control device is typically compressed so that it consumes as little memory space as is practical. The format of the compacted information may be proprietary and/or may be difficult to decipher to one not aware of the format. Not only can the codeset information be difficult to decipher, but the mechanism used to read the codeset information and to generate the actual code transmitted can also be difficult to decipher. The mechanism may, for example, involve machine code that exercises function-specific hardware. The mechanism on a first type of remote control device may differ from the mechanism performing the same function on a second type of remote control device. For these and other reasons, the programming of remote control devices can be quite involved and can involve accessing proprietary information. It generally requires the knowledge of the hardware platform of the remote control device. There are different types of remote control devices, and code from one remote control device cannot simply be transferred to another type of remote control device.

Some remote control devices are relatively expensive devices that have a significant amount of processing power, memory and other hardware resources. A typical cell phone is one such device that has substantial resources and that executes an operating system. A typical personal digital assistant (PDA) is another such device that has substantial resources and has an operating system.

In one example, the PDA executes the PalmOS operating system and is a Java Virtual Machine (JVM). The JVM provides just-in-time interpretation of Java bytecode scripts into native machine code. The PDA provides the hardware and other functionality to support a standard set of Java application programming interfaces (API). When the Java bytecode is interpreted, the resulting native machine code may call an API such that the API returns values or causes certain functions to be performed. If two JVM PDAs both support the same set of APIs, then a Java bytecode script that uses these Java APIs can be made to run on both platforms without modification.

Although the JVM and PalmOS scripting language and interpreter mechanism may be appropriate for certain classes of expensive platforms like PDAs, the JVM and PalmOS mechanism consumes too much memory and processor resources to be used on other classes of platforms. The sale price of many remote control devices is extremely cost sensitive. A remote control device may, for example, be provided with an electronic consumer device and may almost be a throw-away device. A processor that is as inexpensive as practical is used to implement remote control functionality. The amount of both program memory and data memory included is kept as low as possible and is typically a fraction of the amount of program memory and data memory available in a PDA. In the class of inexpensive remote control devices, there is typically no operating system. The programming of the processor is often handcrafted to reduce the amount of memory space consumed. Codeset information needed to generate codes to operate electronic consumer devices is generally compressed and stored in obscure memory-efficient formats. A program in such a remote control device cannot therefore be ported from one type of device to another. The program is generally not easily understandable by anyone not intimately familiar with the way the code was written and the particular hardware platform on which it operates. A novel scripting language and associated script interpreter are sought, whereby the interpreter interprets scripts into machine code of a processor in a microcontroller of limited memory and computing power.

SUMMARY

An inexpensive device (for example, an IR remote control device) has a bidirectional communication link (for example, an IR receiver and an IR transmitter). The processor of the device is an 8-bit microcontroller having no more than 64 k bytes of program memory, and no more than 4 k bytes of random access memory (RAM). The processor does not execute a real-time operating system. The processor does, however, implement a compact, register-based, 8-bit virtual machine. The compact virtual machine interprets scripts written in accordance with a novel compact, low-level, scripting language. The virtual machine includes a script interpreter, a loader API functionality, a receiver API functionality, a transmitter API functionality, and an execute script direct API functionality.

A general-purpose device with the virtual machine including the API functionalities is manufactured in volume. To customize the device for a particular application, an additional API functionality not initially on the device can later be loaded into the device via the bidirectional link. The additional API functionality allows a script to exercise or use particular hardware and/or input/output (I/O) capabilities of the underlying hardware platform. The API functionality loaded is, in one embodiment, an amount of low-level machine code made up of instructions of the instruction set of the processor. Using this technique, APIs can access and use any hardware capabilities of the underlying processor including, for example, a timer, a register such as a control register or a diagnostic register, an analog-to-digital converter, a digital-to-analog converter, a display, a digital output terminal, a digital input terminal, and a bus controller or bus interface. In another embodiment, the later-loaded API functionality is an amount of script written in the novel script language understood by the virtual machine. Regardless of the type of API functionality, the code of the API functionality can be received onto the device by the receiver API functionality or by a digital input terminal, and can be loaded into program memory. The loaded API functionality is assigned an identifier. Once loaded, a script being interpreted by the script interpreter can invoke and exercise the API functionality using this identifier.

To further customize the device, a script can be loaded into the device via the bidirectional link. The code of the script is received onto the device by the receiver API functionality, and is loaded into program memory. The script, when interpreted by the script interpreter, can call the various API functionalities supported, including the API functionalities downloaded into the device over the bidirectional link as set forth above. The script, once loaded into the program memory of the device, is interpreted by the script interpreter. Interpretation of the script causes the device to perform a custom function.

In yet another embodiment, the device is an IR remote control device with a processor. The processor is a Z8 Encore microcontroller available from Zilog, Inc. of San Jose, Calif. To enable the remote control device to control a particular electronic consumer device (for example a particular television that responds to IR commands of a particular codeset), a script is loaded into the remote control device. The script, when executed, causes the keys of the remote control device to be scanned to detect any keys that might have been pressed. If a key is detected to have been pressed, then the script causes an appropriate command code operational signal of an appropriate codeset to be transmitted from the remote control device. The command code operational signal, when received by the electronic consumer device, causes the electronic consumer device to perform a function that corresponds to the key that was pressed. If, for example, the power key on the remote control device was detected to have been pressed, then the command code operational signal for the power key is transmitted to the television thereby causing the television to toggle on or off.

The information that enables the remote control device to output command code operational signals of one codeset as opposed to command code operational signals of a different codeset is embedded into the script. Accordingly, a second remote control device identical to the first remote control device can be loaded with API functionality and a second script such that the second remote control will work with a different electronic consumer device (for example, a second television that responds to IR command codes of a second codeset). Rather than loading the first script that facilitates communication with the first television, a second script is loaded that facilitates communication with the second television. Manufacturing and inventory control is therefore simplified because general-purpose remote control devices can be produced in greater volumes. Customized scripts are simply loaded into general-purpose remote control devices in order to make the remote control devices function with one type of electronic consumer device or another.

In yet another embodiment, the compact virtual machine with the bidirectional link and the loader API functionality converts a simple inexpensive remote control device into a flexible, reprogrammable, general-purpose platform. The script within the remote control device is customizable. It can be overwritten and/or modified without making any hardware changes to the remote control device. Scripts and/or API functionalities can be added to the remote control devices in the factory and/or in the field.

Not only can identical remote control devices be loaded with different scripts, but a script can be interpreted by a virtual machine running on any one of multiple different hardware platforms. In one example, all the different members of a family of microcontrollers are programmed using the same scripting language. All the members of the family realize the same virtual machine. Although these different members may have different hardware capabilities and features and may have some different API functionalities, a great deal of the controlling software is common due to the use of the same scripting language and same virtual machine. The common portion of script, once written, can be ported from one virtual machine platform to the next without having to be retested or requalified. Significant commonalities and savings results.

In a first aspect, a mark/space table and a string of timing information is generated on a remote control device when a command on the remote control device is chosen. The command may, for example, be chosen when a key on the remote control is pressed. The command is associated with a function of an electronic consumer device. The mark/space table contains a mark time and a space time associated with a codeset, and the codeset includes a command code corresponding to the command. When the remote control device detects that the command is chosen, the mark/space table is generated along with a string of timing information that references mark times and space times in the mark/space table. Once the mark/space table and the string of timing information are generated, the mark/space table and the string of timing information are used to generate an operational signal such that the command code is encoded in the operational signal. The operational signal is received by the electronic consumer device and causes the electronic consumer device to perform the function associated with the command that was chosen.

In one example of the first aspect, a mark/space table includes a first N-bit value that describes a mark time and a second N-bit value that describes the space time. A string of timing information includes a string of M-bit indices. A first M-bit index points to the first N-bit value, and a second M-bit index points to the second N-bit value. As opposed to representing the string of timing information as a plurality of N-bit values, the string is represented as a plurality of M-bit indices that point to N-bit values in the mark/space table. The string of timing information is stored in less memory where N is larger than M. The mark time and the space time are used to modulate or encode a keycode (in this case a keycode is a command code associated with a specific key) onto an operational signal, wherein the keycode corresponds to a function of an electronic consumer device.

In a second aspect, a script is interpreted on a remote control device to generate a mark/space table and a string of timing information. The script contains codeset information and is interpreted when a first key is pressed on the remote control device. The first key corresponds to a first function of an electronic consumer device. The mark/space table and the string of timing information are then used to generate an operational signal. The operational signal causes the electronic consumer device to perform the first function. When a second key is pressed on the remote control device, the script is interpreted a second time thereby generating a second mark/space table and a second string of timing information. The second mark/space table and the second string of timing information are then used to generate a second operational signal. The second operational signal is received by the electronic consumer device and causes the electronic consumer device to perform a second function corresponding to the second key that was pressed on the remote control device.

In one example of the second aspect, a remote control device includes a microcontroller and a script interpreter. A script is stored in a memory on the microcontroller. The script contains codeset information of a codeset associated with an electronic consumer device. The script interpreter interprets the script to generate a mark/space table and a string of timing information. The mark/space table and the string of timing information is then used to generate an operational signal and the operational signal is transmitted from the remote control device.

In another example of the second aspect, the codeset information includes a keycode. The keycode is a digital number that indicates a key on the remote control device. The script interpreter outputs a string of marks and spaces that represents the keycode. In this example, the string of marks and spaces has two adjacent marks. The remote control device includes a level one builder that receives the string of marks and spaces from the script interpreter and determines a combined mark time with a duration equal to a combined duration of the two adjacent marks. The level one builder generates a mark/space table that contains the combined mark time. The level one builder also generates a string of timing information that references the combined mark time as opposed to referencing two smaller mark times. The mark/space table and the string of timing information generated by the level one builder is then used to generate an operational signal.

In a third aspect, a script block is called by both a first upper-level script and by a second upper-level script. The first upper-level script contains first data, and the second upper-level script contains second data. When the script block is called by the first upper-level script, the first data is encoded so as to conform to a common protocol. When the script block is called by the second upper-level script the second data is encoded so as to conform to the common protocol. The interpreting is performed on an 8-bit microcontroller with less than seventy kilobytes of memory. No compiler or operating system is present on the microcontroller.

In one example of the third aspect, interpreting the script block generates strings of mark times and space times that are consistent with a common protocol. When the script block operates on the first data, for example, a first string of mark times and space times is output that is consistent with the common protocol. When the script block operates on the second data, for example, a second string of mark times and space times is output that is consistent with the common protocol. The common protocol may, for example, be a common protocol for encoding digital bits, wherein the first data is a first keycode and where the second data is a second keycode. The first string of mark times and space times is converted into a first mark/space table and a first string of timing information. The first mark/space table and the first string of timing information are then used to generate a first operational signal. The first operational signal controls a first function of an electronic consumer device corresponding to the first keycode. The second string of mark times and space times is converted into a second mark/space table and a second string of timing information. The second mark/space table and the second string of timing information are then used to generate a second operational signal. The second operational signal controls a second function of an electronic consumer device corresponding to the second keycode.

In another example of the third aspect, a microcontroller includes a memory and a script interpreter. A first upper-level script, a second upper-level script and a script block are stored in the memory. First data is associated with the first upper-level script, and second data is associated with the second upper-level script. The script block implements a common protocol. When the script block is called by the first upper-level script and the second upper-level script, the script interpreter interprets the script block, and both the first data and the second data are output in accordance with the common protocol. No compiler or operating system is present on the microcontroller.

In a fourth aspect, a machine code application programming interface (API) is loaded onto a remote hardware platform to enable new functionality. The API is an amount of machine code that is loaded into the remote hardware platform such that the machine code API can be called by a script instruction interpretable by a script interpreter.

In one example of the fourth aspect, a first device has a first eight-bit processor with a first instruction set. A first script is stored in the first device. A first script interpreter executes on the first eight-bit processor and interprets the first script. An amount of machine code that is executable on the first eight-bit processor is loaded into the first device after the first script interpreter has already been executing on the first eight-bit processor. The first script calls the amount of machine code such that the amount of machine code is executed by the first eight-bit processor. A second device has a second eight-bit processor with a second instruction set different from the first instruction set. A second script interpreter executes on the second eight-bit processor. A second script identical to the first script is interpreted by the second script interpreter. The second script includes the same script instruction identical to the script instruction in the first script that resulted in the call of the amount of machine code that was executed by the first eight-bit processor. Interpreting on the second device of this identical script instruction, however, results in a call to an amount of machine code that is executed by the second eight-bit processor. This amount of machine code is coded in accordance with the second instruction set.

In another example of the fourth aspect, an integrated circuit includes an eight-bit processor, a memory that stores a script interpreter, and a loader functionality. The loader functionality is operable to cause an amount of machine code to be loaded into the integrated circuit. The script interpreter interprets in accordance with a scripting language. Interpreting an instruction in the scripting language causes execution by the processor of the amount of machine code.

In a fifth aspect, an eight-bit, register-based virtual machine is realized on an eight-bit processor platform. The eight-bit processor platform has no more than 64 kilobytes of program memory and no more than 4 kilobytes of random access memory (RAM). In one embodiment, the eight-bit processor platform is a remote control device for controlling an electronic consumer device or a home appliance. In another embodiment, the eight-bit processor platform performs monitoring and/or control functions in a larger device.

In one example of the fifth aspect, a remote control device for controlling an electronic consumer device includes a transmitter, an eight-bit processor and a script. The eight-bit processor executes a set of instructions that implements an eight-bit virtual machine, which in turn interprets the script. Interpreting the script causes an operational signal to be transmitted from the transmitter. The electronic consumer device is responsive to a command code communicated in the operational signal.

In another example of the fifth aspect, a virtual machine is realized on a remote control device. The virtual machine is an eight-bit, register-based virtual machine. A script is downloaded into the remote control device and interpreted. The remote control device has no operating system. Interpreting the script causes an operational signal to be transmitted from the remote control device. In one embodiment, the remote control device has an infrared transmitter, and the operational signal is an infrared signal.

In a sixth aspect, a script is sent via a secure communication link to a virtual machine for immediate execution. A script interpreter executes on an eight-bit microcontroller. A script instruction is received onto the eight-bit microcontroller from an external source via the secure communication link. The external source is authenticated prior to allowing the script instruction to be interpreted. Individual script instructions may be sent to the virtual machine and interpreted, one by one, in this fashion over the secure communication link. The individual script instructions, when interpreted, may cause information stored on the virtual machine to be output over the secure communication link. The reporting of information in this fashion may be used in debugging or in monitoring and control applications.

In one example of the sixth aspect, an apparatus includes an eight-bit processor, a memory and an execute script direct functionality. A script interpreter and a script are stored in the memory. The script interpreter executes on the eight-bit processor and interprets the script. A script instruction is received onto the apparatus when the script is being interpreted. The execute script direct functionality causes the script instruction to be interpreted by the script interpreter.

In a seventh aspect, a script interpreter interprets a first script instruction and causes the interpreting to jump from a first location in a script to a second location in the script. The first script instruction is disposed at the first location, and a second script instruction is disposed at the second location. The second location is identified by the first script instruction. After the jump the script interpreter sequentially interprets a predetermined number of script instructions, starting with and including the second script instruction. After the predetermined number of script instructions has been interpreted, the interpreting of script instructions automatically returns to a third location. The third location is the location that immediately follows the first location.

In one example of the seventh aspect, a first portion of script is provided, which causes a device to output an operational signal in accordance with a first protocol. The first portion of script contains a first "call relative counted" (CLRC) script instruction. A second portion of script is provided, which causes the device to output a second operational signal in accordance with a second protocol. The second portion of script contains a second CLRC script instruction. The first CLRC script instruction causes a first jump to a third portion of script such that a first predetermined number of script instructions of the third portion are interpreted. The first CLRC script instruction then automatically causes a first return jump back to the first portion. The second CLRC script instruction causes a second jump to the third portion of script such that a second predetermined number of script instructions of the third portion are interpreted. The second CLRC script instruction then automatically causes a second return jump back to the second portion.

In another example of the seventh aspect, a virtual machine includes a memory and a means for interpreting a CLRC script instruction. The means includes an eight-bit processor. When the means is interpreting script instructions, the CLRC script instruction is communicated to the virtual machine across a communication link. After the CLRC script instruction is communicated to the virtual machine, the virtual machine suspends any other script interpreting and immediately interprets the CLRC script instruction.

Other embodiments and advantages are described in the detailed description below. This summary does not purport to define the invention. The invention is defined by the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, where like numerals indicate like components, illustrate embodiments of the invention.

FIG. 1 is a schematic diagram that shows a remote control device, as well as the structure of software executing on the remote control device.

FIG. 2 illustrates operation of the IR transmission engine of FIG. 1 in connection with a mark/space table and a string of timing information.

FIG. 3 illustrates the significance of each bit of a mark/space pair byte.

FIG. 4 illustrates the significance of each bit of a control byte.

FIG. 5 illustrates an example of a waveform of an operational signal, as well as the mark/space table and the string of timing information used to generate that operational signal.

FIGS. 6-11 set forth a script that is interpreted by the virtual machine of FIG. 1.

FIG. 12 is a diagram that sets forth the global registers of the virtual machine of FIG. 1.

FIG. 13 is a diagram setting forth the opcodes of the script instructions interpreted by the virtual machine of FIG. 1.

FIGS. 14-16 illustrate waveforms of operational signals, as well as the mark/space tables and the corresponding string of timing information used to generate those operational signals.

DETAILED DESCRIPTION

Reference will now be made in detail to some embodiments of the invention, examples of which are illustrated in the accompanying drawings.

FIG. 1 is a schematic diagram that shows a remote control device 1, as well as the structure of software 2 executing on the remote control device. Remote control device 1 includes a microcontroller or other processor that executes code stored in a memory on remote control device 1. Software 2 in combination with hardware of remote control device 1 implements several application programming interface (API) functions. An API portion of software 2 includes a level one builder functionality 3, a key-scanning API functionality 4, an infrared (IR) transmission engine functionality 5, an IR receiver functionality 6, a loader API functionality 7, and an execute script direct functionality 8.

When a key on remote control device 1 is pressed, information indicative of which key was pressed is reported by key scanning functionality 4 into an associated one of global registers 9. Key scanning functionality 4 is a combination of software and hardware. Operation of key scanning functionality 4 is explained in further detail below. In one example, IR transmission engine functionality 5 is a software subroutine executed by the microcontroller of remote control device 1.

A script 10 is stored in memory on remote control device 1. Script 10 is interpreted instruction-by-instruction by script interpreter 11. Script 10 may, for example, determine which key was pressed by reading the contents of the global register into which key scanning functionality 4 placed the information indicative of which key was pressed. Interpretation of script 10 may also, for example, cause remote control device 1 to transmit a keycode of a codeset from an IR transmitter 12. The keycode is modulated onto an IR carrier signal and is transmitted in the form of an operational signal 13. Digital values are modulated onto operational signal 13 using a modulation technique defined by the particular transmission protocol used by the codeset that controls an electronic consumer device (for example, a television). The IR operational signal 13 is received by the electronic consumer device and causes the electronic consumer device to perform a desired function. The keycode may, for example, be a POWER-ON code that causes the television to turn on.

To cause remote control device 1 to output operational signal 13, script 10 calls functions of the level one builder 3 such that level one builder 3 builds a mark/space table and generates a string of timing information. The string of timing information is a string of N-bit indices that point to specific locations in the mark/space table and thereby designate the durations and sequence of marks and spaces in operational signal 13. The mark/space table and the string of timing information contain information on how to generate operational signal 13. In some types of encoding, digital ones and zeros are characterized by pairs of marks and spaces. One mark/space pair represents a digital zero, and another mark/space pair represents a digital one. In these encoding types, a space always follows a mark. For each codeset, the marks and spaces for each digital pair have predefined lengths. For example, for pulse position modulation A (PPMA), the mark length for a digital zero and a digital one is the same, but the space lengths are different. For pulse width modulation B (PWMB), the combined length of the pulse and space for both a digital zero and a digital one are the same, but the length of the pulse and space are different.

In other encoding types, one space can be followed by another space, or a mark is followed by another mark. For PPMC encoding, a digital one is represented by a mark/space pair, but a digital zero is represented by only a space. Thus, a space can follow another space. With Manchester encoding, a mark can follow another mark, and a space can follow another space. For encoding types where one mark can follow another mark, and one space can follow another space, level one builder 3 builds a mark/space table that also contains the durations of all combined mark/mark and space/space lengths used by the keycode. It is even possible that a keycode would contain three or more adjacent marks or spaces in some encoding types.

Once the mark/space table and the string of timing information is created, script 10 calls a SEND function on IR transmission engine 5. IR transmission engine 5 is a combination of software and hardware. IR transmission engine 5 retrieves the information in the mark/space table and the string of timing information and uses it to generate operational signal 13. Thus, the API portion of software 2 together with the script interpreter 11 function as a signal engine to generate operational signal 13.

In addition to transmitting signals, remote control device 1 can also receive an incoming communication 14 via IR receiver 15. Information in communication 14 is received and decoded by IR receiver functionality 6. This may, for example, involve synchronizing onto a bit stream in the communication, and then clocking a sequence of payload bits into a register, and then performing error detection on the payload bits. If the payload bits meet the error detection test, then the IR receiver functionality 6 writes the payload bits in form of bytes into a predetermined location in memory known to loader 7. Script 10 and loader 7 can access the payload bits to determine what information was contained in the incoming communication 12 and to take appropriate action.

Level one builder 3, key scanning functionality 4, infrared (IR) transmission engine 5, IR receiver functionality 6, loader 7, execute script direct functionality 8, script interpreter 11, and the associated underlying hardware platform together form a virtual machine 16. Script 10 can execute on this virtual machine. The very same script 10 can execute on a different platform involving a different microcontroller or processor and a different memory structure provided that the API portion of software 2 (the API functions of blocks 3-8) are provided to the other platform. A hardware platform can be customized by loading API functionality not initially on the device via a bidirectional link. In this way, a signal engine for generating operational signal 13 can be sent to a remote hardware platform, such as a remote control device or a cellular phone, by transmitting the API portion of software 2 together with the script interpreter 11 to the remote hardware platform.

Mark/Space Table and String of Timing Information:

FIG. 2 illustrates operation of IR transmission engine 5 in connection with a mark/space table 20 and a string of timing information 21. The top row of the mark space table contains a list of up to seven mark times. These mark times are designated MARK TIME #0 through MARK TIME #6 in the diagram. Each mark time value is a sixteen bit value, for which each count increment represents a fixed amount of time. The count increment for a mark time is two microseconds. Thus, the longest mark time represented by a mark time value is 2.sup.16.times.2 microseconds. Not all of the mark time locations in the table must be filled. If there is only one mark time, then this value is placed in the MARK TIME #0 location. If there are two mark times, then the two values are placed in the MARK TIME #0 and MARK TIME #1 locations, and so forth.

The last entry in the upper row of mark/space table 20 contains sixteen bits of carrier modulation information. The first eight bits stores a modulation "on count" value M-ON, whereas the second eight bits stores a modulation "off count" value M-OFF. If the marks in the operational signal to be generated are modulated with a modulation signal (other than the IR carrier signal), then the M-ON value indicates the length of time (in 0.5 microsecond increments) that the modulation signal is a digital high during a first part of a period of the modulation signal, whereas the M-OFF value indicates the length of time (in 0.5 microsecond increments) that the modulation signal is a digital low during a second part of that one period of the modulation signal.

The bottom row of mark/space table 20 contains a list of up to eight space times. These space times are designated SPACE TIME #0 through SPACE TIME #7 in the diagram. Each space time value is a sixteen bit value. The count increment of a space time is two microseconds. Not all of the space time locations in the table must be filled. If there is only one space time, then this value is placed in the SPACE TIME #0 location. If there are two space times, then the two values are placed in the SPACE TIME #0 and SPACE TIME #1 locations, and so forth.

The string of timing information 21 is a sequence of eight bit values. Such a string can be long or short. In the illustrated example, each eight-bit value (a byte) is either a mark/space pair byte or a control byte.

FIG. 3 illustrates the significance of each bit of a mark/space pair byte. The first bit is a designator bit. The designator bit of the byte being a zero indicates that the byte is a mark/space pair. Bits M2, M1 and M0 are a three-bit index that points to one of the mark times in mark/space table 20. Similarly, bits S2, S1 and S0 are a three-bit index that points to one of the space times in mark/space table 20. For example, if S2=0, S1=1 and S0=0, then the three-bit index points to SPACE TIME #2.

FIG. 4 illustrates the significance of each bit of a control byte. The first designator bit of the byte being a "1" indicates that the byte is a control byte. If the REP bit is a "1", then the control byte marks the end of a repeat frame. The number of times the repeat frame is to be repeated is indicated by a three-bit repeat number composed of bits R2, R1 and R0. If the end-of-frame bit (EOF) is set, then the byte marks the end of a frame. If the end-of-transmission bit (EOT) is set, then the byte marks the end of the string of timing information.

Mark/space table 20 together with string of timing information 21 is a particularly compact way of storing the information used to generate operational signal 13. The number of bits used to describe each mark time and space time in string of timing information 21 can be reduced to a small number, in this case three bits, that distinguishes from among a limited number of entries in mark/space table 20. Each of those entries can in turn describe a mark time or a space time with the accuracy of more bits, in this case sixteen bits. If a mark time in a string of timing information were to be described with a large number of bits, the large number of bits would be used each time the particular mark occurs in the operational signal. The same applies for a space time described by a large number of bits. Where a mark or a space occurs many times in an operational signal, a first string of timing information that describes the operational signal without referring to a mark/space table will consist of more bits than the combined number of bits in a mark/space table and a second string of timing information that refers to the table.

IR Transmission Engine:

IR transmission engine 5 uses the information in mark/space table 20 and the string of timing information 21 to generate an operational signal as follows. The timing engine first reads the modulation information MOD INFO stored in the mark/space table 20. If the bits in the operational signal are to be modulated, then the M-ON and M-OFF values stored there


Free Web Sudoku Puzzles.
Solve with your browser.
2 4       9 3    
  8   6 3        
  7         9    
    8     5 4 7  
      7   6      
  2 5 1     8    
    4         2  
        6 7   9  
    7 3       5 8
What is it?



Add Your Site · Terms Of Service · Privacy Policy


DISCLAIMER
Linkgrinder is a free service that searches the Internet and indexes all files found so that you may search quickly and easily for shared files. These files are created and made available individually by users whose identity we are not aware of and who we have no control over. In essence we function like a search engine tool; these files ARE NOT STORED OR SERVED BY OUR NETWORK. We are not responsible for any materials obtained by using our service. We do not monitor any of the contents of these files. These files may contain viruses, illegal materials, materials inappropriate for minors, offensive files and the like. BY USING OUR SERVICE, YOU ASSUME FULL RESPONSIBILITY FOR DOWNLOADING THESE MATERIALS AND WILL INDEMNIFY US FOR ANY DAMAGES THAT MAY BE INCURRED.

For More Specific Information VIEW OUR TERMS OF SERVICE.

Thank you and Enjoy!