/****************************************************************/
/*			    	  		TMS320C32							*/
/* 	======             BIOS, ÊËÀÈÍ, ÊËÂÑÏ              ====== 	*/
/* 	 		   		ÖÍÈÈ ÑÝÒ	  (ñ) 1998-2001ã.				*/
/****************************************************************/
/*   log_to_mem.h
 ****************************************************************
 *					Çàïèñü ëîãîâ â ïàìyòü						*
 ****************************************************************/

#ifndef _LOG_TO_MEM
#define _LOG_TO_MEM     


#define SLOW_LOG  1
#define FAST_LOG  0


#ifdef __cplusplus
  extern "C" {  
#endif

typedef struct
{
	int stop_log_level_1;
	int stop_log_level_2;
	int stop_log_level_3;
	int stop_log_slow_level_1;
	int stop_log_slow_level_2;
	int stop_log_slow_level_3;
	int log1;
	int log2;
	int log3;
	int log4;
	int log5;
	int log6;
	int log7;
	int log8;
	int log9;
	int log10;
	int log11;
	int log12;
	int log13;
	int log14;
	int log15;
	int log16;
	int log17;
	int log18;
	int log19;
	int log20;

	long addres_mem;     //Àäðåñ ïàìyòè äëy çàïèñè ëîãîâ

	int count_log_params_fast_log;  //Êîëè÷åñòâî çàïèñûâàåìûõ â ëîã ïàðàìåòðîâ
	int start_write_fast_log;       //Íà÷àëî çàïèñè ëîãà, äëÿ îïðåäåëåíèÿ count_log_params_fast_log
	long real_finish_addres_mem;     //Àäðåñ ïàìyòè äëy çàïèñè ëîãîâ
} LOGSPARAMS;

#define LOGSPARAMS_DEFAULTS { 0,0,0,0,0,0,0,0,  \
                              0,0,0,0,0,0,0,0,  \
                              0,0,0,0,0,0,0,0,  \
                              0,0,0,0,0,0 }



/* Îïðåäåëåíèy äëy ðàáîòû ëîããåðà */
#define START_ADDRESS_LOG   0x0a0000
#define END_ADDRESS_LOG     0x0bf000

//#define START_ADDRESS_LOG 0xa0000 /* 0x904000 */
//#define END_ADDRESS_LOG   0x0cf000 /* 0x90a000 */


#define END_ADDRESS_LOG_LEVEL_2 0xa8000
#define END_ADDRESS_LOG_LEVEL_3 0xb0000

#define START_ADDRESS_LOG_SLOW 0x0d0000 /* 0x904000 */
#define END_ADDRESS_LOG_SLOW   0x0ef000 /* 0x90a000 */
#define END_ADDRESS_LOG_SLOW_LEVEL_2 0xdb000
#define END_ADDRESS_LOG_SLOW_LEVEL_3 0xe5000



#define LENGTH_HAZARD     100
#define COUNT_SAVE_LOG_OFF 500


/* íå ïðîâîäèòü ðîòàöèþ ëîãîâ */
#define NO_ROTATE_LOG	0
          
extern int no_write; // Ôëàã, ÷òîáû íå ïèñàòü (åñëè ÷òî)
extern int stop_log; // Ëîãè îñòàíîâèëèñü


/* Çàïèñü äâóõ ìëàäøèõ áàéòîâ àðãóìåíòà â ïàìyòü, ãäå ëîãè ëåæàò */
void write_to_mem(int tlog,int DataM);
void write_to_mem_a(int DataM);

void start_write_acp(int Data1, int Data2,  int Data3,  int Data4,  int Data5);

/* Ïðîâåðêà ãðàíèöû ïàìyòè äëy ëîãîâ */
void test_mem_limit(int tlog,int ciclelog);
void test_mem_limit_a(void);
void set_start_mem(int tlog);
void get_log_params_count(void);

/* Î÷èñòêà ïàìyòè (îáíóëåíèå) */
void clear_mem(int tlog);

//Î÷èñòêà ïîëåé logpar.logNN
void clear_logpar();

extern LOGSPARAMS logpar;

#ifdef __cplusplus
  }
#endif

#endif  /* _LOG_TO_MEM */