/*
* data_handling.h
*
* Created on: 18. dec. 2018
* Author: Domen
*/
#ifndef SRC_DATA_HANDLING_H_
#define SRC_DATA_HANDLING_H_
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <fcntl.h>
#include <math.h>
//#include <sys/mman.h>
#define HW_address 0x40500000
#define MAP_SIZE 4096UL //size of a /dev/mem file, potrebujem, ko pri funkciji mmap
#define MAP_MASK (MAP_SIZE - 1)
#define BIN_NUM 1024
#define UC_rd_en_final_mask 0x00000001
#define UC_rd_en_current_mask 0x00000002
#define HIST_MASK 0xFFFFFF00
typedef struct
{
/* ****** PC --> procesor --> FPGA ****** */
uint32_t start; // zastavica za zagon sistema
uint32_t reset; // zastavica za ponastavitev sistema
uint32_t HW_config_flag; // zahteva za nastavitev parametrov FPGA vezja
uint32_t send_data_flag; // zahteva za posiljanje podatkov v PC
uint32_t disconnect_flag; // zahteva za prekinitev povezave procesor - PC
uint32_t threshold; // pragovna vrednost za komponento ADC_unit
uint32_t acq_window; //casovno okno zajemanja za komponento ADC_unit
uint32_t sw_trigger; // pragovna vrednost za prozenje integratorja
/* ****** FPGA --> procesor --> PC ****** */
uint32_t hist_data; // stolpec histograma
uint32_t UC_rd_en_current; // sprotni histogram
uint32_t UC_rd_en_final; // koncni histogram
} HW_system;
//PUBLIC FUNCTION PROTOTYPES
uint32_t *HW_init(void);
uint8_t HW_comm( HW_system *strct, uint32_t *reg_addr);
#endif /* SRC_DATA_HANDLING_H_ */