mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-14 20:10:18 +03:00
Whitespace tidy
This commit is contained in:
parent
940d85e20b
commit
3747d6742b
50 changed files with 584 additions and 583 deletions
|
@ -455,10 +455,10 @@ static long cmsx_CopyControlRateProfile(displayPort_t *pDisplay, const void *ptr
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static OSD_Entry cmsx_menuCopyProfileEntries[] =
|
static OSD_Entry cmsx_menuCopyProfileEntries[] =
|
||||||
{
|
{
|
||||||
{ "-- COPY PROFILE --", OME_Label, NULL, NULL, 0},
|
{ "-- COPY PROFILE --", OME_Label, NULL, NULL, 0},
|
||||||
|
|
||||||
{ "CPY PID PROF TO", OME_TAB, NULL, &cmsx_PidProfileTable, 0 },
|
{ "CPY PID PROF TO", OME_TAB, NULL, &cmsx_PidProfileTable, 0 },
|
||||||
{ "COPY PP", OME_Funcall, cmsx_CopyPidProfile, NULL, 0 },
|
{ "COPY PP", OME_Funcall, cmsx_CopyPidProfile, NULL, 0 },
|
||||||
{ "CPY RATE PROF TO", OME_TAB, NULL, &cmsx_ControlRateProfileTable, 0 },
|
{ "CPY RATE PROF TO", OME_TAB, NULL, &cmsx_ControlRateProfileTable, 0 },
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
#include "drivers/io.h"
|
#include "drivers/io.h"
|
||||||
#include "drivers/time.h"
|
#include "drivers/time.h"
|
||||||
|
|
||||||
//====================================Registers Addresses=========================================//
|
//====================================Registers Addresses=========================================//
|
||||||
#define LPS_REF_P_XL 0x08
|
#define LPS_REF_P_XL 0x08
|
||||||
#define LPS_REF_P_L 0x09
|
#define LPS_REF_P_L 0x09
|
||||||
#define LPS_REF_P_H 0x0A
|
#define LPS_REF_P_H 0x0A
|
||||||
|
@ -134,7 +134,7 @@
|
||||||
#define LPS_THS_PH 0x31
|
#define LPS_THS_PH 0x31
|
||||||
#define LPS_RPDS_L 0x39
|
#define LPS_RPDS_L 0x39
|
||||||
#define LPS_RPDS_H 0x3A
|
#define LPS_RPDS_H 0x3A
|
||||||
//=======================================Constants=============================================//
|
//=======================================Constants=============================================//
|
||||||
#define LPS22_ID 0xB1
|
#define LPS22_ID 0xB1
|
||||||
#define LPS25_ID 0xBD
|
#define LPS25_ID 0xBD
|
||||||
#define LPS33_ID 0xB1
|
#define LPS33_ID 0xB1
|
||||||
|
|
|
@ -188,7 +188,7 @@ static void hmc5883lConfigureDataReadyInterruptHandling(magDev_t* mag)
|
||||||
|
|
||||||
#ifdef USE_MAG_SPI_HMC5883
|
#ifdef USE_MAG_SPI_HMC5883
|
||||||
static void hmc5883SpiInit(busDevice_t *busdev)
|
static void hmc5883SpiInit(busDevice_t *busdev)
|
||||||
{
|
{
|
||||||
IOHi(busdev->busdev_u.spi.csnPin); // Disable
|
IOHi(busdev->busdev_u.spi.csnPin); // Disable
|
||||||
|
|
||||||
IOInit(busdev->busdev_u.spi.csnPin, OWNER_COMPASS_CS, 0);
|
IOInit(busdev->busdev_u.spi.csnPin, OWNER_COMPASS_CS, 0);
|
||||||
|
|
|
@ -140,7 +140,7 @@ static void pwmWriteDshot(uint8_t index, float value)
|
||||||
static uint8_t loadDmaBufferDshot(uint32_t *dmaBuffer, int stride, uint16_t packet)
|
static uint8_t loadDmaBufferDshot(uint32_t *dmaBuffer, int stride, uint16_t packet)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 16; i++) {
|
for (int i = 0; i < 16; i++) {
|
||||||
dmaBuffer[i * stride] = (packet & 0x8000) ? MOTOR_BIT_1 : MOTOR_BIT_0; // MSB first
|
dmaBuffer[i * stride] = (packet & 0x8000) ? MOTOR_BIT_1 : MOTOR_BIT_0; // MSB first
|
||||||
packet <<= 1;
|
packet <<= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,7 @@ typedef enum {
|
||||||
A7105_32_FILTER_TEST = 0x32,
|
A7105_32_FILTER_TEST = 0x32,
|
||||||
} A7105Reg_t;
|
} A7105Reg_t;
|
||||||
|
|
||||||
/* Register: A7105_00_MODE */
|
/* Register: A7105_00_MODE */
|
||||||
#define A7105_MODE_FECF 0x40 // [0]: FEC pass. [1]: FEC error. (FECF is read only, it is updated internally while receiving every packet.)
|
#define A7105_MODE_FECF 0x40 // [0]: FEC pass. [1]: FEC error. (FECF is read only, it is updated internally while receiving every packet.)
|
||||||
#define A7105_MODE_CRCF 0x20 // [0]: CRC pass. [1]: CRC error. (CRCF is read only, it is updated internally while receiving every packet.)
|
#define A7105_MODE_CRCF 0x20 // [0]: CRC pass. [1]: CRC error. (CRCF is read only, it is updated internally while receiving every packet.)
|
||||||
#define A7105_MODE_CER 0x10 // [0]: RF chip is disabled. [1]: RF chip is enabled.
|
#define A7105_MODE_CER 0x10 // [0]: RF chip is disabled. [1]: RF chip is enabled.
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -4,7 +4,7 @@
|
||||||
* @author MCD Application Team
|
* @author MCD Application Team
|
||||||
* @version V1.0.3
|
* @version V1.0.3
|
||||||
* @date 13-November-2013
|
* @date 13-November-2013
|
||||||
* @brief This file contains all the functions prototypes for the SD Card
|
* @brief This file contains all the functions prototypes for the SD Card
|
||||||
* stm324x9i_eval_sdio_sd driver firmware library.
|
* stm324x9i_eval_sdio_sd driver firmware library.
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
|
@ -17,14 +17,14 @@
|
||||||
*
|
*
|
||||||
* http://www.st.com/software_license_agreement_liberty_v2
|
* http://www.st.com/software_license_agreement_liberty_v2
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||||
#ifndef __SD_STDLIB_DRV
|
#ifndef __SD_STDLIB_DRV
|
||||||
|
@ -43,9 +43,9 @@
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @brief SDIO specific error defines
|
* @brief SDIO specific error defines
|
||||||
*/
|
*/
|
||||||
SD_CMD_CRC_FAIL = (1), /*!< Command response received (but CRC check failed) */
|
SD_CMD_CRC_FAIL = (1), /*!< Command response received (but CRC check failed) */
|
||||||
SD_DATA_CRC_FAIL = (2), /*!< Data bock sent/received (CRC check Failed) */
|
SD_DATA_CRC_FAIL = (2), /*!< Data bock sent/received (CRC check Failed) */
|
||||||
SD_CMD_RSP_TIMEOUT = (3), /*!< Command response timeout */
|
SD_CMD_RSP_TIMEOUT = (3), /*!< Command response timeout */
|
||||||
|
@ -80,23 +80,23 @@ typedef enum
|
||||||
SD_SDIO_FUNCTION_FAILED = (32),
|
SD_SDIO_FUNCTION_FAILED = (32),
|
||||||
SD_SDIO_UNKNOWN_FUNCTION = (33),
|
SD_SDIO_UNKNOWN_FUNCTION = (33),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Standard error defines
|
* @brief Standard error defines
|
||||||
*/
|
*/
|
||||||
SD_INTERNAL_ERROR,
|
SD_INTERNAL_ERROR,
|
||||||
SD_NOT_CONFIGURED,
|
SD_NOT_CONFIGURED,
|
||||||
SD_REQUEST_PENDING,
|
SD_REQUEST_PENDING,
|
||||||
SD_REQUEST_NOT_APPLICABLE,
|
SD_REQUEST_NOT_APPLICABLE,
|
||||||
SD_INVALID_PARAMETER,
|
SD_INVALID_PARAMETER,
|
||||||
SD_UNSUPPORTED_FEATURE,
|
SD_UNSUPPORTED_FEATURE,
|
||||||
SD_UNSUPPORTED_HW,
|
SD_UNSUPPORTED_HW,
|
||||||
SD_ERROR,
|
SD_ERROR,
|
||||||
SD_OK = 0
|
SD_OK = 0
|
||||||
} SD_Error;
|
} SD_Error;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief SDIO Transfer state
|
* @brief SDIO Transfer state
|
||||||
*/
|
*/
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
SD_TRANSFER_OK = 0,
|
SD_TRANSFER_OK = 0,
|
||||||
|
@ -104,9 +104,9 @@ typedef enum
|
||||||
SD_TRANSFER_ERROR
|
SD_TRANSFER_ERROR
|
||||||
} SDTransferState;
|
} SDTransferState;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief SD Card States
|
* @brief SD Card States
|
||||||
*/
|
*/
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
SD_CARD_READY = ((uint32_t)0x00000001),
|
SD_CARD_READY = ((uint32_t)0x00000001),
|
||||||
|
@ -121,9 +121,9 @@ typedef enum
|
||||||
}SDCardState;
|
}SDCardState;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Card Specific Data: CSD Register
|
* @brief Card Specific Data: CSD Register
|
||||||
*/
|
*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
__IO uint8_t CSDStruct; /*!< CSD structure */
|
__IO uint8_t CSDStruct; /*!< CSD structure */
|
||||||
|
@ -165,8 +165,8 @@ typedef struct
|
||||||
__IO uint8_t Reserved4; /*!< always 1*/
|
__IO uint8_t Reserved4; /*!< always 1*/
|
||||||
} SD_CSD;
|
} SD_CSD;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Card Identification Data: CID Register
|
* @brief Card Identification Data: CID Register
|
||||||
*/
|
*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -182,8 +182,8 @@ typedef struct
|
||||||
__IO uint8_t Reserved2; /*!< always 1 */
|
__IO uint8_t Reserved2; /*!< always 1 */
|
||||||
} SD_CID;
|
} SD_CID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief SD Card Status
|
* @brief SD Card Status
|
||||||
*/
|
*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -200,8 +200,8 @@ typedef struct
|
||||||
} SD_CardStatus;
|
} SD_CardStatus;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief SD Card information
|
* @brief SD Card information
|
||||||
*/
|
*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
@ -213,8 +213,8 @@ typedef struct
|
||||||
uint8_t CardType;
|
uint8_t CardType;
|
||||||
} SD_CardInfo;
|
} SD_CardInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief SDIO Commands Index
|
* @brief SDIO Commands Index
|
||||||
*/
|
*/
|
||||||
#define SD_CMD_GO_IDLE_STATE ((uint8_t)0)
|
#define SD_CMD_GO_IDLE_STATE ((uint8_t)0)
|
||||||
#define SD_CMD_SEND_OP_COND ((uint8_t)1)
|
#define SD_CMD_SEND_OP_COND ((uint8_t)1)
|
||||||
|
@ -263,9 +263,9 @@ typedef struct
|
||||||
#define SD_CMD_GEN_CMD ((uint8_t)56)
|
#define SD_CMD_GEN_CMD ((uint8_t)56)
|
||||||
#define SD_CMD_NO_CMD ((uint8_t)64)
|
#define SD_CMD_NO_CMD ((uint8_t)64)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Following commands are SD Card Specific commands.
|
* @brief Following commands are SD Card Specific commands.
|
||||||
* SDIO_APP_CMD should be sent before sending these commands.
|
* SDIO_APP_CMD should be sent before sending these commands.
|
||||||
*/
|
*/
|
||||||
#define SD_CMD_APP_SD_SET_BUSWIDTH ((uint8_t)6) /*!< For SD Card only */
|
#define SD_CMD_APP_SD_SET_BUSWIDTH ((uint8_t)6) /*!< For SD Card only */
|
||||||
#define SD_CMD_SD_APP_STAUS ((uint8_t)13) /*!< For SD Card only */
|
#define SD_CMD_SD_APP_STAUS ((uint8_t)13) /*!< For SD Card only */
|
||||||
|
@ -276,9 +276,9 @@ typedef struct
|
||||||
#define SD_CMD_SDIO_RW_DIRECT ((uint8_t)52) /*!< For SD I/O Card only */
|
#define SD_CMD_SDIO_RW_DIRECT ((uint8_t)52) /*!< For SD I/O Card only */
|
||||||
#define SD_CMD_SDIO_RW_EXTENDED ((uint8_t)53) /*!< For SD I/O Card only */
|
#define SD_CMD_SDIO_RW_EXTENDED ((uint8_t)53) /*!< For SD I/O Card only */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Following commands are SD Card Specific security commands.
|
* @brief Following commands are SD Card Specific security commands.
|
||||||
* SDIO_APP_CMD should be sent before sending these commands.
|
* SDIO_APP_CMD should be sent before sending these commands.
|
||||||
*/
|
*/
|
||||||
#define SD_CMD_SD_APP_GET_MKB ((uint8_t)43) /*!< For SD Card only */
|
#define SD_CMD_SD_APP_GET_MKB ((uint8_t)43) /*!< For SD Card only */
|
||||||
#define SD_CMD_SD_APP_GET_MID ((uint8_t)44) /*!< For SD Card only */
|
#define SD_CMD_SD_APP_GET_MID ((uint8_t)44) /*!< For SD Card only */
|
||||||
|
@ -291,8 +291,8 @@ typedef struct
|
||||||
#define SD_CMD_SD_APP_SECURE_ERASE ((uint8_t)38) /*!< For SD Card only */
|
#define SD_CMD_SD_APP_SECURE_ERASE ((uint8_t)38) /*!< For SD Card only */
|
||||||
#define SD_CMD_SD_APP_CHANGE_SECURE_AREA ((uint8_t)49) /*!< For SD Card only */
|
#define SD_CMD_SD_APP_CHANGE_SECURE_AREA ((uint8_t)49) /*!< For SD Card only */
|
||||||
#define SD_CMD_SD_APP_SECURE_WRITE_MKB ((uint8_t)48) /*!< For SD Card only */
|
#define SD_CMD_SD_APP_SECURE_WRITE_MKB ((uint8_t)48) /*!< For SD Card only */
|
||||||
|
|
||||||
/* Uncomment the following line to select the SDIO Data transfer mode */
|
/* Uncomment the following line to select the SDIO Data transfer mode */
|
||||||
#if !defined (SD_DMA_MODE) && !defined (SD_POLLING_MODE)
|
#if !defined (SD_DMA_MODE) && !defined (SD_POLLING_MODE)
|
||||||
#define SD_DMA_MODE ((uint32_t)0x00000000)
|
#define SD_DMA_MODE ((uint32_t)0x00000000)
|
||||||
/*#define SD_POLLING_MODE ((uint32_t)0x00000002)*/
|
/*#define SD_POLLING_MODE ((uint32_t)0x00000002)*/
|
||||||
|
@ -309,8 +309,8 @@ typedef struct
|
||||||
*/
|
*/
|
||||||
#define SD_DETECT_PIN IO16_Pin_15
|
#define SD_DETECT_PIN IO16_Pin_15
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Supported SD Memory Cards
|
* @brief Supported SD Memory Cards
|
||||||
*/
|
*/
|
||||||
#define SDIO_STD_CAPACITY_SD_CARD_V1_1 ((uint32_t)0x00000000)
|
#define SDIO_STD_CAPACITY_SD_CARD_V1_1 ((uint32_t)0x00000000)
|
||||||
#define SDIO_STD_CAPACITY_SD_CARD_V2_0 ((uint32_t)0x00000001)
|
#define SDIO_STD_CAPACITY_SD_CARD_V2_0 ((uint32_t)0x00000001)
|
||||||
|
@ -338,7 +338,7 @@ typedef struct
|
||||||
#define SD_SDIO_DMA DMA2
|
#define SD_SDIO_DMA DMA2
|
||||||
#define SD_SDIO_DMA_CLK RCC_AHB1Periph_DMA2
|
#define SD_SDIO_DMA_CLK RCC_AHB1Periph_DMA2
|
||||||
|
|
||||||
#define SD_SDIO_DMA_STREAM3 3
|
#define SD_SDIO_DMA_STREAM3 3
|
||||||
|
|
||||||
#ifdef SD_SDIO_DMA_STREAM3
|
#ifdef SD_SDIO_DMA_STREAM3
|
||||||
#define SD_SDIO_DMA_STREAM DMA2_Stream3
|
#define SD_SDIO_DMA_STREAM DMA2_Stream3
|
||||||
|
|
|
@ -543,5 +543,5 @@ void pidController(const pidProfile_t *pidProfile, const rollAndPitchTrims_t *an
|
||||||
|
|
||||||
bool crashRecoveryModeActive(void)
|
bool crashRecoveryModeActive(void)
|
||||||
{
|
{
|
||||||
return inCrashRecoveryMode;
|
return inCrashRecoveryMode;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2998,7 +2998,7 @@ static void cliStatus(char *cmdline)
|
||||||
UNUSED(cmdline);
|
UNUSED(cmdline);
|
||||||
|
|
||||||
cliPrintLinef("System Uptime: %d seconds", millis() / 1000);
|
cliPrintLinef("System Uptime: %d seconds", millis() / 1000);
|
||||||
|
|
||||||
#ifdef USE_RTC_TIME
|
#ifdef USE_RTC_TIME
|
||||||
char buf[FORMATTED_DATE_TIME_BUFSIZE];
|
char buf[FORMATTED_DATE_TIME_BUFSIZE];
|
||||||
dateTime_t dt;
|
dateTime_t dt;
|
||||||
|
|
|
@ -458,7 +458,7 @@ static void applyLedFixedLayers(void)
|
||||||
hsvColor_t previousColor = ledStripConfig()->colors[(ledGetColor(ledConfig) - 1 + LED_CONFIGURABLE_COLOR_COUNT) % LED_CONFIGURABLE_COLOR_COUNT];
|
hsvColor_t previousColor = ledStripConfig()->colors[(ledGetColor(ledConfig) - 1 + LED_CONFIGURABLE_COLOR_COUNT) % LED_CONFIGURABLE_COLOR_COUNT];
|
||||||
|
|
||||||
if (ledGetOverlayBit(ledConfig, LED_OVERLAY_THROTTLE)) { //smooth fade with selected Aux channel of all HSV values from previousColor through color to nextColor
|
if (ledGetOverlayBit(ledConfig, LED_OVERLAY_THROTTLE)) { //smooth fade with selected Aux channel of all HSV values from previousColor through color to nextColor
|
||||||
int centerPWM = (PWM_RANGE_MIN + PWM_RANGE_MAX) / 2;
|
int centerPWM = (PWM_RANGE_MIN + PWM_RANGE_MAX) / 2;
|
||||||
if (auxInput < centerPWM) {
|
if (auxInput < centerPWM) {
|
||||||
color.h = scaleRange(auxInput, PWM_RANGE_MIN, centerPWM, previousColor.h, color.h);
|
color.h = scaleRange(auxInput, PWM_RANGE_MIN, centerPWM, previousColor.h, color.h);
|
||||||
color.s = scaleRange(auxInput, PWM_RANGE_MIN, centerPWM, previousColor.s, color.s);
|
color.s = scaleRange(auxInput, PWM_RANGE_MIN, centerPWM, previousColor.s, color.s);
|
||||||
|
|
|
@ -118,7 +118,7 @@ static uint8_t runcamDeviceReceivePacket(runcamDevice_t *device, uint8_t command
|
||||||
if (!runcamDeviceIsResponseReceiveDone(command, data, dataPos, &isDone)) {
|
if (!runcamDeviceIsResponseReceiveDone(command, data, dataPos, &isDone)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isDone) {
|
if (isDone) {
|
||||||
responseDataLen = dataPos;
|
responseDataLen = dataPos;
|
||||||
break;
|
break;
|
||||||
|
@ -180,11 +180,11 @@ static void runcamDeviceSendPacket(runcamDevice_t *device, uint8_t command, uint
|
||||||
static bool runcamDeviceSendRequestAndWaitingResp(runcamDevice_t *device, uint8_t commandID, uint8_t *paramData, uint8_t paramDataLen, uint8_t *outputBuffer, uint8_t *outputBufferLen)
|
static bool runcamDeviceSendRequestAndWaitingResp(runcamDevice_t *device, uint8_t commandID, uint8_t *paramData, uint8_t paramDataLen, uint8_t *outputBuffer, uint8_t *outputBufferLen)
|
||||||
{
|
{
|
||||||
int max_retries = 1;
|
int max_retries = 1;
|
||||||
// here using 1000ms as timeout, because the response from 5 key simulation command need a long time about >= 600ms,
|
// here using 1000ms as timeout, because the response from 5 key simulation command need a long time about >= 600ms,
|
||||||
// so set a max value to ensure we can receive the response
|
// so set a max value to ensure we can receive the response
|
||||||
int timeoutMs = 1000;
|
int timeoutMs = 1000;
|
||||||
|
|
||||||
// only the command sending on initializing step need retry logic,
|
// only the command sending on initializing step need retry logic,
|
||||||
// otherwise, the timeout of 1000 ms is enough for the response from device
|
// otherwise, the timeout of 1000 ms is enough for the response from device
|
||||||
if (commandID == RCDEVICE_PROTOCOL_COMMAND_GET_DEVICE_INFO) {
|
if (commandID == RCDEVICE_PROTOCOL_COMMAND_GET_DEVICE_INFO) {
|
||||||
max_retries = 5;
|
max_retries = 5;
|
||||||
|
@ -254,7 +254,7 @@ static void sendCtrlCommand(runcamDevice_t *device, rcsplit_ctrl_argument_e argu
|
||||||
|
|
||||||
// get the device info(firmware version, protocol version and features, see the
|
// get the device info(firmware version, protocol version and features, see the
|
||||||
// definition of runcamDeviceInfo_t to know more)
|
// definition of runcamDeviceInfo_t to know more)
|
||||||
static bool runcamDeviceGetDeviceInfo(runcamDevice_t *device, uint8_t *outputBuffer)
|
static bool runcamDeviceGetDeviceInfo(runcamDevice_t *device, uint8_t *outputBuffer)
|
||||||
{
|
{
|
||||||
// Send "who are you" command to device to detect the device whether is running RCSplit FW1.0 or RCSplit FW1.1
|
// Send "who are you" command to device to detect the device whether is running RCSplit FW1.0 or RCSplit FW1.1
|
||||||
int max_retries = 2;
|
int max_retries = 2;
|
||||||
|
@ -301,7 +301,7 @@ static bool runcamDeviceGetDeviceInfo(runcamDevice_t *device, uint8_t *outputBuf
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return runcamDeviceSendRequestAndWaitingResp(device, RCDEVICE_PROTOCOL_COMMAND_GET_DEVICE_INFO, NULL, 0, outputBuffer, NULL);
|
return runcamDeviceSendRequestAndWaitingResp(device, RCDEVICE_PROTOCOL_COMMAND_GET_DEVICE_INFO, NULL, 0, outputBuffer, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool runcamDeviceSend5KeyOSDCableConnectionEvent(runcamDevice_t *device, uint8_t operation, uint8_t *outActionID, uint8_t *outErrorCode)
|
static bool runcamDeviceSend5KeyOSDCableConnectionEvent(runcamDevice_t *device, uint8_t operation, uint8_t *outActionID, uint8_t *outErrorCode)
|
||||||
|
@ -514,7 +514,7 @@ static bool runcamDeviceDecodeSettings(sbuf_t *buf, runcamDeviceSetting_t *outSe
|
||||||
case RCDP_SETTING_PARSE_WAITING_ID: {
|
case RCDP_SETTING_PARSE_WAITING_ID: {
|
||||||
settingIterator->id = sbufReadU8(buf);
|
settingIterator->id = sbufReadU8(buf);
|
||||||
parseStep = RCDP_SETTING_PARSE_WAITING_NAME;
|
parseStep = RCDP_SETTING_PARSE_WAITING_NAME;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RCDP_SETTING_PARSE_WAITING_NAME: {
|
case RCDP_SETTING_PARSE_WAITING_NAME: {
|
||||||
const char *str = (const char *)sbufConstPtr(buf);
|
const char *str = (const char *)sbufConstPtr(buf);
|
||||||
|
@ -522,9 +522,9 @@ static bool runcamDeviceDecodeSettings(sbuf_t *buf, runcamDeviceSetting_t *outSe
|
||||||
memset(settingIterator->name, 0, RCDEVICE_PROTOCOL_MAX_SETTING_NAME_LENGTH);
|
memset(settingIterator->name, 0, RCDEVICE_PROTOCOL_MAX_SETTING_NAME_LENGTH);
|
||||||
strncpy(settingIterator->name, str, RCDEVICE_PROTOCOL_MAX_SETTING_NAME_LENGTH);
|
strncpy(settingIterator->name, str, RCDEVICE_PROTOCOL_MAX_SETTING_NAME_LENGTH);
|
||||||
sbufAdvance(buf, nameLen);
|
sbufAdvance(buf, nameLen);
|
||||||
|
|
||||||
parseStep = RCDP_SETTING_PARSE_WAITING_VALUE;
|
parseStep = RCDP_SETTING_PARSE_WAITING_VALUE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RCDP_SETTING_PARSE_WAITING_VALUE: {
|
case RCDP_SETTING_PARSE_WAITING_VALUE: {
|
||||||
const char *str = (const char *)sbufConstPtr(buf);
|
const char *str = (const char *)sbufConstPtr(buf);
|
||||||
|
@ -535,7 +535,7 @@ static bool runcamDeviceDecodeSettings(sbuf_t *buf, runcamDeviceSetting_t *outSe
|
||||||
parseStep = RCDP_SETTING_PARSE_WAITING_ID;
|
parseStep = RCDP_SETTING_PARSE_WAITING_ID;
|
||||||
|
|
||||||
settingIterator++;
|
settingIterator++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -627,7 +627,7 @@ bool runcamDeviceGetSettings(runcamDevice_t *device, uint8_t parentSettingID, ru
|
||||||
if (!runcamDeviceDecodeSettings(&dataBuf, outSettingList, maxSettingItemCount)) {
|
if (!runcamDeviceDecodeSettings(&dataBuf, outSettingList, maxSettingItemCount)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -648,13 +648,13 @@ static bool runcamDeviceDecodeSettingDetail(sbuf_t *buf, runcamDeviceSettingDeta
|
||||||
outSettingDetail->stepSize = sbufReadU8(buf);
|
outSettingDetail->stepSize = sbufReadU8(buf);
|
||||||
break;
|
break;
|
||||||
case RCDEVICE_PROTOCOL_SETTINGTYPE_UINT16:
|
case RCDEVICE_PROTOCOL_SETTINGTYPE_UINT16:
|
||||||
case RCDEVICE_PROTOCOL_SETTINGTYPE_INT16:
|
case RCDEVICE_PROTOCOL_SETTINGTYPE_INT16:
|
||||||
outSettingDetail->value = sbufReadU16(buf);
|
outSettingDetail->value = sbufReadU16(buf);
|
||||||
outSettingDetail->minValue = sbufReadU16(buf);
|
outSettingDetail->minValue = sbufReadU16(buf);
|
||||||
outSettingDetail->maxValue = sbufReadU16(buf);
|
outSettingDetail->maxValue = sbufReadU16(buf);
|
||||||
outSettingDetail->stepSize = sbufReadU8(buf);
|
outSettingDetail->stepSize = sbufReadU8(buf);
|
||||||
break;
|
break;
|
||||||
case RCDEVICE_PROTOCOL_SETTINGTYPE_FLOAT:
|
case RCDEVICE_PROTOCOL_SETTINGTYPE_FLOAT:
|
||||||
outSettingDetail->value = sbufReadU32(buf);
|
outSettingDetail->value = sbufReadU32(buf);
|
||||||
outSettingDetail->minValue = sbufReadU32(buf);
|
outSettingDetail->minValue = sbufReadU32(buf);
|
||||||
outSettingDetail->maxValue = sbufReadU32(buf);
|
outSettingDetail->maxValue = sbufReadU32(buf);
|
||||||
|
@ -684,7 +684,7 @@ static bool runcamDeviceDecodeSettingDetail(sbuf_t *buf, runcamDeviceSettingDeta
|
||||||
result = strtok(NULL, delims);
|
result = strtok(NULL, delims);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RCDEVICE_PROTOCOL_SETTINGTYPE_STRING: {
|
case RCDEVICE_PROTOCOL_SETTINGTYPE_STRING: {
|
||||||
const char *tmp = (const char *)sbufConstPtr(buf);
|
const char *tmp = (const char *)sbufConstPtr(buf);
|
||||||
|
@ -692,7 +692,7 @@ static bool runcamDeviceDecodeSettingDetail(sbuf_t *buf, runcamDeviceSettingDeta
|
||||||
sbufAdvance(buf, strlen(tmp) + 1);
|
sbufAdvance(buf, strlen(tmp) + 1);
|
||||||
|
|
||||||
outSettingDetail->maxStringSize = sbufReadU8(buf);
|
outSettingDetail->maxStringSize = sbufReadU8(buf);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RCDEVICE_PROTOCOL_SETTINGTYPE_FOLDER:
|
case RCDEVICE_PROTOCOL_SETTINGTYPE_FOLDER:
|
||||||
break;
|
break;
|
||||||
|
@ -743,7 +743,7 @@ bool runcamDeviceWriteSetting(runcamDevice_t *device, uint8_t settingID, uint8_t
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(response, 0, sizeof(runcamDeviceWriteSettingResponse_t));
|
memset(response, 0, sizeof(runcamDeviceWriteSettingResponse_t));
|
||||||
response->resultCode = 1; // initialize the result code to failed
|
response->resultCode = 1; // initialize the result code to failed
|
||||||
|
|
||||||
uint8_t paramsBufLen = sizeof(uint8_t) + paramDataLen;
|
uint8_t paramsBufLen = sizeof(uint8_t) + paramDataLen;
|
||||||
uint8_t paramsBuf[RCDEVICE_PROTOCOL_MAX_DATA_SIZE];
|
uint8_t paramsBuf[RCDEVICE_PROTOCOL_MAX_DATA_SIZE];
|
||||||
|
|
|
@ -88,9 +88,9 @@ typedef enum {
|
||||||
} rcdevice_5key_simulation_operation_e;
|
} rcdevice_5key_simulation_operation_e;
|
||||||
|
|
||||||
// Operation of RCDEVICE_PROTOCOL_COMMAND_5KEY_CONNECTION
|
// Operation of RCDEVICE_PROTOCOL_COMMAND_5KEY_CONNECTION
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RCDEVICE_PROTOCOL_5KEY_CONNECTION_OPEN = 0x01,
|
RCDEVICE_PROTOCOL_5KEY_CONNECTION_OPEN = 0x01,
|
||||||
RCDEVICE_PROTOCOL_5KEY_CONNECTION_CLOSE = 0x02
|
RCDEVICE_PROTOCOL_5KEY_CONNECTION_CLOSE = 0x02
|
||||||
} RCDEVICE_5key_connection_event_e;
|
} RCDEVICE_5key_connection_event_e;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|
|
@ -239,7 +239,7 @@ static void rcdevice5KeySimulationProcess(timeUs_t currentTimeUs)
|
||||||
needRelease = false;
|
needRelease = false;
|
||||||
} else {
|
} else {
|
||||||
rcdeviceInMenu = false;
|
rcdeviceInMenu = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -230,9 +230,9 @@ uint32_t rcdeviceOSDTxBytesFree(const displayPort_t *displayPort)
|
||||||
return INT32_MAX;
|
return INT32_MAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rcdeviceScreenSize(const displayPort_t *displayPort)
|
int rcdeviceScreenSize(const displayPort_t *displayPort)
|
||||||
{
|
{
|
||||||
return displayPort->rows * displayPort->cols;
|
return displayPort->rows * displayPort->cols;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
#ifdef USE_SERIAL_RX
|
#ifdef USE_SERIAL_RX
|
||||||
#if defined(USE_SPEKTRUM_REAL_RSSI) || defined(USE_SPEKTRUM_FAKE_RSSI)
|
#if defined(USE_SPEKTRUM_REAL_RSSI) || defined(USE_SPEKTRUM_FAKE_RSSI)
|
||||||
|
|
||||||
#include "config/feature.h"
|
#include "config/feature.h"
|
||||||
#include "common/utils.h"
|
#include "common/utils.h"
|
||||||
|
@ -189,5 +189,5 @@ void spektrumHandleRSSI(volatile uint8_t spekFrame[]) {
|
||||||
}
|
}
|
||||||
#endif // USE_SPEKTRUM_FAKE_RSSI
|
#endif // USE_SPEKTRUM_FAKE_RSSI
|
||||||
}
|
}
|
||||||
#endif // USE_SPEKTRUM_REAL_RSSI || USE_SPEKTRUM_FAKE_RSSI
|
#endif // USE_SPEKTRUM_REAL_RSSI || USE_SPEKTRUM_FAKE_RSSI
|
||||||
#endif // USE_SERIAL_RX
|
#endif // USE_SERIAL_RX
|
||||||
|
|
|
@ -761,16 +761,16 @@ void vtxSAProcess(timeUs_t currentTimeUs)
|
||||||
// dprintf(("process: resending 0x%x\r\n", sa_outstanding));
|
// dprintf(("process: resending 0x%x\r\n", sa_outstanding));
|
||||||
// XXX Todo: Resend termination and possible offline transition
|
// XXX Todo: Resend termination and possible offline transition
|
||||||
saResendCmd();
|
saResendCmd();
|
||||||
lastCommandSentMs = nowMs;
|
lastCommandSentMs = nowMs;
|
||||||
} else if (!saQueueEmpty()) {
|
} else if (!saQueueEmpty()) {
|
||||||
// Command pending. Send it.
|
// Command pending. Send it.
|
||||||
// dprintf(("process: sending queue\r\n"));
|
// dprintf(("process: sending queue\r\n"));
|
||||||
saSendQueue();
|
saSendQueue();
|
||||||
lastCommandSentMs = nowMs;
|
lastCommandSentMs = nowMs;
|
||||||
} else if ((nowMs - lastCommandSentMs < SMARTAUDIO_POLLING_WINDOW) && (nowMs - sa_lastTransmissionMs >= SMARTAUDIO_POLLING_INTERVAL)) {
|
} else if ((nowMs - lastCommandSentMs < SMARTAUDIO_POLLING_WINDOW) && (nowMs - sa_lastTransmissionMs >= SMARTAUDIO_POLLING_INTERVAL)) {
|
||||||
//dprintf(("process: sending status change polling\r\n"));
|
//dprintf(("process: sending status change polling\r\n"));
|
||||||
saGetSettings();
|
saGetSettings();
|
||||||
saSendQueue();
|
saSendQueue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -779,123 +779,123 @@ void vtxSAProcess(timeUs_t currentTimeUs)
|
||||||
|
|
||||||
vtxDevType_e vtxSAGetDeviceType(void)
|
vtxDevType_e vtxSAGetDeviceType(void)
|
||||||
{
|
{
|
||||||
return VTXDEV_SMARTAUDIO;
|
return VTXDEV_SMARTAUDIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool vtxSAIsReady(void)
|
bool vtxSAIsReady(void)
|
||||||
{
|
{
|
||||||
return !(saDevice.version == 0);
|
return !(saDevice.version == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void vtxSASetBandAndChannel(uint8_t band, uint8_t channel)
|
void vtxSASetBandAndChannel(uint8_t band, uint8_t channel)
|
||||||
{
|
{
|
||||||
if (saValidateBandAndChannel(band, channel)) {
|
if (saValidateBandAndChannel(band, channel)) {
|
||||||
saSetBandAndChannel(band - 1, channel - 1);
|
saSetBandAndChannel(band - 1, channel - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void vtxSASetPowerByIndex(uint8_t index)
|
void vtxSASetPowerByIndex(uint8_t index)
|
||||||
{
|
{
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
// SmartAudio doesn't support power off.
|
// SmartAudio doesn't support power off.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
saSetPowerByIndex(index - 1);
|
saSetPowerByIndex(index - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void vtxSASetPitMode(uint8_t onoff)
|
void vtxSASetPitMode(uint8_t onoff)
|
||||||
{
|
{
|
||||||
if (!(vtxSAIsReady() && (saDevice.version == 2))) {
|
if (!(vtxSAIsReady() && (saDevice.version == 2))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (onoff) {
|
if (onoff) {
|
||||||
// SmartAudio can not turn pit mode on by software.
|
// SmartAudio can not turn pit mode on by software.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t newmode = SA_MODE_CLR_PITMODE;
|
uint8_t newmode = SA_MODE_CLR_PITMODE;
|
||||||
|
|
||||||
if (saDevice.mode & SA_MODE_GET_IN_RANGE_PITMODE) {
|
if (saDevice.mode & SA_MODE_GET_IN_RANGE_PITMODE) {
|
||||||
newmode |= SA_MODE_SET_IN_RANGE_PITMODE;
|
newmode |= SA_MODE_SET_IN_RANGE_PITMODE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (saDevice.mode & SA_MODE_GET_OUT_RANGE_PITMODE) {
|
if (saDevice.mode & SA_MODE_GET_OUT_RANGE_PITMODE) {
|
||||||
newmode |= SA_MODE_SET_OUT_RANGE_PITMODE;
|
newmode |= SA_MODE_SET_OUT_RANGE_PITMODE;
|
||||||
}
|
}
|
||||||
|
|
||||||
saSetMode(newmode);
|
saSetMode(newmode);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void vtxSASetFreq(uint16_t freq)
|
void vtxSASetFreq(uint16_t freq)
|
||||||
{
|
{
|
||||||
if (saValidateFreq(freq)) {
|
if (saValidateFreq(freq)) {
|
||||||
saSetMode(0); //need to be in FREE mode to set freq
|
saSetMode(0); //need to be in FREE mode to set freq
|
||||||
saSetFreq(freq);
|
saSetFreq(freq);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool vtxSAGetBandAndChannel(uint8_t *pBand, uint8_t *pChannel)
|
bool vtxSAGetBandAndChannel(uint8_t *pBand, uint8_t *pChannel)
|
||||||
{
|
{
|
||||||
if (!vtxSAIsReady()) {
|
if (!vtxSAIsReady()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if in user-freq mode then report band as zero
|
// if in user-freq mode then report band as zero
|
||||||
*pBand = (saDevice.mode & SA_MODE_GET_FREQ_BY_FREQ) ? 0 :
|
*pBand = (saDevice.mode & SA_MODE_GET_FREQ_BY_FREQ) ? 0 :
|
||||||
(SA_DEVICE_CHVAL_TO_BAND(saDevice.channel) + 1);
|
(SA_DEVICE_CHVAL_TO_BAND(saDevice.channel) + 1);
|
||||||
*pChannel = SA_DEVICE_CHVAL_TO_CHANNEL(saDevice.channel) + 1;
|
*pChannel = SA_DEVICE_CHVAL_TO_CHANNEL(saDevice.channel) + 1;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool vtxSAGetPowerIndex(uint8_t *pIndex)
|
bool vtxSAGetPowerIndex(uint8_t *pIndex)
|
||||||
{
|
{
|
||||||
if (!vtxSAIsReady()) {
|
if (!vtxSAIsReady()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
*pIndex = ((saDevice.version == 1) ? saDacToPowerIndex(saDevice.power) : saDevice.power) + 1;
|
*pIndex = ((saDevice.version == 1) ? saDacToPowerIndex(saDevice.power) : saDevice.power) + 1;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool vtxSAGetPitMode(uint8_t *pOnOff)
|
bool vtxSAGetPitMode(uint8_t *pOnOff)
|
||||||
{
|
{
|
||||||
if (!(vtxSAIsReady() && (saDevice.version == 2))) {
|
if (!(vtxSAIsReady() && (saDevice.version == 2))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
*pOnOff = (saDevice.mode & SA_MODE_GET_PITMODE) ? 1 : 0;
|
*pOnOff = (saDevice.mode & SA_MODE_GET_PITMODE) ? 1 : 0;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool vtxSAGetFreq(uint16_t *pFreq)
|
bool vtxSAGetFreq(uint16_t *pFreq)
|
||||||
{
|
{
|
||||||
if (!vtxSAIsReady()) {
|
if (!vtxSAIsReady()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if not in user-freq mode then convert band/chan to frequency
|
// if not in user-freq mode then convert band/chan to frequency
|
||||||
*pFreq = (saDevice.mode & SA_MODE_GET_FREQ_BY_FREQ) ? saDevice.freq :
|
*pFreq = (saDevice.mode & SA_MODE_GET_FREQ_BY_FREQ) ? saDevice.freq :
|
||||||
vtx58_Bandchan2Freq(SA_DEVICE_CHVAL_TO_BAND(saDevice.channel) + 1,
|
vtx58_Bandchan2Freq(SA_DEVICE_CHVAL_TO_BAND(saDevice.channel) + 1,
|
||||||
SA_DEVICE_CHVAL_TO_CHANNEL(saDevice.channel) + 1);
|
SA_DEVICE_CHVAL_TO_CHANNEL(saDevice.channel) + 1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const vtxVTable_t saVTable = {
|
static const vtxVTable_t saVTable = {
|
||||||
.process = vtxSAProcess,
|
.process = vtxSAProcess,
|
||||||
.getDeviceType = vtxSAGetDeviceType,
|
.getDeviceType = vtxSAGetDeviceType,
|
||||||
.isReady = vtxSAIsReady,
|
.isReady = vtxSAIsReady,
|
||||||
.setBandAndChannel = vtxSASetBandAndChannel,
|
.setBandAndChannel = vtxSASetBandAndChannel,
|
||||||
.setPowerByIndex = vtxSASetPowerByIndex,
|
.setPowerByIndex = vtxSASetPowerByIndex,
|
||||||
.setPitMode = vtxSASetPitMode,
|
.setPitMode = vtxSASetPitMode,
|
||||||
.setFrequency = vtxSASetFreq,
|
.setFrequency = vtxSASetFreq,
|
||||||
.getBandAndChannel = vtxSAGetBandAndChannel,
|
.getBandAndChannel = vtxSAGetBandAndChannel,
|
||||||
.getPowerIndex = vtxSAGetPowerIndex,
|
.getPowerIndex = vtxSAGetPowerIndex,
|
||||||
.getPitMode = vtxSAGetPitMode,
|
.getPitMode = vtxSAGetPitMode,
|
||||||
.getFrequency = vtxSAGetFreq,
|
.getFrequency = vtxSAGetFreq,
|
||||||
};
|
};
|
||||||
#endif // VTX_COMMON
|
#endif // VTX_COMMON
|
||||||
|
|
||||||
|
|
|
@ -333,7 +333,7 @@ rx_spi_received_e frSkyXHandlePacket(uint8_t * const packet, uint8_t * const pro
|
||||||
|
|
||||||
FALLTHROUGH;
|
FALLTHROUGH;
|
||||||
// here FS code could be
|
// here FS code could be
|
||||||
case STATE_DATA:
|
case STATE_DATA:
|
||||||
if (IORead(gdoPin) && (frameReceived == false)){
|
if (IORead(gdoPin) && (frameReceived == false)){
|
||||||
uint8_t ccLen = cc2500ReadReg(CC2500_3B_RXBYTES | CC2500_READ_BURST) & 0x7F;
|
uint8_t ccLen = cc2500ReadReg(CC2500_3B_RXBYTES | CC2500_READ_BURST) & 0x7F;
|
||||||
ccLen = cc2500ReadReg(CC2500_3B_RXBYTES | CC2500_READ_BURST) & 0x7F; // read 2 times to avoid reading errors
|
ccLen = cc2500ReadReg(CC2500_3B_RXBYTES | CC2500_READ_BURST) & 0x7F; // read 2 times to avoid reading errors
|
||||||
|
@ -341,7 +341,7 @@ rx_spi_received_e frSkyXHandlePacket(uint8_t * const packet, uint8_t * const pro
|
||||||
ccLen = 32;
|
ccLen = 32;
|
||||||
}
|
}
|
||||||
if (ccLen) {
|
if (ccLen) {
|
||||||
cc2500ReadFifo(packet, ccLen);
|
cc2500ReadFifo(packet, ccLen);
|
||||||
uint16_t lcrc= calculateCrc(&packet[3], (ccLen - 7));
|
uint16_t lcrc= calculateCrc(&packet[3], (ccLen - 7));
|
||||||
if((lcrc >> 8) == packet[ccLen-4] && (lcrc&0x00FF) == packet[ccLen - 3]){ // check calculateCrc
|
if((lcrc >> 8) == packet[ccLen-4] && (lcrc&0x00FF) == packet[ccLen - 3]){ // check calculateCrc
|
||||||
if (packet[0] == 0x1D) {
|
if (packet[0] == 0x1D) {
|
||||||
|
@ -419,7 +419,7 @@ rx_spi_received_e frSkyXHandlePacket(uint8_t * const packet, uint8_t * const pro
|
||||||
packetTimerUs = micros();
|
packetTimerUs = micros();
|
||||||
frameReceived = true; // no need to process frame again.
|
frameReceived = true; // no need to process frame again.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,7 @@ rangefinder_t rangefinder;
|
||||||
#define RANGEFINDER_HARDWARE_TIMEOUT_MS 500 // Accept 500ms of non-responsive sensor, report HW failure otherwise
|
#define RANGEFINDER_HARDWARE_TIMEOUT_MS 500 // Accept 500ms of non-responsive sensor, report HW failure otherwise
|
||||||
|
|
||||||
#define RANGEFINDER_DYNAMIC_THRESHOLD 600 //Used to determine max. usable rangefinder disatance
|
#define RANGEFINDER_DYNAMIC_THRESHOLD 600 //Used to determine max. usable rangefinder disatance
|
||||||
#define RANGEFINDER_DYNAMIC_FACTOR 75
|
#define RANGEFINDER_DYNAMIC_FACTOR 75
|
||||||
|
|
||||||
PG_REGISTER_WITH_RESET_TEMPLATE(rangefinderConfig_t, rangefinderConfig, PG_RANGEFINDER_CONFIG, 0);
|
PG_REGISTER_WITH_RESET_TEMPLATE(rangefinderConfig_t, rangefinderConfig, PG_RANGEFINDER_CONFIG, 0);
|
||||||
|
|
||||||
|
@ -274,7 +274,7 @@ bool isSurfaceAltitudeValid() {
|
||||||
/*
|
/*
|
||||||
* Preconditions: raw and calculated altidude > 0
|
* Preconditions: raw and calculated altidude > 0
|
||||||
* SNR lower than threshold
|
* SNR lower than threshold
|
||||||
*/
|
*/
|
||||||
if (
|
if (
|
||||||
rangefinder.calculatedAltitude > 0 &&
|
rangefinder.calculatedAltitude > 0 &&
|
||||||
rangefinder.rawAltitude > 0 &&
|
rangefinder.rawAltitude > 0 &&
|
||||||
|
|
|
@ -47,7 +47,7 @@ typedef struct rangefinder_s {
|
||||||
int32_t rawAltitude;
|
int32_t rawAltitude;
|
||||||
int32_t calculatedAltitude;
|
int32_t calculatedAltitude;
|
||||||
timeMs_t lastValidResponseTimeMs;
|
timeMs_t lastValidResponseTimeMs;
|
||||||
|
|
||||||
bool snrThresholdReached;
|
bool snrThresholdReached;
|
||||||
int32_t dynamicDistanceThreshold;
|
int32_t dynamicDistanceThreshold;
|
||||||
int16_t snr;
|
int16_t snr;
|
||||||
|
|
|
@ -41,14 +41,14 @@ const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
{ TIM4, IO_TAG(PB8), TIM_Channel_3, TIM_USE_MOTOR, 1, GPIO_AF_2, NULL, 0}, // PWM13 - OUT5
|
{ TIM4, IO_TAG(PB8), TIM_Channel_3, TIM_USE_MOTOR, 1, GPIO_AF_2, NULL, 0}, // PWM13 - OUT5
|
||||||
{ TIM4, IO_TAG(PB9), TIM_Channel_4, TIM_USE_MOTOR, 1, GPIO_AF_2, NULL, 0} // PWM14 - OUT6
|
{ TIM4, IO_TAG(PB9), TIM_Channel_4, TIM_USE_MOTOR, 1, GPIO_AF_2, NULL, 0} // PWM14 - OUT6
|
||||||
*/
|
*/
|
||||||
DEF_TIM(TIM2, CH1, PA0, TIM_USE_PPM | TIM_USE_PWM, 0),
|
DEF_TIM(TIM2, CH1, PA0, TIM_USE_PPM | TIM_USE_PWM, 0),
|
||||||
DEF_TIM(TIM2, CH2, PA1, TIM_USE_PWM, 0),
|
DEF_TIM(TIM2, CH2, PA1, TIM_USE_PWM, 0),
|
||||||
DEF_TIM(TIM2, CH3, PA2, TIM_USE_PWM, 0),
|
DEF_TIM(TIM2, CH3, PA2, TIM_USE_PWM, 0),
|
||||||
DEF_TIM(TIM2, CH4, PA3, TIM_USE_PWM, 0),
|
DEF_TIM(TIM2, CH4, PA3, TIM_USE_PWM, 0),
|
||||||
DEF_TIM(TIM3, CH1, PA6, TIM_USE_PWM | TIM_USE_LED, 0),
|
DEF_TIM(TIM3, CH1, PA6, TIM_USE_PWM | TIM_USE_LED, 0),
|
||||||
DEF_TIM(TIM3, CH2, PA7, TIM_USE_PWM, 0),
|
DEF_TIM(TIM3, CH2, PA7, TIM_USE_PWM, 0),
|
||||||
DEF_TIM(TIM3, CH3, PB0, TIM_USE_PWM, 0),
|
DEF_TIM(TIM3, CH3, PB0, TIM_USE_PWM, 0),
|
||||||
DEF_TIM(TIM3, CH4, PB1, TIM_USE_PWM, 0),
|
DEF_TIM(TIM3, CH4, PB1, TIM_USE_PWM, 0),
|
||||||
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, 0), // DMA1_CH2
|
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, 0), // DMA1_CH2
|
||||||
DEF_TIM(TIM4, CH1, PA11, TIM_USE_MOTOR, 0), // DMA1_CH1
|
DEF_TIM(TIM4, CH1, PA11, TIM_USE_MOTOR, 0), // DMA1_CH1
|
||||||
DEF_TIM(TIM8, CH1, PB6, TIM_USE_MOTOR, 0), // DMA2_CH3
|
DEF_TIM(TIM8, CH1, PB6, TIM_USE_MOTOR, 0), // DMA2_CH3
|
||||||
|
|
|
@ -100,7 +100,7 @@ void targetConfiguration(void)
|
||||||
|
|
||||||
featureSet((FEATURE_DYNAMIC_FILTER | FEATURE_AIRMODE | FEATURE_ANTI_GRAVITY) ^ FEATURE_RX_PARALLEL_PWM);
|
featureSet((FEATURE_DYNAMIC_FILTER | FEATURE_AIRMODE | FEATURE_ANTI_GRAVITY) ^ FEATURE_RX_PARALLEL_PWM);
|
||||||
|
|
||||||
/* AlienWhoop PIDs based on Ole Gravy Leg (aka Matt Williamson's) PIDs
|
/* AlienWhoop PIDs based on Ole Gravy Leg (aka Matt Williamson's) PIDs
|
||||||
*/
|
*/
|
||||||
for (uint8_t pidProfileIndex = 0; pidProfileIndex < MAX_PROFILE_COUNT; pidProfileIndex++) {
|
for (uint8_t pidProfileIndex = 0; pidProfileIndex < MAX_PROFILE_COUNT; pidProfileIndex++) {
|
||||||
pidProfile_t *pidProfile = pidProfilesMutable(pidProfileIndex);
|
pidProfile_t *pidProfile = pidProfilesMutable(pidProfileIndex);
|
||||||
|
|
|
@ -45,10 +45,10 @@
|
||||||
* taken to ensure functionality on both F4 and F7 (STM32F405RGT and STM32F722RET)
|
* taken to ensure functionality on both F4 and F7 (STM32F405RGT and STM32F722RET)
|
||||||
*/
|
*/
|
||||||
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM8, CH4, PC9, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM8, CH4, PC9, TIM_USE_MOTOR, 0, 0),
|
||||||
DEF_TIM(TIM3, CH3, PC8, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM3, CH3, PC8, TIM_USE_MOTOR, 0, 0),
|
||||||
DEF_TIM(TIM3, CH2, PC7, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM3, CH2, PC7, TIM_USE_MOTOR, 0, 0),
|
||||||
DEF_TIM(TIM8, CH1, PC6, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM8, CH1, PC6, TIM_USE_MOTOR, 0, 0),
|
||||||
|
|
||||||
DEF_TIM(TIM5, CH1, PA0, TIM_USE_LED, 0, 0),
|
DEF_TIM(TIM5, CH1, PA0, TIM_USE_LED, 0, 0),
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,5 +29,5 @@ const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM15, CH1, PB14, TIM_USE_MOTOR, 0), // PWM2 - PB14 - DMA1_CH5 - TIM1_CH2N, *TIM15_CH1
|
DEF_TIM(TIM15, CH1, PB14, TIM_USE_MOTOR, 0), // PWM2 - PB14 - DMA1_CH5 - TIM1_CH2N, *TIM15_CH1
|
||||||
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, 0), // PWM3 - PA8 - DMA1_CH2 - *TIM1_CH1, TIM4_ETR
|
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, 0), // PWM3 - PA8 - DMA1_CH2 - *TIM1_CH1, TIM4_ETR
|
||||||
DEF_TIM(TIM8, CH2N, PB0, TIM_USE_MOTOR, 0), // PWM4 - PB0 - DMA2_CH5 - TIM3_CH3, TIM1_CH2N, *TIM8_CH2N
|
DEF_TIM(TIM8, CH2N, PB0, TIM_USE_MOTOR, 0), // PWM4 - PB0 - DMA2_CH5 - TIM3_CH3, TIM1_CH2N, *TIM8_CH2N
|
||||||
DEF_TIM(TIM16, CH1, PB8, TIM_USE_TRANSPONDER, 0),
|
DEF_TIM(TIM16, CH1, PB8, TIM_USE_TRANSPONDER, 0),
|
||||||
};
|
};
|
||||||
|
|
|
@ -38,7 +38,7 @@ const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM4, CH2, PB7, TIM_USE_MOTOR, 0), // S3_OUT
|
DEF_TIM(TIM4, CH2, PB7, TIM_USE_MOTOR, 0), // S3_OUT
|
||||||
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, 0), // S4_OUT
|
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, 0), // S4_OUT
|
||||||
DEF_TIM(TIM4, CH1, PB6, TIM_USE_MOTOR, 0), // S1_IN/
|
DEF_TIM(TIM4, CH1, PB6, TIM_USE_MOTOR, 0), // S1_IN/
|
||||||
// DEF_TIM(TIM3, CH1, PB4, TIM_USE_MOTOR, 1), // S5_OUT <--Moved to allow Parallel PWM with proper ESC
|
// DEF_TIM(TIM3, CH1, PB4, TIM_USE_MOTOR, 1), // S5_OUT <--Moved to allow Parallel PWM with proper ESC
|
||||||
DEF_TIM(TIM2, CH3, PA2, TIM_USE_MOTOR, 0), // S6_OUT
|
DEF_TIM(TIM2, CH3, PA2, TIM_USE_MOTOR, 0), // S6_OUT
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -64,7 +64,7 @@ void targetBusInit(void)
|
||||||
|
|
||||||
i2cHardwareConfigure(i2cConfig());
|
i2cHardwareConfigure(i2cConfig());
|
||||||
i2cInit(I2CDEV_2);
|
i2cInit(I2CDEV_2);
|
||||||
|
|
||||||
bstInit(BST_DEVICE);
|
bstInit(BST_DEVICE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -25,10 +25,10 @@
|
||||||
#include "drivers/dma.h"
|
#include "drivers/dma.h"
|
||||||
|
|
||||||
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM2, CH4, PA3, TIM_USE_PPM, 0),
|
DEF_TIM(TIM2, CH4, PA3, TIM_USE_PPM, 0),
|
||||||
DEF_TIM(TIM17, CH1N, PB7, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM17, CH1N, PB7, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM8, CH1, PB6, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM8, CH1, PB6, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM8, CH3, PB9, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM8, CH3, PB9, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM8, CH2, PB8, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM8, CH2, PB8, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM16, CH1, PA6, TIM_USE_LED, 0),
|
DEF_TIM(TIM16, CH1, PA6, TIM_USE_LED, 0),
|
||||||
};
|
};
|
||||||
|
|
|
@ -33,7 +33,7 @@ const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM2, CH2, PA1, TIM_USE_MOTOR, 0), // PWM5 - PA1 - *TIM2_CH2, TIM15_CH1N
|
DEF_TIM(TIM2, CH2, PA1, TIM_USE_MOTOR, 0), // PWM5 - PA1 - *TIM2_CH2, TIM15_CH1N
|
||||||
DEF_TIM(TIM2, CH3, PA2, TIM_USE_MOTOR, 0), // PWM6 - PA2 - *TIM2_CH3, !TIM15_CH1
|
DEF_TIM(TIM2, CH3, PA2, TIM_USE_MOTOR, 0), // PWM6 - PA2 - *TIM2_CH3, !TIM15_CH1
|
||||||
DEF_TIM(TIM3, CH2, PA4, TIM_USE_PPM, 0), // PPM - PA4
|
DEF_TIM(TIM3, CH2, PA4, TIM_USE_PPM, 0), // PPM - PA4
|
||||||
DEF_TIM(TIM16, CH1, PB8, TIM_USE_LED, 0),
|
DEF_TIM(TIM16, CH1, PB8, TIM_USE_LED, 0),
|
||||||
DEF_TIM(TIM1, CH1, PA8, TIM_USE_TRANSPONDER, 0), // TRANSPONDER - PA8
|
DEF_TIM(TIM1, CH1, PA8, TIM_USE_TRANSPONDER, 0), // TRANSPONDER - PA8
|
||||||
#else
|
#else
|
||||||
DEF_TIM(TIM3, CH2, PA4, TIM_USE_MOTOR, 0), // PWM1 - PA4 - *TIM3_CH2
|
DEF_TIM(TIM3, CH2, PA4, TIM_USE_MOTOR, 0), // PWM1 - PA4 - *TIM3_CH2
|
||||||
|
@ -43,7 +43,7 @@ const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM2, CH2, PA1, TIM_USE_MOTOR, 0), // PWM5 - PA1 - *TIM2_CH2, TIM15_CH1N
|
DEF_TIM(TIM2, CH2, PA1, TIM_USE_MOTOR, 0), // PWM5 - PA1 - *TIM2_CH2, TIM15_CH1N
|
||||||
DEF_TIM(TIM2, CH3, PA2, TIM_USE_MOTOR, 0), // PWM6 - PA2 - *TIM2_CH3, !TIM15_CH1
|
DEF_TIM(TIM2, CH3, PA2, TIM_USE_MOTOR, 0), // PWM6 - PA2 - *TIM2_CH3, !TIM15_CH1
|
||||||
DEF_TIM(TIM17, CH1, PA7, TIM_USE_PPM, 0), // PPM - PA7 - *TIM17_CH1, TIM1_CH1N, TIM8_CH1
|
DEF_TIM(TIM17, CH1, PA7, TIM_USE_PPM, 0), // PPM - PA7 - *TIM17_CH1, TIM1_CH1N, TIM8_CH1
|
||||||
DEF_TIM(TIM16, CH1, PB8, TIM_USE_LED, 0),
|
DEF_TIM(TIM16, CH1, PB8, TIM_USE_LED, 0),
|
||||||
DEF_TIM(TIM1, CH1, PA8, TIM_USE_TRANSPONDER, 0), // TRANSPONDER - PA8
|
DEF_TIM(TIM1, CH1, PA8, TIM_USE_TRANSPONDER, 0), // TRANSPONDER - PA8
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,7 +31,7 @@ const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM1, CH2, PE11, TIM_USE_MOTOR, 0, 1), // M4 , DMA2_ST4
|
DEF_TIM(TIM1, CH2, PE11, TIM_USE_MOTOR, 0, 1), // M4 , DMA2_ST4
|
||||||
DEF_TIM(TIM8, CH4, PC9, TIM_USE_MOTOR, 0, 0), // M5 , DMA2_ST7
|
DEF_TIM(TIM8, CH4, PC9, TIM_USE_MOTOR, 0, 0), // M5 , DMA2_ST7
|
||||||
DEF_TIM(TIM5, CH4, PA3, TIM_USE_MOTOR, 0, 0), // M6 , DMA1_ST1
|
DEF_TIM(TIM5, CH4, PA3, TIM_USE_MOTOR, 0, 0), // M6 , DMA1_ST1
|
||||||
|
|
||||||
DEF_TIM(TIM4, CH1, PD12, TIM_USE_LED, 0, 0), // LED_TRIP , DMA1_ST0
|
DEF_TIM(TIM4, CH1, PD12, TIM_USE_LED, 0, 0), // LED_TRIP , DMA1_ST0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -147,8 +147,8 @@
|
||||||
#define USE_I2C
|
#define USE_I2C
|
||||||
#define USE_I2C_DEVICE_1
|
#define USE_I2C_DEVICE_1
|
||||||
#define I2C_DEVICE (I2CDEV_1)
|
#define I2C_DEVICE (I2CDEV_1)
|
||||||
#define I2C1_SCL PB6
|
#define I2C1_SCL PB6
|
||||||
#define I2C1_SDA PB7
|
#define I2C1_SDA PB7
|
||||||
|
|
||||||
#define USE_BARO
|
#define USE_BARO
|
||||||
#define USE_BARO_BMP280
|
#define USE_BARO_BMP280
|
||||||
|
|
|
@ -26,24 +26,24 @@
|
||||||
|
|
||||||
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
#ifdef KISSCC
|
#ifdef KISSCC
|
||||||
DEF_TIM(TIM1, CH2N, PB14, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM1, CH2N, PB14, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM8, CH2N, PB0, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM8, CH2N, PB0, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM15, CH1N, PB15, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM15, CH1N, PB15, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM3, CH1, PA6, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM3, CH1, PA6, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM17, CH1, PA7, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM17, CH1, PA7, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM16, CH1N, PA13, TIM_USE_PWM, 0),
|
DEF_TIM(TIM16, CH1N, PA13, TIM_USE_PWM, 0),
|
||||||
#else
|
#else
|
||||||
DEF_TIM(TIM1, CH2N, PB14, TIM_USE_MOTOR, TIMER_OUTPUT_INVERTED),
|
DEF_TIM(TIM1, CH2N, PB14, TIM_USE_MOTOR, TIMER_OUTPUT_INVERTED),
|
||||||
DEF_TIM(TIM8, CH2N, PB0, TIM_USE_MOTOR, TIMER_OUTPUT_INVERTED),
|
DEF_TIM(TIM8, CH2N, PB0, TIM_USE_MOTOR, TIMER_OUTPUT_INVERTED),
|
||||||
DEF_TIM(TIM15, CH1N, PB15, TIM_USE_MOTOR, TIMER_OUTPUT_INVERTED),
|
DEF_TIM(TIM15, CH1N, PB15, TIM_USE_MOTOR, TIMER_OUTPUT_INVERTED),
|
||||||
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, TIMER_OUTPUT_INVERTED),
|
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, TIMER_OUTPUT_INVERTED),
|
||||||
DEF_TIM(TIM3, CH1, PA6, TIM_USE_MOTOR | TIM_USE_LED, TIMER_OUTPUT_INVERTED),
|
DEF_TIM(TIM3, CH1, PA6, TIM_USE_MOTOR | TIM_USE_LED, TIMER_OUTPUT_INVERTED),
|
||||||
DEF_TIM(TIM17, CH1, PA7, TIM_USE_MOTOR, TIMER_OUTPUT_INVERTED),
|
DEF_TIM(TIM17, CH1, PA7, TIM_USE_MOTOR, TIMER_OUTPUT_INVERTED),
|
||||||
DEF_TIM(TIM4, CH3, PA13, TIM_USE_PWM, 0), // On KISSFC TIM16 did not work, using TIM4 works
|
DEF_TIM(TIM4, CH3, PA13, TIM_USE_PWM, 0), // On KISSFC TIM16 did not work, using TIM4 works
|
||||||
#endif
|
#endif
|
||||||
DEF_TIM(TIM2, CH2, PB3, TIM_USE_PWM | TIM_USE_PPM, 0),
|
DEF_TIM(TIM2, CH2, PB3, TIM_USE_PWM | TIM_USE_PPM, 0),
|
||||||
DEF_TIM(TIM2, CH1, PA15, TIM_USE_PWM, 0),
|
DEF_TIM(TIM2, CH1, PA15, TIM_USE_PWM, 0),
|
||||||
DEF_TIM(TIM2, CH3, PA2, TIM_USE_PWM, 0),
|
DEF_TIM(TIM2, CH3, PA2, TIM_USE_PWM, 0),
|
||||||
DEF_TIM(TIM2, CH4, PB11, TIM_USE_PWM, 0),
|
DEF_TIM(TIM2, CH4, PB11, TIM_USE_PWM, 0),
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,8 +29,9 @@
|
||||||
|
|
||||||
|
|
||||||
#ifdef USE_TARGET_CONFIG
|
#ifdef USE_TARGET_CONFIG
|
||||||
void targetConfiguration(void){
|
void targetConfiguration(void)
|
||||||
rxConfigMutable()->halfDuplex = true;
|
{
|
||||||
serialConfigMutable()->portConfigs[findSerialPortIndexByIdentifier(SERIAL_PORT_UART4)].functionMask = FUNCTION_MSP;
|
rxConfigMutable()->halfDuplex = true;
|
||||||
|
serialConfigMutable()->portConfigs[findSerialPortIndexByIdentifier(SERIAL_PORT_UART4)].functionMask = FUNCTION_MSP;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -26,17 +26,17 @@
|
||||||
|
|
||||||
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
|
|
||||||
DEF_TIM(TIM9, CH1, PA2, TIM_USE_PWM | TIM_USE_PPM, 0, 0),
|
DEF_TIM(TIM9, CH1, PA2, TIM_USE_PWM | TIM_USE_PPM, 0, 0),
|
||||||
|
|
||||||
DEF_TIM(TIM8, CH1, PC6, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM8, CH1, PC6, TIM_USE_MOTOR, 0, 0),
|
||||||
DEF_TIM(TIM5, CH1, PA0, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM5, CH1, PA0, TIM_USE_MOTOR, 0, 0),
|
||||||
DEF_TIM(TIM4, CH3, PB8, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM4, CH3, PB8, TIM_USE_MOTOR, 0, 0),
|
||||||
DEF_TIM(TIM4, CH1, PB6, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM4, CH1, PB6, TIM_USE_MOTOR, 0, 0),
|
||||||
|
|
||||||
DEF_TIM(TIM4, CH2, PB7, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM4, CH2, PB7, TIM_USE_MOTOR, 0, 0),
|
||||||
DEF_TIM(TIM8, CH2, PC7, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM8, CH2, PC7, TIM_USE_MOTOR, 0, 0),
|
||||||
|
|
||||||
DEF_TIM(TIM2, CH2, PB3, TIM_USE_LED, 0, 0)
|
DEF_TIM(TIM2, CH2, PB3, TIM_USE_LED, 0, 0)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -25,10 +25,10 @@
|
||||||
#include "drivers/timer_def.h"
|
#include "drivers/timer_def.h"
|
||||||
|
|
||||||
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM2, CH4, PA3, TIM_USE_MOTOR, 0, 1),
|
DEF_TIM(TIM2, CH4, PA3, TIM_USE_MOTOR, 0, 1),
|
||||||
DEF_TIM(TIM3, CH3, PB0, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM3, CH3, PB0, TIM_USE_MOTOR, 0, 0),
|
||||||
DEF_TIM(TIM3, CH4, PB1, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM3, CH4, PB1, TIM_USE_MOTOR, 0, 0),
|
||||||
DEF_TIM(TIM2, CH3, PA2, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM2, CH3, PA2, TIM_USE_MOTOR, 0, 0),
|
||||||
#if defined(PLUMF4) || defined(KIWIF4V2)
|
#if defined(PLUMF4) || defined(KIWIF4V2)
|
||||||
// DEF_TIM(TIM4, CH1, PA0, TIM_USE_LED, TIMER_OUTPUT_STANDARD, 0), //LED
|
// DEF_TIM(TIM4, CH1, PA0, TIM_USE_LED, TIMER_OUTPUT_STANDARD, 0), //LED
|
||||||
//Switch LED_STRIP back to VTX.DTA, since the LED pad does not seem to be working:
|
//Switch LED_STRIP back to VTX.DTA, since the LED pad does not seem to be working:
|
||||||
|
|
|
@ -39,6 +39,6 @@ const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM15, CH1, PB14, TIM_USE_MOTOR, 0), // PWM10 - PB14
|
DEF_TIM(TIM15, CH1, PB14, TIM_USE_MOTOR, 0), // PWM10 - PB14
|
||||||
DEF_TIM(TIM15, CH2, PB15, TIM_USE_MOTOR, 0), // PWM11 - PB15
|
DEF_TIM(TIM15, CH2, PB15, TIM_USE_MOTOR, 0), // PWM11 - PB15
|
||||||
#endif
|
#endif
|
||||||
DEF_TIM(TIM16, CH1, PA6, TIM_USE_LED, 0),
|
DEF_TIM(TIM16, CH1, PA6, TIM_USE_LED, 0),
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -25,17 +25,17 @@
|
||||||
#include "drivers/timer_def.h"
|
#include "drivers/timer_def.h"
|
||||||
|
|
||||||
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM9, CH2, PA3, TIM_USE_PPM, 0, 0), // PPM IN
|
DEF_TIM(TIM9, CH2, PA3, TIM_USE_PPM, 0, 0), // PPM IN
|
||||||
|
|
||||||
DEF_TIM(TIM3, CH1, PB4, TIM_USE_MOTOR, 0, 0), // S1_OUT
|
DEF_TIM(TIM3, CH1, PB4, TIM_USE_MOTOR, 0, 0), // S1_OUT
|
||||||
DEF_TIM(TIM3, CH2, PB5, TIM_USE_MOTOR, 0, 0), // S2_OUT
|
DEF_TIM(TIM3, CH2, PB5, TIM_USE_MOTOR, 0, 0), // S2_OUT
|
||||||
DEF_TIM(TIM4, CH1, PB6, TIM_USE_MOTOR, 0, 0), // S3_OUT
|
DEF_TIM(TIM4, CH1, PB6, TIM_USE_MOTOR, 0, 0), // S3_OUT
|
||||||
DEF_TIM(TIM4, CH2, PB7, TIM_USE_MOTOR, 0, 0), // S4_OUT
|
DEF_TIM(TIM4, CH2, PB7, TIM_USE_MOTOR, 0, 0), // S4_OUT
|
||||||
|
|
||||||
DEF_TIM(TIM2, CH2, PB3, TIM_USE_MOTOR, 0, 0), // S5
|
DEF_TIM(TIM2, CH2, PB3, TIM_USE_MOTOR, 0, 0), // S5
|
||||||
DEF_TIM(TIM2, CH3, PB10, TIM_USE_MOTOR, 0, 0), // S6
|
DEF_TIM(TIM2, CH3, PB10, TIM_USE_MOTOR, 0, 0), // S6
|
||||||
DEF_TIM(TIM5, CH1, PA0, TIM_USE_ANY, 0, 0), // RSSI pad
|
DEF_TIM(TIM5, CH1, PA0, TIM_USE_ANY, 0, 0), // RSSI pad
|
||||||
DEF_TIM(TIM5, CH3, PA2, TIM_USE_ANY, 0, 0), // TX2
|
DEF_TIM(TIM5, CH3, PA2, TIM_USE_ANY, 0, 0), // TX2
|
||||||
|
|
||||||
DEF_TIM(TIM1, CH1, PA8, TIM_USE_LED, 0, 0), // LED
|
DEF_TIM(TIM1, CH1, PA8, TIM_USE_LED, 0, 0), // LED
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
#define USE_SPI_DEVICE_1
|
#define USE_SPI_DEVICE_1
|
||||||
|
|
||||||
#define SPI1_SCK_PIN PA5
|
#define SPI1_SCK_PIN PA5
|
||||||
#define SPI1_MISO_PIN PA6
|
#define SPI1_MISO_PIN PA6
|
||||||
#define SPI1_MOSI_PIN PA7
|
#define SPI1_MOSI_PIN PA7
|
||||||
|
|
||||||
#define MPU6000_CS_PIN PA4
|
#define MPU6000_CS_PIN PA4
|
||||||
#define MPU6000_SPI_INSTANCE SPI1
|
#define MPU6000_SPI_INSTANCE SPI1
|
||||||
|
@ -95,8 +95,8 @@
|
||||||
// *************** OSD *****************************
|
// *************** OSD *****************************
|
||||||
#define USE_SPI_DEVICE_2
|
#define USE_SPI_DEVICE_2
|
||||||
#define SPI2_SCK_PIN PB13
|
#define SPI2_SCK_PIN PB13
|
||||||
#define SPI2_MISO_PIN PB14
|
#define SPI2_MISO_PIN PB14
|
||||||
#define SPI2_MOSI_PIN PB15
|
#define SPI2_MOSI_PIN PB15
|
||||||
|
|
||||||
#define USE_OSD
|
#define USE_OSD
|
||||||
#define USE_MAX7456
|
#define USE_MAX7456
|
||||||
|
|
|
@ -73,9 +73,9 @@
|
||||||
#define USE_BARO_MS5611
|
#define USE_BARO_MS5611
|
||||||
#define USE_BARO_BMP085
|
#define USE_BARO_BMP085
|
||||||
|
|
||||||
//*********** Magnetometer / Compass *************
|
//*********** Magnetometer / Compass *************
|
||||||
#define USE_MAG
|
#define USE_MAG
|
||||||
#define USE_MAG_HMC5883
|
#define USE_MAG_HMC5883
|
||||||
|
|
||||||
// *************** SD Card **************************
|
// *************** SD Card **************************
|
||||||
#define USE_SDCARD
|
#define USE_SDCARD
|
||||||
|
|
|
@ -102,7 +102,7 @@
|
||||||
|
|
||||||
#define USE_RX_FRSKY_SPI_D
|
#define USE_RX_FRSKY_SPI_D
|
||||||
#define USE_RX_FRSKY_SPI_X
|
#define USE_RX_FRSKY_SPI_X
|
||||||
#define DEFAULT_RX_FEATURE FEATURE_RX_SPI
|
#define DEFAULT_RX_FEATURE FEATURE_RX_SPI
|
||||||
#define RX_SPI_DEFAULT_PROTOCOL RX_SPI_FRSKY_X
|
#define RX_SPI_DEFAULT_PROTOCOL RX_SPI_FRSKY_X
|
||||||
#define USE_RX_FRSKY_SPI_TELEMETRY
|
#define USE_RX_FRSKY_SPI_TELEMETRY
|
||||||
|
|
||||||
|
|
|
@ -26,16 +26,16 @@
|
||||||
|
|
||||||
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
|
|
||||||
DEF_TIM(TIM12, CH2, PB15, TIM_USE_PWM | TIM_USE_PPM, 0, 0),
|
DEF_TIM(TIM12, CH2, PB15, TIM_USE_PWM | TIM_USE_PPM, 0, 0),
|
||||||
DEF_TIM(TIM8, CH1, PC6, TIM_USE_PWM, 0, 0),
|
DEF_TIM(TIM8, CH1, PC6, TIM_USE_PWM, 0, 0),
|
||||||
DEF_TIM(TIM8, CH2, PC7, TIM_USE_PWM, 0, 0),
|
DEF_TIM(TIM8, CH2, PC7, TIM_USE_PWM, 0, 0),
|
||||||
DEF_TIM(TIM8, CH4, PC9, TIM_USE_PWM, 0, 0),
|
DEF_TIM(TIM8, CH4, PC9, TIM_USE_PWM, 0, 0),
|
||||||
DEF_TIM(TIM8, CH3, PC8, TIM_USE_PWM, 0, 0),
|
DEF_TIM(TIM8, CH3, PC8, TIM_USE_PWM, 0, 0),
|
||||||
|
|
||||||
DEF_TIM(TIM4, CH3, PB8, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM4, CH3, PB8, TIM_USE_MOTOR, 0, 0),
|
||||||
DEF_TIM(TIM2, CH4, PA3, TIM_USE_MOTOR, 0, 1),
|
DEF_TIM(TIM2, CH4, PA3, TIM_USE_MOTOR, 0, 1),
|
||||||
DEF_TIM(TIM3, CH2, PB5, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM3, CH2, PB5, TIM_USE_MOTOR, 0, 0),
|
||||||
DEF_TIM(TIM4, CH4, PB9, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM4, CH4, PB9, TIM_USE_MOTOR, 0, 0),
|
||||||
DEF_TIM(TIM9, CH2, PE6, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM9, CH2, PE6, TIM_USE_MOTOR, 0, 0),
|
||||||
DEF_TIM(TIM3, CH1, PB4, TIM_USE_MOTOR, 0, 0),
|
DEF_TIM(TIM3, CH1, PB4, TIM_USE_MOTOR, 0, 0),
|
||||||
};
|
};
|
||||||
|
|
|
@ -87,7 +87,7 @@
|
||||||
#define ACC_MPU6000_ALIGN CW270_DEG
|
#define ACC_MPU6000_ALIGN CW270_DEG
|
||||||
#elif defined(XRACERF4) || defined(EXUAVF4PRO)
|
#elif defined(XRACERF4) || defined(EXUAVF4PRO)
|
||||||
#define GYRO_MPU6000_ALIGN CW90_DEG
|
#define GYRO_MPU6000_ALIGN CW90_DEG
|
||||||
#define ACC_MPU6000_ALIGN CW90_DEG
|
#define ACC_MPU6000_ALIGN CW90_DEG
|
||||||
#else
|
#else
|
||||||
#define GYRO_MPU6000_ALIGN CW180_DEG
|
#define GYRO_MPU6000_ALIGN CW180_DEG
|
||||||
#define ACC_MPU6000_ALIGN CW180_DEG
|
#define ACC_MPU6000_ALIGN CW180_DEG
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
#include "drivers/dma.h"
|
#include "drivers/dma.h"
|
||||||
|
|
||||||
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM2, CH1, PA0, TIM_USE_PPM, 0),
|
DEF_TIM(TIM2, CH1, PA0, TIM_USE_PPM, 0),
|
||||||
DEF_TIM(TIM8, CH1, PB6, TIM_USE_MOTOR, 0), // PWM1 - DMA2 CH3
|
DEF_TIM(TIM8, CH1, PB6, TIM_USE_MOTOR, 0), // PWM1 - DMA2 CH3
|
||||||
DEF_TIM(TIM3, CH4, PB7, TIM_USE_MOTOR, 0), // PWM2 - DMA1 CH3
|
DEF_TIM(TIM3, CH4, PB7, TIM_USE_MOTOR, 0), // PWM2 - DMA1 CH3
|
||||||
DEF_TIM(TIM8, CH2, PB8, TIM_USE_MOTOR, 0), // PMW3 - DMA2 CH5
|
DEF_TIM(TIM8, CH2, PB8, TIM_USE_MOTOR, 0), // PMW3 - DMA2 CH5
|
||||||
|
|
|
@ -26,11 +26,11 @@
|
||||||
#include "drivers/dma.h"
|
#include "drivers/dma.h"
|
||||||
|
|
||||||
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM17, CH1, PA7, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM17, CH1, PA7, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM3, CH3, PB0, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM3, CH3, PB0, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM3, CH2, PA4, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM3, CH2, PA4, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM3, CH4, PB1, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM3, CH4, PB1, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM2, CH2, PA1, TIM_USE_PPM, 0),
|
DEF_TIM(TIM2, CH2, PA1, TIM_USE_PPM, 0),
|
||||||
DEF_TIM(TIM16, CH1, PB8, TIM_USE_LED, 0),
|
DEF_TIM(TIM16, CH1, PB8, TIM_USE_LED, 0),
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,15 +9,15 @@
|
||||||
|
|
||||||
|
|
||||||
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM2, CH4, PA3, TIM_USE_PPM, 0),
|
DEF_TIM(TIM2, CH4, PA3, TIM_USE_PPM, 0),
|
||||||
// Main outputs 6 PWM
|
// Main outputs 6 PWM
|
||||||
DEF_TIM(TIM4, CH1, PB6, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM4, CH1, PB6, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM4, CH2, PB7, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM4, CH2, PB7, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM8, CH2, PB8, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM8, CH2, PB8, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM8, CH3, PB9, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM8, CH3, PB9, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM3, CH1, PC6, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM3, CH1, PC6, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM3, CH2, PC7, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM3, CH2, PC7, TIM_USE_MOTOR, 0),
|
||||||
// Additional outputs
|
// Additional outputs
|
||||||
DEF_TIM(TIM16, CH1, PA6, TIM_USE_TRANSPONDER, 0),
|
DEF_TIM(TIM16, CH1, PA6, TIM_USE_TRANSPONDER, 0),
|
||||||
DEF_TIM(TIM1 , CH1N, PA7, TIM_USE_LED, 0),
|
DEF_TIM(TIM1 , CH1N, PA7, TIM_USE_LED, 0),
|
||||||
};
|
};
|
||||||
|
|
|
@ -54,7 +54,7 @@ const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM2, CH4, PB11, TIM_USE_MOTOR, 0), // PWM4 - PB11 - *TIM2_CH4, UART3_RX (AF7)
|
DEF_TIM(TIM2, CH4, PB11, TIM_USE_MOTOR, 0), // PWM4 - PB11 - *TIM2_CH4, UART3_RX (AF7)
|
||||||
|
|
||||||
// with DSHOT DMA1-CH3 conflicts with TIM3_CH4 / ESC1.
|
// with DSHOT DMA1-CH3 conflicts with TIM3_CH4 / ESC1.
|
||||||
DEF_TIM(TIM16, CH1, PB8, TIM_USE_TRANSPONDER, 0),
|
DEF_TIM(TIM16, CH1, PB8, TIM_USE_TRANSPONDER, 0),
|
||||||
|
|
||||||
DEF_TIM(TIM1, CH1, PA8, TIM_USE_LED, 0),
|
DEF_TIM(TIM1, CH1, PA8, TIM_USE_LED, 0),
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,5 +31,5 @@ const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
DEF_TIM(TIM16, CH1, PB4, TIM_USE_MOTOR, 0), // DMA1_Channel3 or DMA1_Channel6 with Remap (need remap to free SPI1_TX for Flash)
|
DEF_TIM(TIM16, CH1, PB4, TIM_USE_MOTOR, 0), // DMA1_Channel3 or DMA1_Channel6 with Remap (need remap to free SPI1_TX for Flash)
|
||||||
DEF_TIM(TIM17, CH1, PB5, TIM_USE_MOTOR, 0), // DMA1_Channel1 or DMA1_Channel7 with Remap (need remap, ADC1 is on DMA1_Channel1)
|
DEF_TIM(TIM17, CH1, PB5, TIM_USE_MOTOR, 0), // DMA1_Channel1 or DMA1_Channel7 with Remap (need remap, ADC1 is on DMA1_Channel1)
|
||||||
|
|
||||||
DEF_TIM(TIM1, CH1, PA8, TIM_USE_TRANSPONDER, 0),
|
DEF_TIM(TIM1, CH1, PA8, TIM_USE_TRANSPONDER, 0),
|
||||||
};
|
};
|
||||||
|
|
|
@ -26,19 +26,19 @@
|
||||||
|
|
||||||
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
const timerHardware_t timerHardware[USABLE_TIMER_CHANNEL_COUNT] = {
|
||||||
|
|
||||||
DEF_TIM(TIM16, CH1, PB8, TIM_USE_PPM | TIM_USE_LED, 0),
|
DEF_TIM(TIM16, CH1, PB8, TIM_USE_PPM | TIM_USE_LED, 0),
|
||||||
DEF_TIM(TIM17, CH1, PB9, 0, 0),
|
DEF_TIM(TIM17, CH1, PB9, 0, 0),
|
||||||
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM1, CH1, PA8, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM8, CH1, PC6, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM8, CH1, PC6, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM8, CH2, PC7, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM8, CH2, PC7, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM8, CH3, PC8, TIM_USE_MOTOR, 0),
|
DEF_TIM(TIM8, CH3, PC8, TIM_USE_MOTOR, 0),
|
||||||
DEF_TIM(TIM3, CH4, PB1, 0, 0),
|
DEF_TIM(TIM3, CH4, PB1, 0, 0),
|
||||||
DEF_TIM(TIM3, CH2, PA4, 0, 0),
|
DEF_TIM(TIM3, CH2, PA4, 0, 0),
|
||||||
DEF_TIM(TIM4, CH1, PD12, TIM_USE_BEEPER, 0),
|
DEF_TIM(TIM4, CH1, PD12, TIM_USE_BEEPER, 0),
|
||||||
DEF_TIM(TIM4, CH2, PD13, 0, 0),
|
DEF_TIM(TIM4, CH2, PD13, 0, 0),
|
||||||
DEF_TIM(TIM4, CH3, PD14, 0, 0),
|
DEF_TIM(TIM4, CH3, PD14, 0, 0),
|
||||||
DEF_TIM(TIM4, CH4, PD15, 0, 0),
|
DEF_TIM(TIM4, CH4, PD15, 0, 0),
|
||||||
DEF_TIM(TIM2, CH2, PA1, 0, 0),
|
DEF_TIM(TIM2, CH2, PA1, 0, 0),
|
||||||
DEF_TIM(TIM2, CH3, PA2, 0, 0),
|
DEF_TIM(TIM2, CH3, PA2, 0, 0),
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -125,7 +125,7 @@
|
||||||
#define USE_RESOURCE_MGMT
|
#define USE_RESOURCE_MGMT
|
||||||
#define USE_SERVOS
|
#define USE_SERVOS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (FLASH_SIZE > 128)
|
#if (FLASH_SIZE > 128)
|
||||||
#define USE_CMS
|
#define USE_CMS
|
||||||
#define USE_TELEMETRY_CRSF
|
#define USE_TELEMETRY_CRSF
|
||||||
|
|
|
@ -172,15 +172,15 @@
|
||||||
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
|
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
|
||||||
RCC_OscInitStruct.PLL.PLLQ = 9;
|
RCC_OscInitStruct.PLL.PLLQ = 9;
|
||||||
#else
|
#else
|
||||||
/* Enable HSE Oscillator and activate PLL with HSE as source */
|
/* Enable HSE Oscillator and activate PLL with HSE as source */
|
||||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
||||||
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
||||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
||||||
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
||||||
RCC_OscInitStruct.PLL.PLLM = PLL_M;
|
RCC_OscInitStruct.PLL.PLLM = PLL_M;
|
||||||
RCC_OscInitStruct.PLL.PLLN = PLL_N;
|
RCC_OscInitStruct.PLL.PLLN = PLL_N;
|
||||||
RCC_OscInitStruct.PLL.PLLP = PLL_P;
|
RCC_OscInitStruct.PLL.PLLP = PLL_P;
|
||||||
RCC_OscInitStruct.PLL.PLLQ = PLL_Q;
|
RCC_OscInitStruct.PLL.PLLQ = PLL_Q;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ret = HAL_RCC_OscConfig(&RCC_OscInitStruct);
|
ret = HAL_RCC_OscConfig(&RCC_OscInitStruct);
|
||||||
|
|
|
@ -185,7 +185,7 @@ smartPortPayload_t *smartPortDataReceive(uint16_t c, bool *clearToSend, smartPor
|
||||||
} else {
|
} else {
|
||||||
if (c == FSSP_DLE) {
|
if (c == FSSP_DLE) {
|
||||||
byteStuffing = true;
|
byteStuffing = true;
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
} else if (byteStuffing) {
|
} else if (byteStuffing) {
|
||||||
c ^= FSSP_DLE_XOR;
|
c ^= FSSP_DLE_XOR;
|
||||||
|
|
|
@ -209,10 +209,10 @@ bool srxlFrameFlightPackCurrent(sbuf_t *dst, timeUs_t currentTimeUs)
|
||||||
/*
|
/*
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
UINT8 identifier;
|
UINT8 identifier;
|
||||||
UINT8 sID; // Secondary ID
|
UINT8 sID; // Secondary ID
|
||||||
UINT8 lineNumber; // Line number to display (0 = title, 1-8 for general, 254 = Refresh backlight, 255 = Erase all text on screen)
|
UINT8 lineNumber; // Line number to display (0 = title, 1-8 for general, 254 = Refresh backlight, 255 = Erase all text on screen)
|
||||||
char text[13]; // 0-terminated text when < 13 chars
|
char text[13]; // 0-terminated text when < 13 chars
|
||||||
} STRU_SPEKTRUM_SRXL_TEXTGEN;
|
} STRU_SPEKTRUM_SRXL_TEXTGEN;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@ static bool lineSent[SPEKTRUM_SRXL_DEVICE_TEXTGEN_ROWS];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// API Running in external client task context. E.g. in the CMS task
|
// API Running in external client task context. E.g. in the CMS task
|
||||||
int spektrumTmTextGenPutChar(uint8_t col, uint8_t row, char c)
|
int spektrumTmTextGenPutChar(uint8_t col, uint8_t row, char c)
|
||||||
{
|
{
|
||||||
if (row < SPEKTRUM_SRXL_TEXTGEN_BUFFER_ROWS && col < SPEKTRUM_SRXL_TEXTGEN_BUFFER_COLS) {
|
if (row < SPEKTRUM_SRXL_TEXTGEN_BUFFER_ROWS && col < SPEKTRUM_SRXL_TEXTGEN_BUFFER_COLS) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue