debugVarTool/debug_tools.h
Razvalyaev 4de53090a1 добавлены комменты к debug_tools.c/.h
начата работа над поддержкой stm32 и кейл проектов
2025-07-15 19:05:52 +03:00

138 lines
3.8 KiB
C

#ifndef DEBUG_TOOLS
#define DEBUG_TOOLS
#include "IQmathLib.h"
#include "DSP281x_Device.h"
/**
* @brief Òèï äàííûõ, íà êîòîðûé óêàçûâàåò óêàçàòåëü ïåðåìåííîé îòëàäêè.
*/
typedef enum
{
pt_unknown, // unknown
pt_int8, // signed char
pt_int16, // int
pt_int32, // long
pt_int64, // long
pt_uint8, // unsigned char
pt_uint16, // unsigned int
pt_uint32, // unsigned long
pt_uint64, // unsigned long
pt_float, // float
pt_struct, // struct
pt_union, // struct
// pt_ptr_int8, // signed char*
// pt_ptr_int16, // int*
// pt_ptr_int32, // long*
// pt_ptr_uint8, // unsigned char*
// pt_ptr_uint16, // unsigned int*
// pt_ptr_uint32, // unsigned long*
// pt_arr_int8, // signed char[]
// pt_arr_int16, // int[]
// pt_arr_int32, // long[]
// pt_arr_uint8, // unsigned char[]
// pt_arr_uint16, // unsigned int[]
// pt_arr_uint32, // unsigned long[]
}DebugVarPtrType_t;
/**
* @brief Òèïû IQ-ïðåäñòàâëåíèÿ ïåðåìåííîé îòëàäêè.
*/
typedef enum
{
t_iq_none,
t_iq,
t_iq1,
t_iq2,
t_iq3,
t_iq4,
t_iq5,
t_iq6,
t_iq7,
t_iq8,
t_iq9,
t_iq10,
t_iq11,
t_iq12,
t_iq13,
t_iq14,
t_iq15,
t_iq16,
t_iq17,
t_iq18,
t_iq19,
t_iq20,
t_iq21,
t_iq22,
t_iq23,
t_iq24,
t_iq25,
t_iq26,
t_iq27,
t_iq28,
t_iq29,
t_iq30
}DebugVarIQType_t;
typedef char DebugVarName_t[11]; ///< Èìÿ ïåðåìåííîé îòëàäêè (äî 10 ñèìâîëîâ + \0)
/**
* @brief Îïèñàíèå ïåðåìåííîé îòëàäêè.
*/
typedef struct
{
char* Ptr; ///< Óêàçàòåëü íà çíà÷åíèå ïåðåìåííîé
DebugVarPtrType_t ptr_type; ///< Òèï çíà÷åíèÿ
DebugVarIQType_t iq_type; ///< Òèï IQ ïåðåìåííîé (åñëè åñòü)
DebugVarIQType_t return_type;///< Òèï IQ âîçâðàùàåìîãî çíà÷åíèÿ
DebugVarName_t name; ///< Èìÿ ïåðåìåííîé
} DebugVar_t;
/**
* @brief Ñòðóêòóðà äàòû è âðåìåíè.
*/
typedef struct {
int year; ///< Ãîä (íàïðèìåð, 2025)
char month; ///< Ìåñÿö (1-12)
char day; ///< Äåíü (1-31)
char hour; ///< ×àñû (0-23)
char minute; ///< Ìèíóòû (0-59)
} DateTime_t;
/**
* @brief Ñòðóêòóðà íèæíåãî óðîâíÿ îòëàäêè.
*/
typedef struct
{
DateTime_t build_date; ///< Äàòà ñáîðêè
unsigned int isVerified; ///< Ôëàã èíèöèàëèçàöèè íèçêîóðîâíåíîé îòëàäêè (0 — íåò, 1 — óñïåøíî)
DebugVar_t dbg_var; ///< Ïåðåìåííàÿ äëÿ îòëàäêè
}DebugLowLevel_t;
extern DebugLowLevel_t debug_ll; ///< Ãëîáàëüíûé ýêçåìïëÿð îòëàäêè íèæíåãî óðîâíÿ
/** @brief Ìàêðîñ èíèöèàëèçàöèè äàòû */
#define DATE_INIT {BUILD_YEAR, BUILD_MONTH, BUILD_DATA, BUILD_HOURS, BUILD_MINUTES}
/** @brief Ìàêðîñ èíèöèàëèçàöèè ïåðåìåííîé îòëàäêè */
#define DEBUG_VAR_INIT {0, pt_uint16, t_iq_none, t_iq_none, "\0"}
/** @brief Ìàêðîñ èíèöèàëèçàöèè íèæíåãî óðîâíÿ îòëàäêè */
#define DEBUG_LOWLEVEL_INIT {DATE_INIT, 0, DEBUG_VAR_INIT}
extern int DebugVar_Qnt; ///< Êîëè÷åñòâî ïåðåìåííûõ îòëàäêè
extern DebugVar_t dbg_vars[]; ///< Ìàññèâ ïåðåìåííûõ îòëàäêè
/* Ïðèìåð èñïîëüçîâàíèÿ îòëàäêè */
void Debug_Test_Example(void);
/* ×èòàåò çíà÷åíèå ïåðåìåííîé ïî èíäåêñó */
int Debug_ReadVar(int var_ind, long *return_long);
/* ×èòàåò èìÿ ïåðåìåííîé ïî èíäåêñó */
int Debug_ReadVarName(int var_ind, DebugVarName_t name_ptr);
/* ×èòàåò çíà÷åíèå ïåðåìåííîé ñ íèæíåãî óðîâíÿ */
int Debug_LowLevel_ReadVar(long *return_long);
/* Èíèöèàëèçèðóåò îòëàäêó íèæíåãî óðîâíÿ */
int Debug_LowLevel_Initialize(const char* external_date);
#endif //DEBUG_TOOLS