SMART OS v2.8.0
Файл smart_hmi.h

API для описания интерфейса HMI. Подробнее...

#include <stdint.h>
Граф включаемых заголовочных файлов для smart_hmi.h:
Граф файлов, в которые включается этот файл:

См. исходные тексты.

Структуры данных

struct  menu_item_t
 Структура описания элемента меню Подробнее...
 
struct  menu_t
 Структура описания меню Подробнее...
 
struct  combobox_t
 Метаданные элемента меню ComboBox. Подробнее...
 

Макросы

#define ITEM_FLAG_RO   0x00
 По-умолчанию (только чтение)
 
#define ITEM_FLAG_RW   0x01
 Возможно изменение значения
 
#define ITEM_FLAG_SU   0x02
 Требуется режим суперпользователя
 
#define MENU_PROTOTYPE(name)    const menu_t name;
 Макрос описания прототипа меню
 
#define MENU_ITEMS_COUNT(menu)   (sizeof(menu) / sizeof(menu_item_t))
 Макрос для вычисления кол-ва элементов меню
 
#define MENU_ITEM(text, type, flags, param, ptr)   {text, type, (flags), (param), (void *)(ptr)}
 Макрос описания элемента меню
 
#define BEGIN_MENU(name)    const menu_item_t name##_items[] = {
 Макрос начала блока описания меню
 
#define END_MENU(name, text)
 Макрос конца блока описания меню
 
#define BEGIN_STRING_LIST(name)   const char * const list_##name[] = {
 Макрос описания начала списка строк
 
#define END_STRING_LIST   };
 Макрос описания конца списка строк
 
#define LIST_ITEMS_COUNT(list)   (sizeof(list) / sizeof(char *))
 Макрос определения количества элементов в списке строк
 
#define DECLARE_COMBOBOX(name, slot, lst)
 Макрос описания комбобокса
 

Перечисления

enum  menu_item_type_t {
  ITEM_TYPE_BIT = 0 , ITEM_TYPE_BIT_P , ITEM_TYPE_BIT8 , ITEM_TYPE_INT ,
  ITEM_TYPE_INT_P , ITEM_TYPE_FLOAT , ITEM_TYPE_FLOAT_P , ITEM_TYPE_STRING ,
  ITEM_TYPE_STRING_P , ITEM_TYPE_SETTING , ITEM_TYPE_CHECK , ITEM_TYPE_COMBO ,
  ITEM_TYPE_DATE , ITEM_TYPE_TIME , ITEM_TYPE_DATETIME , ITEM_TYPE_UPTIME ,
  ITEM_TYPE_HEADER , ITEM_TYPE_IPV4 , ITEM_TYPE_ACTION , ITEM_TYPE_SUBMENU
}
 Типы элементов меню Подробнее...
 
enum  dlg_result_t { DIALOG_CANCEL = 0 , DIALOG_OK }
 Коды результата работы диалога Подробнее...
 
enum  dlg_type_t { DLG_MSGBOX , DLG_SAVECANCEL , DLG_YESNO }
 Тип диалога Подробнее...
 
enum  hmi_event_t { HMI_EVENT_REDRAW , HMI_EVENT_KEY }
 События HMI. Подробнее...
 
enum  keycode_t
 Коды клавиш
 

Функции

hmi_event_t hmi_wait ()
 Ожидать события HMI.
 
int menu_handler (const menu_t *m)
 Обработчик отрисовки меню HMI.
 
dlg_result_t hmi_message_box (const char *title, const char *msg, dlg_type_t type)
 Вызов диалога с текстовым сообщением
 
void hmi_service ()
 Обработка сервисных задач, связанных с HMI.
 
keycode_t kbd_get ()
 Получить клавишу из буфера клавиатуры
 
keycode_t kbd_peek ()
 Проверить клавишу в буфере без изъятия
 
void lcd_buffer_clear ()
 Очистить буфера экрана без перерисовки
 
void lcd_fill ()
 Отрисовать буфер на экране
 
void lcd_draw_dialog (const char *title, const char *text, dlg_type_t type)
 Отрисовать шаблон диалогового окна
 
void lcd_draw_rectangle (uint32_t x, uint32_t y, uint32_t w, uint32_t h)
 Отрисовать прямоугольник
 
void lcd_draw_bitmap (const uint8_t *xbm, uint8_t w, uint8_t h, uint8_t x, uint8_t y)
 Отрисовать изображение в формате XBM.
 
void lcd_invert_block (int col, int row)
 Инвертировать пиксели знакоместа стандартного шрифта 6х8.
 
void lcd_clear ()
 Очистить экран
 
void lcd_goto (uint8_t col, uint8_t row)
 Переместить курсор в позицию (col:row)
 

Подробное описание

API для описания интерфейса HMI.

Автор
Dmitry Nikolaev dniko.nosp@m.laev.nosp@m.@mico.nosp@m.nt.r.nosp@m.u
Версия
1.0
Дата
2018

Макросы

◆ MENU_ITEM

#define MENU_ITEM (   text,
  type,
  flags,
  param,
  ptr 
)    {text, type, (flags), (param), (void *)(ptr)}

Макрос описания элемента меню

Предупреждения
Используется только между макросами BEGIN_MENU() и END_MENU()

◆ BEGIN_MENU

#define BEGIN_MENU (   name)     const menu_item_t name##_items[] = {

Макрос начала блока описания меню

Предупреждения
Блок обязательно должен быть закрыт макросом END_MENU

◆ END_MENU

