Skip to content

File frame_meter_core.h

File List > frame_meter > frame_meter_core.h

Go to the documentation of this file

#ifndef FRAME_METER_CORE_H
#define FRAME_METER_CORE_H

#include "ber/ber_core.h"
#include "dp_state.h"

#include <stddef.h>
#include <stdint.h>
#include "detection/detection_core.h"
#include "ber_meter/ber_meter_core.h"

#ifdef __cplusplus
extern "C"
{
#endif

#define FRAME_METER_STATE_MAGIC   DP_FOURCC ('F', 'R', 'M', 'M')
#define FRAME_METER_STATE_VERSION 1u

  typedef struct
  {
    size_t target_errors; 
    double conf;          
    size_t frames;        
    size_t sync_detected; 
    size_t crc_passed;    
    size_t errors;        
  } frame_meter_state_t;

  frame_meter_state_t *frame_meter_create (size_t target_errors, double conf);

  void frame_meter_destroy (frame_meter_state_t *state);

  void frame_meter_reset (frame_meter_state_t *state);

  void frame_meter_add (frame_meter_state_t *state, int sync_ok, int crc);

  size_t frame_meter_get_frames (const frame_meter_state_t *state);
  size_t frame_meter_get_sync_detected (const frame_meter_state_t *state);
  size_t frame_meter_get_crc_passed (const frame_meter_state_t *state);
  size_t frame_meter_get_errors (const frame_meter_state_t *state);

  int frame_meter_get_enough (const frame_meter_state_t *state);

  ber_interval_t frame_meter_fer (const frame_meter_state_t *state);

  ber_interval_t frame_meter_sync_miss (const frame_meter_state_t *state);

  size_t frame_meter_state_bytes (const frame_meter_state_t *state);
  void frame_meter_get_state (const frame_meter_state_t *state, void *blob);
  int frame_meter_set_state (frame_meter_state_t *state, const void *blob);

#ifdef __cplusplus
}
#endif

#endif /* FRAME_METER_CORE_H */