Opened 4 days ago
Last modified 2 days ago
#878 new задача
Обновление настоек платы FS-08.
| Reported by: | ledol | Owned by: | alx |
|---|---|---|---|
| Priority: | высокий | Milestone: | 1 очередь |
| Component: | sw | Keywords: | |
| Cc: |
Description (last modified by )
Для выполнения задач тикета https://trac.adc-line.ru/mc-04/ticket/1525 в части плат FS-08 предлагаю:
- Оставить в web-интерфейсе платы настройку "инверсия СУВ" для 4-го аппаратного исполнения платы.
- Разместить в переменной 5 платы исполнения 3, где каждому каналу дается в соответствие строка 10 байт, следующие дополнительные настройки СУВ канала (описаны в тикете 1525):
Байт(0-9)|Биты(7..0)|Значение(Текст): Детали(Текст).
1 | 0 | не используется
1 | 3..1| Звонок: 0-"0X",1-"1X",2-"X0",3-"X1",4-"00",5-"01",6-"10",7-"11".
1 | 5..4| Трубка положена: 0-"11",1-"00",2-"01",3-"10".
1 | 7..6| Трубка снята: 0-"01",1-"00",2-"10",3-"11".
- Считать данные настройки актуальными начиная с версии 12 ПО платы.
- Версию 12 ПО платы применять к аппаратному исполнению платы 3.
- В качестве блока отладки предлагается использовать блок 192.168.0.252. При технических трудностях в доступе к блоку, обращаться к Найданову А.А.
- По предложению Найданова А.А. в mib платы FS-08 добавлена переменная 250, содержащая серийный номер. Предлагаю реализовать интерпретацию переменной во вкладке "Инвентаризация" блока.
Change History (28)
comment:1 by , 4 days ago
| Description: | modified (diff) |
|---|
comment:2 by , 4 days ago
| Description: | modified (diff) |
|---|
comment:3 by , 4 days ago
| Description: | modified (diff) |
|---|
follow-up: 8 comment:4 by , 4 days ago
follow-up: 9 comment:5 by , 4 days ago
Replying to ledol:
- Версию 12 ПО платы применять к аппаратному исполнению платы 3 и 4.
Данное предложение мне непонятно... "Применять версию к исполнению" - это как? Это значит делать что конкретно? Поясни, пожалуйста.
comment:6 by , 4 days ago
follow-up: 10 comment:8 by , 4 days ago
Replying to alx:
Replying to ledol:
- Разместить в переменной 5, где каждому каналу дается в соответствие строка 10 байт, следующие дополнительные настройки СУВ канала (описаны в тикете 1525):
Уточни, пожалуйста, что ты имеешь в виду, когда пишешь "переменная 5". В плате FS-08 на данный момент нет переменной, имеющей OID .5.0. Более того, конфигурации каналов (если я правильно понял, что "каналом" ты называешь порт) платы не находятся в одной переменной, конфигурация каждого порта находится в своей отдельной переменной. Например конфигурация порта 1 находится в переменной .5.1.1.0, конфигурация порта 2 находится в переменной .5.2.1.0 и т.д... В связи с этим непонятно, идет ли речь в процитированной фразе о добавлении какой-то новой переменной, или об использовании какой-то из уже существующих.
Переменная 5 - таблица, 8 строк по 10 байт каждая. Предлагается использовать существующий формат.
follow-up: 11 comment:9 by , 4 days ago
Replying to alx:
Replying to ledol:
- Версию 12 ПО платы применять к аппаратному исполнению платы 3 и 4.
Данное предложение мне непонятно... "Применять версию к исполнению" - это как? Это значит делать что конкретно? Поясни, пожалуйста.
Это значит, что при передаче файла прошивки 12.bin ее нужно разместить в каталоге "firmware" SW-01 в папках 3 и 4 папки FS-08.
follow-up: 12 comment:10 by , 4 days ago
Replying to ledol:
Переменная 5 - таблица, 8 строк по 10 байт каждая. Предлагается использовать существующий формат.
Спасибо за уточнение. В таком случае, предложенное изменение по-моему нарушает прямую совместимость (для плат исполнения 4). Если байт 1 имеет значение 1 (именно такое значение записывает туда веб-интерфейс при отмеченном чекбоксе "инверсия СУВ"), то в настоящее время плата FS-08 исполнения 4 инвертирует СУВ A: 1 - шлейф замкнут, 0 - шлейф разомкнут, 1 - звонок, 0 - нет звонка. Однако в новой семантике (описанной в описании тикета) получится 0 - шлейф замкнут, 1 - шлейф разомкнут, 0 - звонок, 1 - нет звонка. То есть сконфигурированная инверсия пропадет!
Для сохранения совместимости я предлагаю:
- Конфигурирацию СУВ разместить не в байте 1, а добавить новый (11-й по счету) байт 10. Формат байта можно оставить тот же, который описан в описании тикета.
- Реализовать в плате FS-08 следующую логику:
- Если в конфигурации порта байт 10 отсутствует (получено только 10 байт, 0...9), то применять настройку байта 1, как это делается сейчас. А именно:
- если байт 1 равен нулю, использовать СУВ A без инверсии - как если бы байт 10 присутствовал и был равен нулю;
- иначе (если байт 1 не равен нулю) использовать СУВ A с инверсией - как если бы байт 10 присутствовал и был равен 0xe2.
- иначе (если байт 10 присутствует) применять настройки байта 10 и игнорировать байт 1.
- Если в конфигурации порта байт 10 отсутствует (получено только 10 байт, 0...9), то применять настройку байта 1, как это делается сейчас. А именно:
comment:11 by , 4 days ago
Replying to ledol:
Это значит, что при передаче файла прошивки 12.bin ее нужно разместить в каталоге "firmware" SW-01 в папках 3 и 4 папки FS-08.
Понял. Спасибо за разъяснение.
follow-up: 13 comment:12 by , 4 days ago
Replying to alx:
Replying to ledol:
Переменная 5 - таблица, 8 строк по 10 байт каждая. Предлагается использовать существующий формат.
Спасибо за уточнение. В таком случае, предложенное изменение по-моему нарушает прямую совместимость (для плат исполнения 4). Если байт 1 имеет значение 1 (именно такое значение записывает туда веб-интерфейс при отмеченном чекбоксе "инверсия СУВ"), то в настоящее время плата FS-08 исполнения 4 инвертирует СУВ A: 1 - шлейф замкнут, 0 - шлейф разомкнут, 1 - звонок, 0 - нет звонка. Однако в новой семантике (описанной в описании тикета) получится 0 - шлейф замкнут, 1 - шлейф разомкнут, 0 - звонок, 1 - нет звонка. То есть сконфигурированная инверсия пропадет!
Для сохранения совместимости я предлагаю:
- Конфигурирацию СУВ разместить не в байте 1, а добавить новый (11-й по счету) байт 10. Формат байта можно оставить тот же, который описан в описании тикета.
- Реализовать в плате FS-08 следующую логику:
- Если в конфигурации порта байт 10 отсутствует (получено только 10 байт, 0...9), то применять настройку байта 1, как это делается сейчас. А именно:
- если байт 1 равен нулю, то инверсии нет - как если бы байт 10 присутствовал и был равен нулю;
- иначе (если байт 1 не равен нулю) использовать СУВ A с инверсией - как если бы байт 10 присутствовал и был равен 0xe2.
- иначе (если байт 10 присутствует) применять настройки байта 10 и игнорировать байт 1.
Платы исполнения 4 не выпускались. Настройка "инверсия СУВ" не актуальна. Смысла менять формат переменной не вижу.
follow-ups: 14 15 comment:13 by , 4 days ago
Replying to ledol:
Платы исполнения 4 не выпускались.
Думаю, ты ошибаешься. Согласно информации, полученной мной от начальника отдела разработок, платы исполнения 4 выпускались и отгружались заказчикам. Таким образом, у потребителей имеются и, скорее всего, работают платы FS-08 исполнения 4. В связи с этой информацией прошу рассмотреть мое предложение из comment:10.
follow-up: 17 comment:14 by , 4 days ago
Replying to alx:
предложение из comment:10.
А зачем лишние сложности? Почему нельзя просто использовать бит инверсии "как раньше" - если он присутствует в конфиге, то записать его в плату. Для старой прошивки FS-08 он включит инверсию, а новая прошивка его проигнорирует.
comment:15 by , 4 days ago
Replying to alx:
Replying to ledol:
Платы исполнения 4 не выпускались.
Думаю, ты ошибаешься. Согласно информации, полученной мной от начальника отдела разработок, платы исполнения 4 выпускались и отгружались заказчикам. Таким образом, у потребителей имеются и, скорее всего, работают платы FS-08 исполнения 4. В связи с этой информацией прошу рассмотреть мое предложение из comment:10.
Ну до вчерашнего дня на производстве шилась 3-я версия, мы ходили проверяли. Правда они наклейку от 4-й клеят, B1H4.
follow-up: 18 comment:16 by , 4 days ago
"рассмотреть мое предложение из comment:10."
Смущает меня, что при установке платы FS-08 версии 12 в блок будет требоваться обязательное обновление SW-01 и перенастройка по новой всех каналов.
follow-up: 19 comment:17 by , 4 days ago
Replying to san:
А зачем лишние сложности?
Не уверен, что правильно понял твой вопрос (о каких "таких" сложностях ты говоришь). Ответ "зачем" написан в comment:10: для сохранения совместимости.
Почему нельзя просто использовать бит инверсии "как раньше" - ... а новая прошивка его проигнорирует.
Потому что если прошивка будет игнорировать байт инверсии, то после обновления прошивки платы, сконфигурированной на работу с инверсией, эта инверсия пропадет - то есть плата перестанет работать! Это будет та самая несовместивомть, о которой я писал в comment:10, и которую предлагаю устранить.
comment:18 by , 4 days ago
Replying to ledol:
Смущает меня, что при установке платы FS-08 версии 12 в блок будет требоваться обязательное обновление SW-01 и перенастройка по новой всех каналов.
Так я же в comment:10 как раз предлагаю сделать так, чтобы это не требовалось! Плата с прошивкой ревизии 12, получив конфигурацию порта из 10 байт, в соответствии с предложенным мной алгоритмом будет следовать содержимому байта инверсии (байта 1). То есть ее работа никак не будет отличаться от работы платы с прошивкой ревизии 11!
А вот если сделать как ты предлагаешь в описании тикета, то плата с прошивкой ревизии 12 будет неправильно интерпретировать значение байта инверсии (пример приведен в comment:10).
follow-up: 20 comment:19 by , 4 days ago
Replying to alx:
Потому что если прошивка будет игнорировать байт инверсии, то после обновления прошивки платы, сконфигурированной на работу с инверсией, эта инверсия пропадет - то есть плата перестанет работать! Это бубет та самая несовместивомть, о которой я писал в comment:10, и которую предлагаю устранить.
Да, теперь я понял суть проблеммы.
ledol предложил другой вариант решения:
Если в конфиг файле или в конфиге платы FS-08 "байт 1" равен 0x1, то SW-01 должна интерпретировать это как значение 0xE3 (записать это в плату или отобразить в окне настроек). Значение 0xE3 старой прошивкой будет интерпретировано как инверсия и новой прошивкой тоже будет интерпретировано как инверсия(но уже в новом формате настроек).
comment:20 by , 4 days ago
Replying to san:
Если в конфиг файле или в конфиге платы FS-08 "байт 1" равен 0x1, то SW-01 должна интерпретировать это как значение 0xE3 (записать это в плату или отобразить в окне настроек).
Я понял, что ledol предлагает переложить решение проблемы со своей платы на плату SW-01. :) В принципе, это возможно (хоть и не логично).
Однако это какое-то половинчатое решение... А если байт 1 равен не 0x1, а 0x2? :) Тогда уж лучше засунуть в SW-01 алгоритм, предложенный в comment:10: при отсутствии в конфиге порта байта 10 добавлять его к конфигу автоматически (на основе значения байта 1). Платы со старыми прошивками будут продолжать использовать байт 1, платы с прошивкой ревизии 12 будут использовать байт 10.
follow-up: 22 comment:21 by , 4 days ago
А если байт 1 равен не 0x1, а 0x2? :)
В валидном конфиге "старой платы" этот байт может быть только 0 или 1.
Я понял, что ledol предлагает переложить решение проблемы со своей платы на плату SW-01. :) В принципе, это возможно (хоть и не логично).
Он проверил - старая прошивка FS-08 не переварит строку настроек длиннее 10 байт, поэтому решение из коммент10 не будет работать.
follow-ups: 23 25 comment:22 by , 4 days ago
Replying to san:
В валидном конфиге "старой платы" этот байт может быть только 0 или 1.
Откуда такая уверенность? :) Ты, видимо, основываешь это свое утверждение на двух допущениях:
- При включенной инверсии веб-интерфейсе всегда записывал в байт 1 значение 1.
- Конфигурация платы может быть создана только веб-интерейсом.
Верно ли первое допущение, не знаю даже я (я знаю, как есть сейчас, но не могу поручиться, что так было всегда). К счастью, при желании это можно выяснить в репозитории.
Верно ли второе допущение, наверное не знает никто. А вдруг пользователь формирует конфиг сам какой-то своей программой (типа КАУСС) для каких-то своих хитрых нужд? Я понимаю, что это маловероятно, но не невозможно.
Поэтому IMHO "академически правильным" решением будет, если уж ledol изначально выделил в настройках для хранения инверсии целый байт, то и оставить весь этот байт для инверсии. А для новых функций использовать новый байт.
Он проверил - старая прошивка FS-08 не переварит строку настроек длиннее 10 байт, поэтому решение из коммент10 не будет работать.
Ахринеть! :( Извините, непроизвольно вырвалось... :)
comment:23 by , 3 days ago
| Description: | modified (diff) |
|---|
Исправлено описание задачи в п.1 и п.4.
"1. Оставить в web-интерфейсе платы настройку "инверсия СУВ" для 4-го аппаратного исполнения платы."
"4. Версию 12 ПО платы применять к аппаратному исполнению платы 3."
Аппаратную версию платы 4 предлагаю исключить из репозитория и участка программирования как неполноценную.
comment:24 by , 3 days ago
| Description: | modified (diff) |
|---|
comment:25 by , 3 days ago
Replying to alx:
Ахринеть! :( Извините, непроизвольно вырвалось... :)
Учитывая, что в контроллере 16Кбайт ПЗУ и 2Кбайта ОЗУ, можно понять некоторые ограничения размеров строк.
Аппаратную версию платы 4 предлагаю исключить из репозитория и участка программирования как неполноценную.
Давайте так:
- Для исполнения 4 передавать прошивку 12 не будем (я знаю тех двух пользователей, которые получили экспериментальные платы, если им нужно будет обновиться, то сделаем это "вручную" и конфликта не будет). Вопрос с возможным конфликтом на этом будет закрыт.
- Если ПО платы меньше версии 12, то в окне настроек веб интерфейс должен отобразить баннер с требованием обновить ПО платы. Ledol предлагает признаком ПО с версией ниже 12 считать отсутствие в плате переменной .250.0.
follow-up: 27 comment:26 by , 3 days ago
Предлагаемая настройка "Звонок" мне не нравится - просторечье какое-то. :) Мне кажется, более грамотно будет назвать ее "Вызов". Нет ли возражений против такой замены?
comment:27 by , 3 days ago
Replying to alx:
Предлагаемая настройка "Звонок" мне не нравится - просторечье какое-то. :) Мне кажется, более грамотно будет назвать ее "Вызов". Нет ли возражений против такой замены?
У меня и ledol возражений нет

Replying to ledol:
Уточни, пожалуйста, что ты имеешь в виду, когда пишешь "переменная 5". В плате FS-08 на данный момент нет переменной, имеющей OID .5.0. Более того, конфигурации каналов (если я правильно понял, что "каналом" ты называешь порт) платы не находятся в одной переменной, конфигурация каждого порта находится в своей отдельной переменной. Например конфигурация порта 1 находится в переменной .5.1.1.0, конфигурация порта 2 находится в переменной .5.2.1.0 и т.д... В связи с этим непонятно, идет ли речь в процитированной фразе о добавлении какой-то новой переменной, или об использовании какой-то из уже существующих.