2018.07.26

Dependencies:   EthernetInterface TextLCD USBDevice USBHost mbed

common.h

Committer:
sayzyas
Date:
2018-07-26
Revision:
1:fdf87a1a724b
Parent:
0:19075177391c

File content as of revision 1:fdf87a1a724b:

/* 
   DEBUG PRINT MACRO
   http://qiita.com/saltheads/items/e1b0ab54d3d6029c9593
   http://tricky-code.net/nicecode/code10.php
*/
/* Information */
#define LatestUpDate    "2017.04.27"
#define ProgramRevision "Rev 1.00" 
#define Author          "zNSR"
#define Company         "Revast Co.,Ltd."

// ======================================================================
// For Debugging
// ======================================================================
//#define __DEBUG_PRINT_SW__  // Display SW Status to console
#define __DEBUG_L0__
//#define __DEBUG_L1__
//#define __DEBUG_L2__
#define __DEBUG_L3__
//#define __DEBUG_L4__
//#define __DEBUG_L5__

#define __DEBUG_WINCH_DATA__

#ifdef __DEBUG_WINCH_DATA__
    #define DEBUG_PRINT_WINCH_DATA(...)  pc.printf(__VA_ARGS__)
#else
    #define DEBUG_PRINT_WINCH_DATA(...) 
#endif

#ifdef __DEBUG_PRINT_SW__
    #define DEBUG_PRINT_SW(...)  pc.printf(__VA_ARGS__)
#else
    #define DEBUG_PRINT_SW(...) 
#endif

#ifdef __DEBUG_L0__
    #define DEBUG_PRINT_L0(...)  pc.printf(__VA_ARGS__)
#else
    #define DEBUG_PRINT_L0(...) 
#endif
#ifdef __DEBUG_L1__
    #define DEBUG_PRINT_L1(...)  pc.printf(__VA_ARGS__)
#else
    #define DEBUG_PRINT_L1(...) 
#endif
#ifdef __DEBUG_L2__
    #define DEBUG_PRINT_L2(...)  pc.printf(__VA_ARGS__)
#else
    #define DEBUG_PRINT_L2(...) 
#endif
#ifdef __DEBUG_L3__
    #define DEBUG_PRINT_L3(...)  pc.printf(__VA_ARGS__)
#else
    #define DEBUG_PRINT_L3(...) 
#endif
#ifdef __DEBUG_L4__
    #define DEBUG_PRINT_L4(...)  pc.printf(__VA_ARGS__)
#else
    #define DEBUG_PRINT_L4(...) 
#endif
#ifdef __DEBUG_L5__
    #define DEBUG_PRINT_L5(...)  pc.printf(__VA_ARGS__)
#else
    #define DEBUG_PRINT_L5(...) 
#endif

/* ********************************************* */
/* Platform definition                           */
/* ********************************************* */
#define PLATFORM "B1Demo"
//#define PLATFORM "B2Demo"


/* ********************************************* */

// Motor Controller RoboCAN ID definition
// --> define at "mtrAccess.cpp"

//#define NUMBER_OF_MCCMD 7
#define WINCH_OFFSET_VALUE 20


enum{
    MOTOR_NO0,
    MOTOR_NO1,
    MOTOR_NO2,
    MOTOR_NO3
};

enum{
    MOTOR_FORWARD,
    MOTOR_REVERSE,
    MOTOR_STOP
};

#define MC_LOCK_COUNT     5



/* ********************************************* */

#define MOTOR_1     '1'
#define MOTOR_2     '2'

#define MOTOR_

/* Above is still under construction ..... */

#define __DISP_GAMAPAD_STATUS_ALL__
#define __DISP_WRITE_VALUE__
#define I2C_ADDRESS_RESOLVER    0x02


#define _OK_ 1
#define _NG_ 0
#define _FAIL_ 0

#define ON 1
#define OFF 0

#define LFS_READ_COUNT 3
#define TARGET_CHECK_COUNT 10

//#define __DSP_MOTOR_CURRENT_

/* Usually this should be comment out */
//#define _COMMUNCATE_PC_BY_SERIAL_

// Should validate this definition when you use DHCP.
//#define __ETERNET_DHCP__

#define NumberOfPcCommand 11

enum{
    MOTOR_RFCRW,        // RF crawler
    MOTOR_LBCRW,        // LB crawler
    MOTOR_RFTFM,        // RF Transform
    MOTOR_LBTFM,        // LB transform
    MOTOR_WINCH,        // Winch
    MOTOR_CMPAN,        // Pan/Tilt
    MOTOR_CTILT
};




enum{
    MOTOR_DIR_FWD,      // Motor forwaed rotation
    MOTOR_DIR_RVS,      // Motor reverse rotation
    MOTOR_DIR_STP      // Motor stop
};

