/* * Copyright (C) OpenTX * * Based on code named * th9x - http://code.google.com/p/th9x * er9x - http://code.google.com/p/er9x * gruvin9x - http://code.google.com/p/gruvin9x * * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef _CROSSFIRE_H_ #define _CROSSFIRE_H_ #include #include "dataconstants.h" // Device address #define BROADCAST_ADDRESS 0x00 #define RADIO_ADDRESS 0xEA #define MODULE_ADDRESS 0xEE // Frame id #define GPS_ID 0x02 #define BATTERY_ID 0x08 #define LINK_ID 0x14 #define CHANNELS_ID 0x16 #define ATTITUDE_ID 0x1E #define FLIGHT_MODE_ID 0x21 #define PING_DEVICES_ID 0x28 #define DEVICE_INFO_ID 0x29 #define REQUEST_SETTINGS_ID 0x2A struct CrossfireSensor { const uint8_t id; const uint8_t subId; const char * name; const TelemetryUnit unit; const uint8_t precision; }; enum CrossfireSensorIndexes { RX_RSSI1_INDEX, RX_RSSI2_INDEX, RX_QUALITY_INDEX, RX_SNR_INDEX, RX_ANTENNA_INDEX, RF_MODE_INDEX, TX_POWER_INDEX, TX_RSSI_INDEX, TX_QUALITY_INDEX, TX_SNR_INDEX, BATT_VOLTAGE_INDEX, BATT_CURRENT_INDEX, BATT_CAPACITY_INDEX, GPS_LATITUDE_INDEX, GPS_LONGITUDE_INDEX, GPS_GROUND_SPEED_INDEX, GPS_HEADING_INDEX, GPS_ALTITUDE_INDEX, GPS_SATELLITES_INDEX, ATTITUDE_PITCH_INDEX, ATTITUDE_ROLL_INDEX, ATTITUDE_YAW_INDEX, FLIGHT_MODE_INDEX, UNKNOWN_INDEX, }; void processCrossfireTelemetryData(uint8_t data); void crossfireSetDefault(int index, uint8_t id, uint8_t subId); #if SPORT_MAX_BAUDRATE < 400000 const uint32_t CROSSFIRE_BAUDRATES[] = { 400000, 115200, }; const uint8_t CROSSFIRE_PERIODS[] = { 4, 16, }; #define CROSSFIRE_BAUDRATE CROSSFIRE_BAUDRATES[g_eeGeneral.telemetryBaudrate] #define CROSSFIRE_PERIOD CROSSFIRE_PERIODS[g_eeGeneral.telemetryBaudrate] #else #define CROSSFIRE_BAUDRATE 400000 #define CROSSFIRE_PERIOD 4 // 4ms #endif #define CROSSFIRE_TELEM_MIRROR_BAUDRATE 115200 #endif // _CROSSFIRE_H_