123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- #ifndef SEGGER_H
- #define SEGGER_H
- #include <stdarg.h>
- #include "Global.h"
- #if defined(__cplusplus)
- extern "C" {
- #endif
- #ifndef INLINE
- #if (defined(__ICCARM__) || defined(__RX) || defined(__ICCRX__))
-
-
-
- #define INLINE inline
- #else
- #if (defined(_WIN32) && !defined(__clang__))
-
-
-
-
- #define INLINE __forceinline
- #elif defined(__GNUC__) || defined(__clang__)
-
-
-
- #define INLINE inline __attribute__((always_inline))
- #elif (defined(__CC_ARM))
-
-
-
- #define INLINE __inline
- #else
-
-
-
- #define INLINE
- #endif
- #endif
- #endif
- #define SEGGER_COUNTOF(a) (sizeof((a))/sizeof((a)[0]))
- #define SEGGER_MIN(a,b) (((a) < (b)) ? (a) : (b))
- #define SEGGER_MAX(a,b) (((a) > (b)) ? (a) : (b))
- #ifndef SEGGER_USE_PARA
- #define SEGGER_USE_PARA(Para) (void)Para
- #endif
- #define SEGGER_ADDR2PTR(Type, Addr) (((Type*)((PTR_ADDR)(Addr))))
- #define SEGGER_PTR2ADDR(p) (((PTR_ADDR)(p)))
- #define SEGGER_PTR2PTR(Type, p) (((Type*)(p)))
- #define SEGGER_PTR_DISTANCE(p0, p1) (SEGGER_PTR2ADDR(p0) - SEGGER_PTR2ADDR(p1))
- #define SEGGER_PRINTF_FLAG_ADJLEFT (1 << 0)
- #define SEGGER_PRINTF_FLAG_SIGNFORCE (1 << 1)
- #define SEGGER_PRINTF_FLAG_SIGNSPACE (1 << 2)
- #define SEGGER_PRINTF_FLAG_PRECEED (1 << 3)
- #define SEGGER_PRINTF_FLAG_ZEROPAD (1 << 4)
- #define SEGGER_PRINTF_FLAG_NEGATIVE (1 << 5)
- typedef struct {
- char* pBuffer;
- int BufferSize;
- int Cnt;
- } SEGGER_BUFFER_DESC;
- typedef struct {
- unsigned int CacheLineSize;
- void (*pfDMB) (void);
- void (*pfClean) (void *p, unsigned long NumBytes);
- void (*pfInvalidate)(void *p, unsigned long NumBytes);
- } SEGGER_CACHE_CONFIG;
- typedef struct SEGGER_SNPRINTF_CONTEXT_struct SEGGER_SNPRINTF_CONTEXT;
- struct SEGGER_SNPRINTF_CONTEXT_struct {
- void* pContext;
- SEGGER_BUFFER_DESC* pBufferDesc;
- void (*pfFlush)(SEGGER_SNPRINTF_CONTEXT* pContext);
- };
- typedef struct {
- void (*pfStoreChar) (SEGGER_BUFFER_DESC* pBufferDesc, SEGGER_SNPRINTF_CONTEXT* pContext, char c);
- int (*pfPrintUnsigned) (SEGGER_BUFFER_DESC* pBufferDesc, SEGGER_SNPRINTF_CONTEXT* pContext, U32 v, unsigned Base, char Flags, int Width, int Precision);
- int (*pfPrintInt) (SEGGER_BUFFER_DESC* pBufferDesc, SEGGER_SNPRINTF_CONTEXT* pContext, I32 v, unsigned Base, char Flags, int Width, int Precision);
- } SEGGER_PRINTF_API;
- typedef void (*SEGGER_pFormatter)(SEGGER_BUFFER_DESC* pBufferDesc, SEGGER_SNPRINTF_CONTEXT* pContext, const SEGGER_PRINTF_API* pApi, va_list* pParamList, char Lead, int Width, int Precision);
- typedef struct SEGGER_PRINTF_FORMATTER {
- struct SEGGER_PRINTF_FORMATTER* pNext;
- SEGGER_pFormatter pfFormatter;
- char Specifier;
- } SEGGER_PRINTF_FORMATTER;
- typedef struct {
- U32 (*pfGetHPTimestamp)(void);
- int (*pfGetUID) (U8 abUID[16]);
- } SEGGER_BSP_API;
- void SEGGER_ARM_memcpy(void* pDest, const void* pSrc, int NumBytes);
- void SEGGER_memcpy (void* pDest, const void* pSrc, unsigned NumBytes);
- void SEGGER_memxor (void* pDest, const void* pSrc, unsigned NumBytes);
- int SEGGER_atoi (const char* s);
- int SEGGER_isalnum (int c);
- int SEGGER_isalpha (int c);
- unsigned SEGGER_strlen (const char* s);
- int SEGGER_tolower (int c);
- int SEGGER_strcasecmp (const char* sText1, const char* sText2);
- int SEGGER_strncasecmp(const char *sText1, const char *sText2, unsigned Count);
- void SEGGER_StoreChar (SEGGER_BUFFER_DESC* pBufferDesc, char c);
- void SEGGER_PrintUnsigned(SEGGER_BUFFER_DESC* pBufferDesc, U32 v, unsigned Base, int Precision);
- void SEGGER_PrintInt (SEGGER_BUFFER_DESC* pBufferDesc, I32 v, unsigned Base, int Precision);
- int SEGGER_snprintf (char* pBuffer, int BufferSize, const char* sFormat, ...);
- int SEGGER_vsnprintf (char* pBuffer, int BufferSize, const char* sFormat, va_list ParamList);
- int SEGGER_vsnprintfEx (SEGGER_SNPRINTF_CONTEXT* pContext, const char* sFormat, va_list ParamList);
- int SEGGER_PRINTF_AddFormatter (SEGGER_PRINTF_FORMATTER* pFormatter, SEGGER_pFormatter pfFormatter, char c);
- void SEGGER_PRINTF_AddDoubleFormatter (void);
- void SEGGER_PRINTF_AddIPFormatter (void);
- void SEGGER_PRINTF_AddBLUEFormatter (void);
- void SEGGER_PRINTF_AddCONNECTFormatter(void);
- void SEGGER_PRINTF_AddSSLFormatter (void);
- void SEGGER_PRINTF_AddSSHFormatter (void);
- void SEGGER_PRINTF_AddHTMLFormatter (void);
- int SEGGER_BSP_GetUID (U8 abUID[16]);
- int SEGGER_BSP_GetUID32(U32* pUID);
- void SEGGER_BSP_SetAPI (const SEGGER_BSP_API* pAPI);
- void SEGGER_BSP_SeedUID (void);
- void SEGGER_VERSION_GetString(char acText[8], unsigned Version);
- #if defined(__cplusplus)
- }
- #endif
- #endif
|