bool Data_Service::Get_Timing_Data (Timing_File &file, Timing_Record &timing_rec) { int signal; Int_Map_Itr map_itr; Timing_Data *timing_ptr = &(timing_rec.timing_data); //---- process the header record ---- if (!file.Nested ()) { timing_ptr->Timing (file.Timing ()); if (timing_ptr->Timing () == 0) return (false); timing_ptr->Type (file.Type ()); timing_ptr->Cycle (file.Cycle ()); timing_ptr->Offset (file.Offset ()); timing_ptr->Notes (file.Notes ()); if (file.Version () > 40) { signal = file.Signal (); if (signal == 0) return (false); map_itr = signal_map.find (signal); if (map_itr == signal_map.end ()) { Warning (String ("Timing Signal %d was Not Found") % signal); return (false); } timing_rec.Signal (map_itr->second); return (true); } } Timing_Phase phase_rec; phase_rec.Phase (file.Phase ()); phase_rec.Barrier (file.Barrier ()); phase_rec.Ring (file.Ring ()); phase_rec.Position (file.Position ()); phase_rec.Min_Green (file.Min_Green ()); phase_rec.Max_Green (file.Max_Green ()); phase_rec.Extension (file.Extension ()); phase_rec.Yellow (file.Yellow ()); phase_rec.All_Red (file.All_Red ()); if (phase_rec.Max_Green () == 0) phase_rec.Max_Green (phase_rec.Min_Green () + phase_rec.Extension ()); timing_ptr->push_back (phase_rec); return (timing_rec.Signal () >= 0 || file.Version () <= 40); }
bool SubareaNet::Get_Timing_Data (Timing_File &file, Timing_Record &data) { //---- do standard processing ---- if (Data_Service::Get_Timing_Data (file, data)) { //---- copy the fields to the subarea file ---- Db_Header *new_file = System_File_Header (NEW_TIMING_PLAN); new_file->Copy_Fields (file); if (!new_file->Write (file.Nested ())) { Error (String ("Writing %s") % new_file->File_Type ()); } ntiming++; } return (false); }
int ArcNet::Get_Timing_Data (Timing_File &file, Timing_Data &timing_rec) { int signal = Data_Service::Get_Timing_Data (file, timing_rec); if (signal >= 0) { timing_db.Copy_Fields (file); if (!file.Nested ()) { if (time_flag) { Signal_Data *signal_ptr = &signal_array [signal]; Signal_Time_Itr itr; bool keep = false; for (itr = signal_ptr->begin (); itr != signal_ptr->end (); itr++) { if (itr->Timing () == timing_rec.Timing () && itr->Start () <= time && time <= itr->End ()) { keep = true; break; } } if (!keep) { timing_rec.Timing (-1); return (-1); } } return (signal); } if (timing_rec.Timing () >= 0) { if (!timing_db.Add_Record ()) { Error ("Writing Timing Plan Database"); } return (signal); } } return (-1); }