/****************************************************************/
/*			    	  		TMS320C32							*/
/* 	======             BIOS, КЛАИН, КЛВСП              ====== 	*/
/* 	 		   		ЦНИИ СЭТ	  (с) 1998-2001г.				*/
/****************************************************************/
/*   log_to_mem.h
 ****************************************************************
 *					Запись логов в памyть						*
 ****************************************************************/

#ifndef _LOG_TO_MEM
#define _LOG_TO_MEM     




#ifdef __cplusplus
  extern "C" {  
#endif

#define SIZE_LOGS_ARRAY   92

#define INIT_LOG  3
//#define ERR_LOG   2
//#define ALARM_SAVE_MEMORY  1
#define FAST_LOG  0 
#define SLOW_LOG  4
#define ALL_LOG  5


typedef struct
{      
//	int copy_log_to_const_memory;
//
////	int start_write_fast_log;       //Начало записи лога, для определения count_log_params_fast_log
////	int count_log_params_fast_log;  //Количество записываемых в лог параметров
//
//	int block_size_counter_fast;
//	int block_size_counter_slow;
//
	int block_size_fast;
	int block_size_slow;

	int logs[SIZE_LOGS_ARRAY];

} LOGSDATA;

//extern int LOAG[];

#define LOGSDATA_DEFAULT {0,0, {0} }


/* не проводить ротацию логов */
#define NO_ROTATE_LOG	0
          
//extern int no_write; // Флаг, чтобы не писать (если что)
//extern int stop_log; // Логи остановились
//extern int Fast_log_written; //FAST LOG записан
//extern int block_size_counter_slow;
//extern int block_size_counter_fast;

//extern int block_size_counter;// размер блока
//extern int size_fast_done;
//extern int size_slow_done;


/* Запись двух младших байтов аргумента в памyть, где логи лежат */
void write_to_mem(int tlog,int DataM);
void write_to_mem_a(int DataM);


/* Проверка границы памyти длy логов */
void test_mem_limit(int tlog,int ciclelog);
void set_start_mem(int tlog);

/* Очистка памyти (обнуление) */
void clear_mem(int tlog);
void clear_mem_all(void);

void getFastLogs(int cicleLog);
void getSlowLogs(int cicleLog);

//Сохранение логов в незатираемую при работе часть памяти
void copyLogsToSaveArea(void);
//Сохранение с разворачиванием кольца.
//Запись по времени начинается в начале участка памяти и заканчивается в конце.
void copyLogsToSaveAreaUnrolled(void);
void clear_logpar(void);

extern LOGSDATA logsdata;

#ifdef __cplusplus
  }
#endif

#endif  /* _LOG_TO_MEM */
