diff --git a/software/firmware/source/SkyWatch/GNSSHelper.cpp b/software/firmware/source/SkyWatch/GNSSHelper.cpp index 567aec75e..8ee03c581 100644 --- a/software/firmware/source/SkyWatch/GNSSHelper.cpp +++ b/software/firmware/source/SkyWatch/GNSSHelper.cpp @@ -1167,7 +1167,9 @@ byte GNSS_setup() { hw_info.model == SOFTRF_MODEL_ES || hw_info.model == SOFTRF_MODEL_BALKAN || hw_info.model == SOFTRF_MODEL_HAM || - hw_info.model == SOFTRF_MODEL_MIDI) + hw_info.model == SOFTRF_MODEL_MIDI || + hw_info.model == SOFTRF_MODEL_ECO || + hw_info.model == SOFTRF_MODEL_INK) { // power on by wakeup call Serial_GNSS_Out.write((uint8_t) 0); GNSS_FLUSH(); delay(500); @@ -1247,7 +1249,12 @@ byte GNSS_setup() { #else int interrupt_num = digitalPinToInterrupt(SOC_GPIO_PIN_GNSS_PPS); if (interrupt_num != NOT_AN_INTERRUPT) { +#if defined(plat_attachInterrupt_func) + plat_attachInterrupt_func(SOC_GPIO_PIN_GNSS_PPS, SoC->GNSS_PPS_handler, + RISING); +#else attachInterrupt(interrupt_num, SoC->GNSS_PPS_handler, RISING); +#endif /* plat_attachInterrupt_func */ } #endif #endif diff --git a/software/firmware/source/SkyWatch/GNSSHelper.h b/software/firmware/source/SkyWatch/GNSSHelper.h index 785c5ccf2..1d6945d37 100644 --- a/software/firmware/source/SkyWatch/GNSSHelper.h +++ b/software/firmware/source/SkyWatch/GNSSHelper.h @@ -37,6 +37,7 @@ typedef enum GNSS_MODULE_MT33, /* L80 */ GNSS_MODULE_GOKE, /* Air530 */ GNSS_MODULE_UC65, /* Unicore FirebirdII UC6580 */ + GNSS_MODULE_AG33, /* Airoha AG3335 */ } gnss_id_t; typedef struct gnss_chip_ops_struct { diff --git a/software/firmware/source/SkyWatch/SkyWatch.h b/software/firmware/source/SkyWatch/SkyWatch.h index 6c7b38aea..aa1a49523 100644 --- a/software/firmware/source/SkyWatch/SkyWatch.h +++ b/software/firmware/source/SkyWatch/SkyWatch.h @@ -165,6 +165,9 @@ enum SOFTRF_MODEL_BALKAN, SOFTRF_MODEL_HAM, SOFTRF_MODEL_MIDI, + SOFTRF_MODEL_ECO, + SOFTRF_MODEL_INK, + SOFTRF_MODEL_NEO, }; enum diff --git a/software/firmware/source/SoftRF/src/driver/GNSS.h b/software/firmware/source/SoftRF/src/driver/GNSS.h index 785c5ccf2..1d6945d37 100644 --- a/software/firmware/source/SoftRF/src/driver/GNSS.h +++ b/software/firmware/source/SoftRF/src/driver/GNSS.h @@ -37,6 +37,7 @@ typedef enum GNSS_MODULE_MT33, /* L80 */ GNSS_MODULE_GOKE, /* Air530 */ GNSS_MODULE_UC65, /* Unicore FirebirdII UC6580 */ + GNSS_MODULE_AG33, /* Airoha AG3335 */ } gnss_id_t; typedef struct gnss_chip_ops_struct { diff --git a/software/firmware/source/libraries/XPowersLib/src/PowersSY6970.tpp b/software/firmware/source/libraries/XPowersLib/src/PowersSY6970.tpp index 21757619b..af48efa1c 100644 --- a/software/firmware/source/libraries/XPowersLib/src/PowersSY6970.tpp +++ b/software/firmware/source/libraries/XPowersLib/src/PowersSY6970.tpp @@ -903,7 +903,7 @@ public: }; Serial.println(); Serial.println("-------------------------"); - for (int i = 0; i < sizeof(regis) / sizeof(regis[0]); ++i) { + for (uint32_t i = 0; i < sizeof(regis) / sizeof(regis[0]); ++i) { int val = readRegister(regis[i]); if (val == -1) { continue; diff --git a/software/firmware/source/libraries/XPowersLib/src/XPowersCommon.tpp b/software/firmware/source/libraries/XPowersLib/src/XPowersCommon.tpp index 3a7f83aaf..df3ca7a8a 100644 --- a/software/firmware/source/libraries/XPowersLib/src/XPowersCommon.tpp +++ b/software/firmware/source/libraries/XPowersLib/src/XPowersCommon.tpp @@ -79,14 +79,28 @@ #endif #ifndef ESP32 +#ifdef LOG_FILE_LINE_INFO +#undef LOG_FILE_LINE_INFO +#endif +#define LOG_FILE_LINE_INFO __FILE__, __LINE__ #ifndef log_e -#define log_e(...) Serial.printf(__VA_ARGS__) +#define log_e(fmt, ...) Serial.printf("[E][%s:%d] " fmt "\n", LOG_FILE_LINE_INFO, ##__VA_ARGS__) #endif #ifndef log_i -#define log_i(...) Serial.printf(__VA_ARGS__) +#define log_i(fmt, ...) Serial.printf("[I][%s:%d] " fmt "\n", LOG_FILE_LINE_INFO, ##__VA_ARGS__) #endif #ifndef log_d -#define log_d(...) Serial.printf(__VA_ARGS__) +#define log_d(fmt, ...) Serial.printf("[D][%s:%d] " fmt "\n", LOG_FILE_LINE_INFO, ##__VA_ARGS__) +#endif +#endif + +#if defined(NRF52840_XXAA) || defined(NRF52832_XXAA) +#ifndef SDA +#define SDA (0xFF) +#endif + +#ifndef SCL +#define SCL (0xFF) #endif #endif @@ -103,20 +117,28 @@ public: { if (__has_init)return thisChip().initImpl(); __has_init = true; + __sda = sda; + __scl = scl; __wire = &w; -#if defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_STM32) - __wire->end(); - __wire->setSDA(__sda); - __wire->setSCL(__scl); - __wire->begin(); -#elif defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840) - __wire->end(); + +#if defined(NRF52840_XXAA) || defined(NRF52832_XXAA) || defined(ARDUINO_ARCH_NRF52840) + if (__sda != 0xFF && __scl != 0xFF) { #if !defined(ARDUINO_ARCH_MBED) - __wire->setPins(__sda, __scl); + __wire->setPins(__sda, __scl); #endif /* ARDUINO_ARCH_MBED */ + } + __wire->begin(); +#elif defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_STM32) + if (__sda != 0xFF && __scl != 0xFF) { + __wire->end(); + __wire->setSDA(__sda); + __wire->setSCL(__scl); + } __wire->begin(); +#elif defined(ARDUINO_ARCH_ESP32) + __wire->begin(__sda, __scl); #else - __wire->begin(sda, scl); + __wire->begin(); #endif __addr = addr; return thisChip().initImpl(); @@ -279,19 +301,25 @@ protected: __has_init = true; if (__wire) { log_i("SDA:%d SCL:%d", __sda, __scl); -#if defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_STM32) - __wire->end(); - __wire->setSDA(__sda); - __wire->setSCL(__scl); - __wire->begin(); -#elif defined(ARDUINO_ARCH_NRF52) || defined(ARDUINO_ARCH_NRF52840) - __wire->end(); +#if defined(NRF52840_XXAA) || defined(NRF52832_XXAA) || defined(ARDUINO_ARCH_NRF52840) + if (__sda != 0xFF && __scl != 0xFF) { + __wire->end(); #if !defined(ARDUINO_ARCH_MBED) - __wire->setPins(__sda, __scl); + __wire->setPins(__sda, __scl); #endif /* ARDUINO_ARCH_MBED */ + } __wire->begin(); -#else +#elif defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_ARCH_STM32) + if (__sda != 0xFF && __scl != 0xFF) { + __wire->end(); + __wire->setSDA(__sda); + __wire->setSCL(__scl); + } + __wire->begin(); +#elif defined(ARDUINO_ARCH_ESP32) __wire->begin(__sda, __scl); +#else + __wire->begin(); #endif } #endif /*ARDUINO*/