SDK для Android касс оснащенных контроллером ФН "TM" производства Нилстар:
--------------------------------------------------------------------------
- ПэйМоб-4 Ф
- ПримСмарт Лайт Ф;
- Прим-Ф20 Ф;
- NewPOS Ф;
- ТАКТИЛИОН-А Ф;
- IRAS-E Ф;
- IRAS-EM Ф;

Состав SDK:
-----------
1) Каталог example: исходные тексты программы демонстрирующую работу с контроллером ФН.
2) Каталог tm: описание (javadoc) интерфейса библиотеки сопряжения (tm...aar).
3) Каталог aar: (tm...debug.aar, tm...release.aar) - библиотеки сопряжения для работы с сервисом, обеспечивающим взаимодействие с контроллером ФН.
4) Каталог doc: документация.

Информация о SDK:
-----------------
Ограничения на SDK:
   minSdkVersion 21
   targetSdkVersion 36
   compileSdk 36

SDK собран на:
Android Studio Meerkat Feature Drop | 2024.3.2 Patch 1
Build #AI-243.26053.27.2432.13536105, built on May 22, 2025

История изменений:
------------------

Версии с поддержкой ФФД 1.2/1.1/1.05

3.2.3:
- TMOfd, TMOism: Устранена возможность выхода из потока отправки при ошибках работы с КФН.
- TMLib: Android логирование обмена с КФН: команд "TM CMD ...", коротких команд "TM DLE ...".
- TMLib: Оптимизирован код ожидания ответа от КФН.
- TMOismHandler: Исправлена проверка КМ без ОИСМ, когда установлены в теге 1290 биты 14,15,16.

3.2.2:
- TMOismHandler: Добавлена команда 24, если нет проверки в ОИСМ онлайн.
- TMCommand: Исправлена команда CmdBar2Dprint [1F] (для совместимости с протоколом ИСКРА).
- TMLib: Поправлено логирование отправки команд ("TM cmd send:...") и получение ответов ("TM cmd resp:...").
- TMLib: Функции для отправки команд (DoCmd, DoDLE, SendCmd, SendDLE) возвращаемое значение заменено на boolean (true: успешно).
- TMOfd,TMOism: Добавлено кэширование получения адреса (для уменьшения времени повторных отправок).
- TMOfd,TMOism: Исправлен перерасчет таймаутов для соединения (для совместимости с протоколом ИСКРА).
- TMKeysUpdate: Исправлен перерасчет таймаутов для соединения с АС ОКП (для совместимости с протоколом ИСКРА).
- TMOismHandler: Добавлено хранение сетевого адреса сервера (ip) на время всей процедуры валидации товара (чтобы не получать его повторно для каждого товара).
- TMOismHandler: Исправлен перерасчет таймаутов для соединения с ОИСМ (для совместимости с протоколом ИСКРА).

3.2.0:
- TMCommand: Добавлена команда CmdGetTax [59] "Получение данных о налоговой ставке".
- TMCommand: Добавлен класс cmdFNgroupBx "Поддержка команд ФН группы Bx" (нужно для работы ТС ПИоТ).
- TMCommand: Добавлена команда CmdFNGroupBx [98] "Работа с командами ФН группы Bx" (для ТС ПИоТ).
- TMCommand: Добавлен класс reasonServiceMode "Коды причин самостоятельного выхода КФН в сервисный монитор"
  (дополнение к ошибке ERR_KFN_IN_SERVICE_MODE).
