/*
 * CAN_project.h
 *
 *  Created on: 21 мая 2020 г.
 *      Author: yura
 */

#ifndef SRC_MAIN_CAN_PROJECT_H_
#define SRC_MAIN_CAN_PROJECT_H_


#include "can_protocol_ukss.h"

//////////////////////////////////////////////////////////////////
// настройка базовых адресов CAN
// PCH_1 или PCH_2 выбирается джамперов на ПМ67
//////////////////////////////////////////////////////////////////
#define CAN_BASE_ADR_MPU_PCH_1                    0x0CEB0E1
#define CAN_BASE_ADR_MPU_PCH_2                    0x0CEB0E1 //0x0CEB0E2
//////////////////////////////////////
#define CAN_BASE_ADR_TERMINAL_PCH_1               0x0EEEE01
#define CAN_BASE_ADR_TERMINAL_PCH_2               0x0EEEE03
//////////////////////////////////////
#define CAN_BASE_ADR_UNITS_PCH_1                  0x235500
#define CAN_BASE_ADR_UNITS_PCH_2                  0x235500
//////////////////////////////////////
#define CAN_BASE_ADR_ALARM_LOG_PCH_1              0x0BCDEF01
#define CAN_BASE_ADR_ALARM_LOG_PCH_2              0x0BCDEF02
//////////////////////////////////////////////////////////////////

//#define CAN_PROTOCOL_VERSION   1
#define CAN_PROTOCOL_VERSION   2

#define CAN_SPEED_BITS   125000
//#define CAN_SPEED_BITS   250000
//#define CAN_SPEED_BITS   500000



#define ENABLE_CAN_SEND_TO_UKSS_FROM_MAIN           1
#define ENABLE_CAN_SEND_TO_MPU_FROM_MAIN            1
#define ENABLE_CAN_SEND_TO_TERMINAL_FROM_MAIN       0//1
#define ENABLE_CAN_SEND_TO_TERMINAL_OSCIL           0//1
#define ENABLE_CAN_SEND_TO_ANOTHER_BSU_FROM_MAIN    1


//////////////////////////////////////////////////////

#ifndef ENABLE_CAN_SEND_TO_UKSS_FROM_MAIN
#define ENABLE_CAN_SEND_TO_UKSS_FROM_MAIN   0
#endif

#ifndef ENABLE_CAN_SEND_TO_MPU_FROM_MAIN
#define ENABLE_CAN_SEND_TO_MPU_FROM_MAIN   0
#endif


#ifndef ENABLE_CAN_SEND_TO_TERMINAL_FROM_MAIN
#define ENABLE_CAN_SEND_TO_TERMINAL_FROM_MAIN   0
#endif

#ifndef ENABLE_CAN_SEND_TO_TERMINAL_OSCIL
#define ENABLE_CAN_SEND_TO_TERMINAL_OSCIL   0
#endif

#ifndef ENABLE_CAN_SEND_TO_ANOTHER_BSU_FROM_MAIN
#define ENABLE_CAN_SEND_TO_ANOTHER_BSU_FROM_MAIN   0
#endif

///////////////////////////////////////////////////////////////////
// setup ukss boxs
///////////////////////////////////////////////////////////////////

// надо разремарить устройства которые используются
#define USE_UKSS_0      1
#define USE_UKSS_1      1
#define USE_UKSS_2      1
#define USE_UKSS_3      1
#define USE_UKSS_4      1
//#define USE_UKSS_5      1
//#define USE_UKSS_6      1
//#define USE_UKSS_7      1
//#define USE_UKSS_8      1
//#define USE_UKSS_9      1
//#define USE_UKSS_10      1
//#define USE_UKSS_11      1
//#define USE_UKSS_12      1
//#define USE_UKSS_13      1
//#define USE_UKSS_14      1
//#define USE_UKSS_15      1



#define OFFSET_CAN_ADR_UNITS    0x10

// Даем осмысленные названия ящикам

#if USE_UKSS_0
#define ZADATCHIK_CAN               0       //Zadatchik
#endif

#if USE_UKSS_1
#define VPU_CAN                     1       //VPU
#endif

#if USE_UKSS_2
#define UMU_CAN_DEVICE          2                   //Voltage control UMU
#endif

#if USE_UKSS_3
#define BKSSD_CAN_DEVICE          3                 //AC DRIVE
#endif


