mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-15 11:13:34 +08:00
atlflight/eagle: minor fixes to get it running again
- fixed df_ltc2946_wrapper battery dependency - fixed px4::atomic fetch_add for QuRT - updated PX4 QuRT SPI wrapper to set bus frequency - renamed "qurt-default" configs to just "qurt"
This commit is contained in:
@@ -42,4 +42,5 @@ px4_add_module(
|
||||
git_driverframework
|
||||
df_driver_framework
|
||||
df_ltc2946
|
||||
battery
|
||||
)
|
||||
|
||||
@@ -34,9 +34,8 @@ px4_add_module(
|
||||
MODULE drivers__qshell__qurt
|
||||
MAIN qshell
|
||||
SRCS
|
||||
qshell_main.cpp
|
||||
qshell_main.cpp
|
||||
qshell_start_qurt.cpp
|
||||
qshell.cpp
|
||||
DEPENDS
|
||||
)
|
||||
|
||||
|
||||
@@ -140,10 +140,10 @@ SPI::transfer(uint8_t *send, uint8_t *recv, unsigned len)
|
||||
|
||||
if (result != (int)len) {
|
||||
PX4_ERR("write failed. Reported %d bytes written (%s)", result, strerror(errno));
|
||||
return -1;
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return PX4_OK;
|
||||
}
|
||||
|
||||
int
|
||||
@@ -183,10 +183,10 @@ SPI::transferhword(uint16_t *send, uint16_t *recv, unsigned len)
|
||||
|
||||
if (result != (int)(len * 2)) {
|
||||
PX4_ERR("write failed. Reported %d bytes written (%s)", result, strerror(errno));
|
||||
return -1;
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return PX4_OK;
|
||||
}
|
||||
|
||||
} // namespace device
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#include "dev_fs_lib_spi.h"
|
||||
|
||||
#include <px4_platform_common/px4_config.h>
|
||||
@@ -79,7 +80,7 @@ SPI::init()
|
||||
{
|
||||
// Open the actual SPI device
|
||||
char dev_path[16];
|
||||
snprintf(dev_path, sizeof(dev_path), "dev/spi-%lu", PX4_SPI_DEV_ID(_device));
|
||||
snprintf(dev_path, sizeof(dev_path), DEV_FS_SPI_DEVICE_TYPE_STRING"%lu", PX4_SPI_DEV_ID(_device));
|
||||
DEVICE_DEBUG("%s", dev_path);
|
||||
_fd = ::open(dev_path, O_RDWR);
|
||||
|
||||
@@ -117,7 +118,29 @@ SPI::transfer(uint8_t *send, uint8_t *recv, unsigned len)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
// set bus frequency
|
||||
dspal_spi_ioctl_set_bus_frequency bus_freq{};
|
||||
|
||||
bus_freq.bus_frequency_in_hz = _frequency;
|
||||
|
||||
if (::ioctl(_fd, SPI_IOCTL_SET_BUS_FREQUENCY_IN_HZ, &bus_freq) < 0) {
|
||||
PX4_ERR("setting bus frequency failed");
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
// set bus mode
|
||||
// dspal_spi_ioctl_set_spi_mode bus_mode{};
|
||||
// bus_mode.eClockPolarity = SPI_CLOCK_IDLE_HIGH;
|
||||
// bus_mode.eShiftMode = SPI_OUTPUT_FIRST;
|
||||
|
||||
// if (::ioctl(spi_fildes, SPI_IOCTL_SET_SPI_MODE, &bus_mode) < 0) {
|
||||
// PX4_ERR("setting mode failed");
|
||||
// return PX4_ERROR;
|
||||
// }
|
||||
|
||||
// transfer data
|
||||
dspal_spi_ioctl_read_write ioctl_write_read{};
|
||||
|
||||
ioctl_write_read.read_buffer = send;
|
||||
ioctl_write_read.read_buffer_length = len;
|
||||
ioctl_write_read.write_buffer = recv;
|
||||
@@ -127,10 +150,10 @@ SPI::transfer(uint8_t *send, uint8_t *recv, unsigned len)
|
||||
|
||||
if (result < 0) {
|
||||
PX4_ERR("transfer error %d", result);
|
||||
return result;
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
return result;
|
||||
return PX4_OK;
|
||||
}
|
||||
|
||||
int
|
||||
@@ -140,15 +163,28 @@ SPI::transferhword(uint16_t *send, uint16_t *recv, unsigned len)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
// int bits = 16;
|
||||
// result = ::ioctl(_fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
|
||||
// set bus frequency
|
||||
dspal_spi_ioctl_set_bus_frequency bus_freq{};
|
||||
bus_freq.bus_frequency_in_hz = _frequency;
|
||||
|
||||
// if (result == -1) {
|
||||
// PX4_ERR("can’t set 16 bit spi mode");
|
||||
if (::ioctl(_fd, SPI_IOCTL_SET_BUS_FREQUENCY_IN_HZ, &bus_freq) < 0) {
|
||||
PX4_ERR("setting bus frequency failed");
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
// set bus mode
|
||||
// dspal_spi_ioctl_set_spi_mode bus_mode{};
|
||||
// bus_mode.eClockPolarity = SPI_CLOCK_IDLE_HIGH;
|
||||
// bus_mode.eShiftMode = SPI_OUTPUT_FIRST;
|
||||
|
||||
// if (::ioctl(spi_fildes, SPI_IOCTL_SET_SPI_MODE, &bus_mode) < 0) {
|
||||
// PX4_ERR("setting mode failed");
|
||||
// return PX4_ERROR;
|
||||
// }
|
||||
|
||||
// transfer data
|
||||
dspal_spi_ioctl_read_write ioctl_write_read{};
|
||||
|
||||
ioctl_write_read.read_buffer = send;
|
||||
ioctl_write_read.read_buffer_length = len * 2;
|
||||
ioctl_write_read.write_buffer = recv;
|
||||
@@ -158,10 +194,10 @@ SPI::transferhword(uint16_t *send, uint16_t *recv, unsigned len)
|
||||
|
||||
if (result < 0) {
|
||||
PX4_ERR("transfer error %d", result);
|
||||
return result;
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
return result;
|
||||
return PX4_OK;
|
||||
}
|
||||
|
||||
} // namespace device
|
||||
|
||||
Reference in New Issue
Block a user