Добавить пояснения к исходникам, заголовкам TI, настройкам CCS и существующим проверкам. Зафиксировать правила кодировки, обзор модулей и аудит комментариев.
48 lines
4.4 KiB
C
48 lines
4.4 KiB
C
/* Дополнительная карта GAS 167/v1 только для новой EEPROM M95M02. Русские пояснения сохранены в UTF-8. */
|
|
/* Начинает условие: BALSAM167_GAS_H ещё не определён; защищает повторное включение или задаёт значение сборки. */
|
|
#ifndef BALSAM167_GAS_H
|
|
/* Определяет защитный символ или переключатель BALSAM167_GAS_H для последующей компиляции. */
|
|
#define BALSAM167_GAS_H
|
|
/* Подключает "eeprom_config.h": выбор профиля физически установленной EEPROM при сборке. */
|
|
#include "eeprom_config.h"
|
|
/* Подключает <stdint.h>: настройки и интерфейс stdint. */
|
|
#include <stdint.h>
|
|
|
|
/* Профиль платы 167/v1 использует словные адреса независимо от транспорта.
|
|
* Штатные адреса технологических регистров и УМП остаются доступными в обеих сборках.
|
|
* Дополнительные области GAS присутствуют только при установленной M95M02.
|
|
*/
|
|
/* Условие компиляции EEPROM_M95M02: выбранный блок включается в текущий вариант прошивки. */
|
|
#if EEPROM_M95M02
|
|
/* Задаёт GAS167_REG_BASE = 0x5000U; начало псевдонимов 128 технологических регистров GAS, адрес 0x5000. */
|
|
#define GAS167_REG_BASE 0x5000U
|
|
/* Задаёт GAS167_REG_COUNT = 128U; число технологических слов GAS; скрытое слово modbus[128] в диапазон не входит. */
|
|
#define GAS167_REG_COUNT 128U
|
|
/* Задаёт GAS167_INFO_BASE = 0x5F00U; начало доступного только для чтения дескриптора GAS, адрес 0x5F00. */
|
|
#define GAS167_INFO_BASE 0x5F00U
|
|
/* Задаёт GAS167_INFO_WORDS = 8U; длина дескриптора GAS — восемь 16-битных слов. */
|
|
#define GAS167_INFO_WORDS 8U
|
|
/* Задаёт GAS167_MAX_WORDS = 124U; максимальная длина чтения GAS — 124 слова; служебный CAN требует чётную длину. */
|
|
#define GAS167_MAX_WORDS 124U
|
|
/* Задаёт GAS167_PROFILE_VERSION = 1U; версия карты адресов GAS 167/v1. */
|
|
#define GAS167_PROFILE_VERSION 1U
|
|
#define GAS167_CAPABILITIES 7U /* Бит 0 — RTU, бит 1 — служебный CAN, бит 2 — запись FC06. */ /* Задаёт GAS167_CAPABILITIES = 7U; маска возможностей: бит 0 — RTU, бит 1 — служебный CAN, бит 2 — FC06. */
|
|
|
|
/* Вызывается транспортами из главного цикла под краткой блокировкой IRQ.
|
|
* Буфер ответа должен вмещать не меньше GAS167_MAX_WORDS слов uint16_t.
|
|
* RTU читает 1..124 слова; служебный CAN — чётное число слов 2..124.
|
|
* Успешное чтение возвращает число слов. Запись или ошибка возвращает адрес/значение.
|
|
* error: 0 — успех, 1 — функция, 2 — адрес, 3 — значение.
|
|
* Здесь нет обмена EEPROM, выделения памяти или изменения устройства регистратора.
|
|
*/
|
|
/* Проверяет принадлежность адреса одному из двух диапазонов GAS 167/v1; доступно только для M95M02. */
|
|
int gas167_contains(uint16_t address);
|
|
/* Проверяет весь запрос FC03/FC06 до доступа к данным и формирует снимок регистров или дескриптора GAS. */
|
|
unsigned gas167_prepare(unsigned function, uint16_t address, uint16_t value,
|
|
/* Объявляет can — CAN; reply — данные reply. Хранит указатель на данные. */
|
|
int can, uint16_t *reply, unsigned *error);
|
|
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
#endif
|
|
/* Закрывает условный блок препроцессора; дальнейшие строки относятся к внешнему уровню. */
|
|
#endif
|