На початку та в кінці кожного файлу формуються рядки з довідковою інформацією про назву головного вхідного файлу, назву комутатора, назву та дату створення цього вихідного файлу.
Для кожного вузла програма BuildSwitch на початку вихідного файлу шаблонів формує інтерфейсну частину (яка 'вирахувана' з опису вузла) в такій послідовності:
а потім всі вставки, що описані відповідними директивами insertbeg/insertend.
Недостатня для повного опису вузла інформація може бути включена в файл шаблонів вже на етапі створення файлу загального опису комутатора - директивами insertbeg/insertend. Після його створення файл шаблонів можна доопрацювати вручну редактором, або підключити необхідні файли опису абонентських каналів на наступному кроці обробки. Як-що для підлеглого вузла потрібна нетипова схема формування шаблонів - цей вузол треба вказати в параметрах директиви model: PeerList.
Цей спосіб використовується для простих вузлів типу БАД, для яких не потрібно деталізації інтерфейсної частини. Приклад опису підключення до комутатора такого типового БАДу:
;;################################################################ ;; на підлеглий BAD1 - підключено як Peer - з діагностикою ;;=== === === === === === === === === === === === === === === === ConnectOksPeer BAD1, < 1561>, <F5,E6>,<F5G,E6G> AlloctOksPass F,5,H AlloctOksPass E,6,H SetLinkModes <F5G,E6G>, -T1L DirectionStrt BAD1,0 InternalTrunkSs7 <F5,E6>,< > DirectionEnds BAD1 ForwardRule A, "61(000-239)",DrTownOnly, #, BAD1, 5,0 ;; 240 - номерів точно ;;##==##==##==##==##==##==##==##==##==##==##==##==##==##==##==##==
В цьому прикладі вказана назва вузла, його адреса та схема його підключення по ОКСу, перелік каналів в напрямку та номерна ємність цього напрямку. З цього опису у вихідному файлі шаблонів для вузла BAD1 буде сформовано:
;;################################################################ ;; Створено - BuildSwitch /v2.I2/ [2013-09-26 16:19:19] ;; Джерело - Pechenigy-Switch.Prj Проект - Pechenigy ;; Вихідний файл - Pechenigy-Bads/Pechenigy-BAD1.pat ;;################################################################ DefinePointCode BAD1, 1561 ;; Zon:1561 DefinePointCode Pechenigy, 7040 ;; Nat:7040 RedirectOksRange Pechenigy, Pechenigy +15 ConnectOksPeer Pechenigy,,<A1,A2>,<A1G,A2G> GroupOksIkm A1 ,H ;; F5 GroupOksIkm A2 ,H ;; E6 SetLinkModes A1G,-T1L ; F5G SetLinkModes A2G,-T1L ; E6G ForwardRule A,"610",DrTownOnly,-, Ab610,5,0 ForwardRule A,"611",DrTownOnly,-, Ab611,5,0 ForwardRule A,"6120",DrTownOnly,-, Ab612,5,0 ForwardRule A,"6121",DrTownOnly,-, Ab612,5,0 ForwardRule A,"6122",DrTownOnly,-, Ab612,5,0 ForwardRule A,"6123",DrTownOnly,-, Ab612,5,0 ForwardRule A,"612x",,#,Pechenigy,-1,0 ForwardRule A,"61x",,#,Pechenigy,-1,0 ForwardRule A,"6x",,#,Pechenigy,-1,0 ForwardRule A,"x",,#,Pechenigy,-1,0 MakeForwardTables <A> DirectionStrt Pechenigy,0 InternalTrunkSs7 <A1,A2>,<>,Any,Pechenigy DirectionEnds Pechenigy TrunkExtraPar Pechenigy,"380-5765xxxxx-",<046h,0ebh,0b6h,00dh,022h,053h> ;;################################################################ ;;Input from - Pechenigy-Switch.Prj Project - Pechenigy ;;Created by - BuildSwitch /v2.I2/ [2013-09-26 16:19:19] ;;################################################################
При формуванні шаблонів опису підключення по типовій схемі зберігається схема нумерації потоків, характерна для БАДів: A1, A2, A3 тощо. Для кожного вузла програма BuildSwitch аналізує порядок визначення потоків (в прикладі <F5,E6>) та послідовно “підключає” до стандартної послідовності A1, A2, A3.
При формуванні правил аналізу номера для кожного вузла вважається, що він має тільки один напрямок для виходу нагору до комутатора - в типовій схемі вважається, що назва такого напрямку назві комутатора - в прикладі Pechenigy. Для забезпечення внутрішньої ємності створюються абонентські сотні з типовими назвами AbXXX; де XXX - фрагмент правила виходу в таку сотню. Для напрямків спецслужб використовуються типові назви SSxxx.
Сформований файл шаблону можна відразу використовувати, наприклад, за допомогою директиви include вставити в файл загального опису вузла BAD1.
Використовується для підлеглих вузлів з нестандартною внутрішньою структурою:
Приклад опису підключення такого вузла до комутатора:
;;################################################################ Model: PeerList = Bad2 ;; повна деталізація ;;=== === === === === === === === === === === === === === === === AlloctOksHway C,5,C AlloctOksHway D,6,C AlloctOksHway E,5,C ConnectOksPeer Bad2, +22 /SecC, <C5>, <C5G> ;; три незалежних лінки ConnectOksPeer Bad2, /SecD, <D6>, <D6G> ConnectOksPeer Bad2, /SecE, <E5>, <E5G> SetLinkModes <C5G,D6G,E5G>, -N- DirectionStrt Bad2, 0 InternalTrunkSs7 <C5,D6,E5>, < > DirectionEnds Bad2 ForwardRule A, "(210-225)xx", DrTownOnly, #, Bad2, 5,0 ;; 1600 ;;################################################################
В цьому прикладі директивою Model:PeerList замовлено формування розгорнутих інтерфейсних шаблонів; в результаті для вузла Bad2 буде сформовано такий файл:
;;################################################################ ;; Створено - BuildSwitch /v2.I2/ [2013-09-27 16:34:35] ;; Джерело - Verhovina-Switch.Prj Проект - Verhovina ;; Вихідний файл - Verhovina-Ptrn/Verhovina-Bad2.pat ;;################################################################ DefinePointCode Bad2, 38 ;; Zon:+22 DefinePointCode SecC, 512 ;; Zon:2,0,0 DefinePointCode SecD, 516 ;; Zon:2,1,0 DefinePointCode SecE, 520 ;; Zon:2,2,0 DefinePointCode Verhovina, 2320 ;; Nat:9-4-0 DefinePointCode Zon16, 16 ; RedirectOksRange Verhovina, Zon16 +15 ConnectOksPeer Verhovina,SecC,<.Verhovina@ImagePcm@C5.>,<.Verhovina@ImagePcm@C5.G> ConnectOksPeer Verhovina,SecD,<.Verhovina@ImagePcm@D6.>,<.Verhovina@ImagePcm@D6.G> ConnectOksPeer Verhovina,SecE,<.Verhovina@ImagePcm@E5.>,<.Verhovina@ImagePcm@E5.G> GroupOksIkm .Verhovina@ImagePcm@C5. ,C ;; C5 GroupOksIkm .Verhovina@ImagePcm@D6. ,C ;; D6 GroupOksIkm .Verhovina@ImagePcm@E5. ,C ;; E5 SetLinkModes .Verhovina@ImagePcm@C5.G,-N- ; C5G SetLinkModes .Verhovina@ImagePcm@D6.G,-N- ; D6G SetLinkModes .Verhovina@ImagePcm@E5.G,-N- ; E5G ForwardRule A,"21",DrTownOnly, .Verhovina@Numr@A@21. ;; >:>: #,Bad2,5,0 ForwardRule A,"220",DrTownOnly, .Verhovina@Numr@A@220. ;; >:>: #,Bad2,5,0 ForwardRule A,"221",DrTownOnly, .Verhovina@Numr@A@221. ;; >:>: #,Bad2,5,0 ForwardRule A,"222",DrTownOnly, .Verhovina@Numr@A@222. ;; >:>: #,Bad2,5,0 ForwardRule A,"223",DrTownOnly, .Verhovina@Numr@A@223. ;; >:>: #,Bad2,5,0 ForwardRule A,"224",DrTownOnly, .Verhovina@Numr@A@224. ;; >:>: #,Bad2,5,0 ForwardRule A,"225",DrTownOnly, .Verhovina@Numr@A@225. ;; >:>: #,Bad2,5,0 ForwardRule A,"22x",,#,Verhovina,-1,0 ForwardRule A,"2x",,#,Verhovina,-1,0 ForwardRule A,"x",,#,Verhovina,-1,0 MakeForwardTables <A> DirectionStrt Verhovina,0 InternalTrunkSs7 <.Verhovina@ImagePcm@C5.,.Verhovina@ImagePcm@D6.,.Verhovina@ImagePcm@E5.>,<>,Any,Verhovina DirectionEnds Verhovina TrunkExtraPar Verhovina,"380-3432xxxxx-",<044h,07ch,07dh,008h,0d4h,006h> ;;################################################################ ;;Input from - Verhovina-Switch.Prj Project - Verhovina ;;Created by - BuildSwitch /v2.I2/ [2013-09-27 16:34:35] ;;################################################################
В цьому шаблоні, сформованому програмою BuildSwitch для підлеглого вузла Bad2, в місцях де потрібне звернення до невідомих ресурсів лінійної частини, вказуються текстові макро-підстановки, а саме:
При використанні цього шаблону в проекті Bad2, потрібно попередньо визначити ці макро-підстановки. Це можна зробити таким чином:
;;################################################################ ;; використовуються шаблони створені на попередньому кроці ;;==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==-- ;; повинно бути визначено до використання шаблонів !!!! macrotext Verhovina@ImagePcm@C5 = .A1. ;; заміна потоку macrotext Verhovina@ImagePcm@D6 = .A2. ;; заміна потоку macrotext Verhovina@ImagePcm@E5 = .A3. ;; заміна потоку ;; нумерація macrotext Verhovina@Numr@A@21 = .,NN2xx. ;; на додаткову мітку для розділення по категоріям macrotext Verhovina@Numr@A@220 = .,NN2xx. ;; на додаткову мітку для розділення по категоріям macrotext Verhovina@Numr@A@221 = .,NN2xx. ;; на додаткову мітку для розділення по категоріям macrotext Verhovina@Numr@A@222 = .,NN2xx. ;; на додаткову мітку для розділення по категоріям macrotext Verhovina@Numr@A@223 = .,NN2xx. ;; на додаткову мітку для розділення по категоріям macrotext Verhovina@Numr@A@224 = .,NN2xx. ;; на додаткову мітку для розділення по категоріям macrotext Verhovina@Numr@A@225 = .,NN2xx. ;; на додаткову мітку для розділення по категоріям ForwardRule NN2xx,"{KAT,43h}", DrTownOnly, =,ATCKTown, 5, 0 ;; для міського зайняття ForwardRule NN2xx,"{KAT,}", DrTownOnly, =,ATCKOver, 5, 0 ;; все інше МІЖміське ;;================================================================ include "Verhovina-Bad2.Pat" ;; шаблони підключення до Verhovina ;;################################################################
Для “безумовної” передачі фрагментів тексту у вихідні файли шаблонів використовуються операційні дужки insertbeg/insertend; приклад визначення такого фрагменту в файлі загального опису комутатора:
;;##==##==##==##==##==##==##==##==##==##==##==##==##==##==##==##== ;; деталі для підлеглого БАД1 insertbeg BAD1 ;; абонентська частина - вставляється в шаблон BAD1 ;;== == == == == == == == == == == == == == == == Model: Name = BAD1 ;; назва цього баду для маршрутів Model: Type = Abn ;; тип комутатора ;;...................................... AlloctTract B, ,Mtu,5,<-----> ; без каналів AlloctTract <C,D,E,F, G,H,I,J, K,L,M,N, O,P,Q,R>, ,Akf ; 16 плат ;;...................................... MultiLine aAbn,<C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R>,<>,aon1,"61000",<0,Ft,A,Ic,AbnReg,Any,61> ;;== == == == == == == == == == == == == == == == insertend ;; ;;##==##==##==##==##==##==##==##==##==##==##==##==##==##==##==##==
Весь фрагмент між дужками insertbeg/insertend без перетворень буде виведено в файл шаблонів для вузла BAD1:
;;== == == == == == == == == == == == == == == == Model: Name = BAD1 ;; назва цього баду для маршрутів Model: Type = Abn ;; тип комутатора ;;...................................... AlloctTract B, ,Mtu,5,<-----> ; без каналів AlloctTract <C,D,E,F, G,H,I,J, K,L,M,N, O,P,Q,R>, ,Akf ; 16 плат ;;...................................... MultiLine aAbn,<C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R>,<>,aon1,"61000",<0,Ft,A,Ic,AbnReg,Any,61> ;;== == == == == == == == == == == == == == == ==
В вставках insertbeg/insertend можна вказувати директиви include - ці директиви (без розкриття тексту файлу!) будуть передані у відповідні файли шаблонів. Приклад опису в файлі комутатора:
;;##==##==##==##==##==##==##==##==##==##==##==##==##==##==##==##== ;; деталі для підлеглого БАД5 insertbeg Bad5 ;; абонентська частина - вставляється в шаблони ;;== == == == == == == == == == == == == == == == AlloctTract B, ,Mtu,5,<--2-4> ; два канали нагору AlloctTract <C,D,E,F, G,H,I,J, K,L,M,N, O,P,Q>, ,Akf ; 15 плат ;;...................................... ;;!!!!!! канали в окремому старому файлі include "Desna032-Bad5-LN.inc" ;; майже точна копія ;;...................................... ;;== == == == == == == == == == == == == == == == insertend ;; ;;##==##==##==##==##==##==##==##==##==##==##==##==##==##==##==##==
Цей фрагмент один в один попаде у вихідний файл шаблону для вузла Bad5:
;;== == == == == == == == == == == == == == == == AlloctTract B, ,Mtu,5,<--2-4> ; два канали нагору AlloctTract <C,D,E,F, G,H,I,J, K,L,M,N, O,P,Q>, ,Akf ; 15 плат ;;...................................... ;;!!!!!! канали в окремому старому файлі include "Desna032-Bad5-LN.inc" ;; майже точна копія ;;...................................... ;;== == == == == == == == == == == == == == == ==
і тільки при обробці самого шаблону файл, що вказаний в директиві include розкриється.
В списку директиви insertbeg можна вказувати назви декількох вузлів:
;;################################################################ ;; СПІЛЬНЕ для всіх підлеглих БАДів - вставляється в усі шаблони insertbeg <BAD1,BAD2,BAD3,BAD4,BAD5,Arte> ;; вставляється в шаблон ;=================================================== Cross403e A ; в усіх однаковий кросс ;;...................................... ;; режими роботи каналів Ft = FnModTonal Ic = DrInternal+DrTownOnly+DrOverTown+DrOverSeas AbnReg = RgIshodTlk+RgWhodlTlk ;;...................................... ;; параметри для абонентських тисяч TrunkExtraPar 61, ".Znu.-61xxx" , < .Geo. >; TrunkExtraPar 62, ".Znu.-62xxx" , < .Geo. >; TrunkExtraPar 65, ".Znu.-65xxx" , < .Geo. >; ;;...................................... ForwardRule A,"0x",, #, Pechenigy, -1,0 ;;Для гарантованого формування гудка після 0 ;; для таблиць аналізу номера BackwardRule Any, "x" , + ;; MakeBackwardTables ;=================================================== insertend ;; ;;##==##==##==##==##==##==##==##==##==##==##==##==##==##==##==##==
такий фрагмент (між дужками insertbeg/insertend) буде виведено в файли шаблонів відповідних вузлів (BAD1, BAD2, BAD3, BAD4, BAD5, Arte):
;=================================================== Cross403e A ; в усіх однаковий кросс ;;...................................... ;; режими роботи каналів Ft = FnModTonal Ic = DrInternal+DrTownOnly+DrOverTown+DrOverSeas AbnReg = RgIshodTlk + RgWhodlTlk ;;...................................... ;; параметри для абонентських тисяч TrunkExtraPar 61, "380-5765-61xxx" , < 49.866151, 36.939626 >; TrunkExtraPar 62, "380-5765-62xxx" , < 49.866151, 36.939626 >; TrunkExtraPar 65, "380-5765-65xxx" , < 49.866151, 36.939626 >; ;;...................................... ForwardRule A,"0x",, #, Pechenigy, -1,0 ;;Для гарантованого формування гудка після 0 ;; для таблиць аналізу номера BackwardRule Any, "x" , + ;; MakeBackwardTables ;===================================================
Таким чином, один фрагмент текстових визначень гарантовано попаде в декілька файлів опису незалежних вузлів. Зверніть увагу, всі тестові підстановки (в прикладі .Znu. та .Geo.) визначені в описі комутатора директивами macrotext, розкриваються під час формування файлів шаблонів.
Для блокування видачі окремих фрагментів в файл шаблонів використовується директива supressfrag, приклад її використання:
supressfrag PtTranzit, VNS1 ;; не формувати транзитні канали в шаблонах для VNS1
Примітка: Програма BuildSwitch під-час формування файлів шаблонів виводить символи ';~~' (початок коментарю) на початку рядків блокованих фрагментів, наприклад, для фрагменту транзитних каналів:
;~~ TranzitPair .Verhovina@ImagePcm@C2.U,0,.Verhovina@Tranzit@C2U. ;; F2P <> C2U ;~~ TranzitPair .Verhovina@ImagePcm@C2.V,0,.Verhovina@Tranzit@C2V. ;; F2T <> C2V
Ключ блокування може приймати такі значення:
Користувач може використовувати таке блокування, як-що вважає за потрібне самостійно описувати таки функціональні фрагменти в описах підлеглих вузлів.