- TMCommand: Добавлен в errors код ошибки ERR_KFN_IN_SERVICE_MODE "КФН находится в сервисном режиме".
- TMCommand: Добавлен класс paramServiceMode "Дополнительные параметры для сервисных команд".
- TMCommand: Добавлена команда CmdServiceMode [9C] "Сервисная команда в КФН (аналог команды сервисного монитора)".
- TMCommand: Добавлена команда CmdBar2Dprint [1F] "Печать 2D штрихкода".
- TMOismHandler: в TMOismHandler.Item добавлены члены для получения ответа из ОИСМ:
  - oismTlvList: Полученный из ОИСМ TLV результатов проверки.
  - oismTag2106: Результат проверки сведений о товаре в ОИСМ (тег 2106).
  - oismTag2100: Тип кода маркировки (тег 2100).
  - oismTag2109: Ответ ОИСМ о статусе товара (тег 2109).
  - oismTag2105: Коды обработки запроса в ОИСМ (тег 2105).
  - oismTag2005: Результаты обработки запроса в ОИСМ (тег 2005).
  - oismDT: Дата и время запроса (unixtime).
- TMCommand: Добавлены в tax_indexes индексы с поддержкой НДС 22%.

3.1.5:
- TMOismHandler: добавлен конструктор в TMOismHandler.Item с planStatusKM (для установки планируемого статуса КМ).
- TMOismHandler: добавлен StartValidate без использования типа чека (для случае когда планируемый статус КМ установлен в запросе).
- TMOismHandler: исправлено поведение StartValidate (если установлен планируемый статус на входе, то используется он).
- TMKeysUpdate, TMOismHandler: убраны лишние классификаторы в описаниях интерфейсов.

3.1.4:
- TMCommand: Добавлена команда CmdGetReportPayment [36] - получение отчета по типу оплат.
- TMCommand: Добавлена команда CmdGetReportExt [37] - получение электронного отчета (расширенного).

3.1.2:
- TMTag: Добавлены теги согласно документу "ФНС России от 14.09.2020 № ЕД-7-20/662@".
- TMDefaults: Добавлены определения для рекомендуемых таймаутов работы с КФН TMDefaults.tm_timeouts.

3.1.1:
- Переведена сборка на Andrid SDK 36 (up to android 16).
- В манифест добавлен раздел queries с указанием package (нужно для обращения к сервису из других приложений - начиная с Android API 30).
- TMLib: Поддержка api 33 (Android 13 TIRAMISU) запуск сервиса работы с КФН.
- TMLog: убраны некоторые неиспользуемые переменные.
- TMLib: исправлeна процедура первичного запуска контроллера ФН
- TMCommand: Добавлена команда включения/выключения УПД CmdOnOffUPD.
- TMCommand: Уточнены Флаги динамического статуса контроллера ФН:
     0x1000 - Бит в 1: УПД подключено к ККТ (возможен только на виртуальных КФН или стационарных ККТ).
     0x2000 - Бит в 1: УПД работает (возможен только на виртуальных КФН или стационарных ККТ).
- TMOism, TMOfd: Таймауты в операциях с серверами сделаны совместимыми с протоколом ИСКРА (если меньше 1000, то в секундах, если больше то в миллисекундах).

3.1.0:
- TMCommand: Уточнены параметры документов doc_params2.
- TMCommand: Добавлена структура дополнительные параметры документов doc_params4.
- TMCommand: Добавлен параметр в команду CmdSetParams, уточнено описание CmdGetParams.
- TMCommand: Добавлены определения в tax_indexes для новых налогов:
    NDS_05 - НДС 5%;
    NDS_07 - НДС 7%;
    NDS_05_105 - НДС 5/105;
    NDS_07_107 - НДС 7/107.

3.0.6:
- TMLib: Сделана синхронизация и обработка исключений при работе с диалогом в TMWaitMessage (приводило к сбою приложения).
- TMCommand: Добавлена константа MAX_DEPARTMENTS максимальное количество отделов.
- TMCommand: Добавлена константа MAX_PAYMENT_TYPES максимальное количество видов платежей.

3.0.5:
- Повышена минимальная поддержка до Android sdk 21 (Android 5.0).
- TMKeysUpdate, TMOismHandler добавлен в конструктор возможность установки таймаута обращения КФН.
- TMCommand.calc_objects: добавлены признаки предметов расчета (тег 1212), используемые в ФФД 1.2.
- TMCommand: добавлена функция CmdKMGetStatus "Запрос статуса КМ"[20] c дополнительным параметром.

