MyLibs 1.0
Расширенные библиотеки для STM32
Loading...
Searching...
No Matches
Trackers defines

Дефайны для работы с трекерами More...

Collaboration diagram for Trackers defines:

Macros

#define TrackerTypeDef(num_user_vars)
 Структура для счетчиков отладки
#define num_of_usercnts(_user_)
 Получить количетство пользовательских переменных
#define assert_usertracker(_cntstruct_, _uservarnumb_)
 Проверка существует ли указанная пользовательская переменная
#define if_assert_usertracker(_cntstruct_, _uservarnumb_)
 Условие для проверки существует ли указанная пользовательская переменная
#define tern_assert_usertracker(_cntstruct_, _uservarnumb_)
 Тернарный оператор для проверки существует ли указанная пользовательская переменная
#define TrackerGet_Ok(_cntstruct_)
 Считать счетчик успешных событий
#define TrackerGet_Err(_cntstruct_)
 Считать счетчик ошибок
#define TrackerGet_Warn(_cntstruct_)
 Считать счетчик предупреждений
#define TrackerGet_User(_cntstruct_, _uservarnumb_)
 Считать пользовательскую переменную
#define TrackerCnt_Ok(_cntstruct_)
 Инкрементирование счетчика успешных событий
#define TrackerCnt_Err(_cntstruct_)
 Инкрементирование счетчика ошибок
#define TrackerCnt_Warn(_cntstruct_)
 Инкрементирование счетчика предупреждений
#define TrackerCnt_User(_cntstruct_, _uservarnumb_)
 Инкрементирование пользовательской переменной
#define TrackerWrite_User(_cntstruct_, _uservarnumb_, _val_)
 Запись числа в пользовательскую переменную
#define TrackerClear_All(_cntstruct_)
 Очистка всей структуры
#define TrackerClear_Ok(_cntstruct_)
 Очистка счетчика успешных событий
#define TrackerClear_Err(_cntstruct_)
 Очистка счетчика ошибок
#define TrackerClear_Warn(_cntstruct_)
 Очистка счетчика предупреждений
#define TrackerClear_User(_cntstruct_, _uservarnumb_)
 Очистка пользовательской переменной
#define TrackerClear_UserAll(_cntstruct_)
 Очистка всех пользовательских переменных

Detailed Description

Дефайны для работы с трекерами


Есть дефайн для объявления структуры трекера: TrackerTypeDef(num_user_vars). Структура состоит из следующих элементов:

  • cnt_ok
  • cnt_err
  • cnt_warn
  • user[num_user_vars]
    Также есть ряд функций (дефайнов) для обращения к элементам этой структуры.

Параметры для конфигурации:

  • TRACKERS_ENABLE - Включить трекеры Если трекеры TRACKERS_ENABLE отключены, то все дефайны определяются как ничего и на производительность кода не влияют
Пример:

Определяем typedef трекера измерений Measure_TrackerTypeDef

  typedef TrackerTypeDef(MEASURE_USER_VARS_NUMB) Measure_TrackerTypeDef;

И через Measure_TrackerTypeDef структура подключается в другие структуры

Для работы с структурой можно использовать функции:

Macro Definition Documentation

◆ TrackerTypeDef

#define TrackerTypeDef ( num_user_vars)
Value:
struct \
{ \
uint32_t cnt_ok; \
uint32_t cnt_err; \
uint32_t cnt_warn; \
uint32_t user[num_user_vars]; \
}

Структура для счетчиков отладки

Parameters
num_user_vars- количество пользовательских переменных

Содержит счетчик для успешных событый (cnt_ok), счетчик для ошибок (cnt_err), счетчик для предупреждений (cnt_warn).

Также есть возможность объявить пользовательские переменные в количестве <num_user_vars> штук.

Definition at line 69 of file trackers.h.

◆ num_of_usercnts

#define num_of_usercnts ( _user_)
Value:
(sizeof(_user_) / sizeof(uint32_t))

Получить количетство пользовательских переменных

Definition at line 79 of file trackers.h.

◆ assert_usertracker

#define assert_usertracker ( _cntstruct_,
_uservarnumb_ )
Value:
((_uservarnumb_) < num_of_usercnts((_cntstruct_).user))
#define num_of_usercnts(_user_)
Получить количетство пользовательских переменных
Definition trackers.h:79

Проверка существует ли указанная пользовательская переменная

Definition at line 81 of file trackers.h.

◆ if_assert_usertracker

#define if_assert_usertracker ( _cntstruct_,
_uservarnumb_ )
Value:
if(assert_usertracker(_cntstruct_, _uservarnumb_))
#define assert_usertracker(_cntstruct_, _uservarnumb_)
Проверка существует ли указанная пользовательская переменная
Definition trackers.h:81

