Language selection

Search

Patent 2343989 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent Application: (11) CA 2343989
(54) English Title: AUDIENCE MONITORING AND REPORTING SYSTEM
(54) French Title: SYSTEME DE SURVEILLANCE DE L'AUDIENCE ET D'ETABLISSEMENT DE RAPPORTS
Status: Deemed Abandoned and Beyond the Period of Reinstatement - Pending Response to Notice of Disregarded Communication
Bibliographic Data
(51) International Patent Classification (IPC):
  • H04H 60/33 (2009.01)
  • H04N 5/44 (2011.01)
  • H04N 21/258 (2011.01)
(72) Inventors :
  • QAYYUM, HAMID, M. (United States of America)
  • LEHNER, STEPHEN W. (United States of America)
(73) Owners :
  • MILLENNIUM NETWORKS, INC
(71) Applicants :
  • MILLENNIUM NETWORKS, INC (United States of America)
(74) Agent: GOWLING WLG (CANADA) LLP
(74) Associate agent:
(45) Issued:
(86) PCT Filing Date: 1999-09-14
(87) Open to Public Inspection: 2000-03-23
Availability of licence: N/A
Dedicated to the Public: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): Yes
(86) PCT Filing Number: PCT/US1999/021056
(87) International Publication Number: WO 2000016552
(85) National Entry: 2001-03-13

(30) Application Priority Data:
Application No. Country/Territory Date
09/153,125 (United States of America) 1998-09-15

Abstracts

English Abstract


An apparatus and method are disclosed for monitoring and reporting TV habits
of TV viewers. In accordance with the invention, information representative of
TV habits is monitored and stored within a TV (12) or set top box (16),
controlled from a remote location such as a cable service provider location.
Control signals may be communicated to the set top box (16) or TV (12) via RF
or electrical connections, such as CATV wire (10). The information may be
reported through the remote location by the same or alternate means, such as
in an unused portion of the video signal bandwidth or, telephone line (11), or
video frequency modem (30).


French Abstract

L'invention concerne un appareil et un procédé pour surveiller les habitudes des téléspectateurs et en faire rapport. Selon cette invention, les informations caractérisant les habitudes des téléspectateurs sont surveillées et stockées dans un poste de télévision (12) ou un décodeur (16) commandé depuis un site distant tel que les locaux du prestataire de service par câble. Des signaux de commande peuvent être envoyés au décodeur (16) ou au poste de télévision (12) au moyen de connexions radiofréquence ou électriques telles qu'un câble de télévision (10). Le rapport sur ces informations peut être envoyé au site distant par les mêmes moyens ou autrement, par exemple, en employant une partie non utilisée de la bande de fréquence pour signaux vidéo, une ligne téléphonique (11) ou un modem fréquence vidéo (30).

Claims

Note: Claims are shown in the official language in which they were submitted.


-38-
WHAT IS CLAIMED IS:
1. A method for monitoring television viewing
habits of a television viewer, the method comprising the
steps of:
a) storing information representative of
television viewing habits in one of a television and -
a set top box; and
b) transmitting the stored information to a
remote location.
2. The method as recited in Claim 1, wherein the
step of storing information representative of television
viewing habits comprises storing information
representative of television viewing habits in the
television.
3. The method as recited in Claim 1, wherein the
step of storing information representative of television
viewing habits comprises storing information
representative of television viewing habits in the set
top box.
4. The method as recited in Claim 1, wherein the
step of storing information representative of television
viewing habits comprises storing an identification code,
time, channel, and channel source.
5. The-method as recited in Claim 1, wherein the
step of storing information representative of television
viewing habits comprises storing the information in a
non-volatile memory.
6. The method as recited in Claim 1, wherein the
step of storing information representative of television
viewing habits comprising storing only channel
information for channels which are watched for a
predetermined length of time.
7. The method as recited in Claim 1, wherein the
step of transmitting the stored information comprises
transmitting the stored information periodically.
8. The method as recited in Claim 1, wherein the
step of transmitting the stored information comprises

-39-
transmitting the stored information periodically at a
predetermined time.
9. The method as recited in Claim 1, wherein the
step of transmitting the stored information comprises
transmitting the stored information when requested to do
so by a remote host.
10. The method as recited in Claim 1, wherein the
step of transmitting the stored information comprises
transmitting the stored information via a bi-directional
cable television cable.
11. The method as recited in Claim 1, wherein the
step of transmitting the stored information comprises
transmitting the stored information via telephone.
12. The method as recited in Claim 1, wherein the
step of transmitting the stored information comprises
transmitting the stored information via a radio modem.
13. The method as recited in Claim 1, wherein the
step of transmitting the stored information to a remote
location comprises transmitting the stored information to
an Internet web site.
14. A set top box for providing cable television
service and for monitoring television viewing habits of
television viewers, the set top box comprising:
a) an input port for receiving a plurality of
cable television channels;
b) an output port for communicating at least
one cable television channel to a television;
c) a non-volatile memory for storing
instructions for performing monitoring of television
viewing habits;
d) a volatile memory for storing information
representative of television viewing habits;
e) monitoring software configured to monitor
which channel is being viewed according to
instructions stored in the non-volatile memory and
for storing information representative of which

-40-
channel is being viewed and at what time in the
volatile memory.
15. The set top box as recited in Claim 14, further
comprising a cable data output circuit for transmitting
stored data representative of television viewing habits
to a remote location via a cable television cable.
16. The set top box as recited in Claim 14, further
comprising a telephone data output circuit for
transmitting stored data representative of television
viewing habits to a remote location via telephone.
17. The set top box as recited in Claim 14, further
comprising a radio modem for transmitting stored data
representative of television viewing habits to a remote
location via radio.
18. The set top box as recited in Claim 14, wherein
the first memory comprises a flash memory.
19. The set top box as recited in Claim 14, wherein
the second memory comprises a non-volatile memory.
20. A television monitoring and reporting system,
disposed within a television, which monitors and reports
viewing habits of television viewers, the system
comprising:
a) a television input port for receiving a
plurality of cable television channels;
b) a first memory disposed in the television
for storing instructions for performing monitoring
of television viewing habits;
c) a second memory disposed in the television
for storing information representative of television
viewing habits.
d) a monitoring circuit disposed in the
television and configured to monitor which channel
is being viewed according to instructions stored in
the first memory and for storing information
representative of which channel is being viewed and
at what time in the second memory.

-41-
21. The system as recited in Claim 20, further
comprising a cable data output circuit for transmitting
stored data representative of television viewing habits
to a remote location via a cable television cable.
22. The system as recited in Claim 20, further
comprising a telephone data output circuit for
transmitting stored data representative of television
viewing habits to a remote location via telephone.
23. The system as recited in Claim 20, further
comprising a radio modem in electrical communication with
the television for transmitting stored data
representative of television viewing habits to a remote
location via radio.
24. The system as recited in Claim 20, wherein the
first memory comprises a flash memory.
25. The system as recited in Claim 20, wherein the
second memory comprises a non-volatile memory.
26. A method for monitoring and reporting
television viewing habits of the television user
comprising:
communicating set of instructions in a
television monitoring instructions to a television
set top box by imbedding the instructions in an
unused portion of a video signal communicated to the
set top box by a cable television connector from a
cable service connector remote from the set top box;
generating television viewing data in response
to the instructions;
storing the television viewing data in a memory
disposed within the set top box; and
uploading the stored data to the cable service
location via the cable television connector.
27. The method as recited in Claim 26 further
comprising the step of communicating an upload control
signal to the cable set top box via the cable television
connector, the upload control signals being operative to

-42-
cause the stored viewing data to be uploaded to the cable
service location.
28. The method as recited in Claim 27 wherein the
control signals are communicated to the cable set top box
in a first unused portion of a video signal band width
provided for a video signal communicated from the cable
service location to the set top box.
29. The method as recited in Claim 28 wherein the
stored data is communicated from the cable set top box in
a second unused portion of the video signal bandwidth.
30. The method as recited in Claim 28 wherein the
stored data is communicated from the cable set top box in
the first unused portion of the video signal bandwidth,
when no control signals are being communicated to the set
top box.

Description

Note: Descriptions are shown in the official language in which they were submitted.


CA 02343989 2001-03-13
WO 00116552 PCT/US99121056
-2-
AUDIENCE MONITORING AND REPORTING SYSTEM
Field of the Invention
The present invention relates generally to methods
for monitoring the television viewing habits of
television viewers and more particularly to a method for-"'
monitoring television viewing habits which comprises
storing information representative of television viewing
habits in either a television or a set top box and
subsequently transmitting the stored information to a
remote location.
Background of the Invention
Monitoring the television viewing habits of
television viewers provides information which is valuable
I5 to cable service providers, television programmers,
advertisers, and the like. Cable service providers and
television programmers use information regarding
television viewing habits to define programming. Thus,
television programs which are widely viewed may be
rescheduled for better viewing times, while television
programs that are less well viewed may be rescheduled for
periods of time when fewer viewers are watching
television, or may be removed.
Advertisers need to know how many people are viewing
different television programs, to determine how their
advertising money is best spent. Of course, an
advertiser will be willing to pay more for advertising
time during a very popular television program, than far
the same amount of time during less well watched
television programs.
As such, it is well accepted that information
relating to the viewing habits of television viewers is
valuable and should be collected. One prior art attempt
to collect such information regarding the viewing habits
of television viewers has been to provide an electronic
device, which typically sits atop a television, to record
which channel is being watched and at what time the

CA 02343989 2001-03-13
WO 00/16552 PCT/US99/2I056
_2_
channel is being watched. Such electronic devices may be
wired either directly into a television set, or may work
in cooperation with a cable service provider set top box.
As those skilled in the art will appreciate, the
cable service provider set top box is used to receive a
plurality of channels provided by the cable service -
provider to be viewed at any given time. Thus, it is a
comparatively simple matter to provide electrical
communication between the set top box and recording
device which records the time and the channel selected by
the set top box.
However, one deficiency associated with such prior
art recording devices is that it is typically necessary
for a representative of the data collecting entity to
actually visit each house wherein such data is being
recorded; so as to download the data collected by the
recording device.
According to one prior art attempt to mitigate the
problems associated with such manual collection of data,
a modem is used to transmit the recorded data via
telephone to the intended recipient.
According to another prior art attempt to mitigate
the problems associated with such manual data collection,
a radio transmitter is used to transmit the recorded
data.
Another problem associated with the collection of
data regarding the television viewing habits of
television viewers is the requirement for a separate
electronic device for collecting and storing the time and
channel data. Not only does the use of such an
additional device require delivery and labor intensive
installation, but it is also frequently considered
undesirable to have another device sitting atop or near
their television.
Typically, the television set and/or the surrounding
area will already be cluttered with various electronic
devices such as a VCR, a DVD player, stereo equipment, as

CA 02343989 2001-03-13
WO 00/16552 PCT/I3S99/21056
-3-
well as many other electronic devices which are
frequently used so as to provide entertainment and/or
enhance viewing. Thus, the addition of another
electronic device, particularly one which does not
5 provide any direct enhancement of television viewing, is
frequently undesirable.
In view of the forgoing, it is desirable to provide
a method for monitoring the television viewing habits of
television viewers which does not require installation of
l0 an additional electronic device on or near television
viewers television, and which does not require the
collection of data recorded thereby by a person visiting
the home of the viewer.
15 Summary of the Invention
The present invention specifically addresses and
alleviates the above-mentioned deficiencies associated
with the prior art. More particularly, the present
invention comprises a method and apparatus for monitoring
20 television viewing habits of a television viewer. In
accordance with the present invention information
representative of television viewing habits is stored
within either a television or a set top box, such as
those provided by cable television service providers for
25 selecting the channel to be viewed. The information
representative of the television viewing habits is
systematically transmitted to a remote location, such as
to a cable service provider, for processing and
distribution thereof.
30 As those skilled in the art will appreciate, both
contemporary set top boxes and televisions utilize
microprocessor control. Such contemporary set top boxes
and televisions comprise a memory which stores
instructions for the microprocessor. It will further be
35 appreciated that such memories are typically selected so
as to have excess capacity in order to facilitate future
changes and upgrades in the instruction set.

CA 02343989 2001-03-13
WO 00/16552 PCT/US99/21056
-4-
According to the preferred embodiment of the present
invention, instructions for monitoring viewing habits and
for storing the results may be added to the existing
instruction set stored within the set top box
5 microprocessor memory, or in memory space within the
television.
Those skilled in the art will further appreciate
that such memories frequently comprise flash memories,
that may be changed or updated easily. According to the
10 preferred embodiment of the present invention, such flash
memories are conffigured such that they may be remotely
updated, via an unused portion of the video signal which
the cable service provider uses to bring cable service to
the television viewer. Alternatively, such flash
15 memories may be changed or upgraded via telephone
connection. In this manner, instructions as required to
monitor and record television viewing habits may be
stored in the flash memory, and updated merely, by
transmitting instruction set up from the cable service
20 provider. or other remote location.
As those skilled in the art will further appreciate,
some cable television 'service providers provide bi-
directional service, wherein bi-directional communication
may be utilized by the television viewer for various
25 different transactions, such as buying food or other
products; transferring funds, and/or Internet access.
Where cable Internet access is ,provided, instructions
necessary to monitor and record television viewing
information may be communicated to the desired set top
30 box and/or television via the Internet, from any
convenient location.
Further, when such Internet service is provided, the
results of television viewer habit monitoring may be
similarly downloaded via the Internet to any convenient
35 location. Thus, the results of such television viewer
habit monitoring may be transferred to a web page, if
desired.

CA 02343989 2001-03-13
WO 00/16552 PCT/US99/2105b
-5-
Information representative of television viewing
habits typically comprise code, time, channel, and
channel source information. Tdentification codes
identify the particular television viewer whose habits
5 are being monitored. That is, the identification code
which is associated with the set top box or television, -
for a particular television viewer. Time information is
typically indicative of the time at which channel is
changed, so as to facilitate generation of a report which
10 shows times at which particular channels axe being
viewed. The channel information identifies that channel
which is being viewed by the television viewer. The
channel source code is representative of where the
television signal originates from, e.g., broadcast,
15 cable, etc.
According to one embodiment of the present
invention, information representative of television
viewing habits may be stored in volatile memory.
However, in another embodiment the information may be
20 stored in non-volatile memory. In this manner, the
information is maintained in the event of a power outage
or if the set top box or television is unplugged.
According to one preferred embodiment of the present
invention, only channel information for channels which
25 are watched for a predetermined length of time is
recorded. Thus, when the television viewer is rapidly
changing channels, this information is not stored. The
information regarding channels being viewed is preferably
only stored when the channel has remained constant for a
30 predetermined length of time, e.g., one minute.
The stored information is preferably transmitted
periodically to a remote location. Transmission may be
preformed at a predetermined time each day, or after a
predetermined interval of time. Thus, for example, the
35 stored information may be transmitted at 2:00 A.M, each
day. Alternatively, the information may be transmitted
after each 24 hours of television viewing.

CA 02343989 2001-03-13
WO 00/16552 PCT/US99l21056
In one embodiment, the stared information is
downloaded when the memory in which the stored
information resides nears its storage capacity. In this
manner, the memory is transmitted and cleaned prior to
5 becoming full, so as to prevent any loss of data due to
memory overload. In another embodiment, stored -
information is transmitted to the remote location only
when requested by a remote host. The remote host may
perform a polling procedure so as to request data from a
10 plurality of such memories, sequentially, or in some
other ordered manner.
According to the preferred embodiment of the present
invention, the stored information is downloaded to a
remote location via bi-directional cable television
15 cable. Alternatively, the stored information may be
transferred via telephone. A radio modem may be utilized
to transmit the stored information to the remote
location, such as a centrally located cell site which
receives information from a plurality of home radio
20 modems.
Thus, according to the present invention, set top
box is provided for facilitating cable television service
and for monitoring the television viewing habits of
television viewers. The set tap box comprises an input
25 port far receiving a plurality of cable television
channels; and output port for communicating at least one
television channel to television; a non-volatile memory
for storing instructions for monitoring of television
viewing; a volatile memory for storing information
30 representative of television viewing; and monitoring
software configured to monitor which channel is being
viewed according to instruction stored in the non-
volatile memory and for storing information
representative of which channel is being viewed and at
35 which time, in the volatile memory.-
A data output circuit of the set top box transmits
stored data representative of television viewing habits

CA 02343989 2001-03-13
WO 00l165S2 PCTIUS99/2I056
to the remote location via the cable television cable.
Of course, this embodiment of the present invention
requires that the television cable be configured for bi-
directional communications.
5 Alternatively, particularly in the event that the
cable television cable is not configured for bi-
directional communications, a telephone data output
circuit transmits the stored data to the remote location
via telephone. In a further option, viewer data may be
10 transmitted to the remote location via a radio, such as
a radio modem.
Non-volatile memory preferably comprises a flash
memory, such that it may be changed and/or upgraded
easily: Such a flash memory may be changed and/or
15 upgraded via the television cable. The volatile memory
preferably comprises RAM (Random Access Memory).
According to a second embodiment of the present
invention the monitoring and storage of the viewer data
is performed within the television, rather than within a
20 set top box. The circuitry and methodology of the second
embodiment is similar to that of the first embodiment.
Rather than sensing selection of channels at the set top
box; the sensing is performed within the television
itself. The television comprises an input port for
25 receiving a plurality of television signals (cable and/or
analog or digital broadcast). The second embodiment of
the present is particularly useful when cable ready
televisions are utilized. As those skilled in the art
will appreciate, such cable ready televisions do not
30 require a set top box. As in the first embodiment, non-
volatile memory is utilized for storing instructions for
performing monitoring of television viewing and volatile
memory is utilized for storing information representative
of television viewing habits. Again, software is used to
35 monitor which channel is being viewed according to the
instructions stored in the non-volatile memory and

CA 02343989 2001-03-13
WO 00/16552 PCTIUS99/21056
_8_
volatile memory stores information representative of
which channel is being viewed and at what time.
As in the first embodiment of the present invention,
stored data representative of television viewing habits
5 is transmitted to the remote location via either a cable
television cable, a television data output circuit, or.--
via radio, e.g., a radio modem.
Thus, according to the present invention, need for
a separate, stand alone electronic device, as well as the
10 disadvantages associated therewith, are voided. Viewer
monitoring takes place in either the set top box or the
television and may be performed merely by loading the
instruction set into a memory of the television or the
set top box and causing the instructions to execute so as
15 to facilitate such monitoring, storing and down-loading.
Instruction sets may be loaded into the television or the
set top box via the cable television cable, telephone
line, or via a radio modem, if desired.
These, as well as other advantages of the present
20 invention will be more apparent from the following
description and the drawings. Note that changes in the
specific structure shown and described may be made within
the scope of the claims without departing from the spirit
of the invention.
Brief Description o~ the Drawings
Figure Z is a block diagram of a first embodiment of
the present invention wherein the television viewing
habits are monitored via the set top box, such as those
commonly used by cable service providers;
Figure 2 is a block diagram of the set top box of
Figure 1, showing use of the cable television cable for
transmitting monitoring results to a remote location;
Figure 3 is a block diagram of the set top box of
Figure 1, showing use of the telephone line for
transmitting monitoring results to a remote location;
Figure 4 is a block diagram of the set top box of

CA 02343989 2001-03-13
WO 00/16552 PCT/US99/21056
-9-
Figure 1, showing use of the radio modem for transmitting
monitoring results to a remote location;
Figure 5 is a block diagram of the second embodiment
of the present invention wherein monitoring of viewing
habits is performed within the television;
Figure 6 is a block diagram of the television of -'
Figure 5, showing use of the cable television cable for
transmitting monitoring results to a remote location;
Figure 7 is a block diagram of the television of
Figure 5, showing use of the telephone line for
transmitting monitoring. results to a remote location;
Figure 8 is a block diagram of the television of
Figure 5 , showing use of the radio modem for transmitting
monitoring results to a remote location;
Figure 9 is a block diagram illustrating the basic
structure of a system for generating, receiving and
processing audience viewing information; and,
Figure 10 is an illustration of a redundant system
such as that shown at Figure 9.
Figure 11 is an illustration of another system level
embodiment of the invention wherein control signals,
video signals, and audience viewing information is
communicated via the direct connection with the cable
service provider.
Deta~.led Description of the Preferred Invention
The detailed description set forth below in
connection with the appended drawings is intended as a
description of presently preferred embodiments of the
invention, and is not intended to represent the only
forms in which the present invention may be constructed
or utilized. The invention sets forth the functions and
the sequence of steps for constructing and operating the
invention in connection with the illustrated embodiments.
It is to be understood, however, that the same or
equivalent functions may be accomplished by different

CA 02343989 2001-03-13
WO 00116552 PCT/US99I21056
~10-
embodiments that are also intended to be encompassed
within the spirit and scope of the invention:
The audience engine of the present invention is
illustrated in Figures 1-8 which depict two presently
5 preferred embodiments thereof.
Referring now to Figure 1, according to the first -
embodiment of the preferred invention cable 10 from the
cable television provider provides a plurality of
channels to set top box 16 via an input port 14 thereof.
10 The set top box 16 operates according to well known
principles to facilitate the selection by the television
viewer, of a desired channel which is then provided via
output port 15 though television 12.
According to the first embodiment of the present
15 invention, the monitoring of television viewing habits is
performed within the set tap box 16 and facilitates such
monitoring and communicating back to the cable television
provider, or any other desired remote location (remote
from the location of the television viewer) . The set top
20 box 16 may be implemented as a programmable cable
controller, such as the CFT 2200 or DCT series controller
marketed by General Instruments. When programmed in
accordance with the present invention the monitored
results may be communicated to the remote location via
25 various means such as via the cable television cable 10,
via a telephone line 11 (Figure 3), and/or via a radio
modem 30 (Figure 4), as discussed in detail below. Cable
may be implemented as a bidirectional cable such that
commands to the set top box may be communicated in a
30 first unused portion of the video signal, and data
downloads may proceed in the same or a separate unused
portion of the video signal bandwidth. Use of-telephone
lines or modems may similarly proceed in a bidirectional
manner, or may proceed in a single direction with the
35 cable 10 providing the second communication path.
Referring now to Figure 2, the set top box 16 '
comprises a channel selector 18 which is utilized

CA 02343989 2001-03-13
WO 00/16552 PCT/US99/21056
-11-
according to well known principles to facilitate the
selection of a desired one of the plurality of channels
provided by the cable television cable 10 to the
television 12.
5 According to the present invention a programmable
monitoring circuit 20 is disposed in communication with -
the channel selector 18 such that the monitoring circuit
20 recognizes changes in the channel selected by the
channel selector 18. The monitoring circuit 20 also
10 stores such channel changes into memory 22, along with
the time of such channel changes.
Cable data output 24 transmits data representative
of the viewer monitoring information stored in memory 22
to a desired remote location, via cable television cable
L5 10.
Referring now to Figure 3, alternatively, telephone
data output 2& is in communication with memory 22 so as
to facilitate the communication of viewing data to a
desired remote location via telephone line 11. Those
20 skilled in the art will appreciate, some set top boxes
may be manufactured so as to facilitate communication
via telephone, thereby providing a return path for
television viewers who wish to perform transactions for
paying pay-per-view services via the telephone.
25 Referring now to Figure 4, the radio modem output 28
is alternatively in communication with memory 22 so as to
facilitate the communication of viewing habit data to a
desired remote location via radio modem 30.
Referring now to Figure 5, according to a second
30 embodiment of the preferred invention cable 10 from the
cable television provider provides a plurality of
channels to television 12 via an input port 23 thereof.
The television 12 operates according to well known
principles to facilitate the selection by the television
35 viewer, of a desired channel.
According to the second embodiment of the present
invention, the monitoring of television viewing habits is

CA 02343989 2001-03-13
WO OO/i65S2 PCT/US99/21056
-12- w
performed within the television 12 and facilitates such
monitoring and communicating back to the cable television
provider, or any other desired remote location (remote
from the location of the television viewer). The
monitoring results may be communicated to the remote
location via various means such as via the cable w
television cable 10, via a telephone line 11 (Figure 7),
and/or via a radio modem 30 (Figure 8), as discussed
above.
Referring now to Figure 6, television 12 comprises
a channel selector 19 which is utilized according to well
known principles to facilitate the selection of a desired
one of the plurality of channels provided by the cable
television cable 10 to the television 12.
According to the present invention a programmable
monitoring circuit 21 is disposed in communication with
the channel selector 19 such that the monitoring circuit
21 recognizes .changes in the channel selected by the
channel selector 19. The monitoring circuit 21 also
stores such channel changes into memory 23, along with
the time of such channel changes. The monitoring circuit
may be programmed in accordance with the present
invention, a the time the television is constructed.
Alternatively the television may be constructed to select
programmable access to internal microprocessors via
cable, telephone line and/or radio modem. In the
presently preferred embodiment of the invention depicted
at Figures 5-8, programming is located in unused memory
space at the time the television is manufactured.
Cable data output 25 transmits data representative
of the viewer monitoring information stored in memory 23
to a desired remote location, via bi-directional cable
television cable 10.
Referring now to Figure 7, alternatively, telephone
data output 27 is in communication with memory 23 so as
to facilitate the communication of viewing data to a
desired remote location via telephone line 11. Those

CA 02343989 2001-03-13
WO 00/16552 PCTIUS99I21056
-13-
skilled in the art will appreciate, some televis-ions may
be manufactured so as to facilitate communication via
telephone, thereby providing a return path for television
viewers who wish to perform transactions for paying pay-
s per-view services via the telephone.
Referring now to Figure 8, the radio modem output 29 -
is alternatively in communication with memory 23 so as to
facilitate the communication of viewing habit data to a
desired remote location via radio modem 30.
10 Figure 9 is a block diagram illustrating the basic
structure of the system for generating, receiving, and
processing the audience viewing information according to
the present invention.
Figure 10 is an illustration of a redundant system
15 in conformance with that set forth at Figure 9. Tt
should be understood that the embodiment set forth at
Figure 9 and 10 are premised upon a radio modem
embodiment of the invention, such as that set forth in
connection with Figures 4 and 8. As one of skill in the
20 art will recognize, alternate embodiments of the systems
set forth at Figures 9 and 10 that may be similarly
implemented to support the embodiments of the invention
set forth at Figures 2, 3, 6 and 7.
Referring to Figure 9, a system is shown wherein
25 inbound cable information, e.g., conventional programs
and command instructions are communicated to set top box
1.6, which may be implemented as Model CFT 2200 Cable Box
marketed by General Instruments. Resident within the set
top box 16 is programming information as described above,
30 and as exemplified in the programming information set
forth below. The set tap box 16 functions to send data
that reported viewing information data to the in-home
radio modem 30, which may function to receive and
transmit data by radio frequency protocol. The base
35 station server 31 may be implemented as a personal
computer running software, such as that Sockeye set forth
in our co-pending application Serial Number 09/069,609

CA 02343989 2001-03-13
WO 00116552 PCT/US99/21056
-14-
for data communication system, assigned to the common
assignee. Base station server 31 functions to collect
data from the in-home modem 30 and to communicate that
data to a primary application server 33. The primary
application server 33 may also be implemented as a
personal computer that functions to collect data from a -
plurality of base station servers 31, and compile that
data. The primary application server 33 may be
implemented as a web server to allow users to view the
data compiled by the primary application server 33.
Figure 10 illustrates a plurality of systems, such
as that disclosed at Figure 9, coordinated to common
primary application server 33, via a plurality of base
station servers 31, interconnected to a public network
35, which may be implemented at the Internet.
Figure 11 illustrates another system level
embodiment of the invention, wherein signals to and from
the set top box 16 or implemented through cable 10,
rather than partially through radio modem 30 as
illustrated at Figure 10. As such, the system level
instrumentation of Figure 11 corresponds more to a system
level implementation of the construction set forth at
Figures 2 and 6.
According to Figure 11, signals to and from the set
top box 15 are implemented by cable links l0a and 10b,
which may be implemented as a single cable, but are shown
as separate for purposes of distinguishing upstream and
downstream signals. The downstream signals communicated
on cable l0a include control signals as well as
scrambled, modulated video signals. The upstream
signals, communicated on cable lOb, include viewer
generated viewing information, collected in accordance
with the present invention. Cables 10a and lOb are
communicated to head end 37, typically a facility
operated by the cable television provider. Signals from
the head end 37 are communicated to head end server 31
via eithernet connection 39 and controller 32.

CA 02343989 2001-03-13
WO 00/16552 PCT/US9912I05b
-15-
As will be apparent to one of ordinary skill in the
art, the implementation shown at Figure 10 and 11 are
representative of various constructions that may be
implemented within the broader aspects of the invention.
5 Tn each case the implementation permits remote control
over the operation of the audience monitoring device, and ,
downloading of audience viewing data without the need to
physically be present at the audience viewing location.
Accordingly various enhancements and modifications of the
10 invention may be implemented without departing from the
broader aspects of the invention.
Set forth below is an instruction set, known as the
audience engine, for implementing the present invention.
The Audience Engine is an application that runs within a
15 set-top cable converter, or a television e.g., General
Instrument (GI) Corporation CFT-2200. This application
will monitor the channel watching characteristics of
individuals watching television and report the
information on a return line e.g., an upstream cable
20 (FSK) channel. This information will be reported on a
repeated basis and is intended to interface a server
database such as that set forth in co-pending application
serial number 09/069,609 for Data Communication System,
assigned to the common assignee, designated as Sockeye.
25 The substance of that disclosure is incorporated by
reference herein.
Set-top Information
This section describes how to prepare the audience engine
application for the General Instruments CFT2200 set-top
30 box.
Programming the Production CFT2200
To program a production CFT2200 execute the following
steps:
The sockeye. c, sockeye.abs, soc3100.det, 3100SOC?.dat,
35 and 3100SOC?.dsc files (where "?" is the revision).
Put the .dat and .dsc files on a blank floppy.
Connect the CFT to be programmed to the OLL PC.

CA 02343989 2001-03-13
WO OO/1G552 PCT/US99/21056
_16_
Power on the OLL PC.
Tnsert the floppy in the OLL PC.
Select command 3, load files from floppy, in the OLL
program.
Select command 2, off - line loader, in the OLL program.
This will convert the new files.into a downloadable set
of files.
Set the active file to the 3100soc? file. If this is not
the active file, you need to deselect the current active
10 and select the new file using the commands in the
monolithic file menu.
Program the CFT2200 by executing command l, send
monolithic.
Audience Engine Disk Contents
15 The Audience Engine disk contains the following:
Sockeye. c, the source code.
Sockeye.abs, output from linker.
3100SOC4.dat, actual downloaded data file.
3100SOC4.dsc, description of downloaded file.
20 Sock3100.det, specifies objects to download.
Known Problems
The following problems were found during testing:
Must use b6-0(7) ROMs or above.
Head End Information
25 This is the Catalog.dat file for the ACC4000. The
highlighted lines are lines we changed.
This is the data file for the IR Blaster quick
implementation. In Phase II, this info will be
maintained in the database. The data begins in the. 5th
30 line of the file. This is the general catalog
information.
1 [005] Number of minutes for next download (0 -
no downloading)
05 [006] Catalog sequence number
35 Just increment the number every time you change
the file.
O1 [007] Catalog revision number

CA 02343989 2001-03-13
WO 00/16552 PCT/US99/21056
_Z~_
1994 [008] Year for
catalog
implementation
10 [009] Month or catalog
f implementation
31 [010] Day for catalog implementation
12 [011] Hour fo r catalog
implementation
30 [012] Minute for catalog
implementation
14 [013] Number of catalog
entries
_
DS,CATL1[100] Catalog entry source id (up to but not
-
longer than characters. with blanks if less than
8 Fill
8 characters)
1 [101] Catalog entry number of catalog records
-
for this cata log entry
1 [1021 Catalog entry preferred catalog record
-
for this cata log entry
16 [110] Catalog record device
-
00 [111] Catalog record device details
-
00 [112] Catalog record data use
-
00 [113] Catalog record data use details
-
00 [114] Catalog record application id
-
00 C115] Catalog record channel
-
O1 [116] Catalog record channel type
-
DL~SYSL1 [200] Catalog entry source id (up to but not
--
longer than characters. with blanks if less than
8 Fill
8 characters) '
1 [201] Catalog entry
- number
of catalog
records
for this catalog
entry
1 [202] Catalog entry preferred catalog record
-
fox this catalog
entry
16 [210] Catalog record device
-
00 [211] Catalog record device details
-
00 [212] Catalog record data use
-
00 [213] Catalog record data use details
-
01 [214] Catalog record application id
-
00 [215] Catalog record channel
-
O1 [216] Catalog record channel type
-
DL~PLAT1j300] Catalog entry source id (up to but not
-
longer than characters. with blanks if less than
8 Fill
8 characters)

CA 02343989 2001-03-13
WO 00116552 PCT/US99/21056
-18- -
1 [301] Catalog entry number of catalog records
-
for this catalog
entry
1 [302] Catalog entry - preferred catalog record
for this catalog
entry
16 [310] Catalog record - device
00 [311] Catalog record - device details
00 [312] Catalog record - data use
00 [3I3] Catalog record - data use details
02 [314] Catalog record - application id
00 [315] Catalog record - channel
O1 [316] Catalog record - channel type
DL Catalog entry source id (up to but not
APPL1[400] -
longer characters. Fill
than with blanks
8 if less than
8
characters)
1 [401] Catalog entry number of catalog records
-
for this cata log entry
1 [402] Catalog entry preferred catalog record
-
for this cata log entry
16 [410] Catalog record - device
00 [411] Catalog record - device details
00 [412] Catalog record - data use
00 [413] Catalog record - data use details
03 [414] Catalog record - application id
00 [425] Catalog record - channel
O1 [416] Catalog record - channel type
DL-C TRL1[500] Catalog entry source id (up to but not
-
long er than characters. Fillwith blanks if less than
8
8 aracters)
ch
1 [501] Catalog entry number of catalog records
-
for this catalog
entry
1 [502] Catalog entry preferred catalog record
-
for
this
catalog
entry
16 [510] Catalog record device
-
00 [511] Catalog record device details
-
00 [512] Catalog record data use
-
00 [513] Catalog record,-data use details
04 [514] Catalog record application id
-

