Subversion Repositories NaviCtrl

Rev

Rev 866 | Blame | Last modification | View Log | RSS feed

#ifndef __CAMCTRL_H
#define __CAMCTRL_H

#define CAM_SLAVE_ADDRESS       0x26
#define LASER_SLAVE_ADDRESS     0x24
#define GIMBAL_SLAVE_ADDRESS    0x22

// FromCamCtrl.CamStatus
#define CAM_STATE_RDY                   0x80   // The camera seems to be ready
#define CAM_STATE_REC_ACTIVE    0x40   // Recording Video
#define CAM_STATE_PHOTO_MODE    0x20   // Camera is in Photo Mode
#define CAM_STATE_OFF                   0x10   // Camera off but connected
#define CAM_STATE_CAM_DISCONN   0x08   // Camera is not connected
#define CAM_STATE_I2C_OK                0x04   // Cam_Ctrl is connected by I2C (set by NC)
#define CAM_STATE_ZOOM                  0x02   // Zoom active
#define CAM_STATE_PIC_CAPTURED  0x01   // Bit for captured one Photo recently


//FromLaserCtrl.LaserStatus
#define LASER_DATA_OK                   0x01
#define LASER_I2C_OK                    0x80

//FromGimbalCtrl.GimbalStatus
#define GIMBAL_DATA_OK                  0x01
#define GIMBAL_I2C_OK                   0x80

#define GIMBAL_CMD_BEEP                 0x01
#define GIMBAL_CMD_YW_REL_FRAME 0x02
#define GIMBAL_CMD_SPEED                0x04
#define GIMBAL_CMD_YW_ZERO              0x08
#define GIMBAL_CMD_OUT1                 0x10
#define GIMBAL_CMD_OUT2                 0x20
#define GIMBAL_CMD_OUT_TRIGGER  0x40  // will set the Hardware Triggeroutput on the GimbalCtrl

// ToCamCtrl.CamCommand
#define CAM_CMD_SWITCH_ON       0x80
#define CAM_CMD_SWITCH_OFF      0x40
#define CAM_CMD_REC_ON          0x20
#define CAM_CMD_REC_OFF         0x10
#define CAM_CMD_SHUTTER         0x08

#define CAM_CMD_RESET_CAM       0x02

//FromCamCtrl.Type
#define TYPE_LANC                               1
#define TYPE_IR                                 2
#define TYPE_MULTI                              3

extern s32 FromMenuGimbalYaw,FromMenuServoNickControl, MenuNickGimbalOffset;

//ToGimbalCtrl.BitCmd

typedef struct
{
  u8 CamStatus;
  u16 PhotoCount;
  u8 free1;
  u8 PPM1Okay;
  u8 PPM1Data;
  u8 PPM2Okay;
  u8 PPM2Data;
  u8 Type;             
  u8 Version;   // 4 = V1.04   104 = V2.04
  u8 Compatible;
} __attribute__((packed)) FromCamCtrl_t;
extern FromCamCtrl_t FromCamCtrl;

typedef struct
{
  u8 CamCommand;
  u8 ZoomInput;
  u8 dummy;
} __attribute__((packed)) ToCamCtrl_t;
extern ToCamCtrl_t ToCamCtrl;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ Laser
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
typedef struct
{
  u8 LaserStatus;
  u16 Distance;
  u8 free1;
  u8 PPM1Okay;
  u8 PPM1Data;
  u8 PPM2Okay;
  u8 PPM2Data;
  u8 Type;             
  u8 Version;   // 4 = V1.04   104 = V2.04
  u8 Compatible;
} __attribute__((packed)) FromLaserCtrl_t;
extern FromLaserCtrl_t FromLaserCtrl;

typedef struct
{
  u8 CamCommand;
  u8 ZoomInput;
  u8 dummy;
} __attribute__((packed)) ToLaserCtrl_t;
extern ToLaserCtrl_t ToLaserCtrl;

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//+ Gimbal
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
typedef struct
{
  u8 GimbalStatus;
  s16 Nick;
  s16 Roll;
  s16 Yaw;
  u8 Free1;
  u8 Free2;            
  u8 Version;   // 4 = V1.04   104 = V2.04
  u8 Compatible;
} __attribute__((packed)) FromGimbalCtrl_t;
extern FromGimbalCtrl_t FromGimbalCtrl;
                                                                                 
typedef struct
{
  s16 Nick;
  s16 Roll;
  s16 Yaw;
  unsigned char NRY_Speed;
  unsigned char Filter;
  unsigned char BitCmd;
  unsigned char Crc;
} __attribute__((packed)) ToGimbalCtrl_t;
extern ToGimbalCtrl_t ToGimbalCtrl;


void CamCtrl_GetData(u8);
void InitCamCtrl(void);
extern u16 CamCtrlTimeout;
extern u16 LaserCtrlTimeout;
extern u16 GimbalCtrlTimeout;
extern u16 I2C0_Timeout;
extern u8 ResetNickServoValue;
extern void CamCtrl_UpdateData(u8* pRxBuffer, u8 RxBufferSize);
extern void LaserCtrl_UpdateData(u8* pRxBuffer, u8 RxBufferSize);                                                              
extern void LaserCtrl_GetData(u8 timeout);
extern void GimbalCtrl_UpdateData(u8* pRxBuffer, u8 RxBufferSize);                                                             
extern void GimbalCtrl_GetData(u8 timeout);
extern void CalcNickServoValue(void);
#endif // __CAMCTRL_H