Скрипты - это специальный механизм программы, который позволяет реализовать последовательную передачу и обработку инструкций для выполнения команд установки настроек программатора, записи и чтения кода из памяти трансивера и пр.
Скрипты могут применяться в случаях, когда необходимо реализовать сценарии специфического программирования трансивера, алгоритм записи в память которого отличается от стандарта MSA и требует выполнения ряда особых инструкций для успешного сохранения изменений в памяти трансивера, а также когда требуется автоматизировать многократно повторяемый процесс программирования различных областей памяти трансивера с минимальным участием оператора.
При выполнении скрипта программа игнорирует настройки выбранной области. Область чтения и записи должна быть установлена в командах скрипта.
Следует обратить внимание, что после выполнения скрипта программное обеспечение не проводит проверку на успешность записи.
Перейдите в меню Control - Write using a script - Reset script, чтобы сбросить скрипт и вернуться к механизму стандартной записи.
Синтаксис команд механизма скриптов реализован на основе протокола команд SFPTotal.
Пример:
// Запись пароля AABBCCDD в страницу A2 смещение 7B
w2A2007B03AABBCCDD
// Запись кода из области редактора в страницу A0 смещение 00
w2A000007F{00;7F}
// Запись значения 80 в страницу A2 смещение 7F
w2A2007F0080
// Запись значения 01 в страницу A2 смещение FF
w2A200FF0001
PAUSE
// Чтение кода из страницы A0 смещение 00
R2A000007F
Создайте текстовый файл и укажите набор инструкций построчно. Сохраните файл скрипта, чтобы использовать данный сценарий программирования в программе.
Набор дополнительных команд обрабатывается программой.
PAUSE
Пауза при выполнении скрипта. По-умолчанию, пауза 100 мс.
Может использоваться с дополнительным параметром длительности паузы в миллисекундах.
PAUSE
Delay 100ms
PAUSE=2000
Delay 2000ms
Вызов функции пересчета контрольной суммы.
Устанавливает значение YY в ячейке редактора по смещению XX. Значения параметров указываются в верхнем регистре в формате HEX.
Параметр смещения принимает значения в диапазоне от 00 до 7F.
SETVAL 7F 03
Макрос подстановки {XX;YY} используется внутри других команд для вставки фрагмента кода из редактора. При выполнении скрипта макрос будет автоматически заменен на текущее значение фрагмента кода в области редактора от байта XX размером YY байт.
Обратите внимание, что значение параметра YY равное 00 в HEX означает, что в макрос должен быть подставлен 1 байт, а значение 7F в HEX означает, что должны быть подставлены 128 байт. Параметр YY принимает значение длины фрагмента кода (количество байт), которое должно быть уменьшено на единицу и переведено в шестнадцатеричное представление.
Пример записи фрагмента 128 байт в область страницы A2h по смещению 80h.
w2A200807F{00;7F}
Пример записи фрагмента пороговых значений DDM размером 96 байт в область страницы A2h по смещению 00h c последующим чтением.
W2A200005F{00;5F}
Пример присвоения переменной значения в виде фрагмента кода по смещению 0x44 размером 16 байт, содержащего серийный номер.
$VAR2={44;0F}
Буферная переменная $VAR1. Используется для сохранения фрагментов кода из редактора и вставки содержимого буферных переменных при исполнении скрипта.
Программа поддерживает 10 буферных переменных $VAR0 — $VAR9.
$VAR1={00;43}
$VAR2={44;0F}
$VAR3={54;2B}
$VAR4=002AFE
$VAR5=4F
Подставляет в команду значение текущего года.
Подставляет в команду значение текущего месяца.
Подставляет в команду значение текущего дня.
Запускает процедуру сохранения резервной копии для выбранного в настройках программы типа модуля. Программа выполняет последовательное чтение доступных страниц и сохранение данных в файл. Команда эквивалентна вызову функции из меню программы.
Установка каталога для сохранения бэкапов. Может принимать другие параметры для создания каталога с определенным наименованием.
Пример создания каталога бекапов с указанием даты в имени папки.
$VAR5=SOMETEXT
BACKUPDIR=\$YYYY-$MM-$DD_$VAR5\
BACKUPTOFILE
Импорт HEX кода из двоичного файла в область редактора.
IMPORTFILE=\catalog\filename.bin
Импорт HEX кода в область редактора.
Пример импорта фрагмента кода размером 128 байт в область редактора.
IMPORTHEX=030407100000000000000006670000000802001E4F454D2020202020202020202020202000000B4053465031302D535220202020202020204120202003520091001A000058473936535230313020202020202020303830393236202068F0031200001111A8DD05AA642FAA6F5A64DAF3285A9D000000000000000000F05E482F
Импорт кода в область редактора как результата конкатенации буферных переменных.
$VAR1={00;43}
$VAR2={44;0F}
$VAR3={54;2B}
IMPORTHEX=$VAR1$VAR2$VAR3
Команда инкрементирует значение переменной, которая содержит шестнадцатеричное представление кода таким образом, что число в конце строки в тестовом представлении переменной значения будет увеличено на единицу.
Например, текстовое представление значения переменной в виде SN129YY00201 будет преобразовано в SN129YY00202.
Если перед числовым фрагментом содержатся нули, то при увеличении разрядности инкрементируемого числового значения программа будет пытаться сохранить исходную длину строки, сдвигая значение влево. Таким образом, значение SN129YY00999 будет преобразовано в SN129YY01000.
$VAR1={00;43}
// Присваиваем переменной значение области кода, содержащей серийный номер
$VAR2={44;0F}
$VAR3={54;2B}
INCREMENT $VAR2
IMPORTHEX=$VAR1$VAR2$VAR3
Сбрасывает область vendor specific в окне редактора в нули.
COUNTER
Счетчик итераций при выполнении скрипта.
Установите данную команду в начале файла скрипта, который должен исполняться циклично. Текущее значение счетчика итераций может быть получено через переменную $COUNTER
// Вызов счетчика итераций
COUNTER
// Присвоение текущего значения счетчика переменной
$VAR0=$COUNTER
// Вывод значения счетчика
ECHO $COUNTER
Команда сравнения значений. Используйте конструкцию для сравнения значений A и B и выполнения команды, следующей за оператором THEN, которая будет исполнена, если условие, заданное в выражении, верно.
// Присваиваем числовые значения переменным
$VAR1=10
$VAR2=20
// Команда выводит окно с сообщением, если условие верно.
IF $VAR1 < $VAR2 THEN MSGBOX HELLO WORLD!
Команда повтора скрипта. Используйте команду в конце файла скрипта, чтобы сообщить программе, что сценарий должен быть исполнен повторно. Действие команды LOOP может быть отменено командой UNLOOP. Используйте условия для выхода из цикла, чтобы избежать бесконечного повторения.
Пример использования с условием.
COUNTER
...
R1A000007F
...
// Повторять скрипт, пока не будет выполнено 10 повторов
IF $COUNTER < 10 THEN LOOP
В случае попадания в бесконечный цикл процесс выполнения скрипта может быть остановлен глобальным прерыванием через меню
Преобразует текстовое значение, следующее после оператора, в HEX строку
$VAR9=STRTOHEX QSFP28-SR4
MSGBOX $VAR9
Преобразует HEX строку строку, следующую после оператора, в текстовое представление.
$VAR9=HEXTOSTR 5153465032382D535234202020202020
MSGBOX $VAR9
Команда дополняет шестнадцатеричное значение $VAR1 символом с кодом YY справа, пока длина текстового представления значения не достигнет значения XX.
Формат команды:
PADRIGHTHEX XX YY $VAR1
XX - числовое значение в десятичном представлении - длина текстового представления HEX строки;YY - HEX код символа, которым должна быть дополнена строка до нужной длины;$VAR1 - переменная, содержащая HEX строку для преобразования.// Преобразуем текстовое значение в HEX строку и сохраняем в переменной
$VAR9=STRTOHEX QSFP28-SR4
// Дополняем значение переменной справа пробелами (HEX код 0x20) до длины 16 байт
$VAR8=PADRIGHTHEX 16 20 $VAR9
ECHO $VAR8
Данная команда полезна, когда используется присвоение текстового значения переменной и необходимо преобразовать значение в HEX строку определенной длины.
Работает аналогично PADRIGHTHEX . Команда дополняет шестнадцатеричное значение $VAR1 символом с кодом YY слева, пока длина текстового представления значения не достигнет значения XX.
Устанавливает путь для автоматического сохранения файла кода без диалогового окна.
Пример установки пути сохранения кода в каталог с наименованием в виде серийного номера кода:
$VAR4=HEXTOSTR {44;0F}
SAVECODEDIR=C:\Users\DemoUser\Desktop\Codes\$VAR4
Сохраняет код в файл по пути, установленному командой SAVECODEDIR. Имя файла будет сформировано программой автоматически в соответствии с выбранным типом модуля и страницей.
$VAR4=HEXTOSTR {44;0F}
SAVECODEDIR=C:\Users\DemoUser\Desktop\Codes\$VAR4
SAVEFILE
Вызов генератора с предустановленными параметрами.
Для использования данной функции в программном обеспечении должна присутствовать расширенная лицензия генератора (не входит в стандартную поставку).
APIURL
Команда задает URL для обращения к внешнему обработчику API.
APIURL=http://localhost/example/api.php
APICALL
Команда осуществляет обращение к внешнему обработчику API. Эквивалентна нажатию кнопки API в основном окне программы.
Формат POST запроса при обращении к APIURL
POST Fields: code=0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000&module_type=1&table=A0&offset=00
code - код, строка длиной 256 байт (HEX, uppercase);module_type - тип модуля (0 - GBIC, 1 - SFP, 2 - SFP-DD, 3 - XFP, 4 - QSFP, 5 - QSFP-DD, 6 - OSFP);table - адрес таблицы (HEX, uppercase; пример: A0, A2);offset - смещение для таблицы (HEX, uppercase; пример: 00, 80).Ответ сервера должен быть возвращен в виде строки формата JSON:
{"status":1,"script":"R1A000007F\r\nW1A000007F{00;7F}\r\n","message":"","code":"0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","module_type":"1","table":"A0","offset":"00"}
Ответ сервера должен содержать следующие параметры:
status - статус обработки. 1 - импорт и выполнение скрипта, 0 - отображение сообщения без импорта кода;script - текст скрипта для исполнения после импорта кода; оставить пустым, если скрипт не задан;message - возвращаемое сообщение; выводится при status=0;code - возвращаемый код, строка длиной 256 байт (HEX, uppercase);module_type - тип модуля (0 - GBIC, 1 - SFP, 2 - SFP-DD, 3 - XFP, 4 - QSFP, 5 - QSFP-DD, 6 - OSFP);table - адрес таблицы (HEX, uppercase; пример: A0, A2);offset - смещение для таблицы (HEX, uppercase; пример: 00, 80).Обработчик скриптов позволяет производить математические операции сложения, вычитания, умножения и деления с помощью команды MATH.
Формат команды:
MATH Значение1 %Оператор Значение2
Поддерживаемые операторы математических операций:
+ — сложение;- — вычитание;* — умножение;/ — деление;COUNTER
$VAR0=MATH 10 - $COUNTER
ECHO $VAR0
// Повторяем скрипт пока выполняется условие
IF $VAR0 > 0 THEN LOOP
Команды для работы с пользовательским файлом.
USERFILEPATH
Устанавливает путь к пользовательскому файлу.
USERFILEPATH=C:\Users\User\Desktop\user-file.txt
GETUSERFILESTRING
Считывает указанную строку из пользовательского файла.
GETUSERFILESTRING 10
SAVETOUSERFILE
Сохранить данные в пользовательский файл.
Пример:
// Сохраняем серийный номер в переменную
$VAR2={44;0F}
// Сохраняем значение переменной в пользовательский файл
SAVETOUSERFILE HEXTOSTR $VAR2
// Добавляем перенос строки и возврат каретки
SAVETOUSERFILE HEXTOSTR 0D0A
$STRCOUNTUSERFILE
Значение содержит количество строк в пользовательском файле.
// Вычисляем позицию вставленной строки вычитанием значения количества циклов скрипта из значения количества строк файла
$VAR0=MATH $STRCOUNTUSERFILE - $COUNTER
ECHO $VAR0
// Читаем из файла последнюю вставленную строку
GETUSERFILESTRING $VAR0