Skip to content

Commit 92293eb

Browse files
committed
[RK35] GNSS subsystem is usable
1 parent 9cec91b commit 92293eb

2 files changed

Lines changed: 45 additions & 31 deletions

File tree

software/firmware/source/SoftRF/src/platform/RK35.cpp

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ lmic_pinmap lmic_pins = {
8989
.tcxo = LMIC_UNUSED_PIN,
9090
};
9191

92-
TTYSerial Serial1("/dev/ttyAMA0");
92+
TTYSerial Serial1("/dev/ttyS1");
9393
TTYSerial Serial2("/dev/ttyUSB0");
9494

9595
// These callbacks are only used in over-the-air activation, so they are
@@ -409,38 +409,38 @@ static int spi_init(const char *spi_dev)
409409
uint32_t spi_speed;
410410

411411
fd_spidev = open(spi_dev, O_RDWR);
412-
if (fd_spidev < 0)
412+
if (fd_spidev < 0)
413413
{
414-
printf("open %s err\n", spi_dev);
415-
return -1;
416-
}
414+
printf("open %s err\n", spi_dev);
415+
return -1;
416+
}
417417

418418
/* mode */
419419
mode = SPIMODE0;
420420
ret = ioctl(fd_spidev, SPI_IOC_WR_MODE, &mode); // mode 0
421421
if (ret < 0)
422422
{
423-
printf("SPI_IOC_WR_MODE err\n");
424-
return -1;
425-
}
423+
printf("SPI_IOC_WR_MODE err\n");
424+
return -1;
425+
}
426426

427427
/* bits per word */
428428
spi_bits = 8;
429429
ret = ioctl(fd_spidev, SPI_IOC_WR_BITS_PER_WORD, &spi_bits); // 8bits
430430
if (ret < 0)
431431
{
432-
printf("SPI_IOC_WR_BITS_PER_WORD err\n");
433-
return -1;
434-
}
432+
printf("SPI_IOC_WR_BITS_PER_WORD err\n");
433+
return -1;
434+
}
435435

436436
/* speed */
437437
spi_speed = (uint32_t) S_8M;
438438
ret = ioctl(fd_spidev, SPI_IOC_WR_MAX_SPEED_HZ, &spi_speed); // 1MHz
439439
if (ret < 0)
440440
{
441-
printf("SPI_IOC_WR_MAX_SPEED_HZ err\n");
442-
return -1;
443-
}
441+
printf("SPI_IOC_WR_MAX_SPEED_HZ err\n");
442+
return -1;
443+
}
444444

445445
return fd_spidev;
446446
}
@@ -451,24 +451,24 @@ static int spi_write_nbyte_data(unsigned int fd_spidev,
451451
{
452452
struct spi_ioc_transfer xfer[2];
453453
unsigned char recv_buf[send_buf_len];
454-
int status;
454+
int status;
455455

456456
if (send_buf == NULL || send_buf_len < 1)
457457
return -1;
458458

459459
memset(xfer, 0, sizeof(xfer));
460460
memset(recv_buf, 0, sizeof(send_buf_len));
461461

462-
xfer[0].tx_buf = (unsigned long)send_buf;
462+
xfer[0].tx_buf = (unsigned long)send_buf;
463463
xfer[0].rx_buf = (unsigned long)recv_buf;
464-
xfer[0].len = send_buf_len;
464+
xfer[0].len = send_buf_len;
465465

466-
status = ioctl(fd_spidev, SPI_IOC_MESSAGE(1), xfer);
467-
if (status < 0)
466+
status = ioctl(fd_spidev, SPI_IOC_MESSAGE(1), xfer);
467+
if (status < 0)
468468
{
469-
perror("SPI_IOC_MESSAGE");
470-
return -1;
471-
}
469+
perror("SPI_IOC_MESSAGE");
470+
return -1;
471+
}
472472

473473
return 0;
474474
}
@@ -639,8 +639,6 @@ static void RK35_setup()
639639

