From 838d3459187edf9cb3510ffd7e276f33fc9d93af Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sun, 10 May 2020 14:57:08 +0200 Subject: [PATCH] resolve inline warnings --- armsrc/legicrf.c | 5 +++++ armsrc/legicrfsim.c | 10 ++++++++++ common/crapto1/crapto1.h | 4 ++++ common/crapto1/crypto1.c | 13 +++++++++++++ 4 files changed, 32 insertions(+) diff --git a/armsrc/legicrf.c b/armsrc/legicrf.c index 35ac379ad..b28b57d7b 100644 --- a/armsrc/legicrf.c +++ b/armsrc/legicrf.c @@ -92,7 +92,12 @@ static inline uint8_t rx_byte_from_fpga() { // // Note: The SSC receiver is never synchronized the calculation may be performed // on a i/q pair from two subsequent correlations, but does not matter. +// Note: inlining this function would fail with -Os +#ifdef __OPTIMIZE_SIZE__ +static int32_t sample_power() { +#else static inline int32_t sample_power() { +#endif int32_t q = (int8_t)rx_byte_from_fpga(); q = ABS(q); int32_t i = (int8_t)rx_byte_from_fpga(); diff --git a/armsrc/legicrfsim.c b/armsrc/legicrfsim.c index ee658f4bd..346b9dd56 100644 --- a/armsrc/legicrfsim.c +++ b/armsrc/legicrfsim.c @@ -65,7 +65,12 @@ static uint32_t last_frame_end; /* ts of last bit of previews rx or tx frame */ //----------------------------------------------------------------------------- // Returns true if a pulse/pause is received within timeout +// Note: inlining this function would fail with -Os +#ifdef __OPTIMIZE_SIZE__ +static bool wait_for(bool value, const uint32_t timeout) { +#else static inline bool wait_for(bool value, const uint32_t timeout) { +#endif while ((bool)(AT91C_BASE_PIOA->PIO_PDSR & GPIO_SSC_DIN) != value) { if (GetCountSspClk() > timeout) { return false; @@ -126,7 +131,12 @@ static inline int8_t rx_bit() { // Note: The Subcarrier is not disabled during bits to prevent glitches. This is // not mandatory but results in a cleaner signal. tx_frame will disable // the subcarrier when the frame is done. +// Note: inlining this function would fail with -Os +#ifdef __OPTIMIZE_SIZE__ +static void tx_bit(bool bit) { +#else static inline void tx_bit(bool bit) { +#endif LED_C_ON(); if (bit) { diff --git a/common/crapto1/crapto1.h b/common/crapto1/crapto1.h index b6be544a5..708ddb033 100644 --- a/common/crapto1/crapto1.h +++ b/common/crapto1/crapto1.h @@ -66,6 +66,9 @@ bool validate_prng_nonce(uint32_t nonce); #define LF_POLY_EVEN (0x870804) #define BIT(x, n) ((x) >> (n) & 1) #define BEBIT(x, n) BIT(x, (n) ^ 24) +#ifdef __OPTIMIZE_SIZE__ +int filter(uint32_t const x); +#else static inline int filter(uint32_t const x) { uint32_t f; @@ -77,3 +80,4 @@ static inline int filter(uint32_t const x) { return BIT(0xEC57E80A, f); } #endif +#endif diff --git a/common/crapto1/crypto1.c b/common/crapto1/crypto1.c index 82203ef5e..866a0fb98 100644 --- a/common/crapto1/crypto1.c +++ b/common/crapto1/crypto1.c @@ -21,6 +21,19 @@ #include "crapto1.h" #include "parity.h" +#ifdef __OPTIMIZE_SIZE__ +int filter(uint32_t const x) { + uint32_t f; + + f = 0xf22c0 >> (x & 0xf) & 16; + f |= 0x6c9c0 >> (x >> 4 & 0xf) & 8; + f |= 0x3c8b0 >> (x >> 8 & 0xf) & 4; + f |= 0x1e458 >> (x >> 12 & 0xf) & 2; + f |= 0x0d938 >> (x >> 16 & 0xf) & 1; + return BIT(0xEC57E80A, f); +} +#endif + #define SWAPENDIAN(x)\ (x = (x >> 8 & 0xff00ff) | (x & 0xff00ff) << 8, x = x >> 16 | x << 16)