Skip to content

Commit 1e55789

Browse files
committed
Parameterize fixes for MCCI BSP limitations; 2.5.0.10 fixes USB
1 parent b30d0ba commit 1e55789

File tree

1 file changed

+28
-29
lines changed

1 file changed

+28
-29
lines changed

examples/compliance-otaa-halconfig/compliance-otaa-halconfig.ino

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -706,53 +706,54 @@ void loop() {
706706
}
707707
}
708708

709-
// there's a problem with running 2.5 of the MCCI STM32 BSPs;
710-
// hack around it.
709+
#define NEED_USBD_LL_ConnectionState 0
710+
#ifdef ARDUINO_ARCH_STM32
711+
# ifdef _mcci_arduino_version
712+
# if _mcci_arduino_version < _mcci_arduino_version_calc(2, 5, 0, 10)
713+
# undef NEED_USBD_LL_ConnectionState
714+
# define NEED_USBD_LL_ConnectionState 1
715+
# endif // _mcci_arduino_version < _mcci_arduino_version_calc(2, 5, 0, 10)
716+
# endif // def _mcci_arduino_version
717+
#endif // def ARDUINO_ARCH_STM32
718+
719+
#define NEED_STM32_ClockCalibration 0
711720
#ifdef ARDUINO_ARCH_STM32
712721
# ifdef _mcci_arduino_version
713-
# if _mcci_arduino_version <= _mcci_arduino_version_calc(2, 5, 0, 0)
722+
# if _mcci_arduino_version <= _mcci_arduino_version_calc(2, 5, 0, 10)
723+
# undef NEED_STM32_ClockCalibration
724+
# define NEED_STM32_ClockCalibration 1
725+
# endif // _mcci_arduino_version <= _mcci_arduino_version_calc(2, 5, 0, 10)
726+
# endif // def _mcci_arduino_version
727+
#endif // def ARDUINO_ARCH_STM32
728+
729+
730+
// there's a problem with running 2.5 of the MCCI STM32 BSPs;
731+
// hack around it.
732+
#if NEED_USBD_LL_ConnectionState
714733
uint32_t USBD_LL_ConnectionState(void) {
715734
return 1;
716735
}
717-
# endif // _mcci_arduino_version
718-
# endif // defined(_mcci_arduino_version)
719-
#endif // ARDUINO_ARCH_STM32
736+
#endif // NEED_USBD_LL_ConnectionState
720737

721-
#ifdef ARDUINO_ARCH_STM32
722-
# if defined(_mcci_arduino_version)
723-
# if _mcci_arduino_version >= _mcci_arduino_version_calc(2,4,0,90)
738+
#if NEED_STM32_ClockCalibration
724739
static constexpr bool kUsesLSE = true; // _mcci_arduino_version indicates that LSE clock is used.
725-
# else
726-
// versions before 2.4.0.90 use LSI clock. Can't calibrate.
727-
static constexpr bool kUsesLSE = false; // _mcci_arduino_version defined, too small
728-
# endif
729-
# else
730-
// versions before 2.4.0.90 use LSI clock. Can't calibrate.
731-
static constexpr bool kUsesLSE = false; // _mcci_arduino_version not defined
732-
# endif
733740
#else
734741
static constexpr bool kUsesLSE = false;
735742
#endif
736743

737744

738745
void setup_calibrateSystemClock(void) {
739-
#ifdef ARDUINO_ARCH_STM32
740-
# ifdef _mcci_arduino_version
741-
# if _mcci_arduino_version <= _mcci_arduino_version_calc(2, 5, 0, 0)
742746
if (kUsesLSE) {
743747
Serial.println("need to calibrate clock");
748+
#if NEED_STM32_ClockCalibration
744749
Stm32_CalibrateSystemClock();
750+
#endif // NEED_STM32_ClockCalibration
745751
} else {
746752
Serial.println("calibration not supported");
747753
}
748-
# endif // _mcci_arduino_version
749-
# endif // defined(_mcci_arduino_version)
750-
#endif // ARDUINO_ARCH_STM32
751754
}
752755

753-
#ifdef ARDUINO_ARCH_STM32
754-
# ifdef _mcci_arduino_version
755-
# if _mcci_arduino_version <= _mcci_arduino_version_calc(2, 5, 0, 0)
756+
#if NEED_STM32_ClockCalibration
756757

757758
// RTC needs to be initialized before we calibrate the clock.
758759
bool rtcbegin() {
@@ -1144,6 +1145,4 @@ MeasureMillisPerRtcSecond(
11441145
/* return the delta */
11451146
return end - start;
11461147
}
1147-
# endif // _mcci_arduino_version
1148-
# endif // defined(_mcci_arduino_version)
1149-
#endif // ARDUINO_ARCH_STM32
1148+
#endif // NEED_STM32_ClockCalibration

0 commit comments

Comments
 (0)