CA 02343989 2001-03-13
WO 00/ib552 PCT/US99/21056
-19-
00 [515] Catalog record - channel
O1 [516] Catalog record - channel type
DEF -IPG [600]Catalog entry source id (up to but not
-
lon ger than characters. l with blanks if less than
8 Fil
8 haracters)
c
1 E601] Catalog entry number of catalog records
- -
for this cata log entry
1 [602] Catalog entry preferred catalog record
-
for this cata log entry
16 [610] Catalog record - device
00 [611] Catalog record - device details
00 [612] Catalog record - data use
00 [613] Catalog record - data use details
256 [614] Catalog record - application id
00 [615] Catalog record - channel
O1 [&16] Catalog record - channel type
OSD [700] Catalog entry source id (up to but not
-
longer characters.
than Fill
8 with
blanks
if less
than
S
characters)
1 [701] Catalog entry number of catalog records
-
for this catalog
entry
1 [702] Catalog entry preferred catalog record
-
fox this catalog
entry
00 [710] Catalog record - device
16 [711] Catalog record - device details
02 [712] Catalog record - data use
02 [713] Catalog record - data use details
00 [714] Catalog record - application id
00 [725] Catalog record - channel
O1 [716] Catalog record - channel type
DCRCHNAM[800] Catalog entry source id (up to but not
-
longer characters. with blanks if less than
than Fill
8
8
characters)
1 [801] Catalog entry number of catalog records
-
for this catalog entry
1 [802] Catalog entry preferred catalog record
-
for this catalog entry

CA 02343989 2001-03-13
WO 00/16552 PCT/US99/21056
-20-
16 [slo] Catalog record - device
00 [811] Catalog record - device details
00 [812) Catalog record - data use
00 [813] Catalog record - data use details
10 [814] Catalog record - application id
00 [8I5] Catalog record - channel
O1 [816] Catalog record - channel type
IrbVendr[900] Catalog entry source id (up to but not
-
lon ger than characters. Fill
8 with blanks if
less than
8 haracters)
c
1 [901) Catalog entry number of catalog records
-
for this cata log entry
1 f902] Catalog entry preferred catalog record
-
for this cata log entry
00 [910] Catalog record - device
16 [911] Catalog record - device details
00 [912] Catalog record - data use
00 [913] Catalog record - data use details
09 [914] Catalog record - application id
31 [915] Catalog record - channel
O1 [91&] Catalog record - channel type
IrbXRefr[A00] Catalog entry source id (up to but not
-
longer characters. Fill with blanks if less than
than
8
8
characters)
1 [A01] Catalog entry number of catalog records
-
for this catalog
entry
1 [A02) Catalog entry preferred catalog record
-
for this catalog entry
00 [A10] Catalog record device
-
16 [All] Catalog record device details
-
00 [A12] Catalog record data use
-
00 [A13) Catalog record data use details
-
09 [A14] Catalog record application id
-
31 [A15) Catalog record channel
-
Ol [A16) Catalog record channel type
-

CA 02343989 2001-03-13
WO OO/t6552 PCT/US99121056
-21-
IrbDevDt[B00] Catalog entry source id (up to but not
-
longer than 8 characters. Fil l with blanks if less than
8 characters)
2 [BO1] Catalog entry - number of catalog records
for this catalog entry
1 [B02] Catalog entry - preferred catalog record
for this catalog entry
00 [B10] Catalog record - device
16 [B11] Catalog record - device details
00 [B12] Catalog record - data use
00 [B33] Catalog record - data use details
09 [B14] Catalog record - application id
37 [BlSI Catalog record - channel
O1 [B16] Catalog record - channel type
MenuLogo[C00] Catalog entry source id (up to but not
-
longer than 8 characters. Fill with blanks,if less than
8 characters)
1 [C01] Catalog entry - number of catalog records
for this catalog entry
1 [C02] Catalog entry - preferred catalog record
for this catalog entry
Z6 [C10] Catalog record - device
00 fell] Catalog record - device details
00 [C12] Catalog record - data use
00 [C13] Catalog record - data use details
11 [C14] Catalog record - application id
00 [C15] Catalog record - channel
O1 [C16] Catalog record - channel type
FEM CNFG[D00] - Catalog entry source id (up to but not
-
longer than 8 characters. Fill with blanks if less than
8 characters)
O1 [D01] - Catalog entry - number
of catalog records
for this catalog entry
01 [D02] - Catalog entry - preferred
catalog record
16 [D10] - Catalog entry - device
00 [D11] - Catalog entry - device
details
00 CD12] - Catalog entry - data
use

CA 02343989 2001-03-13
WO 00/16552 PCTIUS99/21056
-22-
00 [D13] - Catalog entry - data use details
13 [D14] - Catalog entry - application id
00 [D15] - Catalog entry - channel
01 [D16] - Catalog entry - channel type
Sockeye [E00] - Catalog entry - source id (up to but not
longer than 8 characters. Fill with blanks if less than-
8 characters)
O1 [E01] - Catalog entry - number of catalog records
for this catalog entry
O1 [E02) - Catalog entry - preferred catalog record
240 [E10) - Catalog entry - device
00 [E11] - Catalog entry - device details
00 [E12] - Catalog entry - 'data use
00 [E13] - Catalog entry - data use details
00 [E14] - Catalog entry - application id
70 [E15] - Catalog entry - channel 7.0 Mhz
O1 [E16] Catalog entry - channel type
This is Sockeye specific info. After entering data save
file & type "irbcfg" at the UNIX prompt.
2 0 /*.~*************.**************.~.~*****~********************~*******
*
COPYRIGHT Millennium Networks Inc. 1998.
* ALL RIGHTS RESERVED.
*
NO PART OF THIS CODE MAY BE COPIED OR MODIFIED WITHOUT THE
WRITTEN CONSENT OF Millennium Networks Inc.
****************..~*******************~ ~.****.****.****.~**~.****.~**.*****/
/*.~******.****.**:***********~*****»**.*.*************~.**.****-***.»******
*
* DESCRIPTION: Source file for the Sockeye application on the
* CFT-2200.
* REVISION HISTORY:
*
* Date Name Description
* _____ _________
* 03/08/98 C. Michael Creation -
*.~**.~*.*.**.********.*********.**.~**********.*******.~.~.***.~***.~**.******
**/
#inciude <string.h>
#incfude "]ctype.h"
#include "api.h"
#include "osapi.h"

CA 02343989 2001-03-13
WO 00!16552 PCT/US99/21056
-23-
#include "tuner.h"
#include "downstrm.h"
#include "upstream.h"
#include "giutil.h"
5 #include "system.h"
#include "srvrmesg.h"
l~ Version used by the object module converter, see section 5.1 of the
~' "CFT-2200 Downloadable Firmware Programmer's Guide" -'
*/
GLOBAL coast PCHAR objectVersion = "01.04";
I" macro for converting seconds into ticks *~I
#define SECS(secs) (sacs * TICKS PER SEC)
Z5
/~ The following constant defines the periodic interval of the audience
~" engine. The audience engine will get the channel status information
* each time this timer expires and it will send it upstream.
,~ /
#define SOCKEYE WAKEUP INTERVAL 15
/'" the following constant defines how long the application will delay
* when it fails to get a message buffer before retrying.
~" /
#define GET-MSG_DELAY SECS(1)
I' Events used by the audience engine task ~/
#define SOCKEYE_WAKEUP~EVENT 0x00000001
3 0 /'" definitions used by ReceiveMessage() function *~/
#define NO_QUEUE 0
#define NO REQUEST (API VERSION REQUEST - 1 )
#define CtWAIT TIMEOUT SECS(5) -
35 I*~ the following constants define the valid types of cable '"/
#define CABLE TYPE A 0
#define CABLE~TYPE~B 1
I~" define the structure containing the upstream data '/
4 0 typedef struct
UCHAR hour;
UCHAR minute;
UCHAR second;
UCHAR ucReserved :7;
UCHAR CableType :1; /*~ O:cable A, !:cable B ~"/
UWORD TunerNum;
} SockeyeData;
/~ define the message queue name *~/
coast Q.ueueNames Sockeye0.name = QNAME('S','0','C','Q');
/" The following variables contain the ID's of the resources

CA 02343989 2001-03-13
WO 00/16552 PCT/US99J2I056
-24-
* used by
the sockeye
application.
*/
GLOBAL LONG SockeyeTaskld;
GLOBAL LONG SackeyeQueueld;
GLOBAL LONG TunerQueueid;
GLOBAL LONG UpstreamQueueld;
GLOBAL LONG DownstreamQueueld;
GLOBAL LONG SystemOueuefd;
GLOBAL LONG UpstreamOpenld; -
/* The following variable indicates whether the constructor has been
# called yet. -
*/
GLOBAL BOOL Constructed;
!* statistics used for debugging the sockeye application */
GLOBAL LONG SockeyeUpstreamSendFailed;
GLOBAL LONG SockeyeUpstreamCIoseFailed;
/* local prototypes */
extern LONG SockeyeConstructor(VOID1;
extern LONG SockeyeDestructorfBOOL bContextSave);
VOID SockeyeTeardown(VOID);
BOOL Sockeyelnit(VOID);
25 BOOL ReceiveMessage(QueueNames qName, UWORD uwRequest, PCHAR *pResp);
BOOL SockeyeGetTunerlnfo(SockeyeData *pSockeyeMsg);
BOOL SockeyeOpenlJpstream(VOID);
BOOL SockeyeSendUpstream/SockeyeData *pSockeyeData);
BOOL SockeyeCioseUpstream(VOID);
VOID SockeyeTask(PVOID pv);
BOOL SockeyeGetDownstreamCatalog(VOID);
/**#*lFiF#****#*###'IF#*********#**iF*#*********#*#**#*****#****##*#**iF*
*
35 * FUNCTION: SockeyeConstructor
*
# DESCRIPTION: Constructor for the sockeye application. This
'~ function is called by the CFT application. It spawns the sockeye
# task.
*
**#*##*-~.~###*****#*#*<figref></figref>*#********#**##********.~##*##*#*#***#**#*/
extern LONG SockeyeConstructor(VOID)
LONG RetCode;
/* initialize the IDs of all the objects to NULL */
SockeyeTaskid = NULL lD;
SockeyeQueueld = NULL ID;
TunerO.ueueld = NULL ID;
50 UpstreamQueueid = NULL_ID;
DownstreamQueueld = NULL ID;
SystemQueueld = NULL ID;
UpstreamOpenld = NULL ID;

