Subversion Repositories NaviCtrl

Compare Revisions

Ignore whitespace Rev 389 → Rev 390

/tags/V0.28h/spi_slave.h
0,0 → 1,139
#ifndef _SPI_SLAVE_H
#define _SPI_SLAVE_H
 
#include "fifo.h"
#include "gps.h"
 
 
#define SS_PIN GPIO_ReadBit(GPIO2, GPIO_Pin_7)
 
#define SPI_FCCMD_USER 10
#define SPI_FCCMD_STICK 11
#define SPI_FCCMD_MISC 12
#define SPI_FCCMD_PARAMETER1 13
#define SPI_FCCMD_VERSION 14
#define SPI_FCCMD_SERVOS 15
#define SPI_FCCMD_ACCU 16
 
extern s32 Kalman_K;
extern s32 Kalman_Kompass ;
extern s32 Kalman_MaxDrift;
extern s32 Kalman_MaxFusion;
extern s32 ToFcGpsZ;
extern s32 ToFC_Rotate_C, ToFC_Rotate_S;
extern s32 HeadFreeStartAngle;
extern s16 FC_WP_EventChannel;
extern u32 ToFC_AltitudeRate;
extern s32 ToFC_AltitudeSetpoint;
extern u8 NC_GPS_ModeCharacter;
extern u8 FC_is_Calibrated;
extern u8 FCCalibActive;
/*extern u8 MotorCurrent[12];
extern u8 MotorTemperature[12];
extern u8 MotorState[12];
extern u8 MotorMaxPwm[12];
*/
extern u8 BL_MinOfMaxPWM; // indication if all BL-controllers run on full power
extern u32 FC_I2C_ErrorConter;
extern u8 FromFC_VarioCharacter;
extern u8 Logging_FCStatusFlags1,Logging_FCStatusFlags2;
extern s16 POI_KameraNick;
extern u8 NC_To_FC_Flags;
typedef struct
{
u8 Command;
s16 AngleNick; // NickAngle in 0.1 deg
s16 AngleRoll; // RollAngle in 0.1 deg
s16 AccNick;
s16 AccRoll;
s16 GyroHeading; // Heading in 0.1 deg
s16 GyroNick;
s16 GyroRoll;
s16 GyroYaw;
u16 FCStatus;
union
{
u8 Byte[12];
s8 sByte[12];
u16 Int[6];
s16 sInt[6];
u32 Long[3];
s32 sLong[3];
float Float[3];
} Param;
u8 Chksum;
} __attribute__((packed)) FromFlightCtrl_t;
 
//NC_To_FC_Flags
#define NC_TO_FC_FLYING_RANGE 0x01
#define NC_TO_FC_EMERGENCY_LANDING 0x02
 
#define SPI_NCCMD_OSD_DATA 100
#define SPI_NCCMD_GPS_POS 101
#define SPI_NCCMD_GPS_TARGET 102
#define SPI_NCCMD_KALMAN 103
#define SPI_NCCMD_VERSION 104
#define SPI_NCCMD_GPSINFO 105
#define SPI_NCCMD_HOTT_INFO 106
#define SPI_MISC 107
 
#define HOTT_VARIO_PACKET_ID 0x89
#define HOTT_GPS_PACKET_ID 0x8A
#define HOTT_ELECTRIC_AIR_PACKET_ID 0x8E
#define HOTT_GENERAL_PACKET_ID 0x8D
 
typedef struct
{
u8 Command;
GPS_Stick_t GPSStick;
s16 CompassHeading;
s16 AccErrorN; // s16 MagVecX;
s16 AccErrorR; // s16 MagVecY;
s16 MagVecZ;
s16 NCStatus;
u16 BeepTime;
union
{
u8 Byte[12];
s8 sByte[12];
u16 Int[6];
s16 sInt[6];
u32 Long[3];
s32 sLong[3];
float Float[3];
}Param;
u8 Chksum;
} __attribute__((packed)) ToFlightCtrl_t;
 
typedef struct
{
u8 Current;
u8 Temperature;
u8 MaxPWM;
u8 State;
} __attribute__((packed)) Motor_t;
 
extern Motor_t Motor[12];
 
typedef struct
{
u8 Major;
u8 Minor;
u8 Patch;
u8 Compatible;
u8 Hardware;
} __attribute__((packed)) SPI_Version_t;
 
extern FromFlightCtrl_t FromFlightCtrl;
extern ToFlightCtrl_t ToFlightCtrl;
extern volatile u32 SPI0_Timeout;
extern SPI_Version_t FC_Version;
extern u8 GPS_Aid_StickMultiplikator;
 
void SPI0_Init(void);
void SPI0_GetFlightCtrlVersion(void);
void SPI0_UpdateBuffer(void);
 
 
 
#endif //_SPI_SLAVE_H