Skip to content

Commit

Permalink
Downintegrate openmrn to 03af22aeccf88979acbe75b710008bd3ec4ac268 (20…
Browse files Browse the repository at this point in the history
…23-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
  • Loading branch information
balazsracz committed Sep 23, 2023
1 parent 2e244d8 commit 4e33fe5
Show file tree
Hide file tree
Showing 231 changed files with 22,916 additions and 4,138 deletions.
1 change: 1 addition & 0 deletions examples/ESP32C3CanLoadTest/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
wifi_params.cpp
286 changes: 286 additions & 0 deletions examples/ESP32C3CanLoadTest/ESP32C3CanLoadTest.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,286 @@
/** \copyright
* Copyright (c) 2021, Mike Dunston
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* - Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* \file ESP32C3CanLoadTest.ino
*
* Main file for the ESP32-C3 CAN Load Test application.
*
* @author Mike Dunston
* @date 2 May 2021
*/

#include <Arduino.h>
#include <SPIFFS.h>
#include <esp_spi_flash.h>

#include <OpenMRNLite.h>
#include <openlcb/TcpDefs.hxx>

#include <openlcb/MultiConfiguredConsumer.hxx>
#include <utils/GpioInitializer.hxx>
#include <freertos_drivers/arduino/CpuLoad.hxx>

// Pick an operating mode below, if you select USE_WIFI it will expose
// this node on WIFI if you select USE_TWAI, this node will be available
// on CAN.
// Enabling both options will allow the ESP32 to be accessible from
// both WiFi and CAN interfaces.

#define USE_WIFI
//#define USE_TWAI

// Uncomment USE_TWAI_SELECT to enable the usage of select() for the TWAI
// interface.
//#define USE_TWAI_SELECT

// uncomment the line below to have all packets printed to the Serial
// output. This is not recommended for production deployment.
//#define PRINT_PACKETS

// If USE_TWAI_SELECT or USE_TWAI_ASYNC is enabled but USE_TWAI is not, enable
// USE_TWAI.
#if defined(USE_TWAI_SELECT) && !defined(USE_TWAI)
#define USE_TWAI
#endif // USE_TWAI_SELECT && !USE_TWAI

#include "config.h"

/// This is the node id to assign to this device, this must be unique
/// on the CAN bus.
static constexpr uint64_t NODE_ID = UINT64_C(0x05010101182c);

#if defined(USE_WIFI)
// Configuring WiFi accesspoint name and password
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// There are two options:
// 1) edit the sketch to set this information just below. Use quotes:
// const char* ssid = "linksys";
// const char* password = "superSecret";
// 2) add a new file to the sketch folder called something.cpp with the
// following contents:
// #include <OpenMRNLite.h>
//
// char WIFI_SSID[] = "linksys";
// char WIFI_PASS[] = "theTRUEsupers3cr3t";

/// This is the name of the WiFi network (access point) to connect to.
const char *ssid = WIFI_SSID;

/// Password of the wifi network.
const char *password = WIFI_PASS;

/// This is the hostname which the ESP32 will advertise via mDNS, it should be
/// unique.
const char *hostname = "esp32mrn";

OVERRIDE_CONST(gridconnect_buffer_size, 3512);
//OVERRIDE_CONST(gridconnect_buffer_delay_usec, 200000);
OVERRIDE_CONST(gridconnect_buffer_delay_usec, 2000);
OVERRIDE_CONST(gc_generate_newlines, CONSTANT_TRUE);
OVERRIDE_CONST(executor_select_prescaler, 60);
OVERRIDE_CONST(gridconnect_bridge_max_outgoing_packets, 2);

#endif // USE_WIFI

#if defined(USE_TWAI)
// This is the ESP32-C3 pin connected to the SN65HVD23x/MCP2551 R (RX) pin.
// Note: Any pin can be used for this other than 11-17 which are connected to
// the onboard flash.
// Note: Adjusting this pin assignment will require updating the GPIO_PIN
// declarations below for input/outputs.
constexpr gpio_num_t TWAI_RX_PIN = GPIO_NUM_18;

// This is the ESP32-C3 pin connected to the SN65HVD23x/MCP2551 D (TX) pin.
// Note: Any pin can be used for this other than 11-17 which are connected to
// the onboard flash.
// Note: Adjusting this pin assignment will require updating the GPIO_PIN
// declarations below for input/outputs.
constexpr gpio_num_t TWAI_TX_PIN = GPIO_NUM_19;

#endif // USE_TWAI

// This is the primary entrypoint for the OpenMRN/LCC stack.
OpenMRN openmrn(NODE_ID);

// This tracks the CPU usage of the ESP32-C3 through the usage of a hardware
// timer that records what the CPU is currently executing roughly 163 times per
// second.
CpuLoad cpu_load;

// This will report the usage to the console output.
CpuLoadLog cpu_log(openmrn.stack()->service());

// ConfigDef comes from config.h and is specific to this particular device and
// target. It defines the layout of the configuration memory space and is also
// used to generate the cdi.xml file. Here we instantiate the configuration
// layout. The argument of offset zero is ignored and will be removed later.
static constexpr openlcb::ConfigDef cfg(0);

#if defined(USE_WIFI)
Esp32WiFiManager wifi_mgr(ssid, password, openmrn.stack(), cfg.seg().wifi());
#endif // USE_WIFI

#if defined(USE_TWAI)
Esp32HardwareTwai twai(TWAI_RX_PIN, TWAI_TX_PIN);
#endif // USE_TWAI

// This will perform the factory reset procedure for this node's configuration
// items.
//
// The node name and description will be set to the SNIP model name field
// value.
// Descriptions for intputs and outputs will be set to a blank string, input
// debounce parameters will be set to default values.
class FactoryResetHelper : public DefaultConfigUpdateListener {
public:
UpdateAction apply_configuration(int fd, bool initial_load,
BarrierNotifiable *done) OVERRIDE {
AutoNotify n(done);
return UPDATED;
}

void factory_reset(int fd) override
{
cfg.userinfo().name().write(fd, openlcb::SNIP_STATIC_DATA.model_name);
cfg.userinfo().description().write(
fd, openlcb::SNIP_STATIC_DATA.model_name);
}
} factory_reset_helper;

namespace openlcb
{
// Name of CDI.xml to generate dynamically.
const char CDI_FILENAME[] = "/spiffs/cdi.xml";

// This will stop openlcb from exporting the CDI memory space upon start.
extern const char CDI_DATA[] = "";

// Path to where OpenMRN should persist general configuration data.
extern const char *const CONFIG_FILENAME = "/spiffs/openlcb_config";

// The size of the memory space to export over the above device.
extern const size_t CONFIG_FILE_SIZE = cfg.seg().size() + cfg.seg().offset();

// Default to store the dynamic SNIP data is stored in the same persistant
// data file as general configuration data.
extern const char *const SNIP_DYNAMIC_FILENAME = CONFIG_FILENAME;
}

// Callback function for the hardware timer configured to fire roughly 163
// times per second.
void ARDUINO_ISR_ATTR record_cpu_usage()
{
#if CONFIG_ARDUINO_ISR_IRAM
// if the ISR is called with flash disabled we can not safely recored the
// cpu usage.
if (!spi_flash_cache_enabled())
{
return;
}
#endif
// Retrieves the vtable pointer from the currently running executable.
unsigned *pp = (unsigned *)openmrn.stack()->executor()->current();
cpuload_tick(pp ? pp[0] | 1 : 0);
}

void setup()
{
Serial.begin(115200L);
LOG(INFO, "[Node] ID: %s", uint64_to_string_hex(NODE_ID).c_str());
LOG(INFO, "[SNIP] version:%d, manufacturer:%s, model:%s, hw-v:%s, sw-v:%s"
, openlcb::SNIP_STATIC_DATA.version
, openlcb::SNIP_STATIC_DATA.manufacturer_name
, openlcb::SNIP_STATIC_DATA.model_name
, openlcb::SNIP_STATIC_DATA.hardware_version
, openlcb::SNIP_STATIC_DATA.software_version);

// Register hardware timer zero to use a 1Mhz resolution and to count up
// from zero when the timer triggers.
auto timer = timerBegin(0, 80, true);
// Attach our callback function to be called when the timer is ready to
// fire. Note that the edge parameter is not used/supported on the
// ESP32-C3.
timerAttachInterrupt(timer, record_cpu_usage, true);
// Configure the trigger point to be roughly 163 times per second.
timerAlarmWrite(timer, 1000000/163, true);
// Enable the timer.
timerAlarmEnable(timer);

// Initialize the SPIFFS filesystem as our persistence layer
if (!SPIFFS.begin())
{
LOG(WARNING, "SPIFFS failed to mount, attempting to format and remount");
if (!SPIFFS.begin(true))
{
LOG_ERROR("SPIFFS mount failed even with format, giving up!");
while (1)
{
// Unable to start SPIFFS successfully, give up and wait
// for WDT to kick in
}
}
}

// Create the CDI.xml dynamically
openmrn.create_config_descriptor_xml(cfg, openlcb::CDI_FILENAME);

// Create the default internal configuration file
openmrn.stack()->create_config_file_if_needed(cfg.seg().internal_config(),
openlcb::CANONICAL_VERSION, openlcb::CONFIG_FILE_SIZE);

#if defined(USE_TWAI)
twai.hw_init();
#endif // USE_TWAI

// Start the OpenMRN stack
openmrn.begin();

#if defined(PRINT_PACKETS)
// Dump all packets as they are sent/received.
// Note: This should not be enabled in deployed nodes as it will
// have performance impact.
openmrn.stack()->print_all_packets();
#endif // PRINT_PACKETS

#if defined(USE_TWAI_SELECT)
// add TWAI driver with select() usage
openmrn.add_can_port_select("/dev/twai/twai0");

// start executor thread since this is required for select() to work in the
// OpenMRN executor.
openmrn.start_executor_thread();
#else
// add TWAI driver with non-blocking usage
openmrn.add_can_port_async("/dev/twai/twai0");
#endif // USE_TWAI_SELECT
}

void loop()
{
// Call the OpenMRN executor, this needs to be done as often
// as possible from the loop() method.
openmrn.loop();
}
78 changes: 78 additions & 0 deletions examples/ESP32C3CanLoadTest/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#ifndef _ARDUINO_EXAMPLE_ESP32IOBOARD_CONFIG_H_
#define _ARDUINO_EXAMPLE_ESP32IOBOARD_CONFIG_H_

#include "openlcb/ConfiguredConsumer.hxx"
#include "openlcb/ConfiguredProducer.hxx"
#include "openlcb/ConfigRepresentation.hxx"
#include "openlcb/MemoryConfig.hxx"

#include "freertos_drivers/esp32/Esp32WiFiConfiguration.hxx"

// catch invalid configuration at compile time
#if !defined(USE_TWAI) && !defined(USE_WIFI)
#error "Invalid configuration detected, USE_CAN or USE_WIFI must be defined."
#endif

namespace openlcb
{

/// Defines the identification information for the node. The arguments are:
///
/// - 4 (version info, always 4 by the standard
/// - Manufacturer name
/// - Model name
/// - Hardware version
/// - Software version
///
/// This data will be used for all purposes of the identification:
///
/// - the generated cdi.xml will include this data
/// - the Simple Node Ident Info Protocol will return this data
/// - the ACDI memory space will contain this data.
extern const SimpleNodeStaticValues SNIP_STATIC_DATA =
{
4,
"OpenMRN",
#if defined(USE_WIFI) && !defined(USE_TWAI)
"Arduino Load Test (WiFi)",
#elif defined(USE_TWAI) && !defined(USE_WIFI)
"Arduino Load Test (TWAI)",
#else
"Arduino Load Test (WiFi/TWAI)",
#endif
ARDUINO_VARIANT,
"1.00"
};

/// Modify this value every time the EEPROM needs to be cleared on the node
/// after an update.
static constexpr uint16_t CANONICAL_VERSION = 0x100b;

/// Defines the main segment in the configuration CDI. This is laid out at
/// origin 128 to give space for the ACDI user data at the beginning.
CDI_GROUP(IoBoardSegment, Segment(MemoryConfigDefs::SPACE_CONFIG), Offset(128));
/// Each entry declares the name of the current entry, then the type and then
/// optional arguments list.
CDI_GROUP_ENTRY(internal_config, InternalConfigData);
#if defined(USE_WIFI)
CDI_GROUP_ENTRY(wifi, WiFiConfiguration, Name("WiFi Configuration"));
#endif
CDI_GROUP_END();

/// The main structure of the CDI. ConfigDef is the symbol we use in main.cxx
/// to refer to the configuration defined here.
CDI_GROUP(ConfigDef, MainCdi());
/// Adds the <identification> tag with the values from SNIP_STATIC_DATA above.
CDI_GROUP_ENTRY(ident, Identification);
/// Adds an <acdi> tag.
CDI_GROUP_ENTRY(acdi, Acdi);
/// Adds a segment for changing the values in the ACDI user-defined
/// space. UserInfoSegment is defined in the system header.
CDI_GROUP_ENTRY(userinfo, UserInfoSegment, Name("User Info"));
/// Adds the main configuration segment.
CDI_GROUP_ENTRY(seg, IoBoardSegment, Name("Settings"));
CDI_GROUP_END();

} // namespace openlcb

#endif // _ARDUINO_EXAMPLE_ESP32IOBOARD_CONFIG_H_
1 change: 1 addition & 0 deletions examples/ESP32C3IOBoard/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
wifi_params.cpp
Loading

0 comments on commit 4e33fe5

Please sign in to comment.