Skip to content

Commit 4e33fe5

Browse files
committed
Downintegrate openmrn to 03af22aeccf88979acbe75b710008bd3ec4ac268 (2023-09-23):
bakerstu/openmrn@03af22ae Merge branch 'master' of github.com:bakerstu/openmrn bakerstu/openmrn@4bc7ab2f Fix MultiConfiguredPC.hxx compilation with C++20 (bakerstu/openmrn#737) bakerstu/openmrn@3d4f8ef6 Esp32 TWAI updates based on comments (bakerstu/openmrn#720) bakerstu/openmrn@32a2abc8 Fork spiffs/stm32f7/Stm32SPIFFS.cxx to st/Stm32Flash.hxx step 4 bakerstu/openmrn@54419304 Fork spiffs/stm32f7/Stm32SPIFFS.cxx to st/Stm32Flash.hxx step 3 bakerstu/openmrn@abc53c47 Fork spiffs/stm32f7/Stm32SPIFFS.cxx to st/Stm32Flash.hxx step 2 bakerstu/openmrn@eb2e6b43 Fork spiffs/stm32f7/Stm32SPIFFS.cxx to st/Stm32Flash.hxx bakerstu/openmrn@ca333ec4 Fix compile error in railcom board definitions. bakerstu/openmrn@4807345f Stm32 pwm f7xx update (bakerstu/openmrn#735) bakerstu/openmrn@ffc0d3d4 Add L4xx HAL include for Stm32PWM (bakerstu/openmrn#734) bakerstu/openmrn@cebac9cd Fix missing ifdef for reboot because macos build is broken. bakerstu/openmrn@bef698ce BitBang I2C Recovery (bakerstu/openmrn#731) bakerstu/openmrn@4426b208 Ensure tick_disable() upon timeout; fix locking. (bakerstu/openmrn#730) bakerstu/openmrn@6a1b281e Makes LocalTrackIf compile under gtest. (bakerstu/openmrn#727) bakerstu/openmrn@53f3ab7a Workaround for stm32can stuck in error passive state (bakerstu/openmrn#726) bakerstu/openmrn@95523347 Completes date-time parsing APIs in BroadcastTimeDefs. (bakerstu/openmrn#728) bakerstu/openmrn@65ef5c3e Add TMAG5273 Driver (bakerstu/openmrn#725) bakerstu/openmrn@a7e4abfa bit bang i2c master (bakerstu/openmrn#703) bakerstu/openmrn@fb0762db Esp32 Bootloader updates from comments (bakerstu/openmrn#719) bakerstu/openmrn@49b306f7 Fix OpenMRNLite includes for test builds (bakerstu/openmrn#723) bakerstu/openmrn@b5f378b4 Renames global symbol `allocator` to `cpu_profile_allocator`. (bakerstu/openmrn#717) bakerstu/openmrn@1e6534c5 arduino-esp32 2.0.x support (bakerstu/openmrn#536) bakerstu/openmrn@630f590e BroadcastTime string to rate quarters error handling (bakerstu/openmrn#716) bakerstu/openmrn@dda901d9 Adds 9bit reception support to the TI uart drivers. (bakerstu/openmrn#713) bakerstu/openmrn@685d61e8 Respond Ack to memcfg write datagrams immediately. (bakerstu/openmrn#712) bakerstu/openmrn@441f0467 Adds time jump information to the broadcast time update callbacks. (bakerstu/openmrn#694) bakerstu/openmrn@343b60b9 Refactors fast time state into a separate base class from BroadcastTime. (bakerstu/openmrn#692) bakerstu/openmrn@3092f0ea Add missing include guards. (bakerstu/openmrn#714) bakerstu/openmrn@00171fbd Fix bug that convoluted the file mode for the UART hardware mode (bakerstu/openmrn#706) bakerstu/openmrn@db89362b Refactors the flash writing/erasing code for TI flash into a separate class. (bakerstu/openmrn#710) bakerstu/openmrn@3f6afa05 Adds STM32 RailcomDriver (bakerstu/openmrn#702) bakerstu/openmrn@b9207af8 Adds hex_to_string helper function to format_utils. (bakerstu/openmrn#707) bakerstu/openmrn@d5062f63 Deletes stm32f0-f3 SPIFFs driver. (bakerstu/openmrn#708) bakerstu/openmrn@d195728b Fixes some compile errors: (bakerstu/openmrn#709) bakerstu/openmrn@3e22e2e5 Fixes bug in flash write. bakerstu/openmrn@5c83605a Fixes compilation warnings. bakerstu/openmrn@32595621 Adds support for unaligned reads and writes to the TivaEEPROMFile driver. (bakerstu/openmrn#704) bakerstu/openmrn@d96e64c0 Removes the driverlib from the path for CC322x.mk Removes a duplicate entry from the clang-format file. bakerstu/openmrn@c34b444b Stores the last offset in the configuration space when generating the XML. (bakerstu/openmrn#693) bakerstu/openmrn@b9e888eb Eliminates b'' from the revision strings. (bakerstu/openmrn#701) bakerstu/openmrn@7dbd8000 Fork src/freertos_drivers/ti/TivaRailcom.hxx to src/freertos_drivers/st/Stm32Railcom.hxx step 4 bakerstu/openmrn@13ff5db7 Fork src/freertos_drivers/ti/TivaRailcom.hxx to src/freertos_drivers/st/Stm32Railcom.hxx step 3 bakerstu/openmrn@a1ce1c12 Fork src/freertos_drivers/ti/TivaRailcom.hxx to src/freertos_drivers/st/Stm32Railcom.hxx step 2 bakerstu/openmrn@cd5e9808 Fork src/freertos_drivers/ti/TivaRailcom.hxx to src/freertos_drivers/st/Stm32Railcom.hxx bakerstu/openmrn@a5bcbcbf Removes unneeded include. bakerstu/openmrn@ce647ab8 Separate RailcomDriverBase to a different file. (bakerstu/openmrn#700) bakerstu/openmrn@c4a2f48e Fork src/freertos_drivers/ti/TivaDCC.hxx to src/freertos_drivers/common/FixedQueue.hxx step 4 bakerstu/openmrn@8ebea315 Fork src/freertos_drivers/ti/TivaDCC.hxx to src/freertos_drivers/common/FixedQueue.hxx step 3 bakerstu/openmrn@79814933 Fork src/freertos_drivers/ti/TivaDCC.hxx to src/freertos_drivers/common/FixedQueue.hxx step 2 bakerstu/openmrn@e217ff44 Fork src/freertos_drivers/ti/TivaDCC.hxx to src/freertos_drivers/common/FixedQueue.hxx bakerstu/openmrn@5413dafb Fork src/freertos_drivers/ti/TivaRailcom.hxx to src/freertos_drivers/common/RailcomImpl.hxx step 4 bakerstu/openmrn@b06f1731 Fork src/freertos_drivers/ti/TivaRailcom.hxx to src/freertos_drivers/common/RailcomImpl.hxx step 3 bakerstu/openmrn@7c559be0 Fork src/freertos_drivers/ti/TivaRailcom.hxx to src/freertos_drivers/common/RailcomImpl.hxx step 2 bakerstu/openmrn@bd7fb793 Fork src/freertos_drivers/ti/TivaRailcom.hxx to src/freertos_drivers/common/RailcomImpl.hxx bakerstu/openmrn@95f15f2e Moves the interrupt operations to the TivaRailcomDriver from RailcomDriverBase. (bakerstu/openmrn#699) bakerstu/openmrn@465b36ab Virtual Train application: adds ability to spawn many train nodes. (bakerstu/openmrn#698) bakerstu/openmrn@687007d5 Adds a nodejs target for memconfig utils (bakerstu/openmrn#697) bakerstu/openmrn@3a70466d Fixes build for Stm32 CanSerialNode example. (bakerstu/openmrn#696) bakerstu/openmrn@87cb5fc2 Fix build of Arduino STM32 CAN driver. (bakerstu/openmrn#695) bakerstu/openmrn@3e7d0222 Makes the PWM interface compatible with constexpr. (bakerstu/openmrn#690) bakerstu/openmrn@8905b172 Adds stream support to MemoryConfigClient (bakerstu/openmrn#688) bakerstu/openmrn@c300e8f3 Adds a helper function for GDB. (bakerstu/openmrn#689) bakerstu/openmrn@e18a56ce Adds stream read support to the memory config handler (bakerstu/openmrn#687) bakerstu/openmrn@08f78f9f Fix broken streamsender test. (bakerstu/openmrn#686) bakerstu/openmrn@f077f2d1 Adds stream receiver (bakerstu/openmrn#685) bakerstu/openmrn@39b2efad Adds StreamSenderCan for the streaming protocol. (bakerstu/openmrn#623) bakerstu/openmrn@eb8a2074 Adds EEPROMFile driver for TI Tiva microcontrollers. (bakerstu/openmrn#684) bakerstu/openmrn@6ded55be Abstract the "generic" portions of DccAccConsumer into a "base" class. (bakerstu/openmrn#682) bakerstu/openmrn@f6624dbd Fixes bug in velocity::set_dcc_128. (bakerstu/openmrn#683) bakerstu/openmrn@35c34238 Fix bus-off error handling. (bakerstu/openmrn#681) bakerstu/openmrn@39a07d7e SimpleStack Delay Node Initialization (bakerstu/openmrn#679) bakerstu/openmrn@a1225a8f Fix nullptr dereference error in race condition around memory config datagrams. (bakerstu/openmrn#678) bakerstu/openmrn@e81d2374 Add an EntryModel option to disable automatic clamping (bakerstu/openmrn#680) bakerstu/openmrn@970f9058 Makes RamDisk remember where EOF is. (bakerstu/openmrn#677) bakerstu/openmrn@3f124a2e Adds implementation of chip_erase() to SpiFlash driver. (bakerstu/openmrn#676) bakerstu/openmrn@62e836e2 Fixes constructor of Velocity class. (bakerstu/openmrn#675) bakerstu/openmrn@8edb9891 Increases the stream timeout for the JS BootloaderClient. (bakerstu/openmrn#673) bakerstu/openmrn@79603638 Make RefreshLoop constructor more generic, create add_member method. (bakerstu/openmrn#670) bakerstu/openmrn@b878ef6d Fix compile errors under llvm. (bakerstu/openmrn#672) bakerstu/openmrn@f5d08762 Fix the preamble count to match the S-9.2 minimum of 10 preamble bits (20 half bits). (bakerstu/openmrn#671) bakerstu/openmrn@5c5b7927 Remove consumer from PolledProducer. (bakerstu/openmrn#669) bakerstu/openmrn@d25c8c65 Optimize latency of hub (bakerstu/openmrn#667) bakerstu/openmrn@5c789562 Makes the separator character configurable in mac_to_string helper function. (bakerstu/openmrn#668) bakerstu/openmrn@01cde51c Adds a couple of more functions to cortex-M0 atomic operations. (bakerstu/openmrn#666) bakerstu/openmrn@99b20635 Adds a hook for the bootloader loop. (bakerstu/openmrn#665) bakerstu/openmrn@a8d1910f Builds stm32 I2C driver for F0, fixes timings. (bakerstu/openmrn#662) bakerstu/openmrn@906871a1 Lpc17xx40xx eeprom emulation hassert bug (bakerstu/openmrn#664) bakerstu/openmrn@53251171 Fork ti/TivaRailcom.hxx to common/Railcom.hxx step 4 bakerstu/openmrn@e264e2fe Fork ti/TivaRailcom.hxx to common/Railcom.hxx step 3 bakerstu/openmrn@a89775da Fork ti/TivaRailcom.hxx to common/Railcom.hxx step 2 bakerstu/openmrn@e026e577 Fork ti/TivaRailcom.hxx to common/Railcom.hxx bakerstu/openmrn@8cafeae9 Pca9685 pwm should not subclass I2C (bakerstu/openmrn#661) bakerstu/openmrn@e40bcd64 Factory reset improvements (bakerstu/openmrn#660) bakerstu/openmrn@6aac4087 Simplify the sending of asynchronous events with new OpenLCB API option. (bakerstu/openmrn#658) bakerstu/openmrn@c4867735 No longer rely on the one time state_flow logic startup for query. Instead query each time we get a identify events addressed to us. (bakerstu/openmrn#657) bakerstu/openmrn@54fa4379 Ensure broadcast time sync (bakerstu/openmrn#656) bakerstu/openmrn@769c62ac Makes "found short" be persistent in programming track backend operations. (bakerstu/openmrn#655) bakerstu/openmrn@47640835 Adds override for default on whether reconnect should be on or off. (bakerstu/openmrn#654) bakerstu/openmrn@2419cd80 TivaDCC Change Half Zero Resynchronization to a Full Zero (bakerstu/openmrn#653) bakerstu/openmrn@b3949f1c Allows skipping unneeded event IDs from the factory initialization. (bakerstu/openmrn#651) bakerstu/openmrn@79aaa71b Fix build and cleanup alignment. (bakerstu/openmrn#650) bakerstu/openmrn@1615f80b Add BitRangeEventP. (bakerstu/openmrn#649) bakerstu/openmrn@9bc4338b Tunes end-of-packet DCC bit timing. (bakerstu/openmrn#648) bakerstu/openmrn@2704636c Fix broken tests for GCC-12. bakerstu/openmrn@ab5cee2b Fixes deterministic crash that's node ID dependent (bakerstu/openmrn#647) bakerstu/openmrn@e5796e2d Fixes build for STM32F3. bakerstu/openmrn@23ec472a Fix linux build. bakerstu/openmrn@9af22c0e Adds unpublishing support for mDNS API and the cc32xx mDNS implementaiton. (bakerstu/openmrn#646) bakerstu/openmrn@9596a27b Use legacy API name. (bakerstu/openmrn#645) bakerstu/openmrn@1fa064ad STM32 CAN Error Handling (bakerstu/openmrn#644) bakerstu/openmrn@49dbfc29 Adds symbols for the maximum supported address values. (bakerstu/openmrn#643) bakerstu/openmrn@3ef0069e Additional reasons for the DCC output signal being disabled (bakerstu/openmrn#642) bakerstu/openmrn@2d7615d8 Fixed OpenSSL build with Stuart Baker for new SSL version. (bakerstu/openmrn#635) bakerstu/openmrn@13be1f71 Updates the dev kit example to support up to 8 x MCP23017 io expanders for a total of 128 lines. (bakerstu/openmrn#641) bakerstu/openmrn@8ca88491 Add BroadcastTime Utilities (bakerstu/openmrn#637) bakerstu/openmrn@11f37ffb Handles double faults in the default hard_fault handler. (bakerstu/openmrn#636) bakerstu/openmrn@f2a7567e Fixes clang-format style file to create the desired brace linebreak for switch/case statements. bakerstu/openmrn@e2ebdb49 Adds callbacks to javascript connection monitors (bakerstu/openmrn#634) bakerstu/openmrn@4458a431 TCAN4550 Instrumentation Addition (bakerstu/openmrn#629) bakerstu/openmrn@fed8d276 Adds feature to EntryModel to set the leading zeros. (bakerstu/openmrn#632) bakerstu/openmrn@f70cd810 Minor fixes on the train node application: (bakerstu/openmrn#633) bakerstu/openmrn@333056f2 Adds print features for service mode packets to DccDebug. (bakerstu/openmrn#631) bakerstu/openmrn@c835af7f Fixes nullptr bug in CallableFlow. (bakerstu/openmrn#630) bakerstu/openmrn@b496173f TCAN4550 Bus Off Recovery (bakerstu/openmrn#628) bakerstu/openmrn@327f3700 Adds support for partial read command in memconfig_utils. (bakerstu/openmrn#627) bakerstu/openmrn@45b45108 Allows calling invoke_subflow_and_ignore_result outside of stateflows. (bakerstu/openmrn#626) bakerstu/openmrn@2a018c84 Specifies the XML encoding to be utf-8. (bakerstu/openmrn#625) bakerstu/openmrn@e50296ce Adds implementation of factory_reset command. (bakerstu/openmrn#624) bakerstu/openmrn@1e0c2df1 Fixes syntax error in clang-format file. bakerstu/openmrn@5dd98526 Adds implementation of byte buffer. (bakerstu/openmrn#622) bakerstu/openmrn@081bd34a Adds byte_stream.md, a design documentation for a proposed feature. (bakerstu/openmrn#621) bakerstu/openmrn@de50344e Adds missing makefiles in build directory. bakerstu/openmrn@aff60675 Inverts the run direction of the capture counter in the STM32 Dcc Decoder. (bakerstu/openmrn#620) bakerstu/openmrn@dd5304c6 Adds debug log to the common DccDecoder class. (bakerstu/openmrn#619) bakerstu/openmrn@28df8db1 Makes microdelay use C linkage. (bakerstu/openmrn#618) bakerstu/openmrn@a009d802 Adds shared code for STM32 implementation of the crash blinker. (bakerstu/openmrn#617) bakerstu/openmrn@fa0a7455 Uses proper helper function for decoding Node ID. (bakerstu/openmrn#616) bakerstu/openmrn@0cc57493 Adds example CS and decoder with partial logon implementation (bakerstu/openmrn#565) bakerstu/openmrn@7c8e61bb Simplifies traction node OpenLCB addresses for DCC locomotives. (bakerstu/openmrn#615) bakerstu/openmrn@4704bda5 Explicit handling of NOT_RESPONDING aliases. (bakerstu/openmrn#614) bakerstu/openmrn@f27dc08a Adds support for RS485 mode to the tiva UART driver. (bakerstu/openmrn#613) bakerstu/openmrn@0fac0bd4 Optimizes the computation speed for crc16-ibm. (bakerstu/openmrn#612) bakerstu/openmrn@7d0cdbc9 Fixes bug in FlashFile O_TRUNC handling. (bakerstu/openmrn#611) bakerstu/openmrn@3196adb0 Fixes interpretation of O_CREAT in the CC32xxDeviceFile. (bakerstu/openmrn#610) bakerstu/openmrn@8f768c8c Python3 fixes in revision.py (bakerstu/openmrn#609) bakerstu/openmrn@66bf27cb Fixes the flash command for TM4C129. (bakerstu/openmrn#608) bakerstu/openmrn@283ff16c Adds a hello message to the DCC decoder. (bakerstu/openmrn#607) bakerstu/openmrn@f03967ea Removes duplicate -MD argument. The prog.mk already contains the necessary -MMD instead, and clang complains if both are set. bakerstu/openmrn@fa927d8b Adds a script for computing optimal CAN-bus timing configurations. (bakerstu/openmrn#606) bakerstu/openmrn@d0a59e63 Updates the CAN bit timing parameters of the TivaCAN driver. (bakerstu/openmrn#605) bakerstu/openmrn@7b793c8d Fixes Tiva GPIO and build (bakerstu/openmrn#604) bakerstu/openmrn@da9188fd Switched GcPacketPrinter to use stderr. (bakerstu/openmrn#603) bakerstu/openmrn@ea2fd25b JS.emscripten: adds connect callbacks to the ports. (bakerstu/openmrn#602) bakerstu/openmrn@456945f3 Fixes sequence problem when more than one CDI file gets rendered. (bakerstu/openmrn#601) bakerstu/openmrn@9ed634f2 Minor fixes to SNIP client and SNIP handler: (bakerstu/openmrn#600) bakerstu/openmrn@80ed3980 Removes dependency on usleep from header. bakerstu/openmrn@beb576cc Avoids adding the system directory files to the dependency outputs. bakerstu/openmrn@87af9325 Updates distcc documentation. bakerstu/openmrn@321235a8 Fixes recursive make bugs. bakerstu/openmrn@52f305fa Adds binary release script. (bakerstu/openmrn#599) bakerstu/openmrn@56c9a787 Adds FlashFile (bakerstu/openmrn#598) bakerstu/openmrn@e874b9d7 Fixes bug in short circuiting toplevel target compilation. bakerstu/openmrn@c2dbb0da Implements BUS_OFF handling in the TivaCan driver. (bakerstu/openmrn#597) bakerstu/openmrn@61951f64 Fixes compilation problems with GCC-10.3 (armgcc-2021-10) (bakerstu/openmrn#596) bakerstu/openmrn@90ff0151 Fix find_distcc.sh to operate correctly when the user does not want to use distcc. bakerstu/openmrn@31d0f157 Adds more tests for fixed16 to validate that division has appropriate precision. (bakerstu/openmrn#595) bakerstu/openmrn@83b76242 Fixes gcc-11 compatibility issue. (bakerstu/openmrn#594) bakerstu/openmrn@24b5afaa Adds support for distcc (bakerstu/openmrn#593) bakerstu/openmrn@b6c24902 Adds extra unit tests where the CV read has a couple of ACKs on it. (bakerstu/openmrn#592) bakerstu/openmrn@3716342b Adds helper macro expect_packet_and_send_response. (bakerstu/openmrn#591) bakerstu/openmrn@5635dd4c Fixes the PacketIs expectation used in unit tests. (bakerstu/openmrn#590) bakerstu/openmrn@9770c9bd Adds POM commands to the dcc debug print routine. (bakerstu/openmrn#589) bakerstu/openmrn@24ca60ba Refactor bootloader client application (bakerstu/openmrn#588) bakerstu/openmrn@f9926a03 Adds bootloader application for STM32-F091 (bakerstu/openmrn#587) bakerstu/openmrn@f9aef24e Rename main.cxx to main.hxx so that we can include it in real main.cxx. bakerstu/openmrn@dd38a657 Fork applications/bootloader_client/targets/linux.x86/main.cxx to applications/bootloader_client/main.cxx step 4 bakerstu/openmrn@0822395b Fork applications/bootloader_client/targets/linux.x86/main.cxx to applications/bootloader_client/main.cxx step 3 bakerstu/openmrn@61202e2f Fork applications/bootloader_client/targets/linux.x86/main.cxx to applications/bootloader_client/main.cxx step 2 bakerstu/openmrn@c0ae67c1 Fork applications/bootloader_client/targets/linux.x86/main.cxx to applications/bootloader_client/main.cxx bakerstu/openmrn@ab0a282d Fix broken build under recent gcc. bakerstu/openmrn@de1ca527 Fix console test. bakerstu/openmrn@7a900399 Fixes emscripten build. bakerstu/openmrn@e3cf5c78 Adds support for SPI connected flash chips. (bakerstu/openmrn#585) bakerstu/openmrn@c65a6b6b Re-creates spiffs_configs as symlink. bakerstu/openmrn@0ff57a99 Moves spiffs config to the generic directory. bakerstu/openmrn@1135c596 Fix ftruncate build (POSIX version). (bakerstu/openmrn#584) bakerstu/openmrn@0f9a7436 Adds API to set the wifi scan parameters. (bakerstu/openmrn#581) bakerstu/openmrn@58d0221d Fix bug in TempFile::rewrite. bakerstu/openmrn@5b6fcb92 Fix the order in which libraries are linked when building tests. (bakerstu/openmrn#580) bakerstu/openmrn@1a1b9f80 Entry Model Tweaks (bakerstu/openmrn#579) bakerstu/openmrn@d9ae5f73 WIP Refactor EntryModel (bakerstu/openmrn#576) bakerstu/openmrn@c2ecedc6 Adds integration API for HTTP POST uploads on the CC32xx web server. (bakerstu/openmrn#578) bakerstu/openmrn@802bfd55 Adds platform-independent interface for sleeping. (bakerstu/openmrn#577) bakerstu/openmrn@450b2eb5 Fix TivaSPI bug. The FIFO depth is just 8. (bakerstu/openmrn#572) bakerstu/openmrn@20548a5a Adds locking to Tiva SPIFFs. (bakerstu/openmrn#573) bakerstu/openmrn@76133245 Allows negative length for EmptyGroup, causing reverse jumps in the address space. (bakerstu/openmrn#574) bakerstu/openmrn@040bce0e Fixes a static initialization bug under linux. (bakerstu/openmrn#571) bakerstu/openmrn@bc8162ed Adds SPIFFs driver for Tiva 129 (bakerstu/openmrn#569) bakerstu/openmrn@8c52743d Adds SPI driver for Tiva (bakerstu/openmrn#568) bakerstu/openmrn@12224116 Fixed16 comparisons operators (bakerstu/openmrn#570) bakerstu/openmrn@43bfc882 Optimizes includes (bakerstu/openmrn#566) bakerstu/openmrn@4fec273a Adds state flow for logon sequence (bakerstu/openmrn#564) bakerstu/openmrn@ddcb1258 Adds helper functions for generating the logon packets (bakerstu/openmrn#563) bakerstu/openmrn@bd2f9ec2 Adds implementation for railcom messages related to logon (bakerstu/openmrn#562) bakerstu/openmrn@87be9a82 Fixes a bug in the DCC driver. (bakerstu/openmrn#561) bakerstu/openmrn@055cbbd4 Adds example CS with railcom for auto login (bakerstu/openmrn#560) bakerstu/openmrn@831e2d3e Adds some useful railcom implementation to the example decoder (bakerstu/openmrn#558) bakerstu/openmrn@fb669a3e Adds a test showing how to get conflicts on CRC. (bakerstu/openmrn#559) bakerstu/openmrn@8c4e7bf6 Tiva 129 updates around emulator (bakerstu/openmrn#556) bakerstu/openmrn@d1c544de Adds some example railcom feedback (bakerstu/openmrn#552) bakerstu/openmrn@9efe188d Adds routines to encode railcom data for a sender. (bakerstu/openmrn#553) bakerstu/openmrn@05e5d614 Adds driver and hooks for sending railcom data out. (bakerstu/openmrn#551) bakerstu/openmrn@0c9e3a9a Adds missing header guard. (bakerstu/openmrn#557) bakerstu/openmrn@488e6f1b Reduce the number of times the config file is opened in SimpleStack (bakerstu/openmrn#555) bakerstu/openmrn@0b5f09f5 Adds support for the STM32UART to set the baud rate via ioctl. (bakerstu/openmrn#549) bakerstu/openmrn@57b05968 Adds checksum verification to the DccDecode class. (bakerstu/openmrn#550) bakerstu/openmrn@9ba9ae15 Eliminates a copy in the DCC decoder. (bakerstu/openmrn#547) bakerstu/openmrn@d551997c Adds CRC8 software implementations (bakerstu/openmrn#546) bakerstu/openmrn@8f3fa0b5 Slow down the GPIO writes a bit. (bakerstu/openmrn#545) bakerstu/openmrn@5cdcd54f Fixes rounding problem in DCC speed step representation. (bakerstu/openmrn#543) bakerstu/openmrn@fa5c4dd9 Allow Esp32WiFiManager to work with any subclass of SimpleCanStackBase. (bakerstu/openmrn#544) bakerstu/openmrn@68649874 Update Tiva and CC32xx UART driver. (bakerstu/openmrn#542) bakerstu/openmrn@1e77a1f7 Fixes compilation error when not under linux. bakerstu/openmrn@3ccdbb75 Adds drain ioctl. (bakerstu/openmrn#539) bakerstu/openmrn@f3f1882e Fixes HwInit after API changes. (bakerstu/openmrn#540) bakerstu/openmrn@d4f18350 Adds a helper function to arrange better shutdown procedure in the BusMaster. (bakerstu/openmrn#538) bakerstu/openmrn@45045079 Add support for parity bit in FreeRTOS UART driver through ioctl. (bakerstu/openmrn#537) bakerstu/openmrn@873d99c1 Event Identify Global Fix Comments, Add Delete Self Option (bakerstu/openmrn#535) bakerstu/openmrn@1f57f21b Adds GitHub Action that builds the arduino examples. (bakerstu/openmrn#534) bakerstu/openmrn@9731cec6 Add instructions on producing an Event Identify Global message. (bakerstu/openmrn#533) bakerstu/openmrn@237d9e94 Event Identify Global Protocol Helper (bakerstu/openmrn#532) bakerstu/openmrn@367f2c67 Fixup in the ESP32 arduino examples: (bakerstu/openmrn#530) bakerstu/openmrn@7e78b232 Adds missing include guard for STM32 arduino header. (bakerstu/openmrn#531) bakerstu/openmrn@962989ed Switches the mdns and uplink connect requests to a separate executor. (bakerstu/openmrn#529) bakerstu/openmrn@2d1dd2da Adds a simple class that watches an executor for being blocked. (bakerstu/openmrn#528) bakerstu/openmrn@90a9d592 Merge pull request #527 from bakerstu/openmrnlite bakerstu/openmrn@7e7a5096 Merge branch 'master' into openmrnlite bakerstu/openmrn@c09a1534 Fix os_thread_create_helper for arduino esp32 (bakerstu/openmrn#525) bakerstu/openmrn@6f827513 WiFi manager uplink disable (bakerstu/openmrn#526) bakerstu/openmrn@ad44e293 Broadcast Time Server Detection (bakerstu/openmrn#521) bakerstu/openmrn@365a5e4f Fix test. (bakerstu/openmrn#522) bakerstu/openmrn@11e680f1 Update the descriptions in the User Info Segment. (bakerstu/openmrn#518) bakerstu/openmrn@b8d44b19 Adds support for write to the memoryconfig utils application. (bakerstu/openmrn#515) bakerstu/openmrn@61e89e7e Adds a parseblink method to turn a blinker code into a numeric display. (bakerstu/openmrn#516) bakerstu/openmrn@01081b40 Fixes broken build of DCC driver instantiation. (bakerstu/openmrn#514) bakerstu/openmrn@fc05734f Allow applib.mk SRCDIR to be overridden. (bakerstu/openmrn#512) bakerstu/openmrn@6e0afdc4 Flip the order of operations for resetting the callback flag and calling the actual callback. This allows for rearming the callback from the callback itself. (bakerstu/openmrn#510) bakerstu/openmrn@e24c7a54 limit timer cleanup (bakerstu/openmrn#509) bakerstu/openmrn@35501ce5 Adds a generalized shift operation to the Fixed16 class. (bakerstu/openmrn#508) bakerstu/openmrn@c8d37bff Adds ability to remove an event handler from the callbacks. (bakerstu/openmrn#507) bakerstu/openmrn@641c330b Limit Timer (bakerstu/openmrn#506) bakerstu/openmrn@c8f5c57b Adds support for a random jitter in the DCC signal timing. (bakerstu/openmrn#505) bakerstu/openmrn@170e6d81 Tune DCC end of packet behavior (bakerstu/openmrn#504) bakerstu/openmrn@b55d4d80 Adds support for DCC function 29-68. (bakerstu/openmrn#503) bakerstu/openmrn@66698b2d Adds helper functions to generate different DCC packet types: (bakerstu/openmrn#502) bakerstu/openmrn@a2e2124f Fixes library.a dependencies and other makefile cleanup. (bakerstu/openmrn#501) bakerstu/openmrn@8e9690d8 Adds functions to generate paged-mode programming packets. (bakerstu/openmrn#500) bakerstu/openmrn@6a149cfd fix eepromemu tests. bakerstu/openmrn@c3e992c0 Fix typo bakerstu/openmrn@b4764030 Support eeprom update notification. (bakerstu/openmrn#499) bakerstu/openmrn@3e486ff4 Adds a bus master pattern that shows how to organize a polling loop. (bakerstu/openmrn#498) bakerstu/openmrn@1b328517 Adds a version of the Queue where the scheduling algorithm can be tuned by weights. (bakerstu/openmrn#497) bakerstu/openmrn@03b94d61 Switches bare.armv7m to optimize for size. (bakerstu/openmrn#494) bakerstu/openmrn@b9c92537 Adds error codes defined by the firmware upgrade standard. (bakerstu/openmrn#493) bakerstu/openmrn@96d5ab88 Data/bss section initialization fix (bakerstu/openmrn#492) bakerstu/openmrn@1f8f205e Fixes atomic bug in ConfigUpdateFlow. (bakerstu/openmrn#490) bakerstu/openmrn@9a29192e Adds support for compiling ASM files in an application library. (bakerstu/openmrn#491) bakerstu/openmrn@f07e0939 Fork freertos.armv7m/freertos_drivers/stm32cubel432xx/Makefile to bare.armv7m/freertos_drivers/stm32cubel432xx/Makefile step 4 bakerstu/openmrn@3be53d0d Fork freertos.armv7m/freertos_drivers/stm32cubel432xx/Makefile to bare.armv7m/freertos_drivers/stm32cubel432xx/Makefile step 3 bakerstu/openmrn@11e10bf5 Fork freertos.armv7m/freertos_drivers/stm32cubel432xx/Makefile to bare.armv7m/freertos_drivers/stm32cubel432xx/Makefile step 2 bakerstu/openmrn@36382f57 Fork freertos.armv7m/freertos_drivers/stm32cubel432xx/Makefile to bare.armv7m/freertos_drivers/stm32cubel432xx/Makefile bakerstu/openmrn@879528a0 Fork freertos.armv7m/freertos_drivers/stm32cubel432xx/sources to bare.armv7m/freertos_drivers/stm32cubel432xx/sources step 4 bakerstu/openmrn@8bd37030 Fork freertos.armv7m/freertos_drivers/stm32cubel432xx/sources to bare.armv7m/freertos_drivers/stm32cubel432xx/sources step 3 bakerstu/openmrn@4ccd1b6d Fork freertos.armv7m/freertos_drivers/stm32cubel432xx/sources to bare.armv7m/freertos_drivers/stm32cubel432xx/sources step 2 bakerstu/openmrn@cc39fc50 Fork freertos.armv7m/freertos_drivers/stm32cubel432xx/sources to bare.armv7m/freertos_drivers/stm32cubel432xx/sources bakerstu/openmrn@175e6aa8 Fork freertos.armv7m/freertos_drivers/stm32cubel431xx/Makefile to bare.armv7m/freertos_drivers/stm32cubel431xx/Makefile step 4 bakerstu/openmrn@77aa8d5e Fork freertos.armv7m/freertos_drivers/stm32cubel431xx/Makefile to bare.armv7m/freertos_drivers/stm32cubel431xx/Makefile step 3 bakerstu/openmrn@778b0b9c Fork freertos.armv7m/freertos_drivers/stm32cubel431xx/Makefile to bare.armv7m/freertos_drivers/stm32cubel431xx/Makefile step 2 bakerstu/openmrn@e3a02de2 Fork freertos.armv7m/freertos_drivers/stm32cubel431xx/Makefile to bare.armv7m/freertos_drivers/stm32cubel431xx/Makefile bakerstu/openmrn@68a5fad4 Fork freertos.armv7m/freertos_drivers/stm32cubel431xx/sources to bare.armv7m/freertos_drivers/stm32cubel431xx/sources step 4 bakerstu/openmrn@daf970b4 Fork freertos.armv7m/freertos_drivers/stm32cubel431xx/sources to bare.armv7m/freertos_drivers/stm32cubel431xx/sources step 3 bakerstu/openmrn@dd554dee Fork freertos.armv7m/freertos_drivers/stm32cubel431xx/sources to bare.armv7m/freertos_drivers/stm32cubel431xx/sources step 2 bakerstu/openmrn@77b9f8b7 Fork freertos.armv7m/freertos_drivers/stm32cubel431xx/sources to bare.armv7m/freertos_drivers/stm32cubel431xx/sources bakerstu/openmrn@a8b8dbe3 Adds L431 and L432 to bare.armv7m subdirectories. bakerstu/openmrn@4f9ff2e1 Adds IO board target for the L432KC nucleo (bakerstu/openmrn#489) bakerstu/openmrn@127c549a Adds L4 support to the eepromemulation. (bakerstu/openmrn#488) bakerstu/openmrn@335251aa Fork freertos.armv7m.st-stm32f303re-nucleo/config.hxx to freertos.armv7m.st-stm32l432kc-nucleo/config.hxx step 4 bakerstu/openmrn@c8ae61e9 Fork freertos.armv7m.st-stm32f303re-nucleo/config.hxx to freertos.armv7m.st-stm32l432kc-nucleo/config.hxx step 3 bakerstu/openmrn@2f8b644e Fork freertos.armv7m.st-stm32f303re-nucleo/config.hxx to freertos.armv7m.st-stm32l432kc-nucleo/config.hxx step 2 bakerstu/openmrn@1dbe1076 Fork freertos.armv7m.st-stm32f303re-nucleo/config.hxx to freertos.armv7m.st-stm32l432kc-nucleo/config.hxx bakerstu/openmrn@033dc198 Fork freertos.armv7m.st-stm32f303re-nucleo/main.cxx to freertos.armv7m.st-stm32l432kc-nucleo/main.cxx step 4 bakerstu/openmrn@8adc97b3 Fork freertos.armv7m.st-stm32f303re-nucleo/main.cxx to freertos.armv7m.st-stm32l432kc-nucleo/main.cxx step 3 bakerstu/openmrn@a79a73cc Fork freertos.armv7m.st-stm32f303re-nucleo/main.cxx to freertos.armv7m.st-stm32l432kc-nucleo/main.cxx step 2 bakerstu/openmrn@3020ebb5 Fork freertos.armv7m.st-stm32f303re-nucleo/main.cxx to freertos.armv7m.st-stm32l432kc-nucleo/main.cxx bakerstu/openmrn@e1cf317e Adds async_blink targets for nucleo F303 and L432. (bakerstu/openmrn#487) bakerstu/openmrn@e89db63b Adds support for STM32L43x MCUs (bakerstu/openmrn#486) bakerstu/openmrn@07549dfb Fork etc/stm32cubef4.mk to etc/stm32cubel4.mk step 4 bakerstu/openmrn@6661f313 Fork etc/stm32cubef4.mk to etc/stm32cubel4.mk step 3 bakerstu/openmrn@ff2cd0a2 Fork etc/stm32cubef4.mk to etc/stm32cubel4.mk step 2 bakerstu/openmrn@f9907109 Fork etc/stm32cubef4.mk to etc/stm32cubel4.mk bakerstu/openmrn@d463d806 Fork etc/stm32cubef3.mk to etc/stm32cubef4.mk step 4 bakerstu/openmrn@efb517d4 Fork etc/stm32cubef3.mk to etc/stm32cubef4.mk step 3 bakerstu/openmrn@d6cb091a Fork etc/stm32cubef3.mk to etc/stm32cubef4.mk step 2 bakerstu/openmrn@6fd7b18c Fork etc/stm32cubef3.mk to etc/stm32cubef4.mk bakerstu/openmrn@23be4b68 Fork boards/st-stm32f303re-nucleo/memory_map.ld to boards/st-stm32l432kc-nucleo/memory_map.ld step 4 bakerstu/openmrn@5e262463 Fork boards/st-stm32f303re-nucleo/memory_map.ld to boards/st-stm32l432kc-nucleo/memory_map.ld step 3 bakerstu/openmrn@86a407fb Fork boards/st-stm32f303re-nucleo/memory_map.ld to boards/st-stm32l432kc-nucleo/memory_map.ld step 2 bakerstu/openmrn@69f257d0 Fork boards/st-stm32f303re-nucleo/memory_map.ld to boards/st-stm32l432kc-nucleo/memory_map.ld bakerstu/openmrn@ea729783 Fork boards/st-stm32f303re-nucleo/Makefile to boards/st-stm32l432kc-nucleo/Makefile step 4 bakerstu/openmrn@ce7a4342 Fork boards/st-stm32f303re-nucleo/Makefile to boards/st-stm32l432kc-nucleo/Makefile step 3 bakerstu/openmrn@6301ee01 Fork boards/st-stm32f303re-nucleo/Makefile to boards/st-stm32l432kc-nucleo/Makefile step 2 bakerstu/openmrn@ebbf7e97 Fork boards/st-stm32f303re-nucleo/Makefile to boards/st-stm32l432kc-nucleo/Makefile bakerstu/openmrn@c6794688 Fork boards/st-stm32f303re-nucleo/HwInit.cxx to boards/st-stm32l432kc-nucleo/HwInit.cxx step 4 bakerstu/openmrn@31d00af6 Fork boards/st-stm32f303re-nucleo/HwInit.cxx to boards/st-stm32l432kc-nucleo/HwInit.cxx step 3 bakerstu/openmrn@ff16e4a1 Fork boards/st-stm32f303re-nucleo/HwInit.cxx to boards/st-stm32l432kc-nucleo/HwInit.cxx step 2 bakerstu/openmrn@d675ba74 Fork boards/st-stm32f303re-nucleo/HwInit.cxx to boards/st-stm32l432kc-nucleo/HwInit.cxx bakerstu/openmrn@889e0a3a Fork boards/st-stm32f303re-nucleo/hardware.hxx to boards/st-stm32l432kc-nucleo/hardware.hxx step 4 bakerstu/openmrn@d57a3de8 Fork boards/st-stm32f303re-nucleo/hardware.hxx to boards/st-stm32l432kc-nucleo/hardware.hxx step 3 bakerstu/openmrn@67500e4d Fork boards/st-stm32f303re-nucleo/hardware.hxx to boards/st-stm32l432kc-nucleo/hardware.hxx step 2 bakerstu/openmrn@2092bd75 Fork boards/st-stm32f303re-nucleo/hardware.hxx to boards/st-stm32l432kc-nucleo/hardware.hxx bakerstu/openmrn@20b8ee31 Fork boards/st-stm32f303x_28x_58x_98x-generic/startup.c to boards/st-stm32l4-generic/startup.c step 4 bakerstu/openmrn@5ca51508 Fork boards/st-stm32f303x_28x_58x_98x-generic/startup.c to boards/st-stm32l4-generic/startup.c step 3 bakerstu/openmrn@1ff035e3 Fork boards/st-stm32f303x_28x_58x_98x-generic/startup.c to boards/st-stm32l4-generic/startup.c step 2 bakerstu/openmrn@09ef482b Fork boards/st-stm32f303x_28x_58x_98x-generic/startup.c to boards/st-stm32l4-generic/startup.c bakerstu/openmrn@f49b682a Use BarrierNotifiable in the implementation of Broadcast Time Alarms. (bakerstu/openmrn#337) bakerstu/openmrn@c9749ed2 Adds a feature to compile targets in a deterministic way. bakerstu/openmrn@e1a5c7de Heartbeat support in the traction protocol (bakerstu/openmrn#485) bakerstu/openmrn@ed1b12c9 Adds send_message helper. (bakerstu/openmrn#484) bakerstu/openmrn@9741a0d6 Fix logic expression bug. bakerstu/openmrn@16eb593b Adds support for E-Stop query to trains. (bakerstu/openmrn#483) bakerstu/openmrn@f0f8e5ba Moves broadcast time server unit test to fake clocks. (bakerstu/openmrn#482) bakerstu/openmrn@20aaa2e6 Adds a half zero bit after the railcom cutout (bakerstu/openmrn#412) bakerstu/openmrn@b41e8b5c Fix incorrect global AME replies. (bakerstu/openmrn#480) bakerstu/openmrn@f3609a0b Adds a fake clock utility. (bakerstu/openmrn#481) bakerstu/openmrn@d70607ec Adds a method to send out a global alias mapping enquiry to the bus. (bakerstu/openmrn#479) bakerstu/openmrn@b2f90c9f Fixes todo in the bulk alias allocator that makes it actually operable. (bakerstu/openmrn#471) bakerstu/openmrn@b99cbea4 CC32xx set mac feature (bakerstu/openmrn#478) bakerstu/openmrn@d3f829ce ESP32: Prep for Arduino-esp32 v1.0.5 (bakerstu/openmrn#473) bakerstu/openmrn@2e5358eb Adjust DeviceBuffer to use OPENMRN_FEATURE_DEVTAB instead of ARDUINO define. (bakerstu/openmrn#474) bakerstu/openmrn@a22e3cbf Supports nullptr as argument to the node init flow. (bakerstu/openmrn#472) bakerstu/openmrn@3f837c1a Fix compile errors. bakerstu/openmrn@2bcdef3d Add support for C++11 compilation of std::make_unique() (bakerstu/openmrn#470) bakerstu/openmrn@7311f43e Stores reserved aliases in the local alias cache (bakerstu/openmrn#467) bakerstu/openmrn@6e669afd Adds more test helpers to run code on the main executor. (bakerstu/openmrn#468) bakerstu/openmrn@028f3d42 Fix console session close bug (bakerstu/openmrn#466) bakerstu/openmrn@c044aeda update to C++14 for cov and Linux.x86 targets. (bakerstu/openmrn#465) bakerstu/openmrn@51b6cfb3 Protect unimplemented POSIX calls in BroadcastTime::clear_timezone() to allow OpenMRNLite to compile on Arduino flavored platforms. (bakerstu/openmrn#464) bakerstu/openmrn@0626614b Fix OpenMRNLite problem with DEFAULT symbol (bakerstu/openmrn#462) bakerstu/openmrn@d782b0a1 Bulk alias allocator (bakerstu/openmrn#463) bakerstu/openmrn@6b8fba2f fixes comments. bakerstu/openmrn@c57b098f Fixes comments. bakerstu/openmrn@de178251 Fix comments. bakerstu/openmrn@4170f433 fix whitespace bakerstu/openmrn@60e854f8 Adds support for conflict handling in the bulk alias allocator. bakerstu/openmrn@06841e8a adds time expectation bakerstu/openmrn@6f36b83a Adds basic test for bulk allocator. bakerstu/openmrn@3cde7630 fixes bugs bakerstu/openmrn@4116fcc3 Adds a test facility to invoke a flow without waiting for the result. bakerstu/openmrn@7fc0ef2b Adds bulk allocator to the test. bakerstu/openmrn@2ada5344 Small changes to alias allocator: - adds accessor to get the node id used for allocation. - fixes todo to check whether newly generated aliases are in the existing caches. - adds ability to get the next proposed alias from the sequence. bakerstu/openmrn@983502f2 fix whitespace bakerstu/openmrn@9ad85a61 Adds interface and implementation to bulk alias allocator. bakerstu/openmrn@c867668e Adds config option for how much memory should the bulk alias allocator use. bakerstu/openmrn@44f31ee3 Checks throttle node pointer upon speed reply messages. bakerstu/openmrn@065bbc18 Query function for throttles. (bakerstu/openmrn#461) bakerstu/openmrn@cb7ec934 Implements reads for virtual f0 functions. (bakerstu/openmrn#460) bakerstu/openmrn@7635ce27 Adds directional F0 functions to the DCC locomotives. (bakerstu/openmrn#459) bakerstu/openmrn@b58eec9e Adds a counter for DCC signal transitions. (bakerstu/openmrn#458) bakerstu/openmrn@60dcdb0e Adds traction node listener policy callback (bakerstu/openmrn#456) bakerstu/openmrn@d8d22831 Fixes make warning. bakerstu/openmrn@d8af0f21 Adds a flag to indicate consist messages (bakerstu/openmrn#455) bakerstu/openmrn@7d04c7b9 Add return statement in hard fault handler. bakerstu/openmrn@5e8df0cc Revision script fixes (bakerstu/openmrn#453) bakerstu/openmrn@9e472469 Add node brownout and ident event constants (bakerstu/openmrn#454) bakerstu/openmrn@7896fc0f Adds a progress callback to the memory config client. (bakerstu/openmrn#450) bakerstu/openmrn@f6264bc5 Always send back a feedback packet, even if empty. (bakerstu/openmrn#452) bakerstu/openmrn@be87ee74 Adds SNIPClient, a helper library for sending SNIP requests to remote nodes. (bakerstu/openmrn#451) bakerstu/openmrn@0e2303aa Keeps track of the number of connected clients (bakerstu/openmrn#448) bakerstu/openmrn@7f4522d3 Adds an accessor to fetch the number of connected stations. (bakerstu/openmrn#446) bakerstu/openmrn@72906206 Always report from railcom driver (bakerstu/openmrn#445) bakerstu/openmrn@594910d0 Simplifies the synchronous run test utility. bakerstu/openmrn@be0cc332 Fix incorrect includes (bakerstu/openmrn#444) bakerstu/openmrn@21c97b49 Adds a stride scheduler to split bandwidth between two sources of traffic. (bakerstu/openmrn#443) bakerstu/openmrn@7f67efb0 Adds railcom driver middle-cutout hook (bakerstu/openmrn#439) bakerstu/openmrn@abba7dd7 Adds an intermediate stage in closing an fd. (bakerstu/openmrn#441) bakerstu/openmrn@83a76c3c Fixes deletion order in CC32xx socket shutdown. (bakerstu/openmrn#442) bakerstu/openmrn@b715b9b2 Fixes compile errors on bracz-railcom board. bakerstu/openmrn@1721b05e Adds activity LED support. (bakerstu/openmrn#438) bakerstu/openmrn@ad4c454b Minor tweaks to the CC32xx WiFi driver to allow better setting of the AP configuration. (bakerstu/openmrn#437) bakerstu/openmrn@4e3f14be Adds support for using the stored setting for AP/STA mode. (bakerstu/openmrn#436) bakerstu/openmrn@fcf9b135 Adds an approximate LRU counting algorithm. (bakerstu/openmrn#435) bakerstu/openmrn@789f9151 Makes the total number of open file descriptors configurable. (bakerstu/openmrn#434) bakerstu/openmrn@1060956d Fixes consistency issues in the AliasCache. (bakerstu/openmrn#433) bakerstu/openmrn@e1b0c2d1 Optimizes memory usage of AliasCache (bakerstu/openmrn#432) bakerstu/openmrn@7ec055a2 Refactors the known nodes' registry from TrainService into a separate class. (bakerstu/openmrn#431) bakerstu/openmrn@c832de7f Fixes compilation of boards/bracz-railcom (bakerstu/openmrn#429) bakerstu/openmrn@368a0c4b Makes TrainNode pure abstract. (bakerstu/openmrn#430) bakerstu/openmrn@9d88c359 Refactors all usages of strncpy. (bakerstu/openmrn#425) bakerstu/openmrn@6013d0ed Completes VirtualMemorySpace implementation (bakerstu/openmrn#428) bakerstu/openmrn@c49aba68 Adds missing trailing newline to the crash output macro. bakerstu/openmrn@d350d1b2 Ensures that repeated groups are covering the range they cover. (bakerstu/openmrn#426) bakerstu/openmrn@beb5f198 Adds string to hex to format_utils. (bakerstu/openmrn#421) bakerstu/openmrn@9ca21162 Moving socket listener stack size and backlog count to constants. (bakerstu/openmrn#423) bakerstu/openmrn@8c547bc8 Merge pull request #422 from bakerstu/bracz-hub-socketcan bakerstu/openmrn@b1849d14 Replace avahi mdns with a symlink. bakerstu/openmrn@00eb2c26 Merge remote-tracking branch 'alex/master' into bracz-socketcan-merge bakerstu/openmrn@c1271c11 adds documentation usage. bakerstu/openmrn@6eb5206e fixes include order problems. bakerstu/openmrn@02aea797 fix whitespace. bakerstu/openmrn@10ce4bd6 Adds SocketCan support to the openmrn hub. This enables running the hub on a BeagleBone or a Raspberry Pi with a CAN HAT. All other options are still usable, including repeating traffic between a SocketCAN port and a TCP client, or a SocketCAN port and a USB port via GridConnect. bakerstu/openmrn@d14cf8b2 Adds support to reading and writing numeric variables to the VirtualMemorySpace. (bakerstu/openmrn#420) bakerstu/openmrn@1e82c83f Adds handling of repetitions to the virtual memory space. (bakerstu/openmrn#419) bakerstu/openmrn@1225b676 Adds a partial implementation of VirtualMemorySpace (bakerstu/openmrn#418) bakerstu/openmrn@6920d7e3 Adds the ability to run tests under performance profiling. (bakerstu/openmrn#416) bakerstu/openmrn@95b30e23 Adds a railcom debug flow that sends a pulse to a GPIO when it sees a valid packet. (bakerstu/openmrn#415) bakerstu/openmrn@5c2b3a08 Make dead code into less dead code. (bakerstu/openmrn#417) bakerstu/openmrn@844b4671 Bakerstu macos cleanup (bakerstu/openmrn#409) bakerstu/openmrn@05399d73 Traction service unregister; consist updates. (bakerstu/openmrn#414) bakerstu/openmrn@57f28122 Add linux.aarch64 target. (bakerstu/openmrn#413) bakerstu/openmrn@a2dee1e8 Adds a single-file implementation of the newlib file APIs for Arduino. (bakerstu/openmrn#408) bakerstu/openmrn@d5a3d9c3 Feature macro work to remove ARDUINO ifdefs. (bakerstu/openmrn#407) bakerstu/openmrn@74d22f91 Update main.cxx bakerstu/openmrn@8af69a5d Added SocketCAN support to the hub application on the Raspberry Pi bakerstu/openmrn@ce9cb5bf Added SocketCAN support to the hub application on the Raspberry Pi bakerstu/openmrn@239d1392 Added SocketCAN support to the hub application on the Raspberry Pi
1 parent 2e244d8 commit 4e33fe5

File tree

231 files changed

+22916
-4138
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

231 files changed

+22916
-4138
lines changed
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
wifi_params.cpp
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,286 @@
1+
/** \copyright
2+
* Copyright (c) 2021, Mike Dunston
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions are met:
7+
*
8+
* - Redistributions of source code must retain the above copyright notice,
9+
* this list of conditions and the following disclaimer.
10+
*
11+
* - Redistributions in binary form must reproduce the above copyright notice,
12+
* this list of conditions and the following disclaimer in the documentation
13+
* and/or other materials provided with the distribution.
14+
*
15+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
19+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25+
* POSSIBILITY OF SUCH DAMAGE.
26+
*
27+
* \file ESP32C3CanLoadTest.ino
28+
*
29+
* Main file for the ESP32-C3 CAN Load Test application.
30+
*
31+
* @author Mike Dunston
32+
* @date 2 May 2021
33+
*/
34+
35+
#include <Arduino.h>
36+
#include <SPIFFS.h>
37+
#include <esp_spi_flash.h>
38+
39+
#include <OpenMRNLite.h>
40+
#include <openlcb/TcpDefs.hxx>
41+
42+
#include <openlcb/MultiConfiguredConsumer.hxx>
43+
#include <utils/GpioInitializer.hxx>
44+
#include <freertos_drivers/arduino/CpuLoad.hxx>
45+
46+
// Pick an operating mode below, if you select USE_WIFI it will expose
47+
// this node on WIFI if you select USE_TWAI, this node will be available
48+
// on CAN.
49+
// Enabling both options will allow the ESP32 to be accessible from
50+
// both WiFi and CAN interfaces.
51+
52+
#define USE_WIFI
53+
//#define USE_TWAI
54+
55+
// Uncomment USE_TWAI_SELECT to enable the usage of select() for the TWAI
56+
// interface.
57+
//#define USE_TWAI_SELECT
58+
59+
// uncomment the line below to have all packets printed to the Serial
60+
// output. This is not recommended for production deployment.
61+
//#define PRINT_PACKETS
62+
63+
// If USE_TWAI_SELECT or USE_TWAI_ASYNC is enabled but USE_TWAI is not, enable
64+
// USE_TWAI.
65+
#if defined(USE_TWAI_SELECT) && !defined(USE_TWAI)
66+
#define USE_TWAI
67+
#endif // USE_TWAI_SELECT && !USE_TWAI
68+
69+
#include "config.h"
70+
71+
/// This is the node id to assign to this device, this must be unique
72+
/// on the CAN bus.
73+
static constexpr uint64_t NODE_ID = UINT64_C(0x05010101182c);
74+
75+
#if defined(USE_WIFI)
76+
// Configuring WiFi accesspoint name and password
77+
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
78+
// There are two options:
79+
// 1) edit the sketch to set this information just below. Use quotes:
80+
// const char* ssid = "linksys";
81+
// const char* password = "superSecret";
82+
// 2) add a new file to the sketch folder called something.cpp with the
83+
// following contents:
84+
// #include <OpenMRNLite.h>
85+
//
86+
// char WIFI_SSID[] = "linksys";
87+
// char WIFI_PASS[] = "theTRUEsupers3cr3t";
88+
89+
/// This is the name of the WiFi network (access point) to connect to.
90+
const char *ssid = WIFI_SSID;
91+
92+
/// Password of the wifi network.
93+
const char *password = WIFI_PASS;
94+
95+
/// This is the hostname which the ESP32 will advertise via mDNS, it should be
96+
/// unique.
97+
const char *hostname = "esp32mrn";
98+
99+
OVERRIDE_CONST(gridconnect_buffer_size, 3512);
100+
//OVERRIDE_CONST(gridconnect_buffer_delay_usec, 200000);
101+
OVERRIDE_CONST(gridconnect_buffer_delay_usec, 2000);
102+
OVERRIDE_CONST(gc_generate_newlines, CONSTANT_TRUE);
103+
OVERRIDE_CONST(executor_select_prescaler, 60);
104+
OVERRIDE_CONST(gridconnect_bridge_max_outgoing_packets, 2);
105+
106+
#endif // USE_WIFI
107+
108+
#if defined(USE_TWAI)
109+
// This is the ESP32-C3 pin connected to the SN65HVD23x/MCP2551 R (RX) pin.
110+
// Note: Any pin can be used for this other than 11-17 which are connected to
111+
// the onboard flash.
112+
// Note: Adjusting this pin assignment will require updating the GPIO_PIN
113+
// declarations below for input/outputs.
114+
constexpr gpio_num_t TWAI_RX_PIN = GPIO_NUM_18;
115+
116+
// This is the ESP32-C3 pin connected to the SN65HVD23x/MCP2551 D (TX) pin.
117+
// Note: Any pin can be used for this other than 11-17 which are connected to
118+
// the onboard flash.
119+
// Note: Adjusting this pin assignment will require updating the GPIO_PIN
120+
// declarations below for input/outputs.
121+
constexpr gpio_num_t TWAI_TX_PIN = GPIO_NUM_19;
122+
123+
#endif // USE_TWAI
124+
125+
// This is the primary entrypoint for the OpenMRN/LCC stack.
126+
OpenMRN openmrn(NODE_ID);
127+
128+
// This tracks the CPU usage of the ESP32-C3 through the usage of a hardware
129+
// timer that records what the CPU is currently executing roughly 163 times per
130+
// second.
131+
CpuLoad cpu_load;
132+
133+
// This will report the usage to the console output.
134+
CpuLoadLog cpu_log(openmrn.stack()->service());
135+
136+
// ConfigDef comes from config.h and is specific to this particular device and
137+
// target. It defines the layout of the configuration memory space and is also
138+
// used to generate the cdi.xml file. Here we instantiate the configuration
139+
// layout. The argument of offset zero is ignored and will be removed later.
140+
static constexpr openlcb::ConfigDef cfg(0);
141+
142+
#if defined(USE_WIFI)
143+
Esp32WiFiManager wifi_mgr(ssid, password, openmrn.stack(), cfg.seg().wifi());
144+
#endif // USE_WIFI
145+
146+
#if defined(USE_TWAI)
147+
Esp32HardwareTwai twai(TWAI_RX_PIN, TWAI_TX_PIN);
148+
#endif // USE_TWAI
149+
150+
// This will perform the factory reset procedure for this node's configuration
151+
// items.
152+
//
153+
// The node name and description will be set to the SNIP model name field
154+
// value.
155+
// Descriptions for intputs and outputs will be set to a blank string, input
156+
// debounce parameters will be set to default values.
157+
class FactoryResetHelper : public DefaultConfigUpdateListener {
158+
public:
159+
UpdateAction apply_configuration(int fd, bool initial_load,
160+
BarrierNotifiable *done) OVERRIDE {
161+
AutoNotify n(done);
162+
return UPDATED;
163+
}
164+
165+
void factory_reset(int fd) override
166+
{
167+
cfg.userinfo().name().write(fd, openlcb::SNIP_STATIC_DATA.model_name);
168+
cfg.userinfo().description().write(
169+
fd, openlcb::SNIP_STATIC_DATA.model_name);
170+
}
171+
} factory_reset_helper;
172+
173+
namespace openlcb
174+
{
175+
// Name of CDI.xml to generate dynamically.
176+
const char CDI_FILENAME[] = "/spiffs/cdi.xml";
177+
178+
// This will stop openlcb from exporting the CDI memory space upon start.
179+
extern const char CDI_DATA[] = "";
180+
181+
// Path to where OpenMRN should persist general configuration data.
182+
extern const char *const CONFIG_FILENAME = "/spiffs/openlcb_config";
183+
184+
// The size of the memory space to export over the above device.
185+
extern const size_t CONFIG_FILE_SIZE = cfg.seg().size() + cfg.seg().offset();
186+
187+
// Default to store the dynamic SNIP data is stored in the same persistant
188+
// data file as general configuration data.
189+
extern const char *const SNIP_DYNAMIC_FILENAME = CONFIG_FILENAME;
190+
}
191+
192+
// Callback function for the hardware timer configured to fire roughly 163
193+
// times per second.
194+
void ARDUINO_ISR_ATTR record_cpu_usage()
195+
{
196+
#if CONFIG_ARDUINO_ISR_IRAM
197+
// if the ISR is called with flash disabled we can not safely recored the
198+
// cpu usage.
199+
if (!spi_flash_cache_enabled())
200+
{
201+
return;
202+
}
203+
#endif
204+
// Retrieves the vtable pointer from the currently running executable.
205+
unsigned *pp = (unsigned *)openmrn.stack()->executor()->current();
206+
cpuload_tick(pp ? pp[0] | 1 : 0);
207+
}
208+
209+
void setup()
210+
{
211+
Serial.begin(115200L);
212+
LOG(INFO, "[Node] ID: %s", uint64_to_string_hex(NODE_ID).c_str());
213+
LOG(INFO, "[SNIP] version:%d, manufacturer:%s, model:%s, hw-v:%s, sw-v:%s"
214+
, openlcb::SNIP_STATIC_DATA.version
215+
, openlcb::SNIP_STATIC_DATA.manufacturer_name
216+
, openlcb::SNIP_STATIC_DATA.model_name
217+
, openlcb::SNIP_STATIC_DATA.hardware_version
218+
, openlcb::SNIP_STATIC_DATA.software_version);
219+
220+
// Register hardware timer zero to use a 1Mhz resolution and to count up
221+
// from zero when the timer triggers.
222+
auto timer = timerBegin(0, 80, true);
223+
// Attach our callback function to be called when the timer is ready to
224+
// fire. Note that the edge parameter is not used/supported on the
225+
// ESP32-C3.
226+
timerAttachInterrupt(timer, record_cpu_usage, true);
227+
// Configure the trigger point to be roughly 163 times per second.
228+
timerAlarmWrite(timer, 1000000/163, true);
229+
// Enable the timer.
230+
timerAlarmEnable(timer);
231+
232+
// Initialize the SPIFFS filesystem as our persistence layer
233+
if (!SPIFFS.begin())
234+
{
235+
LOG(WARNING, "SPIFFS failed to mount, attempting to format and remount");
236+
if (!SPIFFS.begin(true))
237+
{
238+
LOG_ERROR("SPIFFS mount failed even with format, giving up!");
239+
while (1)
240+
{
241+
// Unable to start SPIFFS successfully, give up and wait
242+
// for WDT to kick in
243+
}
244+
}
245+
}
246+
247+
// Create the CDI.xml dynamically
248+
openmrn.create_config_descriptor_xml(cfg, openlcb::CDI_FILENAME);
249+
250+
// Create the default internal configuration file
251+
openmrn.stack()->create_config_file_if_needed(cfg.seg().internal_config(),
252+
openlcb::CANONICAL_VERSION, openlcb::CONFIG_FILE_SIZE);
253+
254+
#if defined(USE_TWAI)
255+
twai.hw_init();
256+
#endif // USE_TWAI
257+
258+
// Start the OpenMRN stack
259+
openmrn.begin();
260+
261+
#if defined(PRINT_PACKETS)
262+
// Dump all packets as they are sent/received.
263+
// Note: This should not be enabled in deployed nodes as it will
264+
// have performance impact.
265+
openmrn.stack()->print_all_packets();
266+
#endif // PRINT_PACKETS
267+
268+
#if defined(USE_TWAI_SELECT)
269+
// add TWAI driver with select() usage
270+
openmrn.add_can_port_select("/dev/twai/twai0");
271+
272+
// start executor thread since this is required for select() to work in the
273+
// OpenMRN executor.
274+
openmrn.start_executor_thread();
275+
#else
276+
// add TWAI driver with non-blocking usage
277+
openmrn.add_can_port_async("/dev/twai/twai0");
278+
#endif // USE_TWAI_SELECT
279+
}
280+
281+
void loop()
282+
{
283+
// Call the OpenMRN executor, this needs to be done as often
284+
// as possible from the loop() method.
285+
openmrn.loop();
286+
}

examples/ESP32C3CanLoadTest/config.h

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#ifndef _ARDUINO_EXAMPLE_ESP32IOBOARD_CONFIG_H_
2+
#define _ARDUINO_EXAMPLE_ESP32IOBOARD_CONFIG_H_
3+
4+
#include "openlcb/ConfiguredConsumer.hxx"
5+
#include "openlcb/ConfiguredProducer.hxx"
6+
#include "openlcb/ConfigRepresentation.hxx"
7+
#include "openlcb/MemoryConfig.hxx"
8+
9+
#include "freertos_drivers/esp32/Esp32WiFiConfiguration.hxx"
10+
11+
// catch invalid configuration at compile time
12+
#if !defined(USE_TWAI) && !defined(USE_WIFI)
13+
#error "Invalid configuration detected, USE_CAN or USE_WIFI must be defined."
14+
#endif
15+
16+
namespace openlcb
17+
{
18+
19+
/// Defines the identification information for the node. The arguments are:
20+
///
21+
/// - 4 (version info, always 4 by the standard
22+
/// - Manufacturer name
23+
/// - Model name
24+
/// - Hardware version
25+
/// - Software version
26+
///
27+
/// This data will be used for all purposes of the identification:
28+
///
29+
/// - the generated cdi.xml will include this data
30+
/// - the Simple Node Ident Info Protocol will return this data
31+
/// - the ACDI memory space will contain this data.
32+
extern const SimpleNodeStaticValues SNIP_STATIC_DATA =
33+
{
34+
4,
35+
"OpenMRN",
36+
#if defined(USE_WIFI) && !defined(USE_TWAI)
37+
"Arduino Load Test (WiFi)",
38+
#elif defined(USE_TWAI) && !defined(USE_WIFI)
39+
"Arduino Load Test (TWAI)",
40+
#else
41+
"Arduino Load Test (WiFi/TWAI)",
42+
#endif
43+
ARDUINO_VARIANT,
44+
"1.00"
45+
};
46+
47+
/// Modify this value every time the EEPROM needs to be cleared on the node
48+
/// after an update.
49+
static constexpr uint16_t CANONICAL_VERSION = 0x100b;
50+
51+
/// Defines the main segment in the configuration CDI. This is laid out at
52+
/// origin 128 to give space for the ACDI user data at the beginning.
53+
CDI_GROUP(IoBoardSegment, Segment(MemoryConfigDefs::SPACE_CONFIG), Offset(128));
54+
/// Each entry declares the name of the current entry, then the type and then
55+
/// optional arguments list.
56+
CDI_GROUP_ENTRY(internal_config, InternalConfigData);
57+
#if defined(USE_WIFI)
58+
CDI_GROUP_ENTRY(wifi, WiFiConfiguration, Name("WiFi Configuration"));
59+
#endif
60+
CDI_GROUP_END();
61+
62+
/// The main structure of the CDI. ConfigDef is the symbol we use in main.cxx
63+
/// to refer to the configuration defined here.
64+
CDI_GROUP(ConfigDef, MainCdi());
65+
/// Adds the <identification> tag with the values from SNIP_STATIC_DATA above.
66+
CDI_GROUP_ENTRY(ident, Identification);
67+
/// Adds an <acdi> tag.
68+
CDI_GROUP_ENTRY(acdi, Acdi);
69+
/// Adds a segment for changing the values in the ACDI user-defined
70+
/// space. UserInfoSegment is defined in the system header.
71+
CDI_GROUP_ENTRY(userinfo, UserInfoSegment, Name("User Info"));
72+
/// Adds the main configuration segment.
73+
CDI_GROUP_ENTRY(seg, IoBoardSegment, Name("Settings"));
74+
CDI_GROUP_END();
75+
76+
} // namespace openlcb
77+
78+
#endif // _ARDUINO_EXAMPLE_ESP32IOBOARD_CONFIG_H_

examples/ESP32C3IOBoard/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
wifi_params.cpp

0 commit comments

Comments
 (0)