#define END_MENU (   name,
  text 
)
Макроопределение:
}; \
const menu_t name = { \
text, \
MENU_ITEMS_COUNT(name##_items), \
name##_items \
};
Структура описания меню
Definition: smart_hmi.h:57

Макрос конца блока описания меню

Предупреждения
Блок обязательно должен быть открыт макросом BEGIN_MENU

◆ BEGIN_STRING_LIST

#define BEGIN_STRING_LIST (   name)    const char * const list_##name[] = {

Макрос описания начала списка строк

Предупреждения
Блок обязательно должен быть закрыт макросом END_STRING_LIST

◆ END_STRING_LIST

#define END_STRING_LIST   };

Макрос описания конца списка строк

Предупреждения
Блок обязательно должен быть открыт макросом BEGIN_STRING_LIST

Перечисления

◆ menu_item_type_t

Типы элементов меню

Элементы перечислений
ITEM_TYPE_BIT 

Форматированный вывод бита в битовом поле

ITEM_TYPE_BIT_P 

Форматированный вывод бита в битовом поле через указатель

ITEM_TYPE_BIT8 

Форматированный вывод битового поля

ITEM_TYPE_INT 

Форматированный вывод целого числа

ITEM_TYPE_INT_P 

Форматированный вывод целого числа через указатель

ITEM_TYPE_FLOAT 

Форматированный вывод вещественного числа

ITEM_TYPE_FLOAT_P 

Форматированный вывод вещественного числа через указатель

ITEM_TYPE_STRING 

Форматированный вывод строки

ITEM_TYPE_STRING_P 

Форматированный вывод строки через указатель

ITEM_TYPE_SETTING 

Уставка (переменная с метаданными)

ITEM_TYPE_CHECK 

Чек-бокс (вкл/выкл)

ITEM_TYPE_COMBO 

Комбо-бокс (выбор из списка вариантов)

ITEM_TYPE_DATE 

Форматированный вывод даты

ITEM_TYPE_TIME 

Форматированный вывод времени

ITEM_TYPE_DATETIME 

Форматированный вывод даты и времени события

ITEM_TYPE_UPTIME 

Форматированный вывод интервала времени

ITEM_TYPE_HEADER 

Разделитель/заголовок группы элементов

ITEM_TYPE_IPV4 

IPv4 IP-адрес

ITEM_TYPE_ACTION 

Действие (вызов обработчика)

ITEM_TYPE_SUBMENU 

Подменю

◆ dlg_result_t

Коды результата работы диалога

Элементы перечислений
DIALOG_CANCEL 

Отмена

DIALOG_OK 

ОК

◆ dlg_type_t

enum dlg_type_t

Тип диалога

Элементы перечислений
DLG_MSGBOX 

Простое сообщение (ОК)

DLG_SAVECANCEL 

Сохранить/Отмена

DLG_YESNO 

Да/Нет

◆ hmi_event_t

События HMI.

Элементы перечислений
HMI_EVENT_REDRAW 

Перерисовка

HMI_EVENT_KEY 

Нажатие кноки

Функции

◆ menu_handler()

int menu_handler ( const menu_t m)

Обработчик отрисовки меню HMI.

Аргументы
mУказатель на меню menu_t
Возвращает

◆ hmi_message_box()

dlg_result_t hmi_message_box ( const char *  title,
const char *  msg,
dlg_type_t  type 
)

Вызов диалога с текстовым сообщением

Аргументы
[in]titleТекст заголовка
[in]msgТекст сообщения
[in]typeТип диалога dlg_type_t
Возвращает
Результат работы диалога dlg_result_t

◆ kbd_get()

keycode_t kbd_get ( )

Получить клавишу из буфера клавиатуры

Возвращает
Код клавиши

◆ kbd_peek()

keycode_t kbd_peek ( )

Проверить клавишу в буфере без изъятия

Возвращает
Код клавиши

◆ lcd_draw_dialog()

void lcd_draw_dialog ( const char *  title,
const char *  text,
dlg_type_t  type 
)

Отрисовать шаблон диалогового окна

Аргументы
titleЗаголовок
textТекст
typeТип диалога dlg_type_t

◆ lcd_draw_rectangle()

void lcd_draw_rectangle ( uint32_t  x,
uint32_t  y,
uint32_t  w,
uint32_t  h 
)

Отрисовать прямоугольник

Аргументы
xКоордината x левого верхнего угла (пиксели)
yКоордината y левого верхнего угла (пиксели)
wШирина (пиксели)
hВысота (пиксели)

◆ lcd_draw_bitmap()

void lcd_draw_bitmap ( const uint8_t *  xbm,
uint8_t  w,
uint8_t  h,
uint8_t  x,
uint8_t  y 
)

Отрисовать изображение в формате XBM.

Аргументы
xbmАдрес массива xbm
wШирина (пиксели)
hВысота (пиксели)
xКоордината x левого верхнего угла (пиксели)
yКоордината y левого верхнего угла (пиксели)

◆ lcd_invert_block()

void lcd_invert_block ( int  col,
int  row 
)

Инвертировать пиксели знакоместа стандартного шрифта 6х8.

Аргументы
colНомер колонки
rowНомер ряда

◆ lcd_clear()

void lcd_clear ( )

Очистить экран

Очистка буфера экрана + установка курсора в позицию 0:0 + отрисовка

◆ lcd_goto()

void lcd_goto ( uint8_t  col,
uint8_t  row 
)

Переместить курсор в позицию (col:row)

Аргументы
col
row