Abstract:
There is provided a system and method for detecting an ignoring an invalid channel map feature. More specifically, in one embodiment, there is provided a method, comprising receiving an initial channel map feature, determining a cyclic redundancy check value for the initial channel map feature, receiving a subsequent channel map feature, determining a cyclic redundancy check value for the subsequent channel map feature, and processing the initial or the subsequent channel map feature if the cyclic redundancy check values for each of the initial and subsequent cyclic redundancy check values match.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application is a National Phase 371 Application of PCT Application No. PCT/US06/43789, filed Nov. 8, 2006, entitled “SYSTEM AND METHOD FOR DETECTING AND IGNORING AN INVALID CHANNEL MAP FEATURE”. 
     
    
     FIELD OF THE INVENTION 
       [0002]    The present invention relates generally to a system and method for avoiding inefficiencies associated with invalid channel map features for digital-cable-ready (DCR) systems. 
       BACKGROUND OF THE INVENTION 
       [0003]    This section is intended to introduce the reader to various aspects of art, which may be related to various aspects of the present invention that are described and/or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present invention. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art. 
         [0004]    Digital cable, a service offered by many cable distributors, utilizes digital technology to facilitate provision of a larger number of channels to users than would be available with analog channels alone. Using video compression and digital channels, cable distributors may increase the number and diversity of programs available on their existing cable networks without requiring network additions. 
         [0005]    In a DCR system, it may be desirable or necessary to store a channel map to facilitate navigation through available broadcasts. A channel map may be defined as a list of channels present in a given cable or antenna lineup. Channel maps for cable systems are generally transmitted by a cable provider to a user&#39;s television from a cable head end via a map source, such as a Personal Computer Memory Card International Association (PCMCIA) CableCard. It has now been recognized that invalid channel map features may be sent from certain manufacturer&#39;s CableCards to a television. Such transmissions generally occur after certain recognized events (e.g., a reset). These invalid channel map features can cause temporary, but lengthy, channel map instabilities (e.g., missing channels) that may annoy a user. Accordingly, a system and method that effectively reduces these instabilities by avoiding inefficiencies associated with the invalid channel map features is desirable. 
       SUMMARY OF THE INVENTION 
       [0006]    Certain aspects commensurate in scope with the disclosed embodiments are set forth below. It should be understood that these aspects are presented merely to provide the reader with a brief summary of certain forms the invention might take and that these aspects are not intended to limit the scope of the invention. Indeed, the invention may encompass a variety of aspects that may not be set forth below. 
         [0007]    In accordance with present embodiments, there is provided a system and method for detecting and ignoring an invalid channel map feature. More specifically, in one embodiment, there is provided a method, comprising receiving an initial channel map feature, determining a cyclic redundancy check value for the initial channel map feature, receiving a subsequent channel map feature, determining a cyclic redundancy check value for the subsequent channel map feature, and processing the initial or the subsequent channel map feature if the cyclic redundancy check values for each of the initial and subsequent cyclic redundancy check values match. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0008]    Advantages of the invention may become apparent upon reading the following detailed description and upon reference to the drawings in which: 
           [0009]      FIG. 1  is a block diagram of an electronic device in accordance with an exemplary embodiment of the present invention; 
           [0010]      FIG. 2  is a process flow diagram representing cable channel map processing in accordance with an exemplary embodiment of the present invention; 
           [0011]      FIG. 3  is a process flow diagram representing a procedure for accommodating submission of invalid channel map features in accordance with an exemplary embodiment of the present invention; 
           [0012]      FIG. 4  is a process flow diagram representing a procedure for accommodating submission of invalid channel map features in accordance with an exemplary embodiment of the present invention; and 
           [0013]      FIG. 5  is a process flow diagram representing a procedure for accommodating submission of invalid channel map features in accordance with an exemplary embodiment of the present invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0014]    One or more specific embodiments of the present invention will be described below. In an effort to provide a concise description of these embodiments, not all features of an actual implementation are described in the specification. It should be appreciated that in the development of any such actual implementation, as in any engineering or design project, numerous implementation-specific decisions must be made to achieve the developers&#39; specific goals, such as compliance with system-related and business-related constraints, which may vary from one implementation to another. Moreover, it should be appreciated that such a development effort might be complex and time consuming, but would nevertheless be a routine undertaking of design, fabrication, and manufacture for those of ordinary skill having the benefit of this disclosure. 
         [0015]      FIG. 1  is a block diagram of an electronic device in accordance with an exemplary embodiment of the present invention. The electronic device (e.g., a television) is generally referred to by the reference number  100 . The electronic device  100  comprises a receptor (e.g., a cable inlet or an antenna), a tuner  104 , a processor  106 , a memory  108 , and a display  110 . The memory  108  may be adapted to hold machine-readable computer code that causes the processor  106  to perform an exemplary method in accordance with the present invention. The processor  106  may receive cable channel map data and/or other information from a service provider (e.g., a cable provider) via a map source  112  that is external or internal to the electronic device  100 . The map source  112  may include a cable box, a PCMCIA CableCard, or the like. 
         [0016]      FIG. 2  is a process flow diagram  200  representing cable channel map processing in accordance with an exemplary embodiment of the present invention. Specifically,  FIG. 2  illustrates a cable channel map  202  that may be provided through the map source  112  of  FIG. 1 . The channel map  202  may originate from a service provider (e.g., a cable provider) or a device (e.g., the map source  112 ). The channel map  202  may be processed in block  204  by a channel map processing unit and added to a channel map database  206  stored in random access memory (RAM), non-volatile memory (NVM) or the like. For example, mapping channels (e.g., video signals) and storing them in memory may include searching available channels and mapping those with a sufficiently clear signal. Further, block  208  represents selection of channels for display by a user. For example, this may include selecting certain channel numbers on a television panel or remote control for display of the associated content on a television screen. 
         [0017]    In a DCR system (e.g., electronic device  100 ), it is generally desirable or necessary to store a channel map as transmitted by a cable provider to enable channel navigation. A cable provider&#39;s programming and so forth may change over time. Accordingly, the channel map may be updated or rebuilt periodically to include such changes. Channel maps are generally built up from various channel map tables, as provided in the American National Standards Institute/Society of Cable Telecommunications Engineers 65 standard (ANSI/SCTE 65). The ANSCl/SCTE 65 standard also provides for the specification of virtual channel numbers. One of the primary tables utilized to build up the channel maps is the Defined Channel Map (DCM), which specifies which virtual channels are “On” versus “Off.” These designations (i.e., “On” and “Off”) for channels in the DCM operate to include or exclude certain channels from the channel map. For example, if another table (e.g., the Virtual Channel Map (VCM)) provides information about a channel and the DCM has specified that it is “Off,” then that channel is not allowed to be presented (e.g., displayed) to the user. Thus, the DCM has significant control over the channel map. 
         [0018]    Periodically, new DCMs may be provided to the DCR system. The new DCMs may be the result of changes in programming, a device reset, or the like. When a new DCM arrives, the channel map is typically rebuilt based on the newly acquired information included in the new DCM and/or other related tables. During this rebuilding process, the television utilizing the channel map may have inconsistent performance. For example, rebuilding of a channel map associated with a new DCM can cause temporary channel map instabilities which may manifest as missing channels or other odd behavior. 
         [0019]    It is now recognized that some of the instabilities discussed above can be avoided by addressing occasional submissions of invalid DCMs by channel map sources (e.g., CableCards) produced by certain manufacturers. An invalid DCM is typically sent as the first table from a map source. The invalid DCM may contain a complete, ascending list of thousands of virtual channels beginning with the first virtual channel, wherein all of the channels are defined as “Off.” Shortly after this invalid data is transmitted, the map source may begin sending actual channel map information that is sent from a head end. That is to say, the map source itself or a related device may initially transmit an invalid DCM that is eventually replaced by an actual DCM originating from a service provider. The initial transmission of the invalid DCM may cause substantial instability. For example, an invalid DCM could cause all of the channels to be inaccessible until the actual DCM is transmitted. 
         [0020]    Accordingly, embodiments of the present invention detect and/or ignore invalid DCMs. 
         [0021]      FIG. 3  is a process flow diagram representing a procedure for accommodating submission of invalid channel map features in accordance with an exemplary embodiment of the present invention. The exemplary procedure in  FIG. 3  is generally designated by reference numeral  300 . According to procedure  300 , in the event that a map source (e.g., CableCard) is reset or otherwise initiates an initial channel map submission, the first DCM provided is ignored. As discussed above, the first DCM provided by certain manufacturer&#39;s map sources (e.g., CableCards) after a map source reset can be invalid. Accordingly, the procedure  300  may prevent electronic devices from accepting invalid DCMs and, thus, prevent the associated instabilities. 
         [0022]    Specifically, the procedure  300  is initiated when a certain event occurs or is recognized. Block  302  represents a CableCard event. For example, the CableCard event may include a CableCard reset. The CableCard event may also include a new channel map component submission after a CableCard reset or the like (e.g., a CableCard error or insertion of an external CableCard). If a new channel map is provided, it may be provided in the form of multiple different tables that are eventually combined to build the entire channel map. 
         [0023]    Once the CableCard event occurs in block  302 , various determinations are made regarding the event and actions are taken based on these determinations. In block  304 , it is determined whether a CableCard table has been submitted. If a CableCard table has not been submitted, a determination is made in block  306  as to whether a CableCard reset occurred. If a CableCard reset occurred, a first DCM flag is set to a TRUE value in block  308  to facilitate detection of a first DCM and the procedure  300  continues by starting over at block  302 . If a CableReset did not occur, other events are processed in block  310 . Returning now to block  304 , if it is determined that a CableCard table has been submitted, it is determined in block  312  whether the CableCard table is a DCM or another table type (e.g., VCM). If the CableCard table is not a DCM, it is processed in block  314 . If the CableCard table is a DCM, it is determined in block  316  whether the DCM is a first DCM (e.g., whether the first DCM flag is set to TRUE or FALSE). If it is the first DCM, it is potentially invalid. Accordingly, the first DCM is ignored and the first DCM flag is set to a FALSE value in block  318 . If the first DCM has already been received, and the first DCM flag has been set to the FALSE value, block  316  will direct the procedure to block  320  and the DCM will be processed. 
         [0024]      FIG. 4  is a process flow diagram representing a procedure for accommodating submission of invalid channel map features in accordance with an exemplary embodiment of the present invention. The procedure in  FIG. 4  is generally designated by reference numeral  400 . According to procedure  400 , a submitted DCM is compared to an existing channel map to determine whether it is invalid. For example, in one exemplary embodiment, if the newly submitted DCM defines all of the channels as “Off,” it may be deemed invalid because the generally static nature of cable channel maps dictates that all channels will not likely be removed by a valid DCM. In another embodiment, if it is determined that all of the channels in a limited range of channels are defined as “Off,” the newly submitted DCM may be deemed invalid. Indeed, a heuristic covering an unexpected range or threshold of channels may be defined to facilitate such a determination. For example, if it is determined that all channels in block  1000 - 2000  are defined as “Off,” wherein 100 of the channels in the block are good channels, the DCM may be deemed invalid. Accordingly, the procedure  400  may prevent electronic devices from accepting invalid DCMs and, thus, prevent the associated instabilities. 
         [0025]    Specifically, the procedure  400  is initiated when a certain event occurs or is recognized. Block  402  represents a CableCard event. For example, the CableCard event may include a CableCard reset. The CableCard event may also include a new channel map component submission after a CableCard reset or the like (e.g., a CableCard error or insertion of an external CableCard). If a new channel map is provided, it may be provided in the form of multiple different tables that are eventually combined to build the entire channel map. 
         [0026]    Once the CableCard event occurs in block  402 , various determinations are made regarding the event and actions are taken based on these determinations. In block  404 , it is determined whether a CableCard table has been submitted. If a CableCard table has not been submitted, other events are processed in block  406 . If it is determined that a CableCard table has been submitted, it is determined in block  408  whether the CableCard table is a DCM or another table type (e.g., VCM). If the CableCard table is not a DCM, it is processed in block  410 . Otherwise, if the CableCard table is a DCM, it is determined in block  412  whether the DCM fails a comparison test (e.g., whether all channels are defined as “Off”). If the DCM fails the comparison test in block  412 , it is deemed invalid and ignored in block  414 . If the DCM passes the comparison test, it is likely a valid DCM and block  412  will direct the procedure process the DCM in block  416 . 
         [0027]      FIG. 5  is a process flow diagram representing a procedure for accommodating submission of invalid channel map features in accordance with an exemplary embodiment of the present invention. The procedure in  FIG. 5  is generally designated by reference numeral  500 . According to procedure  500 , a DCM or channel map may be stored (e.g., stored in a television memory component) and compared with incoming DCMs or channel maps to determine whether or not the data should be ignored. In some embodiments, rather than store the entire DCM or channel map, a unique identifier (e.g., a cyclical redundancy check (CRC)) for the DCM or channel map may be stored for comparison. For example, a CRC for an initial DCM deemed invalid may be stored and utilized for comparison with CRCs for incoming DCMs to determine whether the designation of the initial DCM as invalid was proper. 
         [0028]    Features of the procedure  500  may be combined with one or more of the procedures set forth above to prevent discarding valid DCMs. Indeed, according to the procedure  500 , a CRC for a DCM may be utilized in a similar fashion to a checksum to determine whether an initial DCM is equivalent to each of multiple incoming DCMs and, thus, whether the initial DCM is likely valid or invalid. For example, in one embodiment, after ignoring an initial DCM (e.g., the first DCM received or a DCM deemed invalid), a stored CRC for the ignored DCM may be compared with the CRCs of incoming DCMs. If it is determined based on a comparison of the CRCs for the incoming DCMs that the same potentially invalid DCM is being sent repeatedly (e.g., a designated number of times within a limited time frame), it may be considered valid. This determination of validity may be supported because it is unlikely that an invalid DCM would be sent multiple times in a limited period. Confidence in the validity of the DCM may increase as more equivalent DCMs are submitted. 
         [0029]    Specifically, the procedure  500  is initiated when a certain event occurs or is recognized. Block  502  represents a CableCard event. For example, the CableCard event may include a CableCard reset. The CableCard event may also include a new channel map component submission after a CableCard reset or the like (e.g., a CableCard error or insertion of an external CableCard). If a new channel map is provided, it may be provided in the form of multiple different tables that are eventually combined to build the entire channel map. Block  502  may also include determining the CRC for a received channel map feature (e.g., the CRC for a DCM). 
         [0030]    Once the CableCard event occurs in block  502 , various determinations are made regarding the event and actions are taken based on these determinations. In block  504 , it is determined whether a CableCard table has been submitted. If a CableCard table has not been submitted, other events are processed in block  506 . If it is determined that a CableCard table has been submitted, it is determined in block  508  whether the CableCard table is a DCM or another table type (e.g., VCM). If the CableCard table is not a DCM, it is processed in block  510 . Otherwise, if the CableCard table is a DCM, it is determined in block  512  whether the DCM fails a comparison test (e.g., whether all channels are defined as “Off”). If the DCM does not fail the comparison test in block  512 , it is deemed valid and processed in block  514 . If the DCM fails the comparison test, the DCM is compared to one or more stored DCMs in block  516 . In some embodiments, the comparison in block  516  may include comparing two or more CRCs of channel maps or channel map features (e.g., DCMs). 
         [0031]    In block  518 , a determination is made as to whether the DCM or a related CRC has been stored previously. If the DCM has not been stored it is stored and a related DCM count variable is set to zero. If the DCM has been stored, the related DCM count variable is incremented (e.g., changed from 0 to 1) in block  520 . In block  522 , a determination is made as to whether the DCM count variable is greater than a threshold (e.g., a user defined limit that is indicative of validity). If the DCM count variable is less than or equal to the threshold in block  522 , the DCM may be invalid and the process returns to block  502 . If the DCM count variable is higher than the threshold, it is likely that the DCM is valid and it is processed in block  514 . This may result in preventing embodiments of the present invention from discarding valid DCMs. It should be noted that in some embodiments, block  522  may determine whether the DCM count variable is equivalent to the threshold. 
         [0032]    While the invention may be susceptible to various modifications and alternative forms, specific embodiments have been shown by way of example in the drawings and will be described in detail herein. However, it should be understood that the invention is not intended to be limited to the particular forms disclosed. Rather, the invention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the invention as defined by the following appended claims.