123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- /*
- * syslog.h
- *
- *
- * Copyright 2015 Susi's Strolch
- *
- * For license information see projects "License.txt"
- *
- * part of syslog.c - client library
- *
- */
- #ifndef _SYSLOG_H
- #define _SYSLOG_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- enum syslog_state {
- SYSLOG_NONE, // not initialized
- SYSLOG_WAIT, // waiting for Wifi
- SYSLOG_INIT, // WIFI avail, must initialize
- SYSLOG_INITDONE,
- SYSLOG_DNSWAIT, // WIFI avail, init done, waiting for DNS resolve
- SYSLOG_READY, // Wifi established, ready to send
- SYSLOG_SENDING, // UDP package on the air
- SYSLOG_SEND,
- SYSLOG_SENT,
- SYSLOG_HALTED, // heap full, discard message
- SYSLOG_ERROR,
- };
- enum syslog_priority {
- SYSLOG_PRIO_EMERG, /* system is unusable */
- SYSLOG_PRIO_ALERT, /* action must be taken immediately */
- SYSLOG_PRIO_CRIT, /* critical conditions */
- SYSLOG_PRIO_ERR, /* error conditions */
- SYSLOG_PRIO_WARNING, /* warning conditions */
- SYSLOG_PRIO_NOTICE, /* normal but significant condition */
- SYSLOG_PRIO_INFO, /* informational */
- SYSLOG_PRIO_DEBUG, /* debug-level messages */
- };
- enum syslog_facility {
- SYSLOG_FAC_KERN, /* kernel messages */
- SYSLOG_FAC_USER, /* random user-level messages */
- SYSLOG_FAC_MAIL, /* mail system */
- SYSLOG_FAC_DAEMON, /* system daemons */
- SYSLOG_FAC_AUTH, /* security/authorization messages */
- SYSLOG_FAC_SYSLOG, /* messages generated internally by syslogd */
- SYSLOG_FAC_LPR, /* line printer subsystem */
- SYSLOG_FAC_NEWS, /* network news subsystem */
- SYSLOG_FAC_UUCP, /* UUCP subsystem */
- SYSLOG_FAC_CRON, /* clock daemon */
- SYSLOG_FAC_AUTHPRIV,/* security/authorization messages (private) */
- SYSLOG_FAC_FTP, /* ftp daemon */
- SYSLOG_FAC_LOCAL0, /* reserved for local use */
- SYSLOG_FAC_LOCAL1, /* reserved for local use */
- SYSLOG_FAC_LOCAL2, /* reserved for local use */
- SYSLOG_FAC_LOCAL3, /* reserved for local use */
- SYSLOG_FAC_LOCAL4, /* reserved for local use */
- SYSLOG_FAC_LOCAL5, /* reserved for local use */
- SYSLOG_FAC_LOCAL6, /* reserved for local use */
- SYSLOG_FAC_LOCAL7, /* reserved for local use */
- };
- #define MINIMUM_HEAP_SIZE 8192
- #define REG_READ(_r) (*(volatile uint32 *)(_r))
- #define WDEV_NOW() REG_READ(0x3ff20c00)
- // This variable disappeared from lwip in SDK 2.0...
- // extern uint32_t realtime_stamp; // 1sec NTP ticker
- typedef struct syslog_host_t syslog_host_t;
- struct syslog_host_t {
- uint32_t min_heap_size; // minimum allowed heap size when buffering
- ip_addr_t addr;
- uint16_t port;
- };
- // buffered syslog event - f.e. if network stack isn't up and running
- typedef struct syslog_entry_t syslog_entry_t;
- struct syslog_entry_t {
- syslog_entry_t *next;
- uint32_t msgid;
- uint32_t tick;
- uint16_t datagram_len;
- char datagram[];
- };
- syslog_host_t syslogserver;
- void ICACHE_FLASH_ATTR syslog_init(char *syslog_host);
- void ICACHE_FLASH_ATTR syslog(uint8_t facility, uint8_t severity, const char tag[], const char message[], ...);
- // some convenience macros
- #ifdef SYSLOG
- // extern char *esp_link_version; // in user_main.c
- #define LOG_DEBUG(format, ...) syslog(SYSLOG_FAC_USER, SYSLOG_PRIO_DEBUG, "esp_link", format, ## __VA_ARGS__ )
- #define LOG_NOTICE(format, ...) syslog(SYSLOG_FAC_USER, SYSLOG_PRIO_NOTICE, "esp_link", format, ## __VA_ARGS__ )
- #define LOG_INFO(format, ...) syslog(SYSLOG_FAC_USER, SYSLOG_PRIO_INFO, "esp_link", format, ## __VA_ARGS__ )
- #define LOG_WARN(format, ...) syslog(SYSLOG_FAC_USER, SYSLOG_PRIO_WARNING, "esp_link", format, ## __VA_ARGS__ )
- #define LOG_ERR(format, ...) syslog(SYSLOG_FAC_USER, SYSLOG_PRIO_ERR, "esp_link", format, ## __VA_ARGS__ )
- #else
- #define LOG_DEBUG(format, ...) do { } while(0)
- #define LOG_NOTICE(format, ...) do { } while(0)
- #define LOG_WARN(format, ...) do { } while(0)
- #define LOG_INFO(format, ...) do { } while(0)
- #define LOG_ERR(format, ...) do { } while(0)
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif /* _SYSLOG_H */
|