#if USE_UKSS_4
#define ANOTHER_BSU1_CAN_DEVICE          4          //Another BSU1
// Unites revers box or not
// revers box used only on CAN between BS1 BS2
//#define USE_R_B_4       1 //0
#endif


//#if USE_UKSS_5
//#define ANOTHER_BSU2_CAN_DEVICE          5          //Another BSU2
//// Unites revers box or not
//// revers box used only on CAN between BS1 BS2
////#define USE_R_B_5       1 //0
//#endif




///////////////////////////////////////////////////////////////////
// setup mpu boxes
///////////////////////////////////////////////////////////////////

// надо разремарить устройства которые используются
#define USE_MPU_0   1
#define USE_MPU_1   1
//#define USE_MPU_2   1
//#define USE_MPU_3   1


#define OFFSET_CAN_ADR_MPU          0x10

//#define MPU_CAN_DEVICE          2           // MPU
#define TIME_PAUSE_CAN_FROM_MPU     1000




///////////////////////////////////////////////////////////////////
// setup terminal boxes
///////////////////////////////////////////////////////////////////
// надо разремарить устройства которые используются
#define USE_TERMINAL_1_OSCIL    1
#define USE_TERMINAL_1_CMD      1
#define USE_TERMINAL_2_OSCIL    1
#define USE_TERMINAL_2_CMD      1


#define OFFSET_CAN_ADR_TERMINAL             0x10
#define TIME_PAUSE_CAN_FROM_TERMINAL        2

///////////////////////////////////////////////////////////////////
// setup ALARM_LOG box
///////////////////////////////////////////////////////////////////
#define USE_ALARM_LOG_0         1

///////////////////////////////////////////////////////////////////
// setup can_open boxes
///////////////////////////////////////////////////////////////////
//#define BWC_CAN_DEVICE          7   // Water cooler
//#define INGITIM                 9

//#define BWC_CAN_FATEC           1
//#define BWC_CAN_SIEMENS         1
//#define INGITIM_CAN_OPEN        1


#define CANOPENUNIT_LEN 30


/////////words from zadatchik from Ingitim
#define PDO1_W1_ADR        0x11
#define PDO1_W2_ADR        0x12
#define PDO1_W3_ADR        0x13
#define PDO1_W4_ADR        0x14
#define PDO2_W1_ADR        0x15
#define PDO2_W2_ADR        0x16
#define PDO2_W3_ADR        0x17
#define PDO2_W4_ADR        0x18
#define PDO3_W1_ADR        0x19
#define PDO3_W2_ADR        0x1A
#define PDO3_W3_ADR        0x1B
#define PDO3_W4_ADR        0x1C
#define PDO5_W1_ADR        0x1D
#define PDO5_W2_ADR        0x1E
#define PDO5_W3_ADR        0x1F
#define PDO5_W4_ADR        0x20
#define PDO6_W1_ADR        0x21
#define PDO6_W2_ADR        0x22
#define PDO6_W3_ADR        0x23
#define PDO6_W4_ADR        0x24
//////////////////////////////////////

///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
#define UNITS_NUMERATION_FROM_0_OR_1    0 //1


#define MAX_CAN_WAIT_TIMEOUT 7500 // 2500
//-------------------------------------------------//

//#define CAN_ADR_TEST_LAMP 0x0CE031      //0x1CE030


///////////////////////////////////////////////////////////////////






///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
// для ukss дефайны
//////////////////////////////////////////////////////////////////
#define ADR_CAN_NUMBER1_ON_ZAD 0x00
#define ADR_CAN_NUMBER2_ON_ZAD 0x01
#define ADR_CAN_LAMPS_ON_ZAD   0x02
#define ADR_CAN_LAMPS_2_ON_ZAD 0x03
#define ADR_CAN_KEY_ON_ZAD     0x10

//////////////////////////////////////
//////////////////////////////////////

#define CAN_SPEED_UKSS8 10
#define CAN_SPEED_VPU1 20
#define CAN_SPEED_VPU2 20
#define CAN_SPEED_UMP1 5//30

//#define ADR_CAN_SPEED 99
//#define ADR_CAN_LENGTH_FINISH_ADR 97
//#define ADR_CAN_CMD 127
//#define ADR_CAN_KEY_ON_VPU 16 //
//#define ADR_CAN_DOOR 0 //


//////////////////////////////////////
//////////////////////////////////////



#endif /* SRC_MAIN_CAN_PROJECT_H_ */
