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