/* I2C Command packet to motor controller */
/* For motor controller */
#define NumberOfI2CCommand 12
enum{
    I2C_CP_COMMAND,             // instruction command
    I2C_CP_MOTORNO,             // motor number
    I2C_CP_M_DIR,               // motor rotation direction   
    I2C_CP_M_CNTTH_U,       // motor current limit detection threshold upper byte 
    I2C_CP_M_CNTTH_L,       // motor current limit detection threshold lower byte 
    I2C_CP_WDRAM_DIA_UPPER,     // winch dram motor diameter upper   
    I2C_CP_WDRAM_DIA_LOWER,     // winch dram motor diameter lower    
    I2C_CP_CCABLE_DIA_UPPER,    // cable diameter upper byte 
    I2C_CP_CCABLE_DIA_LOWER,    // cable diameter lower byte 
    I2C_CP_RESOLVER_RESO,       // resolver resolution (bit)
    I2C_CP_PRESET_CPOS_UPPER,   // preset position upper
    I2C_CP_PRESET_CPOS_LOWER   // preset position lower 
};
    
/* Winch Operating mode */
enum{
    WINCH_POSITION_CLEAR,
    WINCH_PRESET_BASEDATA,
    WINCH_MMODE_RELATIVE,
    WINCH_MMODE_ABSOLUTE,
    WINCH_STEPDOWN_BTN_ON,
    WINCH_STEPDOWN_BTN_OFF,
    WINCH_STEPUP_BTN_ON,
    WINCH_STEPUP_BTN_OFF,
    WINCH_U_STEPDOWN_BTN_ON,
    WINCH_U_STEPDOWN_BTN_OFF,
    WINCH_U_STEPUP_BTN_ON,
    WINCH_U_STEPUP_BTN_OFF,
    WINCH_PRESET_POSITION
};

/* Ether net */
#define TCP_PCCSERVER_PORT   10004
#define TCP_CMDSERVER_PORT   10002
#define UDP_SERVER_PORT      10000

#define MOTOR_FWD   'F'     /* Forward Rotation */
#define MOTOR_RVS   'R'     /* Reverse Rotation */
#define MOTOR_STP   'S'     /* Stop */

// =========================================================
// Setting Values
// =========================================================
typedef struct {
    int8_t  sv_JS_ShapeMode;    // JS Shape: 0=I, 1=KO
    int8_t  sv_JS_OpeMode;      // JS Operation: 0=single, 1=dual
    int8_t  sv_WinchValid;      // Winch function valid or not: 0=Tfm, Crawler valid, 1=Winch valid
    int8_t  res;
} basic_operation_t;


typedef struct {
    uint16_t    rf_mtr_ithd_f;       // 2 Current threshold RF motor ( forward )
    uint16_t    rf_mtr_ithd_r;       // 2 Current threshold RF motor ( reverse )
    uint16_t    lb_mtr_ithd_f;       // 2 Current threshold LB motor ( forward )
    uint16_t    lb_mtr_ithd_r;       // 2 Current threshold LB motor ( reverse )
    uint8_t     rf_mtr_hspd_f;       // 1 Motor speed RF ( forward )
    uint8_t     rf_mtr_hspd_r;       // 1 Motor speed RF ( reverse )
    uint8_t     lb_mtr_hspd_f;       // 1 Motor speed LB ( forward )     
    uint8_t     lb_mtr_hspd_r;       // 1 Motor speed LB ( reverse )
    uint8_t     reserved_1;          // 1 reserved for future use
    uint8_t     reserved_2;          // 1 reserved for future use
    uint8_t     reserved_3;          // 1 reserved for future use
    uint8_t     reserved_4;          // 1 reserved for future use
} crawler_SetValue_t;                // << 16 byte >>

typedef struct {
    uint16_t    rf_mtr_ithd_f;       // 2 Current threshold RF motor ( forward ) 
    uint16_t    rf_mtr_ithd_r;       // 2 Current threshold RF motor ( reverse )
    uint16_t    lb_mtr_ithd_f;       // 2 Current threshold LB motor ( forward )
    uint16_t    lb_mtr_ithd_r;       // 2 Current threshold LB motor ( reverse )
    uint8_t     rf_mtr_hspd_f;       // 1 Motor speed RF ( forward )
    uint8_t     rf_mtr_hspd_r;       // 1 Motor speed RF ( reverse )
    uint8_t     lb_mtr_hspd_f;       // 1 Motor speed LB ( forward )
    uint8_t     lb_mtr_hspd_r;       // 1 Motor speed LB ( reverse )
    uint8_t     reserved_1;          // 1 reserved for future use
    uint8_t     reserved_2;          // 1 reserved for future use
    uint8_t     reserved_3;          // 1 reserved for future use
    uint8_t     reserved_4;          // 1 reserved for future use
} tfm_SetValue_t;                    // << 16 byte >> 