CA 02343989 2001-03-13
WO OOI16552 PCT/US99/21056
-25-
/~' set the flag indicating the constructor has been called */
Constructed = TRUE;
/* start the sockeye applications task */
RetCode = OScreateUserTask((VOID(*)(PVOID))SockeyeTask,
PRI_NORMAL_USER,
START RUN + NO TIME SLICE + lNTRPT ENABLE,
0~ - - - _
0,
NULL,
0,
&SockeyeTaskld);
}
return RetCode;
/******.~~***~********.****.*******************************.~***.~***~**
*
* FUNCTION: SockeyeDestructor
*
* DESCRIPTION: Destructor for the sockeye application. This
* function is called by the CFT application. It destructs the sockeye
* task and frees all of the resources allocated to the task.
*
******.~******************************~*********.~******.~-~**********/
extern LONG SockeyeDestructor(BOOL bContextSave)
LONG RetCode = 0;
3 0 /* eliminate unused variable warning *I
if(bContextSave)
RetCode = 0;
I* check if the constructor has been called yet *I
~ if(Constructed)
/* free any resources used by the audience engine task */
SockeyeTeardown();
4 0 I* delete the task */
RetCode = OSdeleteTask(SockeyeTaskld);
}
return RetCode;
}
/*****************.~.~********************************************.***
*
* FUNCTION: SockeyeTeardown
*
* DESCRIPTION; This function frees any resources used by the sockeye
* task. It is called when the task is deleted and also if initialization
fails to complete successfully.
*
****************.*.~****.»*****************.*************.~************/
VOID SockeyeTeardown(VOID)

CA 02343989 2001-03-13
WO 00/16552 PCT/US99/21056
-26-
PCHAR pResp;
BOOL bDone = FALSE;
5 /* close the upstream device if its open */
if(UpstreamOpenld ! = NULL IDI
while(!bDone)
bDone = SockeyeCIoseUpstream(); -
}
if(SockeyeQueueld ! = NULL ID)
l* Flush the queue and delete it */
15 ReceiveMessage(NO_QUEUE, NO_REQUEST, &pRespl;
OSdeleteQueue(SockeyeQueue!d, FORCE DELETEj;
} -
}
I****************.~*********~.*****.****************************~.****
*
* FUNCTION: Sockeyelnit
*
* DESCRIPTION: This function performs the initialization of the sockeye
~" task. It creates the tasks message queue, event group, and starts
* the periodic timer of the sockeye application. It also opens the upstream
* device. This function returns the ID associated with the upstream
* device open.
*
30 *****.*******************~.*~*******~.************.~*****************/
BOOL Sockeyelnit(VOID)
LONG RetCode;
BOOL bDone;
l* set all IDs to NULL *I
SockeyeQueueld = NULL !D;
TunerQueueld = NULL_!D;
UpstreamQueueld = NULL_ID;
40 DownstreamQueueld = NULL_ID;
SystemQueueid = NULL_ID;
UpstreamOpenld = NULL ID;
I* Initialize the statistics *l
45 SockeyeUpstreamSendFailed = 0;
SockeyeUpstreamCIoseFailed = 0;
/* Create the sockeye tasks message queue */
RetCode = OScreateQueue(SockeyeQname, 20, PEND PRIORITY,
50 &SockeyeQueueld);
if(RetCode = = OS RETURN OK)
_ _
/* identify the TUNER queue *'/
55 RetCode = OSidentifyQueue(TUNER, &TunerQueueld);

CA 02343989 2001-03-13
WO 00116552 PCTlUS99/2I056
_2~_ ..
if(RetCode = _ OS RETURN OK)
{ -
I* identify the SYSTEM queue *I
RetCode = OSidentifyQueue(SYSTEM, &SystemQueueid);
if(RetCode = = OS RETURN OK)
10 { -
/* identify the UPSTREAM queue */
RetCode = OSidentifyQueue(UPSTREAM, &UpstreamQueueld);
if(RetCode = = OS RETURN OK)
{ _ _
/* identify the DOWNSTREAM queue */
RetCode = OSidentifyQueue(DOWNSTREAM, &DownstreamQueueld);
/* read the upstream catalog entry from the downstream server */
bDone = FALSE;
while(!bDone)
{
25 bDone = SockeyeGetDownstreamCatalog();
if(!bDone)
OSwakeAfterTimer(GET MSG DELAY);
_ _
3 0 /*~ open the upstream device */
bDone = FALSE;
while(!bDone)
{
bDone = SockeyeOpenUpstream();
3 5 if(!bDone)
OSwakeAfterTimer(GET MSG DELAY);
_ _
if(RetCode = = OS RETURN_OK)
40 return TRUE;
else
return FALSE;
45 /**~****~.********************~.*****************~***********~.*******
*
FUNCTION: ReceiveMessage
*
* DESCRIPTION: This function receives a message from the sockeye
50 * queue. !t returns a BOOLEAN which indicates whether the specified
* message vvas received.
*
* If the message on the queue isn't the expected message this routine
* discards the message and gets the next message from the sockeye queue.

CA 02343989 2001-03-13
WO OO/i6552 PCT/US99I21056
_28_ _
BOOL ReceiveMessage(
O.ueueNames qName,
UWORD uwRequest,
5 PCHAR *~pResp)
{
ApiResponseHeader *~pHeader;
LONG RetCode;
BOOL bDone = FALSE; -"
BOOL bReturn = FALSE;
while(!bDone)
{
RetCode = OSreceiveMessage(SockeyeQueueld,
Z5 QWA1T TIMEOUT,
pResp);
pHeader = (ApiResponseHeader '~)(*~pResp);
if(RetCode = = OS RETURN_OK)
{
if((pHeader->queueName == qName) &&
(pHeader-> uwRequest = = uwRequestl)
bDone = TRUE;
25 bReturn = TRUE;
else
{
I~ Not the message we wanted, discard it and get the next
3 0 ~" message on the queue.
~'
OSfreeMessage( "pResp);
3 5 else
{
bDone = TRUE;
4 0 return bReturn;
45 '~ FUNCTION: SockeyeGetTunerlnfo
DESCRIPTION: This function determines the channel the CFT is currently
tuned to. If this function is unable to determine the channel the CFT
is tuned to this function returns FALSE and sets the returned channel
50 * number to 0, otherwise it returns TRUE along with the channel the unit
is tuned to.
BOOL SockeyeGetTunerlnfo(SockeyeData ~pSockeyeMsg)
55 {

CA 02343989 2001-03-13
WO 00/16552 PCT/US99/21056
-29-
TunerResponseMessage '"pTunerRespMsg;
SysResponseMessage *~pSystemRespMsg;
Timespec Time;
BOOL bDone;
BOOL bReturn = FALSE;
!~" SendRequestChannelStatus() [should do what I'm trying to do here] *~/
SendRequestChannelStatus ( &TunerClueueld, 1, SockeyeQueueld; 0);
/* wait for the response '~/
bDone - ReceiveMessage(TUNER, USER CHANNEL STATUS, (PCHAR
'")&pTunerRespMsg); -
if(bDone)
if(pTunerRespMsg->header.error == OS RETURN OK)
p S o c k a y a M s g - > T a n a r N a m _
pTunerRespMsg- > data.funerStatus.uwUserChannel;
p S o c k a y a M s g - > C a b ! a T y p a _
pTunerRespMsg->data.tunerStatus.ibbType.ucCable;
bReturn = TRUE;
OSfreeMessage((PGHAR)pTunerRespMsg);
}
if(bReturn = = FALSE)
pSockeyeMsg->TunerNum = 1;
3 0 pSockeyeMsg-> CabIeType = CABLE TYPE A;
} _
/* zero out the reserved field "/
pSockeyeMsg->ucReserved = 0;
/~ wait for the response */
if(bReturnl
/~" get the ON/OFF status information * I
4 0 SendSysRequestStatus( &SystemQueueld, 1, SockeyeQueueld);
bDone - ReceiveMessage(SYSTEM, SYS REQUEST STATUS, (PCHAR
*')&pSystemRespMsg);
if(bDone)
if(pSystemRespMsg-> header.error = = OS RETURN OK)
_ _
ifI!pSystemRespMsg-> data.sysStatus.bAcRelayOn)
pSockeyeMsg->TunerNum = 0;
bReturn = TRUE;
OSfreeMessage((PCHAR)pSystemRespMsg);
}

CA 02343989 2001-03-13
WO 00/16552 PCTIUS99/21056
-30-
/*~ fill in the timestamp ~/
if(OSgetClock(&Time) _ = OS RETURN OK)
5 { - -
pSockeyeMsg-> hour = Time.ucHour;
pSockeyeMsg->minute = Tirne.ucMinute;
pSockeyeMsg->second = Time.ucSecond;
else
pSockeyeMsg->hour = 24;
pSockeyeMsg->minute = 60;
pSockeyeMsg->second = 60;
return bReturn;
*~ FUNCT10N: SockeyeGetDownstreamCatalog
* DESCRIPTION: This function sends the downstream catalog read command to the
*~ DOWNSTREAM application. If an entry for the sockeye application can't be
found the function returns FALSE, otherwise TRUE is returned.
,~
BOOL SockeyeGetDownstreamGatalog(VOID)
{
LONG RetCode;
DownstreamRequestMessage ''pDownstreamReqMsg;
DownstreamResponseMessage *pDownstreamRespMsg;
BOOL bDone;
BOOL bReturn=FALSE;
!~ get a buffer to send the messages to the upstream application *'/
while(OSaIlocateMessage(100, (PCHAR ~)&pDownstreamReqMsg) ! _
OS_RETURN_OK)
40 OSwakeAfterTimer(GET_MSG_DELAY);
/" fill in the request '/
pDownstreamReqMsg->header.queueName = DOWNSTREAM;
pDownstreamReqMsg->header.uwRequest = DOWNSTREAM_CATALOG_READ;
45 pDownstreamReqMsg->header.IRequestNumber = 1;
pDownstreamReqMsg->header.response.IQid = SockeyeQueueld;
memcpy(pDownstreamReqMsg->data.catalogRead.destination, "Sockeye ",
SOURCE ID LENGTH);
50 !~" send the request to the upstream server '~/
RetCode = OSsendMessagefDownstreamQueueld, (PCHAR)pDownstreamReqMsg);
if(RetCode = = OS RETURN OK)
{ _
/* wait for the response ~/
55 bDone = ReceiveMessage(DOWNSTREAM,

CA 02343989 2001-03-13
WO 00/16552 PCT/US99121056
-31-
DOWNSTREAM_CATALOG_READ,
(PCHAR ~)&pDownstreamRespMsg);
if f bDone)
5 if(pDownstreamRespMsg->header.error == NO ERROR)
{
bReturn = TRUE;
}
OSfreeMessage((PCHAR)pDownstreamRespMsg); -
}
return bReturn;
*' FUNCTION: SockeyeOpenUpstream
'" DESCRIPTION: This function sends the direct upstream open command to the
2 0 ~" UPSTREAM application.
BOOL SockeyeOpenUpstream(VOID)
25 LONG RetCode;
UpstreamRequestMessage ~*pUpstreamReqMsg;
UpstreamResponseMessage *plJpstreamRespMsg;
BOOL bDone;
BOOL bReturn=FALSE;
/* get a buffer to send the messages to the upstream application "/
while(OSalIocateMessage(100, (PCHAR *~)&pUpstreamReqMsg) != OS RETURN OK)
OSwakeAfterTimer(GET MSG-DELAY); - -
/* fill in the request '"/
pUpstreamReqMsg->header.queueName = UPSTREAM;
pUpstreamReqMsg->header.uwRequest = DIRECT_UPSTREAM_OPEN;
pUpstreamReqMsg->header.fRequestNumber = 1;
pUpstreamReqMsg->header.response.fQid = SockeyeQueueld;
40 memcpy(pUpstreamReqMsg->data.directOpen.destination, "Sockeye
SOURCE-ID LENGTH1; '
pUpstreamReqMsg->data.directOpen.ucIdIeTime = MAX_IDLE TIMEOUT;
pUpstreamReqMsg->data.directOpen.ucTransmitLevel
SYSTEM TRANSMIT_LEVEL;
I* send the request to the upstream server *~I
RetCode = OSsendMessage(UpstreamO.ueueld, (PCHAR)pUpstreamReqMsg);
if(RetCode = = OS RETURN OK)
{
/'" wait for the response ~"/
bl7one = ReceiveMessage(UPSTREAM,
DIRECT_UPSTREAM_OPEN,
(PCHAR *)&pUpstreamRespMsg);
if(bDone)
{

CA 02343989 2001-03-13
WO 00/16552 PCT/US99/21056
--32-
if(pUpstreamRespMsg->header.error = = NOERROR)
bReturn = TRUE;
UpstreamOpenld = ptJpstreamRespMsg->data.directOpen.lOpenld;
}
OSfreeMessage((PCHAR)pUpstreamRespMsg);
}
}
return bReturn; --
}
/**********************************************.******************.~*
*
* FUNCTION: SockeyeSendUpstream
*
* DESCRIPTION: This function sends the upstream message to the UPSTREAM
* application for transmission.
*
**************************~.***************************************/
BOOL SockeyeSendUpstream(Sockeyel7ata *pSockeyeData)
f
LONG RetCode;
UpstreamRequestMessage *pUpstreamReqMsg;
UpstreamResponseMessage *pUpstreamRespMsg;
BOOL bDone;
BOOL bReturn=FALSE;
l300L bMsgSent=FALSE;
while(!bMsgSent)
{
/* get a buffer to send the messages to the upstream application */
while(OSailocateMessage(100, (PCHAR *)&pUpstreamReqMsg) !
OS-RETURN~OK)
OSwakeAfterTimer(GET MSG DELAY);
- _
I* fill in the request */
pUpstrearnReqMsg->header.queueName = UPSTREAM;
pUpstreamReqMsg->header.uwRequest = D1RECT_UPSTREAM_WRITE;
pUpstreamReqMsg-> header.IRequestNumber = '1;
pUpstreamReqMsg->header.response.IQid = SockeyeQueueld;
/'~ Fill in the sizeof the application data and the data. The size of
* the application data is hardcoded because the compiler thinks the
* sizeof the application data is 8 not 6. I think this occurs because
* of padding, but I don't know how to disable it.
*/
pUpstreamReqMsg->data.directWrite.lOpenld = UpstreamOpenld;
pUpstreamReqMsg->data.directWrite.uwSize = 6;
pUpstreamReqMsg->data.directWrite.pcBuffer = (PCHAR)pSockeyeData;
I* send the request to the upstream server */
RetCode = OSsendMessage(UpstreamQueueld, (PCHAR)pUpstreamReqMsg);
if(RetCode = = OS RETURN OK)
_ _
S5 /* wait for the response */

CA 02343989 2001-03-13
WO 00/16552 PCT/US99/21056
-33- -
bDone = ReceiveMessage(UPSTREAM,
DIRECT_UPSTREAM WRITE,
(PCHAR *)&pUpstreamRespMsg);
if(bDone)
if(pUpstreamRespMsg-> header.error = = NO ERROR)
-
bMsgSent = TRUE;
bReturn = TRUE; -
}
else if((pUpstreamRespMsg->header.error == DEVICE_NOT_RESERVED)
li
(pUpstreamRespMsg->header.error = = NOT AVAILABLE) ; ;
(pUpstreamRespMsg-> header.error = = INVALID ID))
~
I * open' the upstream device *I
bDone = FALSE;
while(!bDone)
bDone = SockeyeOpenUpstream();
}
OSfreeMessage((PCWAR)pUpstreamRespMsg);
}
}
return bReturn;
/**.~*************************~**************.~*.~***********~********
*
* FUNCTION: SockeyeCIoseUpstream
*
* DESCRIPTION: This function sends the direct upstream close command to the
* UPSTREAM application.
*
***************.~******~**~***-~*~**********************************/
BOOL 5ockeyeCIoseUpstream(VOID)
LONG RetCode;
40 UpstreamRequestMessage *pUpstreamReqMsg;
UpstreamResponseMessage *pUpstreamRespMsg;
BOOL bDone;
BOOL bReturn = FALSE;
45 I* get a buffer to send the messages to the upstream application */
whi!e(OSaIlocateMessageli00, (PCHAR *)&pUpstreamReqMsg) !_ OS_RETURN OK)
OSwakeAfterTimer(GET-MSG-DELAY); -
/* fill in the request *!
50 pUpstreamReqMsg->header.queueName = UPSTREAM;
pUpstreamReqMsg->header.uwRequest = DIRECT UPSTREAM_CLOSE;
pllpstreamReqMsg->header.IRequestNumber = 1;-
pUpstreamReqMsg->header.response.IQid = SockeyeQueueld;
pUpstreamReqMsg->data.directClose.lOpenld = UpstreamOpenld;

CA 02343989 2001-03-13
WO 00/16552 PCT/US99121056
_34_
/* send the request to the upstream server */
RetCode = OSsendMessage(UpstreamQueueld, (PCHAR)pUpstreamReqMsg);
if(RetCode = = OS RETURN OK1
_ _
/* wait for the response *I
bl7one = ReceiveMessage(UPSTREAM,
DIRECT UPSTREAM CLOSE,
(PCHAR *)&pUpstreamRespMsg);
if(bDone)
{
if(pUpstreamRespMsg-> header.error = = NO ERROR!
bReturn = TRUE;
OSfreeMessage((PCHAR)pUpstreamRespMsg);
}
return bReturn;
/***********************************.~********.~*****~-****.*****~.*****
* FUNCTION: SockeyeTask
*
" DESCRIPTION: Main function for the sockeye application. This
* task initializes the resources it needs and then goes into an infinite
* loop waiting for the 15 second timer to expire. Every 15 seconds this
* task wakes up, gets the current channel status, creates an upstream
* message containing the data, and sends the data upstream. It then goes
back to sleep waiting for the 15 second timer to expire.
30 *
******************~**.***~**********.****.~****************~**.******/
VOID SockeyeTask(PVOID pv)
SockeyeData SockeyeMsg;
BOOL bDone = FALSE;
BOOL bTunerDataOk;
/* eliminate unused variable warning */
iffpv)
4 0 bDone = FALSE;
l* loop unfit initialization completes */
while(!bDone)
45 bDone = Sockeyelnit(!;
it(!bDone)
f
/~' If initialization fails undo everything, wait, and try again */
SockeyeTeardouvn();
50 OSwakeAfterTimer( 10L);
}
for(;;)
55 {

CA 02343989 2001-03-13
WO OO/1b552 PCT/US99/21056
-35-
/* wait for the periodic timer to expire *~/
OSwakeAfterTimer(SECS(SOCKEYE WAKEUP_lNTERVAL));
I*~ get the current channel status information */
bTunerDataOk = SockeyeGetTunerlnfo(&SockeyeMsg);
iffbTunerDataOk)
/* create the upstream message and send it ~"/ -"'
10 if(!SockeyeSendUpstream(&SockeyeMsg))
SockeyeUpstreamSendFailed + +;
GI Requested Information
SOFTWARE RELEASE NOTES
PRODUCT: MN~GI~CFT (22DB3200 with Millennium Networks
Audience Engine)
20 Software Version: 22DJ3606 (Millennium - Version
1.0)
Upgraded from Previous Release: None
Release Date: ~/~/9g
Reset Qualifier: 169
25 Definition: This note defines changes to the
DOWNLOADABLE FILE which is downloaded to the
Settop Feature Expansion Module by the ACC4000
controller, or the Off-Line Loader.
Description of Changes and New Features:
30 <Supply information here>
Major problems fixed in this release:
This release is the first release of this product.
Warnings / known problems / bugs / special instructions
pertinent to this release:
35 <Supply information here>
Installation issues:
FORMTEXT
Compatibility:
This software release can be installed on the following
40 hardware:
FORMTEXT

CA 02343989 2001-03-13
WO 00/16552 PCT/US99J21056
-36-
This software release is compatible with the following
equipment / other software / systems components:
FORMTEXT
Release Package Checklist
The following components are included in this release:
rdj3606d.doc
Sockeye.abs v. 1.0 code that is included in the
monolithic file that is downloaded to UPM flash memory
3100SOCO.DAT
3100SOCO.DSC
Sock3100.det
Related Documents
<Release Notes for Audience Engine>
CFT-2200 System Resource Utilization
Maximum number of application tasks: 1
Maximum number of application message queues: 1, "SOCQ"
Memory configuration (configured / max used):
512K Flash / >1K
512K DRAM / >1K
NVRAM / OK
Brokered Items
Application IDs (AID) for downstream data:
None
Queue Names:
<Supply information here>
Catalog Configuration File Source IDs and Sample Entries:
Sockeye [E00] -
O1 [E01]
O1 [E02]
240 [E10] ~
00 [E11] -
00 [E12] -
00 [E13] -
00 [E14] -
70 [E15] - Catalog entry - channel 7.0 Mhz
[E16] - ]

CA 02343989 2001-03-13
WO 00/16552 PCT/US99/2I056
-37~
The upstream frequency, e.g. 7.0, corresponds to the
frequency that will be used in your system to communicate
with the Sockeye modem.
Development Tool Versions
5 <Update version info as needed>
Microtec Research MCC68K ANSI C Compiler Version 4.5R -
Microtec Research ASM68K Assembler Version 7.1J
Microtec Research 68K Linker Version 7.1J
Microtec Research LI868k Librarian Version 10.78
10 General Instrument Object Module Converter, Version 2.02
REF docnum \* MERGEFORMAT AF-080045-0047 (Revision REF
revnum \* MERGEFORMAT 1.0) XXXXXX for the YYYYYYYY
PAGE 31

Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

2024-08-01:As part of the Next Generation Patents (NGP) transition, the Canadian Patents Database (CPD) now contains a more detailed Event History, which replicates the Event Log of our new back-office solution.

Please note that "Inactive:" events refers to events no longer in use in our new back-office solution.

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Event History , Maintenance Fee  and Payment History  should be consulted.

Event History

Description Date
Inactive: IPC deactivated 2021-11-13
Inactive: IPC deactivated 2021-11-13
Inactive: IPC deactivated 2021-11-13
Inactive: IPC deactivated 2021-11-13
Inactive: IPC assigned 2020-10-05
Inactive: First IPC assigned 2020-10-05
Inactive: IPC assigned 2020-10-05
Inactive: IPC assigned 2020-10-05
Inactive: IPC expired 2011-01-01
Inactive: IPC expired 2011-01-01
Inactive: IPC expired 2011-01-01
Inactive: IPC expired 2008-01-01
Inactive: IPC from MCD 2006-03-12
Inactive: IPC from MCD 2006-03-12
Inactive: IPC from MCD 2006-03-12
Time Limit for Reversal Expired 2004-09-14
Application Not Reinstated by Deadline 2004-09-14
Deemed Abandoned - Failure to Respond to Maintenance Fee Notice 2003-09-15
Letter Sent 2001-09-19
Inactive: Single transfer 2001-08-16
Inactive: Cover page published 2001-06-11
Inactive: First IPC assigned 2001-06-03
Inactive: Notice - National entry - No RFE 2001-05-24
Application Received - PCT 2001-05-15
Inactive: Courtesy letter - Evidence 2000-05-29
Application Published (Open to Public Inspection) 2000-03-23

Abandonment History

Abandonment Date Reason Reinstatement Date
2003-09-15

Maintenance Fee

The last payment was received on 2002-08-30

Note : If the full payment has not been received on or before the date indicated, a further fee may be required which may be one of the following

  • the reinstatement fee;
  • the late payment fee; or
  • additional fee to reverse deemed expiry.

Please refer to the CIPO Patent Fees web page to see all current fee amounts.

Fee History

Fee Type Anniversary Year Due Date Paid Date
Registration of a document 2001-03-13
Basic national fee - standard 2001-03-13
MF (application, 2nd anniv.) - standard 02 2001-09-14 2001-08-31
MF (application, 3rd anniv.) - standard 03 2002-09-16 2002-08-30
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
MILLENNIUM NETWORKS, INC
Past Owners on Record
HAMID, M. QAYYUM
STEPHEN W. LEHNER
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Representative drawing 2001-06-11 1 7
Description 2001-03-13 37 1,737
Abstract 2001-03-13 1 64
Cover Page 2001-06-11 1 33
Claims 2001-03-13 5 227
Drawings 2001-03-13 5 162
Reminder of maintenance fee due 2001-05-22 1 111
Notice of National Entry 2001-05-24 1 193
Courtesy - Certificate of registration (related document(s)) 2001-09-19 1 136
Courtesy - Abandonment Letter (Maintenance Fee) 2003-11-10 1 176
Reminder - Request for Examination 2004-05-17 1 116
Correspondence 2001-05-29 1 24
PCT 2001-03-13 14 1,312
Fees 2001-08-31 1 25
Fees 2002-08-30 1 31