Wykres commitów

1690 Commity (34d2bc85b3fd12e5b05f93eba385a742b41f250e)

Autor SHA1 Wiadomość Data
jgromes 84ebdddcaf [SX128x] Wakeup device on standby() call 2023-05-02 18:58:59 +02:00
jgromes 2eff7a358f [MOD] Removed redundant NSS pull 2023-04-30 22:11:05 +02:00
jgromes 4be3389587 Added missing headers 2023-04-30 11:37:38 +02:00
jgromes adf2f3ba98 [Print] Removed redundant headers 2023-04-30 11:34:58 +02:00
jgromes 4f0c400bd7 [ITA2] Added missing header 2023-04-30 11:32:38 +02:00
jgromes 8f28b42d63 [Print] Moved include to header 2023-04-30 11:31:52 +02:00
jgromes a4bf746e1f [Print] Added missing headers for non-Arduino builds 2023-04-30 11:30:20 +02:00
jgromes 3df9cb27ff [CC1101] Fixed non-Hal functions 2023-04-30 11:26:53 +02:00
jgromes f1a947c09d [Bell] Added missing return 2023-04-29 23:05:24 +02:00
jgromes e8f94c25d1 [AX.25] Use Bell modem 2023-04-29 23:01:50 +02:00
jgromes f1a8333591 [Bell] Added Bell-compatible modem 2023-04-29 23:01:23 +02:00
jgromes 8b73333a62 [Print] Added missing godmode guard 2023-04-29 22:57:32 +02:00
jgromes 99f1ad24b2 [AFSK] Added copy constructor 2023-04-29 22:55:27 +02:00
jgromes 24f714b914 [Hell] Use common print class 2023-04-29 22:55:04 +02:00
jgromes 0030a59028 [Morse] Use common print class 2023-04-29 22:54:43 +02:00
jgromes d79ed24a26 [RTTY] Use common print class 2023-04-29 22:54:27 +02:00
jgromes 089a81faec [Print] Added common print class 2023-04-29 22:53:55 +02:00
jgromes f0cf7ff912 [Print] Added standalone ITA2 2023-04-29 22:53:33 +02:00
jgromes b2af390c14 Added nonvolatile pointer macro 2023-04-29 22:52:11 +02:00
jgromes 7f4ff61504 [SX128x] Fixed unused variable 2023-04-29 22:51:44 +02:00
jgromes f244caa0bb Bump version to 6.0.0 2023-04-24 18:32:02 +02:00
jgromes 044b4789b2 [MOD] Decreased default SPI timeout to 1000 ms 2023-04-24 18:25:42 +02:00
jgromes a22a4df88f [MOD] Added debug message when BUSY pin times out 2023-04-24 18:25:09 +02:00
jgromes cc8c8f2eed [SX127x] General reformatting 2023-04-23 22:42:13 +02:00
jgromes 76c654c0c1 [SX128x] General reformatting 2023-04-23 22:05:18 +02:00
jgromes d4365a3b1e [SX126x] Fixed variable shadowing 2023-04-23 22:04:40 +02:00
jgromes 14529f36c7 [RF69] Fixed variable shadowing 2023-04-23 22:03:37 +02:00
jgromes 8a878e8fe9 [LLCC68] Fixed variable shadowing 2023-04-23 22:03:28 +02:00
jgromes bda6e220b6 [CC1101] Fixed variable shadowing 2023-04-23 22:03:12 +02:00
jgromes c5a3c4d361 [nRF24] Fixed variable shadowing 2023-04-23 22:02:33 +02:00
jgromes 674c37d00b [Si443x] General reformatting 2023-04-23 21:14:01 +02:00
jgromes f1c9423035 [SX126x] Fixed typo 2023-04-23 21:11:27 +02:00
jgromes 14302537ee [SX1231] General reformatting 2023-04-23 19:44:07 +02:00
jgromes 9be1cdfa41 [RF69] General reformatting 2023-04-23 19:43:48 +02:00
jgromes c62bb74f9d [CC1101] Fixed shadowed variable name 2023-04-23 19:40:56 +02:00
jgromes bba644377a [nRF24] General reformatting 2023-04-23 19:19:11 +02:00
jgromes a015e541f6 [SX126x] General reformatting 2023-04-23 19:06:45 +02:00
jgromes cab358ff09 [CC1101] Fixed axtra brace 2023-04-23 09:57:50 +02:00
jgromes 5c6628b6eb [CC1101] General reformatting 2023-04-23 09:47:42 +02:00
jgromes 78a576df12 [PHY] Use compact Doxygen and stop using reserved format 2023-04-23 09:12:47 +02:00
jgromes 767a2b006a [Pager] Fixed deprecation warning for ESP 2023-04-22 20:37:42 +02:00
jgromes 61f6da0cb2 [MOD] Added missing stdarg include for some platforms 2023-04-22 20:19:36 +02:00
jgromes 255838ed44 [AFSK] Use compact Doxygen and stop using reserved format 2023-04-22 19:36:12 +02:00
jgromes 668ff4fb01 [APRS] Use compact Doxygen and stop using reserved format 2023-04-22 19:35:58 +02:00
jgromes 5da2a023fe [AX25] Use compact Doxygen and stop using reserved format 2023-04-22 19:35:51 +02:00
jgromes c988f64921 [FSK4] Use compact Doxygen and stop using reserved format 2023-04-22 19:35:42 +02:00
jgromes 34e59605b5 [Hell] Use compact Doxygen and stop using reserved format 2023-04-22 19:35:33 +02:00
jgromes bb4e6cf946 [Morse] Use compact Doxygen and stop using reserved format 2023-04-22 19:35:23 +02:00
jgromes 6bbd237fb3 [Pager] Use compact Doxygen and stop using reserved format 2023-04-22 19:35:14 +02:00
jgromes 8722231ace [PHY] Use compact Doxygen 2023-04-22 19:35:00 +02:00
jgromes 5ab24e05dd [RTTY] Use compact Doxygen and stop using reserved format 2023-04-22 19:34:38 +02:00
jgromes 47e759f322 [SSTV] Use compact Doxygen and stop using reserved format 2023-04-22 19:34:27 +02:00
jgromes 7a99aa0ef4 [HAL] Use compact Doxygen and stop using reserved format 2023-04-22 18:53:30 +02:00
jgromes 9749083573 [MOD] Use compact Doxygen and stop using reserved format 2023-04-22 18:50:12 +02:00
jgromes 7ff785eb00 [HAL] Trying Doxygen format 2023-04-22 18:33:21 +02:00
jgromes 876081958b [HAL] Doxygen comments fix 2023-04-22 18:22:46 +02:00
jgromes 09c3ac4f6b [HAL] Formatting cleanup, added doxygen comments 2023-04-22 18:11:00 +02:00
jgromes 37bb8af768 [HAL] Fixed formatting 2023-04-22 18:08:08 +02:00
Jan Gromeš b76b819b12
Merge pull request #730 from Mesteery/new-hal
Improve hardware abstraction layer
2023-04-22 16:26:31 +02:00
jgromes 21f2ef6836 [SX128x] Fixed IQ inversion 2023-04-17 19:12:42 +02:00
jgromes 2e8d0ae8a3 [SX126x] Fixed IQ inversion not caching (#731) 2023-04-17 19:10:26 +02:00
Mestery f20cc978a7 update interrupt action mode type 2023-04-16 21:45:39 +02:00
Mestery 9a68a3c901 use uint32 instead of uint8 for pin type 2023-04-16 21:39:00 +02:00
Mestery 6695133576 fix documentation 2023-04-16 21:10:57 +02:00
Mestery e141f4f151 fix warnings 2023-04-16 21:02:00 +02:00
Mestery 0cf308be04 remove byte usage 2023-04-16 21:00:05 +02:00
Mestery f37c0b55c0 try move include inside 2023-04-16 20:54:48 +02:00
Mestery 3d43a618e3 guard arduinohal include 2023-04-16 20:54:31 +02:00
Mestery d8f0d36407
fix 2023-04-13 17:50:27 +02:00
Mestery 7faeb46ada im so stupid 2023-04-13 01:42:19 +02:00
Mestery ec3d4eaf20 Improve hardware abstraction layer 2023-04-12 23:16:18 +02:00
Mestery 45e9fd44bb
nitpick 2023-04-12 18:44:12 +02:00
Mestery 27575b8c49
Remove RADIOLIB_DEBUG_PRINT_BIN 2023-04-12 18:43:43 +02:00
Mestery 09fc9290bb
Undefine RADIOLIB_DEBUG_PRINT_BIN macro after use 2023-04-12 16:50:05 +02:00
Jan Gromeš 9c019a58e7
Merge pull request #726 from Mesteery/fix-generic-build
Fix generic build
2023-04-10 17:25:40 +02:00
Mestery 17ae017f89
address changes 2023-04-10 14:51:07 +02:00
jgromes cb385f5946 [SX126x] Remove standby before data read (#703) 2023-04-10 14:05:25 +02:00
jgromes 0f5b31aa3a [SX127x] Removed standby before data read 2023-04-10 13:57:00 +02:00
jgromes b9fb0893b3 [SX127x] Added missing explicit CRC configuration 2023-04-10 11:54:59 +02:00
Mestery 220b4dad7f
use printf in both build 2023-04-10 09:13:58 +00:00
Mestery 6456da188d
fix debug print 2023-04-10 09:13:58 +00:00
Mestery 67e4dd4815
fix delayMicroseconds 2023-04-10 09:13:58 +00:00
Mestery 2a45f71384
fix undef digitalread 2023-04-10 09:13:57 +00:00
Mestery 7b6fd24c8e
fix non arduino build 2023-04-10 09:13:57 +00:00
jgromes 390b425b39 [MOD] Fixed default Arduino callbacks for SPI (#725) 2023-04-10 11:11:17 +02:00
jgromes 7c0fc5305a [STM32WL] Fixed build for Platformio (#718) 2023-04-10 10:29:21 +02:00
jgromes f59a69f5c4 [MOD] Removed references to Arduino SPI callbacks (#725) 2023-04-10 09:06:40 +02:00
jgromes efc2e9f291 [nRF24] Removed references to Arduino SPI callbacks (#725) 2023-04-10 09:06:24 +02:00
jgromes cdbb827091 [CC1101] Removed references to Arduino SPI callbacks (#725) 2023-04-10 09:06:08 +02:00
jgromes 9d36ae4bee [MOD] Fixed SPI callbacks on non-Arduino platforms (#725) 2023-04-09 22:37:36 +02:00
jgromes 8587f73bd9 [SX127x] Implemented fractional bit rate (#505) 2023-04-09 17:08:45 +02:00
jgromes 9d3a2bb72f [SX128x] Added IQ inversion (#724) 2023-04-08 21:45:15 +02:00
jgromes 9dde85598b [SX126x] Added IQ inversion 2023-04-08 21:44:51 +02:00
jgromes 13248b6eab [SX127x] Fixed comments 2023-04-08 21:44:14 +02:00
jgromes 5f0cfa9bf6 [SX126x] Improved RNG 2023-04-02 21:01:13 +02:00
jgromes 45c5859338 [SX128x] Fixed packet length in implicit mode (#716) 2023-03-31 22:02:58 +02:00
jgromes ece2621a6f [SX126x] Fixed packet length in LoRa implicit mode 2023-03-31 22:02:35 +02:00
jgromes 0210e10a24 [MOD] Fixed swapped NSS/BUSY order (#716) 2023-03-30 23:17:34 +02:00
Davide Lasagna 642cbd8bfd added link to original issue 2023-03-30 09:49:50 +01:00
Davide Lasagna c400a1428e fix #709 2023-03-29 18:21:18 +01:00
Jan Gromeš c2b40f088f
Merge pull request #711 from G4lile0/master
[SX1278] New getInstRSSI to get current RSSI
2023-03-27 23:28:18 +02:00
jgromes f62f912c87 [SX127x] Unified getRSSI interface 2023-03-27 23:22:03 +02:00
jgromes ab9cf0d528 [SX126x] Unified getRSSI interface 2023-03-27 23:21:37 +02:00
G4lile0 50318a6c60 bool packet miss on SX126x::getRSSI 2023-03-27 21:21:45 +02:00
G4lile0 09ab5f8073 [SX127x] & [SX126x] read current RSSI for getRSSI 2023-03-27 20:51:44 +02:00
jgromes c10343e853 [SX126x] Added spectral scan in frequency 2023-03-27 18:48:32 +02:00
jgromes ee7c1e7604 [SX128x] Added PHY startReceive (#700) 2023-03-26 22:20:19 +02:00
jgromes 5d365d4da7 [SX127x] Added PHY startReceive (#700) 2023-03-26 22:20:08 +02:00
jgromes 9dd401e4a1 [SX126x] Added PHY startReceive (#700) 2023-03-26 22:19:53 +02:00
jgromes 1d92f1d786 [Si443x] Added PHY startReceive (#700) 2023-03-26 22:18:28 +02:00
jgromes b108686a0f [RF69] Added PHY startReceive (#700) 2023-03-26 22:18:16 +02:00
jgromes a534f490b1 [nRF24] Added PHY startReceive (#700) 2023-03-26 22:18:08 +02:00
jgromes 87c1d04b42 [CC1101] Added PHY startReceive (#700) 2023-03-26 22:17:55 +02:00
jgromes 0c15424419 [PHY] Fixed startReceive compatibility (#700) 2023-03-26 22:17:19 +02:00
G4lile0 04e24ab9d1 [SX1278] New getInstRSSI to get current RSSI 2023-03-24 20:30:06 +01:00
jgromes 9dae818033 [SX126x] Explicitly enabled CRC (#706) 2023-03-23 19:07:04 +01:00
jgromes c3de8b9099 [SX127x] Explicitly enabled CRC (#706) 2023-03-23 19:06:43 +01:00
jgromes 48d49aabba Merge branch 'master' of https://github.com/jgromes/RadioLib 2023-03-22 22:13:32 +01:00
jgromes 8bbcc908f5 [SX126x] Fixed frequency error calculation (#706) 2023-03-22 22:12:28 +01:00
Davide Lasagna b7e12f5c71 fix for #705 2023-03-21 19:56:21 +00:00
jgromes cd4575ebb0 [SX126x] Fixed chip id (#707) 2023-03-21 18:18:17 +01:00
jgromes dc2eb523a9 [SX126x] Cleanup whitespaces 2023-03-20 21:59:07 +01:00
jgromes 9b9a34bd2c Fixed build options include order 2023-03-20 19:13:38 +01:00
jgromes cfe6128656 [SX126x] Added frequency error reading 2023-03-18 10:56:00 +01:00
jgromes b9b3171001 Added user build opt 2023-03-17 23:01:24 +01:00
Davide Lasagna 9c94111e73 add functions to PhysicalLayer interface 2023-03-16 19:35:27 +00:00
jgromes f809f17dc8 [Pager] Added missing exclude direct receive guards (#697) 2023-03-13 22:02:07 +01:00
jgromes 482b962f79 [CC1101] Added missing standby overload 2023-03-12 15:03:16 +01:00
jgromes a4df77b76e [Si443x] Added missing standby overload 2023-03-12 15:02:23 +01:00
jgromes 874886b4cd [RF69] Added missing standby overload 2023-03-12 15:02:08 +01:00
jgromes 45826fb00d [nRF24] Added missing standby overload 2023-03-12 15:01:50 +01:00
jgromes 8ace6350cf [SX127x] Added missing standby for PhysicalLayer (#695) 2023-03-12 14:50:14 +01:00
jgromes 00bb31cb2e [SX126x] Added patch binary license 2023-03-11 22:52:14 +01:00
jgromes 0818230a7c [SX126x] Fixed incorrect variable names 2023-03-11 20:57:32 +01:00
jgromes 265847b82d Removed WIP include 2023-03-11 20:26:58 +01:00
jgromes 97ab0d357a [SX126x] Added spectral scan 2023-03-11 20:09:03 +01:00
jgromes ed4fc84a70 [SX126x] Fixed calibration order (#689) (CI_BUILD_ALL) 2023-03-05 19:30:20 +01:00
jgromes 02306bda91 Added further explanation of the -707 error code (#691) 2023-03-05 19:29:06 +01:00
jgromes 823c0ff82c [SX126x] Added missing XTAL check 2023-03-05 19:28:21 +01:00
jgromes 5ba6f41230 [MOD] Convert end of RF switch mode to macro (https://github.com/jgromes/RadioLib/actions/runs/4337180408) 2023-03-05 19:16:37 +01:00
jgromes e920e1bf07 [MOD] Fixed some signed comparison warnings 2023-03-05 19:14:14 +01:00
jgromes 6677b15d93 Bump version to 5.7.0 2023-03-05 18:24:14 +01:00
jgromes 8392cea011 [SX126x] Added more LBT/scan registers (CI_FORCE_UNCRUST) 2023-03-05 18:08:14 +01:00
jgromes 007d9ac2cb [SX126x] Set SX1262 to accept SX1261 device string (#683) 2023-03-05 16:42:48 +01:00
jgromes 7a8cadc639 [SX126x] Added more verbose calibration result check (#689) 2023-03-05 16:40:45 +01:00
jgromes 721962cacd [SX126x] Fixed bug in getDeviceErrors 2023-03-05 16:39:50 +01:00
jgromes 8bf15941c7 [SX126x] Added option to control XTAL/TCXO via member variable 2023-03-05 16:38:28 +01:00
Jan Gromeš 8174c58250
Merge pull request #684 from GUVWAF/irqFlagsMask
[SX126x/SX128x] Add user-configurable IRQ flags and mask to receive methods
2023-03-05 15:08:13 +01:00
jgromes 3c92219488 [MOD] Fixed print format (#685) 2023-03-01 21:50:40 +01:00
GUVWAF edc8877adb [SX128x] Add irqFlags and irqMask to startReceive 2023-02-26 13:34:22 +01:00
GUVWAF f59bf4750c [SX126x] Add irqFlags and irqMask parameters to receive methods 2023-02-26 13:33:30 +01:00
jgromes 00998b5185 [MOD] Fixed incorrect default TCXO voltage 2023-02-25 13:47:54 +01:00
jgromes 32a42ee2c6 [MOD] Fixed format type 2023-02-25 13:28:52 +01:00
jgromes 3596f0f55b [SX126x] Removed WIP FHSS method 2023-02-25 13:25:16 +01:00
jgromes b014a1f748 [MOD] Improved regdump and hexdump 2023-02-25 13:20:30 +01:00
jgromes bd258380c8 [SX126x] Implemeted device type string check 2023-02-25 13:16:21 +01:00
jgromes 547a522826 [SX126x] Added undocumented registers 2023-02-25 13:14:11 +01:00
jgromes 2b2dc2925f [PHY] Fixed unused variable warning 2023-02-19 17:14:31 +01:00
jgromes d8c50ae8ad [MOD] Remove default arguments from implementations 2023-02-19 17:12:05 +01:00
jgromes 02d6062f09 [SX126x] Fixed forgotten SPI write command 2023-02-19 17:11:36 +01:00
jgromes 60bd3d6440 [SX128x] Use Module stream read/write 2023-02-19 17:07:00 +01:00
jgromes 95083e32b1 [SX126x] Use module stream read/write 2023-02-19 17:02:51 +01:00
jgromes 6bf9cebc43 [MOD] Added SPI stream read/write 2023-02-19 16:59:03 +01:00
jgromes 7d286e32bc [SX128x] Use Module SPI stream 2023-02-19 16:23:08 +01:00
jgromes 299e5de3c4 [SX126x] Use Module SPI tream 2023-02-19 16:16:16 +01:00
jgromes a8d35f7881 [MOD] Use SPI stream for register read/write 2023-02-19 14:22:30 +01:00
jgromes 308ad87320 [MOD] Port 16-bit address from ax5x43 dev 2023-02-19 12:41:49 +01:00
jgromes e07d1d9dc1 [MOD] Added stream SPI transfer 2023-02-19 12:32:17 +01:00
jgromes dc050df8d9 [SX126x] Added support for AFSK transmission 2023-02-11 14:11:44 +01:00
Matthijs Kooijman 4c712c1f2c [MOD] Remove constexpr usage
This was introduced when STM32WL support was added. Using constexpr for
the END_OF_MODE_TABLE constant allows it to be initialized in the class
declaration, but this needs C++11. This moves the initialization out of
the class declaration to the .cpp file, which does not need constexpr.
It also lets STM32WLx::END_OF_MODE_TABLE define its value directly
(instead of aliasing Module::END_OF_MODE_TABLE) to prevent reduce
runtime overhead (see below).

The downside of this change is that the value of the END_OF_MODE_TABLE
is no longer visible in other compilation units and thus cannot be
inlined into the rfswitch_table (if used).

For example, on STM32, this means that instead of having a pre-cooked
rfswitch_table that lives in the .rodata section (so can be read
directly from flash), the table lives in RAM and is initialized at
runtime (the actual modes and pins are copied from flash to RAM by the
standard startup loop that copies all of the .data section, and the
END_OF_MODE_TABLE value is copied by a bit of new generated code). This
means a little more runtime overhead, but the cost is mostly in RAM size
(80 bytes for the SMT32WL sketches, 16 per mode plus 16 for the
END_OF_MODE_TABLE).

In a first attempt at this commit, STM32WLx::END_OF_MODE_TABLE was still
initialized using the Module::END_OF_MODE_TABLE value, but since the
latter is also not available at compiletime, this meant initialization
of the former also needed to happen at runtime, adding even more code
overhead (and possibly leading to ordering issues as well). To avoid
this, the STM32WLx::END_OF_MODE_TABLE initialization now just duplicates
that of Module::END_OF_MODE_TABLE.

On AVR, the impact is not so much: Since AVR cannot address flash
directly, the table was already copied from flash to RAM at startup, so
the extra RAM usage is just 4 bytes because END_OF_MODE_TABLE is now
also present in RAM, to be copied into rfswitch_table at startup.

Options for avoiding this overhead (not implemented in this commit)
could be (in no particular order):

1. Use a macro instead of a constant. Downside is that these cannot be
   scoped inside the Module/STM32WLx classes like now, so this requires
   changes to sketches that use a rfswitch_table (and reduced scoping
   and using macros adds more opportunity for conflicts and weird
   errors).
2. Apply the change in this commit only when C++11 is not available.
   Downside is that the initialization value of these constants must be
   duplicated in the .h and .cpp file for C++ and older versions
   respectively.
3. Let sketches just use `{Module::MODE_END_OF_TABLE, {}}` explicitly
   instead of `Module::END_OF_MODE_TABLE`. Downside of this is that this
   requires sketches to be modified and that it lets the sketch encode
   more of the table structure, potentially making future API changes
   harder (but it probably does not really matter in practice).
4. Turn END_OF_MODE_TABLE into a static method, which *can* then be
   defined in the class declaration and inlined. The method can then be
   conditionally marked as constexpr, which allows C++11 compilers to
   completely resolve the rfswitch_table value at compiletime, producing
   a binary identical to before this commit. When constexpr is omitted
   (e.g. on older compilers), some runtime overhead is added (pretty
   much the same as the result from this commit).  Downside is that
   sketches must be modified, and the `END_OF_MODE_TABLE` "constant"
   must now be called, e.g.  `END_OF_MODE_TABLE()` which might be a bit
   unexpected syntax.
2023-02-03 12:42:49 +01:00
Andrew Moroz 5f3fb5fa0d sx126x-rx-gain-persist: add ability to persist Rx gain setting when calling SX126x::setRxBoostedGainMode 2023-01-28 18:09:39 -05:00
jgromes 18ff62890a [SX127x] Fixed packet length not proagating correctly (#666) 2023-01-18 22:00:26 +01:00
jgromes 91d42ebf0e [SX127x] Set minimum bit rate to 0.5 kbps (#665) 2023-01-18 18:58:52 +01:00
jgromes 0a0f6979dd [RF69] Set minimum bit rate to 0.5 kbps 2023-01-18 18:58:26 +01:00
Andrew Moroz 35ed685c8a andrew-moroz/sx126x-rx-boosted-gain: Add method to support SX126x Rx Boosted Gain mode 2023-01-16 16:37:14 -05:00
jgromes eaaac36f28 Bump version to 5.6.0 2023-01-15 17:42:44 +01:00
jgromes 5b96340332 [CC1101] Fixed setPromiscuousMode(true) always failing 2023-01-14 23:20:27 +01:00
jgromes 2c8b63e038 [Hell] Fixed timing issues on SX126x with TCXO (#659) 2023-01-14 23:13:58 +01:00
jgromes 5ca2c8533c [PHY] Added standby types abstraction 2023-01-14 23:13:27 +01:00
Matthijs Kooijman e52ffb0a69 [STM32WLx] Only build on compatible STM32 boards
This checks for some system macros to be set, but also includes the
doxygen build to generate documentation.

This reuses the RADIOLIB_EXCLUDE_STM32WLX that the code already checks
for to prevent having to duplicate this macro check in four places.

To detect running inside doxygen, this configures doxygen to predefine
a DOXYGEN macro (it seems no such macros are defined by default by
doxygen).
2023-01-10 18:09:55 +01:00
Matthijs Kooijman 3e2810cfbb [STM32WLx] Make reading IRQ flag more reliable
Now that clearIrqStatus also clears the pending flag, reading the IRQ
flag no longer has to, making this more reliable.
2023-01-10 18:09:55 +01:00
Matthijs Kooijman cd138dd6c7 [STM32WLx] Apply PA clamp workaround for HP only
This modifies SX1262::begin and beginFSK to call setOutputPower after
applying the workaround, so that can undo the workaround if needed.
2023-01-10 18:09:55 +01:00
Matthijs Kooijman 9252cf53d3 [STM32WLx] Implement setDio1Action / interrupts
Because this interrupt is not connected to a GPIO or even the EXTI unit,
but directly to the MCU NVIC, the regular attachInterrupt flow cannot be
used.

Instead, this lets STM32WLx override the setDio1Action() and
clearDio1Action() methods to register the radio IRQ directly. Note that
it would have been nicer to implement this by overriding attachInterrupt
in STM32WLx_Module, but that is never called for virtual pins (because
the STM32Duino digitalPinToInterrupt() macro does not work for virtual
pins).

In addition, because the NVIC is level-sensitive and the code expects
edge-sensitive interrupts (for GPIO, the EXTI module in front of the
NVIC makes the interrupts edge-sensitive), this adds some additional
handling around the user-registered interrupt callback. To prevent the
ISR from triggering over and over again (and also to not require SPI
transactions in the ISR to clear the IRQ flags inside the radio), the
interrupt is disabled in the NVIC whenever it is trigered. Then,
whenever the IRQ flags *are* cleared in the radio, the IRQ is enabled in
the NVIC again. This requires making the SX126x::clearIrqStatus() method
virtual so STM32WLx can override it.
2023-01-10 18:09:55 +01:00
Matthijs Kooijman 5e47d94418 [STM32WLx] Add module for STM32WL MCUs with integrated radio (#588)
This is a nearly complete implementation, except that the Dio1 interrupt
is not yet supported (this will be added in a subsequent commit to
simplify review).

This fixes #588.
2023-01-10 18:09:55 +01:00
Matthijs Kooijman da6c3f6a6b [SX126x] Allow subclasses to change the TX mode used
This prepares for adding a STM32WLx subclass later.
2023-01-09 10:26:28 +01:00
Matthijs Kooijman 52ec165643 Update radios to use new setRfSwitchState
This removes the compatibility wrapper and applies the following
replacements:

    sed -i 's/setRfSwitchState(LOW, LOW)/setRfSwitchState(Module::MODE_IDLE)/' src/modules/*/*.cpp
    sed -i 's/setRfSwitchState(HIGH, LOW)/setRfSwitchState(Module::MODE_RX)/' src/modules/*/*.cpp
    sed -i 's/setRfSwitchState(LOW, HIGH)/setRfSwitchState(Module::MODE_TX)/' src/modules/*/*.cpp
2023-01-09 10:26:28 +01:00
Matthijs Kooijman 3779faf600 Add setRfSwitchTable() wrapper methods
This gives all radios that use an rfswitch (i.e. have
a setRfSwitchPins() wrapper already) a wrapper method for
setRfSwitchTable() too. This wrapper just calls the same method on
Module, to make it easier for sketches to use it.
2023-01-09 10:26:27 +01:00
Matthijs Kooijman 83ff964b66 [MOD] Generalize rfswitch pin handling
This defines operation modes (IDLE, RX and TX) and allows defining up to
to three pins to be controlled. For each mode a value can be specified
for each pin a table.

Compared to the previous handling, this:
 - Allows up to three pins instead of only two.
 - Gives more control over output pin values (e.g. to simply change
   polarity or support more complex control logic).

In addition, the modes are treated as opaque by the Module code,
allowing radio classes to define their own modes if needed.

Some notes regarding the implementation:
 - The number of pins is limited at three, since most boards seem to need
   only two pins and only the Nucleo STM32WL55 board needs three. If
   more pins are needed in the future, the setRfSwitchTable()
   can be overloaded to accept either a 3-element or e.g. 4-element pins
   array, to allow new and old code to work as-is.

   Note that there is a RFSWITCH_MAX_PINS constant defined, but it is
   not recommended for sketches to use this constant when defining
   a rfswitch pins array, to prevent issues when this value is ever
   increased and such an array gets extra zero elements (that will be
   interpreted as pin 0).

   Note that this is not a problem for the RfSwitchMode_t values array,
   since any extra values in there will only be used if a valid pin was
   set in the pins array.

 - The pins array is passed by reference, so the compiler complains if
   the array passed is not the expected size. Since a reference to an
   array without a length is not supported (at least not by the gcc
   7 used by the AVR core - gcc 10 for STM32 seems to accept it), the
   table array is passed as a pointer instead (but because arrays and
   pointers are reasonably interchangeable, the caller does not see the
   difference).

 - The existing setRfSwitchPins() method is still supported as before.
   Internally it creates a table with the right values and pins and
   passes those to setRfSwitchTable.

 - For easier review, this commit does not modify all calls to
   setRfSwitchState() in all radio modules yet, but has a compatibility
   wrapper to delay this change until the next commit. Similarly, the
   setRfSwitchTable() method is now defined on Module only, a wrapper
   for it will be defined in all radios that already have the
   setRfSwitchPins() wrapper in another commit.

 - To allow future radios to define any number of modes, the modes table
   does not have a fixed length, but instead is terminated by a special
   value. This is a bit fragile (if the terminator is omitted, the code
   will read past the end of the array), but rather flexible. One
   alternative to this approach would be to make setRfSwitchTable
   a template that deduces the array size from a template argument and
   then stores the size explicitly, but using templates probably reduces
   code clarity.
2023-01-09 09:46:39 +01:00
Matthijs Kooijman 90b28d7722 Remove duplicated setRfSwitchPins documentation
All radios that support RfSwitch define this method that simply forwards
to the `Module::setRfSwitchPins()` method. Previously, all these methods
duplicated the documentation as well, but this uses the doxygen \copydoc
to remove this duplication.
2023-01-09 09:46:31 +01:00
jgromes 139a68dfd4 [EXT] Added support for external radios (646) 2023-01-08 15:12:49 +01:00
jgromes 02de83f941 [PHY] Made virtual overloads non-pure 2023-01-08 15:10:48 +01:00
jgromes 0cd9dd2983 [SX126x] Added note about allowed OCP range (#654) 2023-01-04 10:22:06 +01:00
jgromes 3a34594b5b [SX126x] Fixed incorrect OCP step in documentation (#654) 2023-01-03 20:20:58 +01:00
jgromes a0884bf120 [SX128x] Added option to set custom ranging calibration (#293) 2023-01-01 18:31:03 +01:00
jgromes 088207df4c [SX1280] Only check ranging address on slave 2023-01-01 18:03:48 +01:00
jgromes 0144faf02a [RF69] Fixed stream mode (#651) 2022-12-22 18:18:16 +01:00
jgromes 18fefc0ca9 [SX127x] Removed unnecessary volatile 2022-12-22 18:17:41 +01:00
Jan Gromeš 8d02fda5a1
Merge pull request #651 from notsleep196/master
[SX127x] Fix FSK Stream mode TX and RX
2022-12-22 17:33:26 +01:00
jgromes 607ae1035c [Pager] Fixed inversion logic (#641) 2022-12-22 16:19:10 +01:00
jgromes 81c5504260 [PHY] Added debug direct mode output 2022-12-22 16:18:50 +01:00
Mitrokhin Anton e073da15da Fix FSK Stream mode TX and RX 2022-12-22 12:21:01 +07:00
Matthijs Kooijman dfbe6934bb [SX126x] Set DIO2 to RF switch by default for FSK too
In commit a1f94d9f ([SX126x] Set DIO2 to RF switch by default), this was
changed for LoRa modulation in begin(), but since this is really
a board-specific attribute, independent of the modulation used, there is
no reason to have a different default for FSK (so this was probably just
forgotten).
2022-12-20 23:33:02 +01:00
Matthijs Kooijman 47163f4398 [SX126x] Make begin parameter docs consistent
This:
 - Updates syncWord comments after changing it from uint16_t to uint8_t
   in commit 55aff74a ([SX126x] Changed pin mapping, added reset,
   changed LoRa sync word to 1B).
 - Adds missing useRegulatorLDO comments forgoten in commit ea85a663
   ([SX126x] Pass useRegulatorLDO to SX1262/SX1261/SX1268).
 - Makes useRegulatorLDO comments the same in all places (using the more
   explicit version).
 - Fixes a typo in the doxygen \parma -> \param command.
2022-12-20 23:33:02 +01:00
jgromes 132c2b3b82 Fixed inversion logic and inverted frame sync word (#641) 2022-12-15 17:37:41 +01:00
jgromes 947ff48df6 Added support for unofficial Raspberry Pi Pico core (#643) 2022-12-14 22:37:25 +01:00
jgromes 60b73d5ccd [Pager] Implemented inversion for receive (#641) 2022-12-12 21:07:35 +01:00
Thomas Göttgens 0aa59f6abc Fix coding style 2022-12-06 07:53:14 +01:00
Thomas Göttgens 08de95e15e Access getIrqStatus() without Godmode and change the flag setting like SX126x handles it. 2022-12-05 11:17:59 +01:00
jgromes aa8330cf57 [Si443x] Added GFSK with BT 0.5 (#625) 2022-12-04 10:19:42 +01:00
Federico Maggi 7b4c27b702
[RF69] Missing 1000.0 multipler in 2022-12-04 00:21:22 +01:00
Jan Gromeš e054172f7a
Merge pull request #627 from rfquack/master
[RF69/CC1101] Fixed corner case in `setPromiscuousMode(false)`
2022-12-01 18:22:37 +01:00
Ihor Nehrutsa 9abb3fd396 Update Pager.cpp 2022-12-01 17:47:42 +02:00
Ihor Nehrutsa ee32b3d82a Update APRS.cpp 2022-12-01 17:47:34 +02:00
Federico Maggi 09669eeb26
[CC1101] Fix `setPromiscuousMode(false)` bug
Signed-off-by: Federico Maggi <federico.maggi@gmail.com>
2022-12-01 13:32:47 +01:00
Federico Maggi 894e912252
[RF69] Fixed setPromiscuousMode(false) corner case
Signed-off-by: Federico Maggi <federico.maggi@gmail.com>
2022-12-01 13:24:42 +01:00
jgromes f51229ef9a [Pager] Added option to invert frequencies (#7) 2022-11-27 20:47:01 +01:00
Federico Maggi 9422723bb7
[CC1101] Validate freq-dev unless special value 0
Signed-off-by: Federico Maggi <federico.maggi@gmail.com>
2022-11-27 10:20:29 +01:00
Federico Maggi befba28629
No bound checks on frequency deviation if ~FSK 2022-11-26 19:38:36 +01:00
Federico Maggi 05217c095b
- Defined new RADIOLIB_ERR_NULL_POINTER
- all `begin()` now use macros for init values
- addressed other styling comments as per PR#612 review

Signed-off-by: Federico Maggi <federico.maggi@gmail.com>
2022-11-21 09:09:56 +01:00
Federico Maggi 1322796542
[RF69 & CC1101] Reworked cached parameters into getters
Signed-off-by: Federico Maggi <federico.maggi@gmail.com>
2022-11-20 01:35:08 +01:00
jgromes 3fa34b433a Bump version to 5.5.0 2022-11-19 14:20:14 +01:00
jgromes 72ce5dfd93 Reworked macro reporting in debug mode 2022-11-19 14:19:57 +01:00
jgromes 2f0dac1bb7 [SSTV] Added support for interrupt-based timing (#596) 2022-11-18 18:05:42 +01:00
jgromes f69723b96c [Morse] Added support for interrupt-based timing 2022-11-18 17:55:08 +01:00
jgromes e1c217305f [Hell] Added support for interrupt-based timing 2022-11-18 17:39:18 +01:00
jgromes 2bf5297b32 [FSK4] ADded support for interrupt-based timing 2022-11-18 17:24:20 +01:00
jgromes abc7cf179a [AX25] Added support for interrupt-based timing 2022-11-18 17:24:01 +01:00
jgromes 3e64e819c7 [RTTY] Added support for interrupt-based timing 2022-11-18 17:07:01 +01:00
jgromes 5327952af5 Added links to interrupt-based wiki page 2022-11-18 17:06:38 +01:00
jgromes c3d6700e76 [PHY] Added support for interrupt-based timing 2022-11-18 17:04:52 +01:00
jgromes 04357cb306 [MOD] Added support for interrupt-based timing 2022-11-18 17:03:34 +01:00
jgromes 355446c43a [FSK4] Added correction method 2022-11-18 13:56:40 +01:00
jgromes 29813352d4 [SSTV] Moved correction factor to its own method 2022-11-18 13:54:12 +01:00
jgromes f942ccaec7 [SX126x] Added option to specify custom CAD parameters 2022-11-18 13:39:51 +01:00
jgromes e02b3f2ce0 [SX126x] Added missing Rx write arguments 2022-11-18 11:35:32 +01:00
Amalinda Gamage a7e56800a8
Update SX126x.cpp 2022-11-18 16:08:57 +08:00
Frederic Pillon 1fc9b3a142 fix: wrong cast
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
2022-11-17 16:06:19 +01:00
jgromes feb9aaa227 [SX127x] Added option to keep received data despite CRC error (#610) 2022-11-16 19:21:55 +01:00
jgromes f68bef2877 [PHY] Added option to keep received data despite CRC error 2022-11-16 19:21:52 +01:00
Jan Gromeš 63208f1e89
Merge pull request #609 from caveman99/master
add Portduino as a platform
2022-11-15 14:45:25 +01:00
jgromes a848cf281b [Pager] Added option to retrieve matched address on reception 2022-11-14 21:19:16 +01:00
jgromes 00fc7cd5b9 [Pager] Added optional custom frequnecy shift 2022-11-14 21:18:42 +01:00
Thomas Göttgens 58d744ae7a
Portduino is simulating an UNO WIFI
the same definition works now.
2022-11-14 12:58:46 +01:00
jgromes 4667c26448 [SX128x] Removed slowdown macro (#158) 2022-11-13 22:12:34 +01:00
jgromes b11deda33d [SX126x] Removed slowdown macro (#158) 2022-11-13 22:12:04 +01:00
jgromes a28aff7971 Moved callback generators to the end of Module declaration (#605) 2022-11-13 11:03:05 +01:00
jgromes 5efdeedd67 [SX1262] Fixed allowed output power range (-9 dBm minimum). 2022-11-06 22:51:21 +01:00
jgromes df7d1a99fe [SX126x] Fixed incorrect method called from derived class (#599) 2022-10-31 20:17:05 +01:00
jgromes 1316a805f3 [SX127x] Added option to specify interrupt direction for DIO 2022-10-23 20:39:15 +02:00
jgromes d80f87410e [SX127x] Removed redundant IRQ clear 2022-10-23 20:38:36 +02:00