Index: libs/libmythtv/siparser.cpp
===================================================================
--- libs/libmythtv/siparser.cpp	(revision 8954)
+++ libs/libmythtv/siparser.cpp	(working copy)
@@ -583,6 +583,10 @@
             /* Standard Future Event Information Table(s) */
             ParseDVBEIT(pid, &head, &buffer[8], size-8);
             break;
+        case 0x80 ... 0xFE:
+            /* Dishnet uses this range for longterm(7-9days) EIT */
+            ParseDVBEIT(pid, &head, &buffer[8], size-8);
+            break;
 #endif
         }
     }
@@ -1198,6 +1202,9 @@
     uint16_t network_id = buffer[0] << 8 | buffer[1];
     // TODO: Handle Network Specifics here if they aren't set
 
+    // TODO : Make this configurable.
+    //PrivateTypes.ForceGuidePresent = true;
+
     if (PrivateTypesLoaded == false)
         LoadPrivateTypes(network_id);
 
@@ -1274,13 +1281,13 @@
         bool eit_requested = false;
 
 #ifdef USING_DVB_EIT
-        if ((s.EITPresent) && 
-            (s.ServiceType == SDTObject::TV ||
-             s.ServiceType == SDTObject::RADIO) && 
-            ((!PrivateTypes.GuideOnSingleTransport) ||
-            ((PrivateTypes.GuideOnSingleTransport) && 
-            (PrivateTypes.GuideTransportID == 
-             PrivateTypes.CurrentTransportID)))) 
+        bool valid_service = s.ServiceType == SDTObject::TV ||
+            s.ServiceType == SDTObject::RADIO;
+        bool valid_transport = !PrivateTypes.GuideOnSingleTransport ||
+            (PrivateTypes.GuideTransportID == PrivateTypes.CurrentTransportID);
+
+        if (PrivateTypes.ForceGuidePresent ||
+            (s.EITPresent && valid_service && valid_transport))
         {
             Table[EVENTS]->RequestEmit(s.ServiceID);
             eit_requested = true;
@@ -1311,6 +1318,10 @@
     Table[EVENTS]->DependencyMet(SERVICES);
     //Table[EVENTS]->AddPid(0x12,0x00,0x00,true); // see ticket #755
     Table[EVENTS]->AddPid(0x12,0x7F,0x80,0x12); // see ticket #755
+
+    // This should only be added based on the user enabling 7-9day dishnet
+    // EIT events
+    //Table[EVENTS]->AddPid(0x300,0x00,0x00,true);
 }
 
 /** \fn SIParser::GetLanguagePriority(const QString&)
@@ -2041,6 +2052,23 @@
             ProcessContentDescriptor(data, descriptorLength + 2, event);
             break;
 
+        case DescriptorID::dish_ename:
+        {
+            int ht = (event.TableID > 0x80) ? 2 : 1;
+            huffman2_to_string(data+3, data[1]-1, ht, event.Event_Name);
+        }
+        break;
+
+        case DescriptorID::dish_edescription:
+        {
+            int ht = (event.TableID > 0x80) ? 2 : 1;
+            if ((data[3] & 0xf8) == 0x80)
+                huffman2_to_string(data+4, data[1]-2, ht, event.Description);
+            else
+                huffman2_to_string(data+3, data[1]-1, ht, event.Description);
+        }
+        break;
+
         default:
             ProcessUnusedDescriptor(pid, data, descriptorLength + 2);
             break;
