Subversion Repositories NaviCtrl

Compare Revisions

Ignore whitespace Rev 731 → Rev 732

/trunk/CamCtrl.c
30,8 → 30,8
 
if(FromCamCtrl.CamStatus & CAM_STATE_REC_ACTIVE) CamCtrlCharacter = 'R';
else if(FromCamCtrl.CamStatus & CAM_STATE_PHOTO_MODE) CamCtrlCharacter = 'P';
else if(FromCamCtrl.CamStatus & CAM_STATE_CAM_DISCONN) CamCtrlCharacter = '?';
else if(FromCamCtrl.CamStatus & CAM_STATE_OFF) CamCtrlCharacter = '!';
else if(FromCamCtrl.CamStatus & CAM_STATE_CAM_DISCONN) CamCtrlCharacter = '?';
else if(TrigLogging.CountExternal) CamCtrlCharacter = TrigLogging.CountExternal % 10 + '0';
else if(FromCamCtrl.PhotoCount) CamCtrlCharacter = FromCamCtrl.PhotoCount % 10 + '0';
else if(FromCamCtrl.CamStatus & CAM_STATE_RDY) CamCtrlCharacter = 'c';
50,6 → 50,7
void CamCtrl_GetData(u8 timeout)
{
static u8 timing = 250, p63 = 0;
static u8 force1photo = 0, delay ; // makes one photo when switching from Off to Photo
 
if(timing)
{
69,6 → 70,7
{
ToCamCtrl.CamCommand &= ~CAM_CMD_REC_OFF;
ToCamCtrl.CamCommand |= CAM_CMD_REC_ON;
force1photo = 0;
}
else
if(PPM_In[EE_Parameter.CamCtrlModeChannel] < -50) // min
75,16 → 77,24
{
ToCamCtrl.CamCommand &= ~CAM_CMD_REC_ON;
ToCamCtrl.CamCommand |= CAM_CMD_REC_OFF;
force1photo = 1;
p63 = 0;
delay = 5;
}
else // Middle
{
if(delay) delay--;
else
{
if(((UART_VersionInfo.HWMajor >= 30) && TRIGGER_PP_INTERN) || ((UART_VersionInfo.HWMajor < 30) && (FC.StatusFlags2 & FC_STATUS2_OUT1_ACTIVE))) // internal Portpin or Flag
if(force1photo || ((UART_VersionInfo.HWMajor >= 30) && TRIGGER_PP_INTERN) || ((UART_VersionInfo.HWMajor < 30) && (FC.StatusFlags2 & FC_STATUS2_OUT1_ACTIVE))) // internal Portpin or Flag
{
if(!p63) ToCamCtrl.CamCommand |= CAM_CMD_SHUTTER; // combined with the FC trigger output
p63 = 1;
force1photo = 0;
}
else p63 = 0;
}
}
}
 
I2CBus_Transmission(I2C0, CAM_SLAVE_ADDRESS, &ToCamCtrl, TxBytes, &CamCtrl_UpdateData, RxBytes);
/trunk/CamCtrl.h
20,7 → 20,7
#define CAM_CMD_REC_ON 0x20
#define CAM_CMD_REC_OFF 0x10
#define CAM_CMD_SHUTTER 0x08
#define CAM_USE_CTRL_INPUT 0x04 // use ControlInput Bit Command
 
#define CAM_CMD_RESET_CAM 0x02
 
//FromCamCtrl.Type
/trunk/main.c
677,6 → 677,8
UART1_PutString("\r\n++++++++++++++++++++++++++++++++++++++++++\r\n\r\n");
TransmitAlsoToFC = 0;
#else
if(UBX_Setup() == 0) UBX_Setup(); // inits the GPS-Module via ubx -> try twice
 
SPI0_GetFlightCtrlVersion();
if(FC_Version.Compatible != FC_SPI_COMPATIBLE)
{
695,7 → 697,6
}
else CamCtrlTimeout = 0; // disable CamCtrl communication if external compass is connected
// +++++++++++++++++++++++++++++++++++++++
if(UBX_Setup() == 0) UBX_Setup(); // inits the GPS-Module via ubx -> try twice
GPS_Init();
// ---------- Prepare the isr driven
// set to absolute lowest priority
726,7 → 727,7
sprintf(msg, " CamCtrl found V%i.%02i \r\n",1 + FromCamCtrl.Version / 100, FromCamCtrl.Version % 100);
UART1_PutString(msg);
}
else UART1_PutString(" No CamCtrl connected \r\n");
else if(Compass_I2CPort == NCMAG_PORT_INTERN) UART1_PutString(" No CamCtrl connected \r\n");
// ++++++++++++++++++++++++++++++++++++++++++++++
for (;;) // the endless main loop
{
/trunk/spi_slave.c
109,7 → 109,7
s32 Kalman_Kompass = 32;
s32 ToFcGpsZ = 0;
u8 CompassCalState = 0;
u8 RequestConfigFromFC = 1;
u8 RequestConfigFromFC = 0;
 
u8 SPI_CommandSequence[] = { SPI_NCCMD_KALMAN, SPI_NCCMD_GPSINFO, SPI_SERIAL_CH, // Achtung: SPI_SERIAL_CH darf nicht am Ende des Arrays stehen (wird gescipped)
SPI_NCCMD_KALMAN, SPI_NCCMD_HOTT_INFO,
/trunk/uart1.c
1029,7 → 1029,7
u16 TransmitNavigationData(u16 MaxBytesPerSecond, u8 clear) // returns the minumum pause time in ms
{
static u8 state = 0, count_flags = 2, count_target = 3, count_home = 4, count_wp = 5 , count_tiny = 6, count_fs = 7;
static u16 CRC_Home = 0, CRC_Target = 0, CRC_Flags = 0, CRC_Wp = 0, CRC_Fs = 0;
static u16 CRC_Home = 0, CRC_Target = 0, CRC_Flags = 0, CRC_Wp = 0, CRC_Fs = 0, crc_Tiny = 0;
u16 pause, sent = 0, crc_home, crc_target, crc_flags, crc_wp, crc_fs;
 
if(clear)
1205,10 → 1205,12
NaviData_Tiny.Altimeter = NaviData.Altimeter;
NaviData_Tiny.GroundSpeed = NaviData.GroundSpeed / 10;
NaviData_Tiny.OSDStatusFlags = (FC.StatusFlags & OSD_FLAG_MASK1) | (FC.StatusFlags2 & OSD_FLAG_MASK2);
if(--count_tiny == 0)
NaviData_Tiny.CamCtrlChar = CamCtrlCharacter;
if((crc_Tiny != NaviData_Tiny.CamCtrlChar) || (--count_tiny == 0))
{
sent += MKProtocol_CreateSerialFrame(&UART1_tx_buffer, 'O', NC_ADDRESS, 1 , (u8 *)&NaviData_Tiny, sizeof(NaviData_Tiny)) + 1;
count_tiny = 200; // just to make sure that it comes sometimes
crc_Tiny = NaviData_Tiny.CamCtrlChar;
}
break;
default: state = 0;
/trunk/uart1.h
185,8 → 185,8
s16 Altimeter; // hight according to air pressure
u8 GroundSpeed; // speed over ground in 10cm/s (2D) (255 = 91km/h)
u8 OSDStatusFlags;
u8 CamCtrlChar; // Status from a connected CamCtrl unit: 'R' = REC 'c' = Ready '!' = Error ...etc
u8 reserve1;
u8 reserve2;
} __attribute__((packed)) NaviData_Tiny_t;
extern NaviData_Tiny_t NaviData_Tiny;