640640
static void RK35_post_init()
641641
{
642-
643-
#if 0
644642
Serial.println();
645643
Serial.println(F("Lyra Edition Power-on Self Test"));
646644
Serial.println();
@@ -660,13 +658,19 @@ static void RK35_post_init()
660658
Serial.println(F("Power-on Self Test is complete."));
661659
Serial.println();
662660
Serial.flush();
663-
#endif
664661

665662
#if defined(USE_EPAPER)
666663

667664
EPD_info1();
668665

669666
#endif /* USE_EPAPER */
667+
668+
#if defined(USE_OLED)
669+
if (hw_info.display == DISPLAY_OLED_1_3 ||
670+
hw_info.display == DISPLAY_OLED_TTGO) {
671+
OLED_info1();
672+
}
673+
#endif /* USE_OLED */
670674
}
671675

672676
static bool prev_PPS_state = LOW;
@@ -837,6 +841,11 @@ static void RK35_swSer_begin(unsigned long baud)
837841
Serial_GNSS_In.begin(baud);
838842
}
839843

844+
static void RK35_swSer_enableRx(boolean arg)
845+
{
846+
/* NONE */
847+
}
848+
840849
pthread_t RK35_EPD_update_thread;
841850

842851
#if defined(USE_OLED)
@@ -1079,7 +1088,7 @@ const SoC_ops_t RK35_ops = {
10791088
RK35_EEPROM_extension,
10801089
RK35_SPI_begin,
10811090
RK35_swSer_begin,
1082-
NULL,
1091+
RK35_swSer_enableRx,
10831092
NULL,
10841093
NULL,
10851094
NULL,
@@ -1264,10 +1273,11 @@ void normal_loop()
12641273
#endif /* USE_LGPIO */
12651274

12661275
/* Read GNSS data from standard input */
1267-
RK35_PickGNSSFix();
1276+
// RK35_PickGNSSFix();
12681277

12691278
/* Read NMEA data from GNSS module on GPIO pins */
12701279
// PickGNSSFix();
1280+
GNSS_loop();
12711281

12721282
RK35_ReadTraffic();
12731283

@@ -1643,7 +1653,7 @@ int main()
16431653
ThisAircraft.stealth = settings->stealth;
16441654
ThisAircraft.no_track = settings->no_track;
16451655

1646-
// hw_info.gnss = GNSS_setup();
1656+
hw_info.gnss = GNSS_setup();
16471657

16481658
Traffic_setup();
16491659

software/firmware/source/SoftRF/src/platform/RK35.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ struct rst_info {
8585
uint32_t depc;
8686
};
8787

88+
/* Peripherals */
89+
#define SOC_GPIO_PIN_CONS_RX 23 // RMIO23
90+
#define SOC_GPIO_PIN_CONS_TX 22 // RMIO22
91+
8892
/* Waveshare Pico-LoRa-SX1262-868M, SX1262 */
8993
#define SOC_GPIO_PIN_MOSI 6 // RMIO6
9094
#define SOC_GPIO_PIN_MISO 5 // RMIO5
@@ -95,8 +99,8 @@ struct rst_info {
9599
#define SOC_GPIO_PIN_DIO0 27 // RMIO27, may cause conflict with SDA
96100

97101
/* Waveshare Pico-GPS-L76B (MTK) */
98-
#define SOC_GPIO_PIN_GNSS_RX 23 // RMIO23
99-
#define SOC_GPIO_PIN_GNSS_TX 22 // RMIO22
102+
#define SOC_GPIO_PIN_GNSS_RX 1 // RMIO1
103+
#define SOC_GPIO_PIN_GNSS_TX 0 // RMIO0
100104
#define SOC_GPIO_PIN_GNSS_PPS SOC_UNUSED_PIN // RMIO31, R20 (NC by default)
101105

102106
/* Waveshare Pico-Environment-Sensor, BME280 */
@@ -171,7 +175,7 @@ extern const char *Hardware_Rev[];
171175
/* Experimental */
172176
#define ENABLE_ADSL
173177
//#define ENABLE_PROL
174-
//#define USE_OLED
178+
#define USE_OLED
175179

176180
//#define USE_OGN_RF_DRIVER
177181
//#define WITH_RFM95

0 commit comments

Comments
 (0)