Index: /trunk/FACT++/src/gcn.cc
===================================================================
--- /trunk/FACT++/src/gcn.cc	(revision 19506)
+++ /trunk/FACT++/src/gcn.cc	(revision 19507)
@@ -59,17 +59,19 @@
     }
 
-    GCN::PaketType_t GetType(const QDomElement &what)
+    GCN::PaketPtr GetType(const QDomElement &what)
     {
         const auto value = GetParamValue(what, "Packet_Type");
         if (value.isEmpty())
-            return { -1, "", "" };
+            return GCN::PaketTypes.end();
 
         const uint16_t val = value.toUInt();
-        const auto it = fTypes.find(val);
-        if (it!=fTypes.end())
-            return it->second;
-
-        Warn("Unknown paket type "+to_string(val)+".");
-        return { -1, "", "" };
+
+        const auto it = GCN::PaketTypes.find(val);
+
+        if (it==GCN::PaketTypes.end())
+            Warn("Unknown paket type "+to_string(val)+".");
+
+        return it;
+
     }
 
@@ -126,5 +128,5 @@
                 return -1;
 
-            const GCN::PaketType_t ptype = GetType(what);
+            const auto ptype = GetType(what);
 
             const QDomElement date   = who.firstChildElement("Date");
@@ -146,5 +148,7 @@
             const QDomElement errad  = pos2d.firstChildElement("Error2Radius");
 
-            const bool is_gw = ptype.type==150 || ptype.type==151 || ptype.type==152 || ptype.type==153 || ptype.type==164;
+            const auto &id = ptype->first;
+
+            const bool is_gw = id==150 || id==151 || id==152 || id==153 || id==164;
 
             vector<string> missing;
@@ -234,4 +238,6 @@
              */
 
+            const auto &paket = ptype->second;
+
             const string unit = pos2d.attribute("unit").toStdString();
 
@@ -247,5 +253,5 @@
             if (!desc.isNull())
                 Out() << "[" << desc.text().toStdString()  << "]\n";
-            Out() << ptype.name << "[" << ptype.type << "]: " << ptype.description << endl;
+            Out() << paket.name << "[" << id << "]: " << paket.description << endl;
             Out() << left;
             Out() << "  " << setw(5) << "TIME" << "= " << Time(time.text().toStdString()).GetAsStr() << '\n';
@@ -256,9 +262,55 @@
             const bool has_coordinates = n1=="RA" && n2=="Dec" && unit=="deg";
 
-            if (has_coordinates)
+            const std::set<int16_t> typelist =
+            {
+                51,  // INTEGRAL_POINTDIR
+
+                53,  // INTEGRAL_WAKEUP
+                54,  // INTEGRAL_REFINED
+                55,  // INTEGRAL_OFFLINE
+
+                // 56, // INTEGRAL_WEAK
+                // 59, // KONUS_LC
+
+                60,  // SWIFT_BAT_GRB_ALERT
+                61,  // SWIFT_BAT_GRB_POS_ACK
+                62,  // SWIFT_BAT_GRB_POS_NACK
+
+                83,  // SWIFT_POINTDIR
+
+                97,  // SWIFT_BAT_QL_POS
+
+                100, // AGILE_GRB_WAKEUP
+                101, // AGILE_GRB_GROUND
+                102, // AGILE_GRB_REFINED
+
+                110, // FERMI_GBM_FLT_POS
+                111, // FERMI_GBM_GND_POS
+                112, // FERMI_GBM_LC
+                115, // FERMI_GBM_TRANS
+
+                123, // FERMI_LAT_TRANS
+                125, // FERMI_LAT_MONITOR
+
+                // 134, // MAXI_UNKNOWN
+                // 135, // MAXI_KNOWN
+                // 136, // MAXI_TEST
+
+                157, // AMON_ICECUBE_COINC
+                158, // AMON_ICECUBE_HESE
+
+                169, // AMON_ICECUBE_EHE
+                171, // HAWC_BURST_MONITOR
+                173, // ICECUBE_GOLD
+                174, // ICECUBE_BRONZE
+            };
+
+            const bool valid = typelist.find(id)!=typelist.end();
+
+            if (valid && has_coordinates)
             {
                 const ToO::DataGRB data =
                 {
-                    .type   = ptype.type,
+                    .type   = id,
                     .trigid = trig,
                     .ra     = ra,
@@ -426,7 +478,4 @@
     {
         SetLogStream(&imp);
-
-        for (auto it=GCN::kTypes; it->type>0; it++)
-            fTypes[it->type] = *it;
     }
 