3.0.4:
- TMCommand.errors: добавлена ошибка ERR_NO_MORE_REGISTRATIONS (регистрации исчерпаны).
- TMKeysUpdate: добавлен возврат текста всех ошибок при обновлении ключей.
- TMOismHandler: скорректирована проверка маркировки (анализ новых битов регистрации).
- TMCommand: добавлены новые режимы (mode_types) регистрации ККТ:
       VENDING - Бит установлен: ККТ с торговым автоматом.
       CATERING - Бит установлен: ККТ в общественном питании.
       WHOLESALE - Бит установлен: ККТ в оптовой торговле и ИП.
- TMCommand: добавлена функция GetUnitIDHex для преобразования единицы измерения в hex строку для ФФД 1.2.
- TMOfd, TMOism: добавлена проверка на автономный режим - поток завершается если установлен автономный режим.

3.0.3:
- TMOismHandler: В функцию TMOismHandler.StartValidate добавлен параметр
       isCheckInOism нужно ли проверять чек в ОИСМ (false - уведомительный режим [M], true - с проверкой онлайн в ОИСМ [M+][M-]).
- TMCommand: Размер буфера определяются по значению TMDefaults.CAPACITY.
- TMParser: Размер буфера определяются по значению TMDefaults.CAPACITY.
- TMDefaults: Добавлена константа CAPACITY - максимальный размер буфера команды КФН (увеличен до 4096).
- TMMarkCode: Исправлено определение тега(1306) для табачного кода маркировки(КТ КМК).
- TMMarkCode: Исправлено не корректная обработка маркировки ean-13 с неправильной контрольной суммой.
- TMMarkCode: Исправлено определение тега(1307) для кода маркировки(КТ МИ) меховых изделий.

3.0.2:
- TMOismHandler: Исправлена обработка маркированного товара с количеством в упаковке;
- TMCommand: Добавлен параметр mode в функции CmdFNClose (без параметра функции объявлены устаревшими).

3.0.1:
- TMMarkCode: добавлен класс TMMarkCode с вспомогательными функциями обработки маркировочных кодов;
- TMTag: добавлен класс TMTag для перечисления тегов ФФД; 
- TMLibHandler: добавлен конструктор в TMLibHandler (конструктор по умолчанию у Handler устарел);
- TMCommand: добавлены команды для передачи данных в автономном режиме;
- TMLib: добавлены функции управления фоновой работы с ОИСМ StartOISM, StopOISM;
- TMOism: добавлен класс TMOism для фоновой отправки уведомлений в ОИСМ;
- TMOismHandler: добавлен класс TMOismHandler - хендлер для проверки КМ в ОИСМ;
- TMCommand: убран устаревший функционал "ЧЕК КОРРЕКЦИИ по ФФД 1.05";
- TMCommand: добавлен перечень unit_id допустимых единиц измерения количества товара (тег 2108);
- TMCommand: добавлена функция GetUnitID для определения кода единицы измерения для ФФД 1.2;
- TMKeysUpdate: добавлен класс TMKeysUpdate - хендлер для обновления ключей на АС ОКП;
- TMCommand: добавлена функция GetFieldLength для получения длины поля;
- TMCommand: добавлена функция CmdRegistration_1_2 для регистрации по ФФД 1.2;
- TMCommand: добавлен класс kkt_mode_reg (тег 1290) режим ККТ при регистрации;
- TMCommand: добавлен класс asokp_cmd описание байта дополнительной команды для работы с АС ОКП;
- TMCommand: добавлена функции для работы с АС ОКП;
- TMCommand: добавлен класс server_types описание типов серверов ОФД/ОИСМ/АС ОКП;
- TMCommand: добавлены функции CmdOFDGetParamExt, CmdOFDSetParamExt для настройки параметров серверов;
- TMCommand: mode_types добавлены режимы для поддержки ФФД 1.2.

Версии с поддержкой ФФД 1.1/1.05

2.1.8:
- TMError: TMError.GetPrnText для получения текста ошибки печати;

2.1.7:
- TMCommand: Исправлены описания и определения TMCommand.dynamic_status_flags и TMCommand.hard_status_flags;

2.1.6:
- TMCommand: добавлены команды:
  - CmdSetDepNames программирование отделов;
  - CmdGetDepNames получение данных по отделам;
  - CmdSetPayment установка данных о виде платежа;
  - CmdGetPayment получение данных о виде платежа;
- TMCommand: добавлены определения типов штрихкодов TMCommand.barcode_types для команды TMCommand.ReceiptBarcode;
- TMCommand: добавлена команда TMCommand.CmdGetCurCounters "Получение текущих номеров документов";
- TMCommand: добавлено в TMCommand.calc_objects (тег 1212) определения для значений 20..26;
- TMCommand: добавлено в TMCommand описание возвращаемых ответов на команды;
- TMCommand: добавлена структура fn_warn_flags (флаги состояния ФН) в TMCommand.
- TMLib: добавлена функция getRegisteredHandler для получения текущего хендлера, регистрированого в TMLib;
- TMCommand: добавлена структура proto_ffd (версия протокола ФФД, тэг 1209) в TMCommand;

2.1.3:
- Демонстрационное приложение example обновлено до версии 1.0.3;
- TMLib: в функции activate заменено "Активация ФР" на "Инициализация ФН";
- TMLib: логирование (Log.d) используется только для DEBUG сборок;
- TMLib: в функцию unbind добавлен параметр Context (чтобы не хранить его внутри класса);
- TMLib: убран ProgressDialog заменен на AlertDialog;
- TMLib: убран AsyncTask (заменен на Thread);

2.1.2:
- TMLib: добавлена функция SendPrintParam - установить параметры печати.

2.1.0:
- Демонстрационное приложение example обновлено до версии 1.0.2;
- TMCommand: добавлены команды:
  - CmdEJGetParam команда "Запрос параметров РПКУ" [49];
  - CmdEJShiftCloseReport команда "Печать 'Отчёта закрытия смены' из РПКУ" [7С];
  - CmdEJTimeReport команда "Отчёт из РПКУ по времени" [7D];
  - CmdEJNoReport команда "Отчёт из РПКУ по номерам документов" [7E];
  - CmdEJNoDoc команда "Документ по номеру из РПКУ" [7F];
  - CmdEJPrint команда "Печать РПКУ" [84];
  - CmdEJErase команда "Стирание РПКУ" [85];
- TMLib: Исправлена ошибка отправки команд в контроллер ФН DoCmd и DoDLE
         (ошибки таймаута определялись только при выводе диалога отправки);
- TMLib: Добавлены функции:
  - getLastResponse получение последнего ответа из контроллера ФН на команду;
  - getDynamicStatus получение динамического статуса из последнего ответа контроллера ФН;
  - getHardStatus получение постоянного статуса из последнего ответа контроллера ФН.
- TMOfd сделан как Thread (ранее был AsyncTask), чтобы не блокировать AsyncTask приложения;
- Добавлен код для ошибки печати штрихкода TMDefaults.prn_err.BARCODE_FAIL;
- Добавлена функция TMLib.start (используется для инициализации оборудования и запуска потока работы с контроллером ФН);
- Добавлена функция TMCommand.GetFieldBin - чтение бинарного поля.

2.0.6:
- Добавлено демонстрационное приложение example;
- Расширены возможности работы с контроллером ФН:
  - добавлена фоновая отправка документов в ОФД;
  - расширен интерфейс получения версии сервиса.

2.0.0:
- Первая публичная версия SDK.



