2023-10-29 babolo Удаление варнингов. 2022-02-27 babolo Замена BUILDINCLUDEDIR. 2022-01-30 babolo Обход неспособности последних версий clang к --oformat=binary. 2021-11-05 babolo Даты в копилефтах. 2021-05-29 babolo Ошибки работы с BLIN. 2017-11-12 babolo Была неинициализирована переменная. 2017-01-12 babolo Версия 0.11 Упорядочено использование переменных, в связи с чем местами уменьшена вложенность блоков. В 90 функции перевернут цикл протирки старших почтовых ящиков. 2017-01-11 babolo Упорядочено использование переменных, в связи с чем местами уменьшена вложенность блоков. В 91 команду побавлено протирание почтовых ящиков неиспользуемых счетчиков. 2017-01-10 babolo Пополнен usage(). Из flar убраны неявные флаги: Ez:Z:. Добавлены флаги комментария -# и тестирования -=. Замена почтового ящика 11 на 0 и 1. 2017-01-09 babolo Версия 0.10 Исправлен usage(). 2017-01-09 babolo Версия 0.09 Добавлена опция -F FILE для чтения опций из файла. Исправлена ошибка в mercumeter_artst(). Длинная последовательность в 4й команде заменена на цикл. Уехала величина, задаваемая cfg->contrwait по умолчанию, возвращена примерно на место. Введены в действие флаги MEMETER_NEGAT и MEMETER_POSIT. Команда 3 развернута в состояние, аналогичное команде 4. 2017-01-08 babolo Внедрены белый и черный списки (-p и -n). В функциях 3 и 4 убрана ненужня переменная m. В функции 4 несколько переменных объявлены уровнем выше. 2017-01-08 babolo Подготовка к внедрению белого и черного списков (-p и -n). Процедуры работы со списками в lib/arr. Пополнен usage(). Ввод адресов теперь насильно шестнадцатеричный. В функции 2 проверяется наличие CNTR. В функции 2 убраны ненужные переменные a, m. 2017-01-08 babolo Ликвидированы макросы MEMETER_7ODUMP и MEMETER_7IDUMP за ненадобностью. Утоптаны процедуры для замены длинной последовательности в 4й команде на цикл. 2017-01-07 babolo Параметризована единица таймаута MEMETER_SLEEPTICK. Замена на константу MEMETER_MINWAIT, изменение способа поддержки минимального таймаута. Замена таблицы перекодировки на из recobe. Перевод таблицы дней недели на английский. Перевод таблицы месяцев во внешний статик. Подготовка к замене длинной последовательности в 4й команде на цикл. Переразвертка циклов в 90й и 91й командах. 2017-01-07 babolo Версия 0.08 Новый флаг -T у mercumeterq. Теперь не прекращаем сбор в 91 команде по таймауту. 2015-02-23 babolo Перенос BUILDINCLUDEDIR. 2014-12-13 babolo Пополнена отладка. 2014-11-03 babolo Первый вариант memeter_msg. Поправлены копилефты. 2014-11-03 babolo Добавлен каталог inc. 2014-11-03 babolo Замена имен команд MEMETER_C_* на MEMETER_*, MEMETER_C_{G|S}ET_ADDR на MEMETER_{G|S}ET_CADDR. В level3 enum kind Был повтор PS, стал Ps. Коментарии. 2014-10-25 babolo Исправлены комментарии о непонятности в level6. Мог не помещаться результат в %1X. 2014-10-24 babolo На 3м уровне добавлены {S|G}ET_MB_* команды, помечены ABSENT. Добавлены #defineы для типов подчиненных узлов. Не используется, для справок. Описка в русском. 2014-10-21 babolo Версия 0.07 Перевод всего вывода по -I и -O на srderr, исправление форматов. 2014-10-19 babolo Версия 0.06 повторно. Не было конца строки. 2014-10-19 babolo Версия 0.06 Теперь memeter_dump() выводит заголовок в stderr. 2014-09-26 babolo Сообщения программ о себе приведены к единому виду. 2014-08-31 babolo Версия 0.05 Результат recobe_loadM() и recobe_load() приводится к типу нужного размера. В octets не хватало BLINflag. У recobe нет динамической библиотеки, используем статическую. Не везде поддерживается квалификатор _Noreturn. Удалена неиспользуемая nibble(). Подстройка знакоаости. Нынче hextrin() не в той библиотеке. 2014-08-30 babolo Версия 0.04 Форматирование. 2014-08-30 babolo Переход на babolo-libmake:3, babolo-parser:3 и recobe:1. Пополнены DEBUG_FLAGS. Переопределены BUILDINCLUDEDIR и LIBINCLUDEDIR для тестирования библиотек. В mercumeter.h поставлена защита _MEMETER_H_ и окружение __*_DECLS. Файлы top и plcii пока в сторонке. 2013-07-06 babolo Версия 0.03 Определены полезные константы и типы. Исправлен порядок инклудов. 2012-02-29 babolo Версия 0.02 Название константы MEMETER_C_GET_COFF стало MEMETER_C_GET_TRANS_COFF. Зависимость от babolo-parser не была указана. Уменьшены варнинги по зогласованию типов с форматом печати. При трансляции при наличии установленной библиотеки она подхватывалась вместо собственной версии. Невылет на последовательностях команд привел к core dump по ошибке. Теперь невылет стал не таким глобальным, не делается попыток распечатать результат невыполненной команды. Теперь в 90 и 91 командах вывод умножается на коэффициенты трансформации. Форматирование. 2012-02-25 babolo Версия 0.01 Отлажено на Меркурий 233 ART 03 KRL через PLC-II контроллер. В функциях 90 и 91 добавлена возможность выдавать INSERT INTO, где имя таблицы задается опцией -i. 2012-02-22 babolo Изменено управление записью в mbox счетчика, в связи с этим поменялся memeter_ctr.mst . В Makefileах исправлены зависимости. Добавлена и исправлена отладочная печать. Исправлена команда C_SET_TRANS_COFF. Процедура getallc() теперь получает размер mboxа. Убрано множество break в mercumeterq. В 3й функции mercumeterq было лишнее условие. Поменялись названия коэффициентов Ku, Kt (была калька Kn, Kt). В 90й функции mercumeterq добавлено получение времени. В 90й функции mercumeterq добавлена зачистка всех mboxов кроме используемых. В 90й функции mercumeterq неправильно выводился результат. В 91й функции mercumeterq добавлена проверка и исправление mboxов. В 91й функции mercumeterq добавлено получение времени. Добавлены функции 92 (получение энергии за указанный месяц) и 99 (установка Ki). Форматирование. 2012-02-21 babolo В параметры обращения через контроллер добавлен флаг для mbox. Добавлены варианты для прописывания конкретных команд и чтения результатов. Форматирование. 2012-02-21 babolo В 0ом уровне перенес блокирование, перед записью вместо после. В 0ом уровне исправлено условие окончания приема. Видимо, у C_GET_PEAK_PWR был обратный порядок байтов. Добавлена опция -w для времени ожидания ввода. Исправлено обращение к C_GET_PEAK_TIME и C_GET_PEAK_PWR. 2012-02-21 babolo Исправлено определение сериала. 2012-02-20 babolo Замена DATA на DATE, F на FREQ, команды C_GET_MAIN_PARAMS1, C_GET_FIXED и C_GET_MAIN_PARAMS2 заменены на трехбайтовые команды, соответствуюущие макросы MEMETER_C_PARAM_* удалены. Добавлены макросы MEMETER_C_PARAM_PWR_*. Теперь адрес счетчика, если есть, стал опцией, без него проход по всем обнаруженным счетчикам. В командах C_ENERGY_* месяц стал последним необязательным параметром. Исправлена ошибка в описании C_GET_FLAGS. 6й уровень менял строку, полученную с 5го уровня. За счет разнесения команд на 3х байтовые убрана варианивность в описании этих команд и убрано первое слово - длинна результата. Небольшая утечка памяти в mercumeterq. Неудачи babolo_getarg() теперь озвучиваются. Проверка команд C_GET_PEAK_TIME и _C_GET_PEAK_PWR выключена из mercumeterq, поскольку тестовым счетчиком не поддерживаются. Форматирование. 2012-02-19 babolo Изменены прототипы memeter_5ans() и memeter_6ans(). Параметр out и работа с ним поменялись так, что транслятор не имеет возражений. В memeter_6ans() двухбайтовые значения выдавались по байтовому счетчику. В mercumeterq поиск счетчиков вынесен в отдельную процедуру. Не инициализировался cfg->nmeter. 2012-02-19 babolo Не было описаний memeter_6req() и memeter_6ans() в mercumeter.h. Виесто MEMETER_SEG_STATUS_MASK теперь отслеживается MEMETER_SEG_STATUS_ANS_READY. Изменилась отработка задержки в memeter_4ant(), в связи с этим единица задержки в contrwait стала в 4 раза короче - 2.5 мс. Поправлены дампы 5го уровня. В memeter_5ans() занулялся указатель на выходной массив. В memeter_5ans() повышена локальность переменных. В memeter_5ans() вариант MEMETER_PLCII_THROUGH выдавал результат неправильного типа. Было неправильное описание C_GET_ADDR. Параметр cmd у memeter_6ans() был неправильного типа. В memeter_6ans() занулялся указатель на выходной массив. В memeter_6ans() неправильно обрабатывался выходной формат 8, 9, 14. В mercumeterq добавлена отладочная печать, многие ошибки в тестовых прогонах сделаны не фатальными. В mercumeterq повышена локальность переменных. Во втором прогоне mercumeterq был возможен заказ на нулевую задержку. В mercumeterq добавлен 4й прогон по 6му уровню. Форматирование. 2012-02-19 babolo Нормальный текст о в usage(). У usage(0 убран ненужный параметр. У второго параметра babolo_getparm() убрано приведение, все равно варнинг. Для общей логичности поменялись 0 и 1 задачи mercumeterq. 2012-02-18 babolo Форматирование. 2012-02-18 babolo Сделан 6й уровень. Установлено ограничение на минимальную длительность ожидания ответа через mbox контроллера для того, что бы ограничить снизу минимальный положительный ответ по таймауту. Типы memeter_3ans* стали memeter_ans*, поскольку универсальныдля верхних уровней. Поменялся интерфейс memeter_store() и memeter_load(), длинна может быть отрицательной, как признак обратного порядка байтов. Новая процедура memeter_vaxload(), которая работает с VAX порядком. Все отрицательные результаты у int функций с 4го уровня и выше, возвращающих статус, описаны макросами MEMETER_EX_*. memeter_4ant() теперь при таймауте возвращает интервал, который уже ждать не пришлось. В memeter_5req() была утечка - не освобождался out. Ответы от PLCII модема описаны макросами MEMETER_EX_*. В memeter_5ans() при MEMETER_EX_4COMM ответе от модема портился код ответа. Добавлена отладочная печать. Форматирование. 2012-02-15 babolo Сделан 5й уровень. В конфиг структуру добавлено максимальное время получения ответа счетчика через контроллер для таймаута. Новая структура memeter_ctr для общнения на высоких уровнях. Интерфейс memeter_4req() и memeter_4ans() изменился с использованием memeter_ctr. Новая процедура memeter_4ant() дожидается ответа или таймаута на 4 уровне. В 0м уровне замена fprintf(stderr) на printf(). Сокращен с 4096 до 512 INBUF. Массовое уточнение и исправление логики 4го уровня. Убрана неиспользуемая переменная в octets. Замена размера буфера на макрос INBUF. Добавлен тест 3 для проверки уровня 5. Исправления формата вывода. Форматирование. 2012-02-12 babolo Определены флаги до 7ODUMP и 7IDUMP. Процедура memeter_dump() разбита на две: memeter_dump() и memeter_dumpx(). Переименование файлов с 0 по 3й уроверь. Переименование lib/crc в lib/octets. Исправлена длинна общей части у SET_SEG_STATUS (level3), STATUS в ответе может отличаться от статуса в запросе. В 3ODUMP добавлен вывод длинны массива. Новая процедура hextring() в mercumeterq. Мелкие поправки и дополнения в отладке и комментариях. 2012-02-12 babolo Дампы поменялись так, что в начале каждой строки дампа стоит идентификатор уровня и направления. Исправлены описания команды 9A и параметров PM контроллера. Возможное деление на ноль стало неверной длинной. Неправильно использовалась memeter_store() в pres - порядок параметров. Диагноз "short answer" теперь ставится только по однобайтовому ответу. Заработал 3IDUMP. Исправлено условие проверки в ответе длинны общей с запросом части. В mercumeterq добавлена расшифровка битов. В mercumeterq дописаны и отлажены запросы. Добавлено описание структуры ответа memeter_3ans8. Пополнена и переставлена структура memeter_cfg. Добавлено определение битов к команде 97 котроллера. Добавлена отладочная печать. Исправлен комментарий. Добавлена недоработка. 2012-02-10 babolo Добавлены 2 структуры ответов. Повышена локализация переменных в pres и mercumeterq. Распутаны флаги ODUMP и IDUMP. В mercumeterq добавлены и исправлены обращения к 3му уровню. В комментарии к описателям команд добавлены дазделы мануала. Добавлены комментарии к структуре, описывающей команды. 2012-02-09 babolo Заработал 3й уровень. Замена макроса UART_HDRLEN на MEMETER_UART_HLEN. Процедура memeter_0dump() перенесена в crc, сменила имя на memeter_dump() и стала публичной. Прототипы memeter_0exchg() и memeter_2exchg() изменились. Ликвидирован memeter_1print(). Теперь VTIME для линии к контроллеру берется из cfg->wait. Теперь мусор 0го уровня выводится только когда он есть. Дамп вывода 0го уровня перенесен к выводу, выводится после мусора. Сделаны дампы на 2ом уровне. Новая процедура memeter_1dump(). В mercumeterq ошибка в процедуре nibble(). Изменился масштаб cfg->wait, из 1мс стал 100мс. Добавлен параметр "вид запроса" перед запросом в mercumeterq. Новая метка err: в mercumeterq для обработки общих для видов запроса ошибок. Добавления к обработке ошибок. Отмечены недоработки. Форматирование. 2012-02-06 babolo В memeter_0dump() добавлена метка. Убрана проверка на чтение больше заказанного. Добавлен дамп прочитанного мусора. Убран usleep() поосле read() EAGAIN. Попытка распечатать лишнее в отладке перед read(). В отладке после чтения не стал выводить длинну предыдущего чтения. 2012-02-06 babolo Выброшен вариант с kqueue(). Чтение переписано так, что может дочитывать. 2012-02-06 babolo Показ модемных сигналов в memeter_statinfo(). Процедура memeter_wt() для смены режима BLOCK/NONBLOCK. Выброшено обращение TIOCSETA при инициализации, оставлено TIOCSETAW. Исправлен размер строки в memeter_0dump(). Выписан вариант с kqueue(), но kqueue() не просыпается. Управление вариантом "в лоб"/kqueue при помощи макроса MEMETER_CRUDEIO. Введено предварительное чтение перед записью на случай, если там есть какой-то мусор. Единое место освобождения памяти результата при ошибке в memeter_0exchg(), введенена переменная ex для управления этим. Комментарии. 2012-02-05 babolo Ошибка в проверке crc24. Убран отладочный print. 2012-02-02 babolo Внутри memeter_0pack определена memeter_1pack. Теперь VTIME не нулевое. Ликвидирован kqueue(). Ошибка в crc24(). Не была установлена скорость на порту. 2012-02-02 babolo Флаги для отслеживания ввода-вывода на 0..2 уровнях. Переименование файла phys.c в net.c. В net.c дописан ввод и вывод. Дебуги на входах и выходах из процедур. Форматирование. 2012-02-01 babolo Константа UART_HDRLEN перенесена в mercumeter.h. Определено несколько флагов в memeter_cfg. Появился пакет сетевого уровня memeter_0pack. В memeter_1pack структура стала непоименованной, а payload стал p2 и включает контрольную сумму. Состав и параметры процедур поменялись. Появился уровень 2 - sess. Зависимая от порядка байтов bcopy() заменена на memeter_store(). Стал автоматом при необходимости запускаться memeter_0init(). 2012-02-01 babolo Не готово.