Subversion Repositories NaviCtrl

Rev

Rev 397 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#ifndef _SPI_SLAVE_H
#define _SPI_SLAVE_H

#include "fifo.h"
#include "gps.h"

#define SPEAK_CF_OFF            23
#define SPEAK_CALIBRATE     24
#define SPEAK_MIKROKOPTER   21
#define SPEAK_STARTING      52
#define SPEAK_CF_ON             46
#define SPEAK_ERR_CALIBARTION  1
#define SPEAK_GPS_ON            50
#define SPEAK_GPS_OFF           19
#define SPEAK_GPS_HOLD          17
#define SPEAK_GPS_HOME          18
#define SPEAK_WP_REACHED        12
#define SPEAK_NEXT_WP           13


#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 SpeakHoTT;
/*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;
extern u8 CompassCalState;

void SPI0_Init(void);
void SPI0_GetFlightCtrlVersion(void);
void SPI0_UpdateBuffer(void);



#endif //_SPI_SLAVE_H