matlab_23550/Inu/Src/N12_Libs/CAN_Setup.h

719 lines
19 KiB
C
Raw Normal View History

#ifndef _CAN_SETUP
#define _CAN_SETUP
#include <CAN_project.h>
#include "word_structurs.h"
#include "DSP281x_Device.h"
#define MAX_COUNT_UNITES_TERMINAL 4 // <20><><EFBFBD><EFBFBD>
#define MAX_COUNT_UNITES_UKSS 16 // <20><><EFBFBD><EFBFBD>
#define MAX_COUNT_UNITES_MPU 4 // <20><><EFBFBD><EFBFBD>
#define MAX_COUNT_UNITES_ALARM_LOG 2 // <20><><EFBFBD><EFBFBD>
////////////////////////////////////////
#define CAN_ADR_TERMINAL_DEFAULT 0x00EEEE01
#define START_CAN_ADR_UNITS_DEFAULT 0x00235500
#define CAN_ADR_MPU_DEFAULT 0x00CEB0E1
#define CAN_ADR_ALARM_LOG_DEFAULT 0x0BCDEF01
////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MPU
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> CAN_project.c
////////////////////////////////////////
#ifndef USE_MPU_0
#define USE_MPU_0 0
#endif
#ifndef USE_MPU_1
#define USE_MPU_1 0
#endif
#ifndef USE_MPU_2
#define USE_MPU_2 0
#endif
#ifndef USE_MPU_3
#define USE_MPU_3 0
#endif
#define MPU_UNIT_QUA_UNITS ( USE_MPU_0 + USE_MPU_1 \
+ USE_MPU_2 + USE_MPU_3 \
) //<2F><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> MPU_CAN
///////////////////////////////////////////
// <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> TERMINAL_CAN
///////////////////////////////////////////
////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TERMINAL
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> CAN_project.c
////////////////////////////////////////
#ifndef USE_TERMINAL_1_OSCIL
#define USE_TERMINAL_1_OSCIL 0
#endif
#ifndef USE_TERMINAL_1_CMD
#define USE_TERMINAL_1_CMD 0
#endif
#ifndef USE_TERMINAL_2_OSCIL
#define USE_TERMINAL_2_OSCIL 0
#endif
#ifndef USE_TERMINAL_2_CMD
#define USE_TERMINAL_2_CMD 0
#endif
#define TERMINAL_UNIT_QUA_UNITS ( USE_TERMINAL_1_OSCIL + USE_TERMINAL_1_CMD \
+ USE_TERMINAL_2_OSCIL + USE_TERMINAL_2_CMD \
) //<2F><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> TERMINAL_CAN
////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALARM_LOG
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> CAN_project.c
////////////////////////////////////////
#ifndef USE_ALARM_LOG_0
#define USE_ALARM_LOG_0 0
#endif
#ifndef USE_ALARM_LOG_1
#define USE_ALARM_LOG_1 0
#endif
#define ALARM_LOG_UNIT_QUA_UNITS ( USE_ALARM_LOG_0 + USE_ALARM_LOG_1 \
) //<2F><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ALARM_LOG_CAN
////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ukss
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> CAN_project.c
////////////////////////////////////////
#ifndef USE_UKSS_0
#define USE_UKSS_0 0
#endif
#ifndef USE_UKSS_1
#define USE_UKSS_1 0
#endif
#ifndef USE_UKSS_2
#define USE_UKSS_2 0
#endif
#ifndef USE_UKSS_3
#define USE_UKSS_3 0
#endif
#ifndef USE_UKSS_4
#define USE_UKSS_4 0
#endif
#ifndef USE_UKSS_5
#define USE_UKSS_5 0
#endif
#ifndef USE_UKSS_6
#define USE_UKSS_6 0
#endif
#ifndef USE_UKSS_7
#define USE_UKSS_7 0
#endif
#ifndef USE_UKSS_8
#define USE_UKSS_8 0
#endif
#ifndef USE_UKSS_9
#define USE_UKSS_9 0
#endif
#ifndef USE_UKSS_10
#define USE_UKSS_10 0
#endif
#ifndef USE_UKSS_11
#define USE_UKSS_11 0
#endif
#ifndef USE_UKSS_12
#define USE_UKSS_12 0
#endif
#ifndef USE_UKSS_13
#define USE_UKSS_13 0
#endif
#ifndef USE_UKSS_14
#define USE_UKSS_14 0
#endif
#ifndef USE_UKSS_15
#define USE_UKSS_15 0
#endif
#ifndef USE_R_B_0
#define USE_R_B_0 0
#endif
#ifndef USE_R_B_1
#define USE_R_B_1 0
#endif
#ifndef USE_R_B_2
#define USE_R_B_2 0
#endif
#ifndef USE_R_B_3
#define USE_R_B_3 0
#endif
#ifndef USE_R_B_4
#define USE_R_B_4 0
#endif
#ifndef USE_R_B_5
#define USE_R_B_5 0
#endif
#ifndef USE_R_B_6
#define USE_R_B_6 0
#endif
#ifndef USE_R_B_7
#define USE_R_B_7 0
#endif
#ifndef USE_R_B_8
#define USE_R_B_8 0
#endif
#ifndef USE_R_B_9
#define USE_R_B_9 0
#endif
#ifndef USE_R_B_10
#define USE_R_B_10 0
#endif
#ifndef USE_R_B_11
#define USE_R_B_11 0
#endif
#ifndef USE_R_B_12
#define USE_R_B_12 0
#endif
#ifndef USE_R_B_13
#define USE_R_B_13 0
#endif
#ifndef USE_R_B_14
#define USE_R_B_14 0
#endif
#ifndef USE_R_B_15
#define USE_R_B_15 0
#endif
#define UNIT_QUA_UNITS ( USE_UKSS_0 + USE_UKSS_1 \
+ USE_UKSS_2 + USE_UKSS_3 \
+ USE_UKSS_4 + USE_UKSS_5 \
+ USE_UKSS_6 + USE_UKSS_7 \
+ USE_UKSS_8 + USE_UKSS_9 \
+ USE_UKSS_10 + USE_UKSS_11 \
+ USE_UKSS_12 + USE_UKSS_13 \
+ USE_UKSS_14 + USE_UKSS_15) // 2 //3//8 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAN <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CANMODBUS - <20><><EFBFBD>-<2D><> Unites
///////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAN_Open
///////////////////////////////////////////
#ifdef INGITIM_CAN_OPEN
#define MBOX0_CANOPEN 0x00000013 //0x180 t1PDO1
#define MBOX1_CANOPEN 0x0000018d //0x280 t2PDO1
#define MBOX2_CANOPEN 0x000000c5 //0x380 t3PDO1
#define MBOX3_CANOPEN 0x12000000 //0x480 t4PDO1
#define MBOX4_CANOPEN 0x16000000 //0x580 t4PDO1
#define MBOX5_CANOPEN 0x1a000000 //0x680 t4PDO1
#define CANOPEN_CAN_SETUP_DEFAULT { {MBOX0_CANOPEN,MBOX1_CANOPEN,MBOX2_CANOPEN,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,1,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}, \
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}, \
3}
#endif
#ifdef BWC_CAN_FATEC
#define MBOX0_CANOPEN 0x08040000 //201; 010 0000 0001
#define MBOX1_CANOPEN 0x0C040000 //301; 011 0000 0001
#define MBOX2_CANOPEN 0x10040000 //401; 100 0000 0001
#define MBOX3_CANOPEN 0x14040000 //501; 101 0000 0001
#define MBOX4_CANOPEN 0x08080000 //202; 010 0000 0010
#define MBOX5_CANOPEN 0x0C080000 //302; 011 0000 0010
#define MBOX6_CANOPEN 0x10080000 //402; 100 0000 0010
#define MBOX7_CANOPEN 0x14080000 //502; 101 0000 0010
#define CANOPEN_CAN_SETUP_DEFAULT { {MBOX0_CANOPEN,MBOX1_CANOPEN,MBOX2_CANOPEN,MBOX3_CANOPEN,MBOX4_CANOPEN,MBOX5_CANOPEN,MBOX6_CANOPEN,MBOX7_CANOPEN,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,1,2,3,4,5,6,7,-1,-1,-1,-1,-1,-1,-1,-1}, \
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}, \
0}
#endif
#ifdef BWC_CAN_SIEMENS
#define MBOX0_CANOPEN 0x00040000 // 0x08040000 //201; 010 0000 0001
#define MBOX1_CANOPEN 0x00080000 //301; 011 0000 0001
#define CANOPEN_CAN_SETUP_DEFAULT { {MBOX0_CANOPEN,MBOX1_CANOPEN,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}, \
{0,1,2,3,4,5,6,7,-1,-1,-1,-1,-1,-1,-1,-1}, \
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}, \
0}
#endif
#ifndef CANOPEN_CAN_SETUP_DEFAULT
#define CANOPEN_CAN_SETUP_DEFAULT { {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,0,0}, \
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}, \
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}, \
0}
#endif
/////////////////////////////////////////////////////////////////////
extern int CAN_input_data[];
extern int CAN_output_data[];
extern int* CAN_output;
extern int flag_enable_can_from_mpu;
/////////////////////////////////////////////////////////////////////
#define UNIT_QUA 32 //12 // <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CAN <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TERMINAL_UNIT_LEN 128
#define UNIT_LEN 128
#define FIFO_LEN 10
#define NEW_FIFO_LEN 128
#define NEW_CYCLE_FIFO_LEN 256
#define NEW_CYCLE_FIFO_LEN_MASK (NEW_CYCLE_FIFO_LEN-1)
////////////////////////////////////////////////////
////////////////////////////////////////////////////
////////////////////////////////////////////////////
typedef struct
{
int * adr_from;
unsigned int adr_to;
unsigned int adr;
unsigned int quant;
int busy;
int FLY;
int extended;
} CYCLE;
typedef struct
{
int * adr_from;
unsigned long adr_to;
unsigned long adr;
unsigned long quant;
int busy;
int FLY;
int extended;
int box;
int priority;
unsigned int quant_block;
} NEW_CYCLE_DATA;
typedef struct
{
int box;
long hiword;
long loword;
} PACK;
typedef struct
{
int adr;
PACK pak[FIFO_LEN];
}FIFO;
typedef struct
{
int index_data; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int index_send; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int flag_inter; // <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned int count_lost; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned int count_load; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned int count_free; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NEW_CYCLE_DATA cycle_data[NEW_CYCLE_FIFO_LEN];
int cycle_box[UNIT_QUA];
int lost_box[UNIT_QUA];
}NEW_CYCLE_FIFO;
//////////////////////////////////////
//////////////////////////////////////
//////////////////////////////////////
#define USE_BOX 1
#define NOT_USE_BOX 0
#define CAN_BOX_TYPE_IN 1
#define CAN_BOX_TYPE_OUT 2
#define FREE_TYPE_BOX 0
#define UNITS_TYPE_BOX 1
#define MPU_TYPE_BOX 2
#define CANOPEN_TYPE_BOX 3
#define SMPU_TYPE_BOX 4
#define TERMINAL_TYPE_BOX 5
#define ALARM_LOG_TYPE_BOX 6
/////////////////////////////////////////////////////////////////////
#define CAN_BOX_PRIORITY_NORMAL 0
#define CAN_BOX_PRIORITY_LOW -1
#define CAN_BOX_PRIORITY_HIGH 1
/////////////////////////////////////////////////////////////////////
#define CAN_BOX_EXTENDED_ADR 1
#define CAN_BOX_STANDART_ADR 0
/////////////////////////////////////////////////////////////////////
#define CAN_BOX_STAT_ON 1
#define CAN_BOX_STAT_OFF 0
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
typedef struct {
long can_in_mbox_adr[16];
long can_out_mbox_adr[16];
int adr_box[16];
int adr_in_mbox[16];
int max_number;
} CANOPEN_CAN_SETUP;
/////////////////////////////////////////////////////////////////////
typedef struct {
long can_mbox_adr[32];
// long can_out_mbox_adr[16];
int type_box[32];
int local_number_box[32];
int type_in_out_box[32];
int max_number_in;
int max_number_out;
} MAILBOXS_CAN_SETUP;
#define MAILBOXS_CAN_SETUP_DEFAULT { {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,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,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,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,0,0,0,0,0,0,0,0}, \
0, \
0}
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
typedef struct {
unsigned long can_base_adr;
long can_in_mbox_adr[MAX_COUNT_UNITES_UKSS];
long can_out_mbox_adr[MAX_COUNT_UNITES_UKSS];
int adr_box[MAX_COUNT_UNITES_UKSS+1];
int adr_in_mbox[MAX_COUNT_UNITES_UKSS+1];
int adr_out_mbox[MAX_COUNT_UNITES_UKSS+1];
int active_box[MAX_COUNT_UNITES_UKSS];
int adr_detect_refresh[MAX_COUNT_UNITES_UKSS];
int revers_box[MAX_COUNT_UNITES_UKSS];
int max_number;
} UNITES_CAN_SETUP;
/////////////////////////////////////////////////////////////////////
typedef struct {
unsigned long can_base_adr;
long can_in_mbox_adr[MAX_COUNT_UNITES_MPU];
long can_out_mbox_adr[MAX_COUNT_UNITES_MPU];
int adr_box[MAX_COUNT_UNITES_MPU];
int adr_in_mbox[MAX_COUNT_UNITES_MPU];
int adr_out_mbox[MAX_COUNT_UNITES_MPU];
int active_box[MAX_COUNT_UNITES_MPU];
int max_number;
} MPU_CAN_SETUP;
/////////////////////////////////////////////////////////////////////
typedef struct {
unsigned long can_base_adr;
long can_in_mbox_adr[MAX_COUNT_UNITES_TERMINAL];
long can_out_mbox_adr[MAX_COUNT_UNITES_TERMINAL];
int adr_box[MAX_COUNT_UNITES_TERMINAL];
int adr_in_mbox[MAX_COUNT_UNITES_TERMINAL];
int adr_out_mbox[MAX_COUNT_UNITES_TERMINAL];
int active_box[MAX_COUNT_UNITES_TERMINAL];
int max_number;
} TERMINAL_CAN_SETUP;
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
typedef struct {
unsigned long can_base_adr;
long can_in_mbox_adr[MAX_COUNT_UNITES_ALARM_LOG];
long can_out_mbox_adr[MAX_COUNT_UNITES_ALARM_LOG];
int adr_box[MAX_COUNT_UNITES_ALARM_LOG];
int adr_in_mbox[MAX_COUNT_UNITES_ALARM_LOG];
int adr_out_mbox[MAX_COUNT_UNITES_ALARM_LOG];
int active_box[MAX_COUNT_UNITES_ALARM_LOG];
int max_number;
} ALARM_LOG_CAN_SETUP;
////////////////////////////////////////////////////////////////////////////////
#define UNITES_CAN_SETUP_DEFAULT { START_CAN_ADR_UNITS_DEFAULT, {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,0,0}, \
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}, \
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}, \
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}, \
{USE_UKSS_0,USE_UKSS_1,USE_UKSS_2,USE_UKSS_3,USE_UKSS_4,USE_UKSS_5, \
USE_UKSS_6,USE_UKSS_7,USE_UKSS_8,USE_UKSS_9,USE_UKSS_10, \
USE_UKSS_11,USE_UKSS_12,USE_UKSS_13,USE_UKSS_14,USE_UKSS_15}, \
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, \
{USE_R_B_0,USE_R_B_1,USE_R_B_2,USE_R_B_3,USE_R_B_4,USE_R_B_5,USE_R_B_6,USE_R_B_7,USE_R_B_8,USE_R_B_9,USE_R_B_10,USE_R_B_11,USE_R_B_12,USE_R_B_13,USE_R_B_14,USE_R_B_15}, \
0}
/////////////////////////////////////////////////////////////////////
#define MPU_CAN_SETUP_DEFAULT { CAN_ADR_MPU_DEFAULT, {0,0,0,0}, \
{0,0,0,0}, \
{-1,-1,-1,-1}, \
{-1,-1,-1,-1}, \
{-1,-1,-1,-1}, \
{USE_MPU_0,USE_MPU_1,USE_MPU_2,USE_MPU_3}, \
0}
//-------------------------------------------------------------------------------//
#define TERMINAL_CAN_SETUP_DEFAULT {CAN_ADR_TERMINAL_DEFAULT, {0,0,0,0}, \
{0,0,0,0}, \
{-1,-1,-1,-1}, \
{-1,-1,-1,-1}, \
{-1,-1,-1,-1}, \
{USE_TERMINAL_1_OSCIL,USE_TERMINAL_1_CMD,USE_TERMINAL_2_OSCIL,USE_TERMINAL_2_CMD}, \
0}
//-------------------------------------------------------------------------------//
#define ALARM_LOG_CAN_SETUP_DEFAULT {CAN_ADR_ALARM_LOG_DEFAULT, {0,0}, \
{0,0}, \
{-1,-1}, \
{-1,-1}, \
{-1,-1}, \
{USE_ALARM_LOG_0,USE_ALARM_LOG_1}, \
0}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
typedef struct {
WORD_INT2BITS_STRUCT buf[TERMINAL_UNIT_LEN];
} TERMINAL_UNITES_STRUCT;
////
typedef TERMINAL_UNITES_STRUCT *TERMINAL_UNITES_STRUCT_handle;
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
extern int TerminalUnites[TERMINAL_UNIT_QUA_UNITS][TERMINAL_UNIT_LEN];
extern int Unites[UNIT_QUA_UNITS][UNIT_LEN];
////////////////////////////////////////////////////////////////////////////////
extern CYCLE cycle[]; // 26.01.2011 Dimas
extern NEW_CYCLE_FIFO new_cycle_fifo;
extern int CanOpenUnites[CANOPENUNIT_LEN];
//add yura
extern MAILBOXS_CAN_SETUP mailboxs_can_setup;
extern FIFO fifo;
extern int CAN_timeout[];
extern int CAN_request_sent[];
extern int CAN_timeout_cicle[];
//////////////////////////////////////////////////
//////////////////////////////////////////////////
int init_units_can_boxs(UNITES_CAN_SETUP *p);
int init_canopen_can_boxs(CANOPEN_CAN_SETUP *p);
int init_mpu_can_boxs(MPU_CAN_SETUP *p );
int init_terminal_can_boxs(TERMINAL_CAN_SETUP *p );
int init_alarm_log_can_boxs(ALARM_LOG_CAN_SETUP *p );
//////////////////////////////////////////////////
void init_mailboxs_can( UNITES_CAN_SETUP *p_units,
MPU_CAN_SETUP *p_mpu,
TERMINAL_CAN_SETUP *p_terminal,
ALARM_LOG_CAN_SETUP *p_alarm_log,
CANOPEN_CAN_SETUP *p_canopen,
MAILBOXS_CAN_SETUP *p_mailboxs
);
void init_all_mailboxs(unsigned long can_base_adr_units, unsigned long can_base_adr_mpu, unsigned long can_base_adr_alarm_log, unsigned long can_base_adr_terminal);
void InitCan(unsigned long can_base_adr_units, unsigned long can_base_adr_mpu, unsigned long can_base_adr_alarm_log, unsigned long can_base_adr_terminal);
//void CAN_send(int box, unsigned long hiword, unsigned long loword);
//void CAN_word_send(int type_box, int box, int Addr, int Data);
//void CAN_array_send(int type_box, int box, int Addr, int * Data);
void CAN_cycle_send(int type_box, int box, unsigned long Addr, int * Data, unsigned long quant, int extended, int priority);
//void FIFO_send(int box, unsigned long hiword, unsigned long loword);
//int CAN_FLY_free(int box);
//int CAN_FIFO_free(unsigned int quant);
int CAN_cycle_free(int box);
int CAN_cycle_full_free(int box, int statistics_flag);
//void CAN_cycle_stop(int box);
//void CAN_cycle_step(int box);
void CAN_request(unsigned int addr, unsigned int quant);
void CAN_assign(unsigned int addr, unsigned int quant);
void reset_CAN_timeout_cicle(int box);
void inc_CAN_timeout_cicle();
unsigned int test_can_live_mpu(void);
unsigned int test_can_live_terminal(int n);
void timer_pause_enable_can_from_mpu(void);
void timer_pause_enable_can_from_terminal(void);
void read_manch_can(void);
void write_manch_can(void);
void detect_time_refresh_units(int box, int adr);
void parse_data_from_mbox(unsigned int box, unsigned long hiword,
unsigned long loword);
int get_real_out_mbox(int type_box, int box);
int get_real_in_mbox(int type_box, int box);
void messagePaserToUnitesIngitim(int box, unsigned long h_word, unsigned long l_word);
//////////////////
void new_fifo_calc_load(void);
int new_fifo_load(int box,unsigned long hiword, unsigned long loword);
int new_cycle_fifo_load(int box, unsigned long adr, int * adr_from, unsigned long addr_to, unsigned long quant, int extended, int priority, int cmd_wait);
int get_new_cycle_fifo_load_level(void);
void CAN_send2(int box,unsigned long hiword, unsigned long loword);
int CAN_cycle_fifo_step(void);
int CAN_cycle_fifo_one_box(void);
//////////////////
int CAN_may_be_send_cycle_fifo(void);
void stop_can_interrupt(void);
void start_can_interrupt(void);
//// Prototype statements for functions found within this file.
interrupt void CAN_handler(void);
interrupt void CAN_reset_err(void);
extern UNITES_CAN_SETUP unites_can_setup;
#endif // _CAN_SETUP