mirror of
https://github.com/opentx/opentx.git
synced 2025-07-18 22:05:10 +03:00
Horus internal GPS: cmake changes, more CLI options, ability to send commands to the module
This commit is contained in:
parent
1ef91597ca
commit
ff37274e64
7 changed files with 75 additions and 13 deletions
|
@ -712,7 +712,15 @@ int cliShowJitter(const char ** argv)
|
||||||
int cliGps(const char ** argv)
|
int cliGps(const char ** argv)
|
||||||
{
|
{
|
||||||
int baudrate = 0;
|
int baudrate = 0;
|
||||||
if (toInt(argv, 1, &baudrate) > 0 && baudrate > 0) {
|
if (argv[1][0] == '$') {
|
||||||
|
// send command to GPS
|
||||||
|
gpsSendFrame(argv[1]);
|
||||||
|
}
|
||||||
|
else if (!strcmp(argv[1], "trace")) {
|
||||||
|
gpsTraceEnabled = !gpsTraceEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (toInt(argv, 1, &baudrate) > 0 && baudrate > 0) {
|
||||||
gpsInit(baudrate);
|
gpsInit(baudrate);
|
||||||
serialPrint("GPS baudrate set to %d", baudrate);
|
serialPrint("GPS baudrate set to %d", baudrate);
|
||||||
}
|
}
|
||||||
|
|
|
@ -275,7 +275,30 @@ void gpsWakeup()
|
||||||
{
|
{
|
||||||
uint8_t byte;
|
uint8_t byte;
|
||||||
while (gpsGetByte(&byte)) {
|
while (gpsGetByte(&byte)) {
|
||||||
TRACE_PING("%c", (char)byte);
|
|
||||||
gpsNewData(byte);
|
gpsNewData(byte);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
char hex(uint8_t b) {
|
||||||
|
return b > 9 ? b + 'A' - 10 : b + '0';
|
||||||
|
}
|
||||||
|
|
||||||
|
void gpsSendFrame(const char * frame)
|
||||||
|
{
|
||||||
|
// send given frame, add checksum and CRLF
|
||||||
|
uint8_t parity = 0;
|
||||||
|
while (*frame) {
|
||||||
|
if (*frame != '$') parity ^= *frame;
|
||||||
|
gpsSendByte(*frame);
|
||||||
|
++frame;
|
||||||
|
}
|
||||||
|
gpsSendByte('*');
|
||||||
|
gpsSendByte(hex(parity >> 4));
|
||||||
|
gpsSendByte(hex(parity & 0x0F));
|
||||||
|
gpsSendByte('\r');
|
||||||
|
gpsSendByte('\n');
|
||||||
|
TRACE("parity %02x", parity);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // #if defined(DEBUG)
|
||||||
|
|
|
@ -40,4 +40,8 @@ struct gpsdata_t
|
||||||
extern gpsdata_t gpsData;
|
extern gpsdata_t gpsData;
|
||||||
void gpsWakeup();
|
void gpsWakeup();
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
void gpsSendFrame(const char * frame);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // _GPS_H_
|
#endif // _GPS_H_
|
||||||
|
|
|
@ -464,7 +464,7 @@ void perMain()
|
||||||
bluetoothWakeup();
|
bluetoothWakeup();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if INTERNAL_GPS > 0
|
#if defined(INTERNAL_GPS)
|
||||||
gpsWakeup();
|
gpsWakeup();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
set(PCBREV "13" CACHE STRING "PCB Revision")
|
set(PCBREV "13" CACHE STRING "PCB Revision")
|
||||||
set(INTERNAL_GPS_BAUDRATE "9600" CACHE STRING "Baud rate for internal GPS")
|
set(INTERNAL_GPS_BAUDRATE "9600" CACHE STRING "Baud rate for internal GPS")
|
||||||
option(INTERNAL_GPS_INSTALLED "Internal GPS installed in beta hardware version" NO)
|
|
||||||
option(DISK_CACHE "Enable SD card disk cache" YES)
|
option(DISK_CACHE "Enable SD card disk cache" YES)
|
||||||
|
if(${PCBREV} GREATER 10)
|
||||||
|
option(INTERNAL_GPS "Internal GPS installed" YES)
|
||||||
|
else()
|
||||||
|
option(INTERNAL_GPS "Internal GPS installed" NO)
|
||||||
|
if(NOT INTERNAL_GPS)
|
||||||
|
message("Internal GPS is optional, use INTERNAL_GPS=YES option to enable it")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
set(CPU_TYPE STM32F4)
|
set(CPU_TYPE STM32F4)
|
||||||
set(HSE_VALUE 12000000)
|
set(HSE_VALUE 12000000)
|
||||||
|
@ -52,8 +59,9 @@ if(DISK_CACHE)
|
||||||
set(SRC ${SRC} disk_cache.cpp)
|
set(SRC ${SRC} disk_cache.cpp)
|
||||||
add_definitions(-DDISK_CACHE)
|
add_definitions(-DDISK_CACHE)
|
||||||
endif()
|
endif()
|
||||||
if(INTERNAL_GPS_INSTALLED)
|
if(INTERNAL_GPS)
|
||||||
add_definitions(-DINTERNAL_GPS_INSTALLED)
|
add_definitions(-DINTERNAL_GPS)
|
||||||
|
message("Internal GPS enabled")
|
||||||
endif()
|
endif()
|
||||||
set(SERIAL2_DRIVER serial2_driver.cpp)
|
set(SERIAL2_DRIVER serial2_driver.cpp)
|
||||||
set(TARGET_SRC
|
set(TARGET_SRC
|
||||||
|
|
|
@ -389,13 +389,12 @@ void hapticOff(void);
|
||||||
void hapticOn(uint32_t pwmPercent);
|
void hapticOn(uint32_t pwmPercent);
|
||||||
|
|
||||||
// GPS driver
|
// GPS driver
|
||||||
#if PCBREV >= 13 || defined(INTERNAL_GPS_INSTALLED)
|
|
||||||
#define INTERNAL_GPS 1
|
|
||||||
#else
|
|
||||||
#define INTERNAL_GPS 0
|
|
||||||
#endif
|
|
||||||
void gpsInit(uint32_t baudrate);
|
void gpsInit(uint32_t baudrate);
|
||||||
uint8_t gpsGetByte(uint8_t * byte);
|
uint8_t gpsGetByte(uint8_t * byte);
|
||||||
|
#if defined(DEBUG)
|
||||||
|
extern uint8_t gpsTraceEnabled;
|
||||||
|
void gpsSendByte(uint8_t byte);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Second serial port driver
|
// Second serial port driver
|
||||||
#define SERIAL2
|
#define SERIAL2
|
||||||
|
|
|
@ -60,9 +60,23 @@ void gpsInit(uint32_t baudrate)
|
||||||
NVIC_Init(&NVIC_InitStructure);
|
NVIC_Init(&NVIC_InitStructure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(DEBUG)
|
||||||
|
uint8_t gpsTraceEnabled = false;
|
||||||
|
Fifo<uint8_t, 64> gpsTxFifo;
|
||||||
|
|
||||||
|
void gpsSendByte(uint8_t byte)
|
||||||
|
{
|
||||||
|
while (gpsTxFifo.isFull());
|
||||||
|
gpsTxFifo.push(byte);
|
||||||
|
USART_ITConfig(GPS_USART, USART_IT_TXE, ENABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // #if defined(DEBUG)
|
||||||
|
|
||||||
|
|
||||||
extern "C" void GPS_USART_IRQHandler(void)
|
extern "C" void GPS_USART_IRQHandler(void)
|
||||||
{
|
{
|
||||||
#if 0
|
#if defined(DEBUG)
|
||||||
// Send
|
// Send
|
||||||
if (USART_GetITStatus(GPS_USART, USART_IT_TXE) != RESET) {
|
if (USART_GetITStatus(GPS_USART, USART_IT_TXE) != RESET) {
|
||||||
uint8_t txchar;
|
uint8_t txchar;
|
||||||
|
@ -89,5 +103,11 @@ extern "C" void GPS_USART_IRQHandler(void)
|
||||||
|
|
||||||
uint8_t gpsGetByte(uint8_t * byte)
|
uint8_t gpsGetByte(uint8_t * byte)
|
||||||
{
|
{
|
||||||
return gpsRxFifo.pop(*byte);
|
uint8_t result = gpsRxFifo.pop(*byte);
|
||||||
|
#if defined(DEBUG)
|
||||||
|
if (gpsTraceEnabled) {
|
||||||
|
serialPutc(*byte);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return result;
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue