K-FSW ec10f94
Modular flight software on Zephyr, for small satellites
Loading...
Searching...
No Matches
event.h File Reference
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <kfsw/services/parameter.h>

Data Structures

struct  kfsw_event_record
 
struct  kfsw_event_stats
 

Macros

#define KFSW_EVENT_MAX_PAYLOAD_SIZE   16U
 
#define KFSW_EVENT_PARAM_TABLE_ID   27U
 
#define KFSW_EVENT_PARAM_TABLE_NAME   "event"
 

Types

typedef bool(* kfsw_event_visitor_t) (const struct kfsw_event_record *record, void *context)
 

Enumerations

enum  kfsw_event_source {
  KFSW_EVENT_SOURCE_BOOT = 1 , KFSW_EVENT_SOURCE_COMMAND = 2 , KFSW_EVENT_SOURCE_FTP = 3 , KFSW_EVENT_SOURCE_APP = 4 ,
  KFSW_EVENT_SOURCE_FBO = 5 , KFSW_EVENT_SOURCE_GNDWDT = 6 , KFSW_EVENT_SOURCE_RESMON = 7
}
 
enum  kfsw_event_severity { KFSW_EVENT_INFO = 0 , KFSW_EVENT_WARNING = 1 , KFSW_EVENT_ERROR = 2 , KFSW_EVENT_CRITICAL = 3 }
 

Functions

void kfsw_event_emit (enum kfsw_event_source source, uint16_t id, enum kfsw_event_severity severity, const void *payload, size_t payload_size)
 
void kfsw_event_visit (kfsw_event_visitor_t visitor, void *context)
 
int kfsw_event_get (uint16_t age, struct kfsw_event_record *record)
 
void kfsw_event_get_stats (struct kfsw_event_stats *stats)
 
void kfsw_event_clear (void)
 
const char * kfsw_event_severity_name (enum kfsw_event_severity severity)
 
const char * kfsw_event_source_name (enum kfsw_event_source source)
 

Variables

const struct kfsw_param_definition_set kfsw_event_param_definitions
 

Description

Bounded event record.

RAM record of numeric events, separate from the console log.

Each event has an ID, timestamp, sequence number and small payload. The ring does not survive a reset.

Macro Documentation

◆ KFSW_EVENT_MAX_PAYLOAD_SIZE

#define KFSW_EVENT_MAX_PAYLOAD_SIZE   16U

Payload bytes are stored as given.

Payloads sent over a link are big-endian.

◆ KFSW_EVENT_PARAM_TABLE_ID

#define KFSW_EVENT_PARAM_TABLE_ID   27U

Parameter table of this service, in the service band.

◆ KFSW_EVENT_PARAM_TABLE_NAME

#define KFSW_EVENT_PARAM_TABLE_NAME   "event"

Parameter table name.

Enumeration Documentation

◆ kfsw_event_severity

Event severity.

◆ kfsw_event_source

Component that produced an event.

IDs are unique per source.

Function Documentation

◆ kfsw_event_clear()

void kfsw_event_clear ( void  )

Discard held records.

Counters are preserved.

◆ kfsw_event_emit()

void kfsw_event_emit ( enum kfsw_event_source  source,
uint16_t  id,
enum kfsw_event_severity  severity,
const void *  payload,
size_t  payload_size 
)

Record one event.

Safe from any thread and never blocks. When the ring is full the oldest record is overwritten and the overwritten counter increases.

◆ kfsw_event_get()

int kfsw_event_get ( uint16_t  age,
struct kfsw_event_record *  record 
)

Copy one held record by age, where 0 is the most recent.

Returns -ENOENT when fewer records are held than requested.

◆ kfsw_event_get_stats()

void kfsw_event_get_stats ( struct kfsw_event_stats *  stats)

Copy the current counters.

◆ kfsw_event_severity_name()

const char * kfsw_event_severity_name ( enum kfsw_event_severity  severity)

Short name for a severity, for shell output.

◆ kfsw_event_source_name()

const char * kfsw_event_source_name ( enum kfsw_event_source  source)

Short name for a source, for shell output.

◆ kfsw_event_visit()

void kfsw_event_visit ( kfsw_event_visitor_t  visitor,
void *  context 
)

Visit held records, oldest first.

Variable Documentation

◆ kfsw_event_param_definitions

const struct kfsw_param_definition_set kfsw_event_param_definitions
extern

Event record counters.