typedef struct {
    uint16_t    pan_mtr_ithd_f;      // 2 Current threshold winch dram Motor ( forward )
    uint16_t    pan_mtr_ithd_r;      // 2 Current threshold winch dram Motor ( reverse )
    uint16_t    tlt_mtr_ithd_f;      // 2 Current threshold winch No2 Motor ( forward )
    uint16_t    tlt_mtr_ithd_r;      // 2 Current threshold winch No2 Motor ( reverse )
    uint8_t     pan_mtr_hspd_f;      // 1 Motor speed winch dram motor high speed ( forward )
    uint8_t     pan_mtr_hspd_r;      // 1 Motor speed winch dram motor high speed ( reverse )
    uint8_t     tlt_mtr_hspd_f;      // 1 Motor speed winch No2 motor high speed ( forward )
    uint8_t     tlt_mtr_hspd_r;      // 1 Motor speed winch No2 motor high speed ( reverse )
    uint8_t     reserved_1;          // 1 reserved for future use
    uint8_t     reserved_2;          // 1 reserved for future use
    uint8_t     reserved_3;          // 1 reserved for future use
    uint8_t     reserved_4;          // 1 reserved for future use
} ptl_SetValue_t;                    // << 24 byte >>

typedef struct {
    uint16_t    drm_mtr_ithd_f;      // 2 Current threshold winch dram Motor ( forward )
    uint16_t    drm_mtr_ithd_r;      // 2 Current threshold winch dram Motor ( reverse )
    uint16_t    no2_mtr_ithd_f;      // 2 Current threshold winch No2 Motor ( forward )
    uint16_t    no2_mtr_ithd_r;      // 2 Current threshold winch No2 Motor ( reverse )
    uint8_t     drm_mtr_hspd_f;      // 1 Motor speed winch dram motor high speed ( forward )
    uint8_t     drm_mtr_hspd_r;      // 1 Motor speed winch dram motor high speed ( reverse )
    uint8_t     no2_mtr_hspd_f;      // 1 Motor speed winch No2 motor high speed ( forward )
    uint8_t     no2_mtr_hspd_r;      // 1 Motor speed winch No2 motor high speed ( reverse )
    uint16_t    dram_dmtr_x100;      // 2 Winch dram diameter x 100
    uint16_t    adj_val_x10000;      // 2 Winch adjust value x 100
    uint8_t     res_resolution;      // 1 Winch resolver resolution (bit)
    uint8_t     reserved_1;          // 1 reserved for future use
    uint8_t     reserved_2;          // 1 reserved for future use
    uint8_t     reserved_3;          // 1 reserved for future use
    uint8_t     reserved_4;          // 1 reserved for future use
    uint8_t     reserved_5;          // 1 reserved for future use
    uint8_t     reserved_6;          // 1 reserved for future use
    uint8_t     reserved_7;          // 1 reserved for future use
} wch_SetValue_t;                    // << 24 byte >>

typedef struct {
    uint8_t     rjs_centervalue;     // 1 R JoyStick center value
    uint8_t     rjs_u_dead_zone;     // 1 R Joystick upper dead zone width
    uint8_t     rjs_l_dead_zone;     // 1 R Joystick lower dead zone width
    uint8_t     ljs_centervalue;     // 1 L JoyStick center value
    uint8_t     ljs_u_dead_zone;     // 1 L Joystick upper dead zone width
    uint8_t     ljs_l_dead_zone;     // 1 L Joystick lower dead zone width
    uint8_t     reserved_1;          // 1 reserved for future use
    uint8_t     reserved_2;          // 1 reserved for future use
} js_SetValue_t;                     // << 8 byte >>

typedef struct SetValue {
    crawler_SetValue_t  crwCtrl;
    tfm_SetValue_t      tfmCtrl;
    ptl_SetValue_t      ptlCtrl;
    wch_SetValue_t      wchCtrl;
} setValue_t;

#define SLOWDOWN_DISTANCE 23    // <--10 2016.06.01
#define SLOWDOWN_NEAR_DISTANCE 3
/*
typedef struct {
    int16_t dt_WinchCntPosition;    // Current winch posittion
    int16_t dt_WinchRtvValue;       // Winch Moving distance
    int16_t dt_WinchDstPosition;    // Destination Position
    char operation;
    int8_t  dt_WinchMotorCurrent;        // Winch motor current
} winchData_t;
*/

typedef struct {
    int16_t dt_WinchCntPosition;    // Current winch posittion
    int16_t dt_WinchRtvValue;       // Winch Moving distance
    int16_t dt_WinchDstPosition;    // Destination Position
    uint8_t operation;
    uint8_t dt_WinchMotor1Current;        // Winch motor 1 current
    uint8_t dt_WinchMotor2Current;        // Winch motor 2 current
    uint8_t res;
} winchData_t;


#define ROTATE_PER_RESOLUTION 24
  
#define __READ_CURRENT_AT_CIF_TASK__    

//mv_WinchMvData