Условие для проверки существует ли указанная пользовательская переменная

Definition at line 83 of file trackers.h.

◆ tern_assert_usertracker

#define tern_assert_usertracker ( _cntstruct_,
_uservarnumb_ )
Value:
(assert_usertracker(_cntstruct_, _uservarnumb_)) ? _uservarnumb_ : 0

Тернарный оператор для проверки существует ли указанная пользовательская переменная

Definition at line 85 of file trackers.h.

◆ TrackerGet_Ok

#define TrackerGet_Ok ( _cntstruct_)
Value:
(_cntstruct_).cnt_ok

Считать счетчик успешных событий

Definition at line 89 of file trackers.h.

◆ TrackerGet_Err

#define TrackerGet_Err ( _cntstruct_)
Value:
(_cntstruct_).cnt_err

Считать счетчик ошибок

Definition at line 91 of file trackers.h.

◆ TrackerGet_Warn

#define TrackerGet_Warn ( _cntstruct_)
Value:
(_cntstruct_).cnt_warn

Считать счетчик предупреждений

Definition at line 93 of file trackers.h.

◆ TrackerGet_User

#define TrackerGet_User ( _cntstruct_,
_uservarnumb_ )
Value:
(_cntstruct_).user[tern_assert_usertracker(_cntstruct_, _uservarnumb_)]
#define tern_assert_usertracker(_cntstruct_, _uservarnumb_)
Тернарный оператор для проверки существует ли указанная пользовательская переменная
Definition trackers.h:85

Считать пользовательскую переменную

Note
Здесь нет проверки - существует ли пользовательская переменная! Есть возможность выйти за границы структуры!!! Чтобы этого избежать можно использовать дефайн #ref assert_usertracker()
  if(assert_usertracker(struct, 0)) {
      TrackerGet_User(struct, 0)
  }

Definition at line 105 of file trackers.h.

◆ TrackerCnt_Ok

#define TrackerCnt_Ok ( _cntstruct_)
Value:
(_cntstruct_).cnt_ok++

Инкрементирование счетчика успешных событий

Definition at line 110 of file trackers.h.

◆ TrackerCnt_Err

#define TrackerCnt_Err ( _cntstruct_)
Value:
(_cntstruct_).cnt_err++

Инкрементирование счетчика ошибок

Definition at line 112 of file trackers.h.

◆ TrackerCnt_Warn

#define TrackerCnt_Warn ( _cntstruct_)
Value:
(_cntstruct_).cnt_warn++

Инкрементирование счетчика предупреждений

Definition at line 114 of file trackers.h.

◆ TrackerCnt_User

#define TrackerCnt_User ( _cntstruct_,
_uservarnumb_ )
Value:
if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_]++;
#define if_assert_usertracker(_cntstruct_, _uservarnumb_)
Условие для проверки существует ли указанная пользовательская переменная
Definition trackers.h:83

Инкрементирование пользовательской переменной

Definition at line 116 of file trackers.h.

◆ TrackerWrite_User

#define TrackerWrite_User ( _cntstruct_,
_uservarnumb_,
_val_ )
Value:
if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = (_val_)

Запись числа в пользовательскую переменную

Definition at line 118 of file trackers.h.

◆ TrackerClear_All

#define TrackerClear_All ( _cntstruct_)
Value:
memset(&(_cntstruct_), 0, sizeof(_cntstruct_))

Очистка всей структуры

Definition at line 121 of file trackers.h.

◆ TrackerClear_Ok

#define TrackerClear_Ok ( _cntstruct_)
Value:
(_cntstruct_).cnt_ok = 0

Очистка счетчика успешных событий

Definition at line 123 of file trackers.h.

◆ TrackerClear_Err

#define TrackerClear_Err ( _cntstruct_)
Value:
(_cntstruct_).cnt_err = 0

Очистка счетчика ошибок

Definition at line 125 of file trackers.h.

◆ TrackerClear_Warn

#define TrackerClear_Warn ( _cntstruct_)
Value:
(_cntstruct_).cnt_warn = 0

Очистка счетчика предупреждений

Definition at line 127 of file trackers.h.

◆ TrackerClear_User

#define TrackerClear_User ( _cntstruct_,
_uservarnumb_ )
Value:
if_assert_usertracker(_cntstruct_, _uservarnumb_) (_cntstruct_).user[_uservarnumb_] = 0;

Очистка пользовательской переменной

Definition at line 129 of file trackers.h.

◆ TrackerClear_UserAll

#define TrackerClear_UserAll ( _cntstruct_)
Value:
memset(&(_cntstruct_).user, 0, sizeof((_cntstruct_).user))

Очистка всех пользовательских переменных

Definition at line 131 of file trackers.h.