Програма BuildSwitch стоїть в самому початку технологічного ланцюжка створення внутрішнього програмного забезпечення (таблиці станції) процесорів комутатора або окремих БАДів станцій ЄС-11. Програма аналізує символьні файли "Загального опису комутатора", та синтезує символьні файли опису окремих частин комутатора - секцій. Також створюються символьний файл детального опису комутатора (як цілісної одиниці) та файли шаблонів зустрічного підключення підлеглих вузлів.
Програма детально аналізує файл загального опису комутатора, який створений користувачем (за допомогою текстових редакторів), та враховуючи особливості конкретної моделі будує його секційні описи. Програма 'вважає' що всі частини комутатора та його підлеглі БАДи включені в один спільний проект - тобто мають однаковий зоновий номер та єдиний зовнішній поінт-код в національній мережі. Також вважається, що внутрішні канали комутатора (між секціями та БАДами) працюють по сигналізації Ss7 та вміють передавати інформацію про початкову точку аналізу номера та детальні причині відбою.
Всі внутрішні міжсекційні зв'язки програма формує тільки на базі ОКСу; внутрішні напрямки та маршрути формуються тільки між тими секціями, які цього дійсно потребують. Всі секції комутатора та підлеглі БАДи поєднуються в єдину зонову мережу Zon; поверх цієї мережі накладається мережа діагностики, точки входу в яку доступні буквально в кожній секції та не потребують додаткового визначення.
Програма будує взаємно узгоджені між секціями та підлеглими вузлами маршрути ОКСу. Зняті обмеження на точки підключення та конфігурації тонал-сетів, лінк-сетів та резервних вузлів. Єдине обмеження, що залишилося - в одному лінк-сеті не більше чотирьох ланок сигналізації.
Врахування особливостей комутатора та принципи побудови внутрішньої мережі детально описані в "Налаштування на модель комутатора та його внутрішню мережу"
Програма BuildSwitch - це класична консольна програма з запуском та передачею параметрів через командний рядок; порядок вказування параметрів в рядку несуттєвий - ключ, а потім назва файлу:
BuildSwitch -Inp InpFil [-Lst LstFil] [-Inc IncFil] [-Pat PatFil]
Вказування вхідного файлу обов'язкове; початок назви головного вхідного файлу (до першої не букви або цифри) буде назвою комутатора по замовчуванню.
Якщо ключ вихідного файлу не вказаний - він не формується.
В командному рядку допускається вказувати перенаправлення стандартного виводу з терминалу StdOut у файл - >FileName.
Імена файлів в командному рядку бажано брати в подвійні лапки “ - особливо якщо в іменах зустрічаються пробіли. Символи \ у назвах файлів треба подвоювати!
Приклад командного рядку:
BuildSwitch.pl -Inp 212-Swt.Prj -Inc "Yare-Sect\\212k" -Pat "Yare-Bads\\"
Тут вказаний вхідний файл 212-Swt.Prj. Файли секційних описів будуть створені в каталозі Yare-Sect, початок назви файлів - 212k; файли шаблонів підключення будуть створені в каталозі Yare-Bads, назви файлів повністю відповідають назвам вузлів. Назва комутатора по замовчуванню - 212.
Після виконання командного рядка:
BuildSwitch.pl -Inp 212.Prj -Lst Yare > Yare.Err
буде створено вихідний файл лістінгу Yare.Lst в поточному каталозі та тут-же, у поточному каталозі, буде створено файл з повідомленнями про помилки, його назва - Yare.Err.
Командний рядок:
BuildSwitch.pl -Inp 212Bad4.Prj -Inc Bad4 -Lst 212Bad4
створює файл лістінгу та файли секційних описів вузла Bad4 у поточному каталозі.
На вхід програм BuildSwitch подається символьний файл загального опису комутатора. Правила опису комутатора (незалежно від моделі та кросу) приведено в "Загальний опис комутатора".
В "Додаткові можливості загального опису" описана робота програми з декількома вхідними файлами та макро-вставками; там-же приведені правила опису вставок у вихідні файли .inc та .pat.
Налаштування програми BuildSwitch на конкретну модель комутатора за допомогою директиви Model: дивись в "Налаштування на модель комутатора".
Порядок обробки вхідних рядків такий:
Цей символьний файл з розширенням .Lst містить перелік оброблених директив та повідомлення про знайдені синтаксичні помилки; повідомлення про помилки виводяться перед помилковим рядком. Назва цього файлу та необхідність його формування вказується в командному рядку ключем -Lst. В цьому файлі директиви представлені в порядку надходження на аналіз - після виконання директив include та macrotext. На початку кожного рядка цього вихідного файлу вказується рівень вкладенності вхідних файлів (по include) та номер рядка у вхідному файлі:
1 146 ;; для каналів з міжміста - тільки внутршня 1 147 ForwardRule Au ,!"51337" , , $,T51337 ;;Заміна на 103 1 148 ForwardRule Au , "2[PDG,0]" , , ,A ;; Це тут !!! 1 149 ForwardRule Au , "3[PDG,0]" , , ,A ;; Це тут !!! 1 150 ForwardRule Au , "4[PDG,0]" , , ,A ;; Це тут !!! 1 151 ForwardRule Au , "5[PDG,0]" , , ,A ;; 1 152 ForwardRule Au , "6[PDG,0]" , , ,A ;; Це тут !!!
Ця група символьних файлів з розширенням .Inc містять посекційні описи кожної складової частини (секції) комутатора; для кожної секції формується чотири файли з частинами секційних описів; в файлах вже враховані тонкощі міжсекційної взаємодії. Саме ці файли використовуються для формування двійкових таблиць секцій комутатора. Початок назви цих файлів та необхідність їх формування вказується в командному рядку ключем -Inc; назви цих файлів містять назви секцій, які вони описують; а завершення назв (-Pl.Inc, -Lk.Inc, -Ln.Inc, -Nr.Inc) визначає характер інформації, що в них міститься.
На початку та в кінці кожного файлу формуються рядки з довідковою інформацією про назву головного вхідного файлу, назву комутатора, назву та дату створення цього вихідного файлу.
В "Додаткові можливості загального опису" приведені правила опису текстових вставок фрагментів при формуванні вихідних файлів секційного опису.
Як-що використовується модель багато-секційного комутатора (374 або 376), то в списку параметрів директиви insertbeg, в назві ключа необхідно вказувати позицію цієї секції.
Для блокування видачі окремих фрагментів в файли секційних описів використовується директива supressfrag, приклад її використання:
supressfrag PlCross
Як-що використовується багато-секційна модель комутатора (наприклад - 374 або 376), то другим параметром директиви supressfrag повинен бути список секцій для яких ця директива дійсна:
supressfrag <PlCross,PlLinks,PlPcm>, <A,B>
Примітка: Програма BuildSwitch під-час формування файлів шаблонів виводить символи ';~~' (початок коментарю) на початку рядків блокованих фрагментів, наприклад, для фрагменту опису лінків:
;~~ DefineOksLink ADA0,-W,LsHugB ;~~ DefineOksLink A0A0,-W,LsSctC ;~~ DefineOksLink A1A0,-W,LsSctD ;~~ DefineOksLink A2E0,-W,LsSctE
Ключі блокування видачі можуть приймати такі значення:
Користувач може використовувати таке блокування, як-що вважає за потрібне самостійно описувати ці функціональні фрагменти в секційних описах.
Програма BuildSwitch створює цей один символьний файл опису комутатора, як цілісної одиниці - без поділу на секції. Початок назви цього файлу та необхідність його формування вказується в командному рядку ключем -Inc; назва файлу закінчується на -ModelXXX.Inc, де XXX - тип використаної моделі комутатора. Весь опис комутатора виконується типовими директивами, які сформовані відповідно правил “Опису окремих файлів конфігурації одного процесора”.
Цей файл використовується для візуального аналізу і подальшої оптимізації; файл містить багато довідкових таблиць, які детально розкривають використання ресурсів по замовчуванню. Всі директиви упорядковані та відсортовані по назвам основних ресурсів. Окремі частини файлу можна вставляти в секційні описи. Детально цей файл описано в "Файл опису комутатора"
Програма BuildSwitch виконує обернений аналіз конфігурації комутатора - з точки зору підлеглих вузлів - та створює не повну модель цих периферійних вузлів для підключення їх до комутатора; модель створюється тільки для ЄС-11 і тільки в мережі ОКС. Кожен з цих файлів містить тільки інтерфейсну частину опису підлеглого периферійного вузла - БАДа або комутатора. Початок назви таких файлів шаблонів та необхідність їх формування вказується в командному рядку ключем -Pat.
Програма базується на припущенні “однопроцесорності” підлеглого вузла та весь його опис виконує типовими директивами, які сформовані відповідно правил “Загального опису комутатора”. Опис, створений програмою, не повний; для БАДів, наприклад, відсутній опис абонентської частини - плат та ліній. Ці файли, після об'єднання з лінійною або абонентською частиною, можуть повторно подаватися на вхід програми BuildSwitch для створення відповідних секційних описів вже цього периферійного вузла.
Підлеглими до комутатора вузлами вважаються, ті що підключені по ОКСу директивами ConnectOksPeer; можливе мульти-адресне підключення декількома цими директивам. Для кожного такого вузла (наприклад, Vlk1) програма створює файл, з типовою назвою Verhovina-Vlk1.pat, в якому описані правила підключення вузла Vlk1 до комутатора Verhovina - де Verhovina було вказано в командному рядку. Для побудови коректної інтерфейсної моделі вузла необхідно, що-би в описі комутатора назва напрямку виходу на цей вузол (канали) відповідала назві самого вузла (потоки).
В "Додаткові можливості загального опису" приведені правила опису текстових вставок при формуванні вихідних файлів шаблонів.
В "Описі файлів шаблонів" приведені правила формування та детальний опис цього вихідного файлу.
Під час обробки вхідних даних програми видає на “термінал помилок” (StdErr) повідомлення:
Інформаційні повідомлення починаються з символів ..Info:: та, як правило, повідомляють про створення та закриття кожного вихідного файлу:
..Info:: File "190Semc-HugA.Inc" created and closed.
Попереджувальні повідомлення починаються з символів –Warn:::
..Warn:: Lines: 4061 Errors detected: 0/12
Після таких повідомлень робота програми продовжується.
При помилках файлових операцій (відкриття, створення, закриття) програма видає повідомлення про помилку на “термінал помилок” (StdErr) та припиняє свою роботу. Тексти повідомлень приведено нижче:
!!-01-!! Cannot open >->PrjName<-<
!!-02-!! Cannot close >->PrjName<-<
!!-03-!! Invalid comand line parameters (key or file) >->'
!!-03-!! No InputFile in comand line !!
!!-04-!! Cannot create >->LstFilNam<-<
!!-05-!! Cannot close >->LstFilNam<-<
!!-06-!! Invalid file name at >->se<-<
!!-07-!! Too deep Include level at >->se<-<'
!!-08-!! Too short file name flName Cannot contunue!
!!-10-!! Errors detected: 81/0 Cannot contunue!
При виявлені такої помилки програма видає повідомлення на термінал (StdOut); всі помилки згруповані по вхідних файлах. На термінал виводиться назва вхідного файлу, текст повідомлення про помилку та сам рядок з помилкою (на початку цього рядка - рівень вкладеності по include та номер рядка у вхідному файлі):
Помилки у файлі : Verhovina-Switch.Prj **Err Невідомий параметр моделі iList . 23 Model: iList = Bad2,Vlk1 ;; повна деталізація
У файл .Lst виводяться оброблені директиви в порядку надходження на аналіз - після виконання директив include та macrotext. На початку кожного рядка цього вихідного файлу вказується рівень вкладенності вхідних файлів по include та номер рядка у вхідному файлі:
1 19 DirectionStrt Bad1, 0 1 20 InternalTrunkSs7 <C6,D5>, < > 1 21 DirectionEnds Bad1
В файл Lst також виводяться повідомлення про помилку - перед рядком що її викликав. Після виявлення помилки у рядку програма припиняє обробку цього рядка та ігнорує його повністю. При виявлені хоч одної такої помилки всі вихідні файли, крім .Lst, не формуються.
Програма формує попередження - повідомлення про можливу помилку під час подальшої обробки, такі повідомлення видаються у вихідний файл Lst; причиною попередження може бути, наприклад, використання не визначених елементів опису. Таке попередження починається з символів –Wrn та видається перед рядком що викликав сумнів:
..Wrn Напрямок VerhovinaUnKnown не має каналів взагалі 1 37 DirectionStrt VerhovinaUnKnown 1 38 DirectionEnds VerhovinaUnKnown