gitextract_caxq2qkb/ ├── .gitignore ├── Firmware/ │ ├── ConfigSamples/ │ │ ├── BTT_Octopus/ │ │ │ ├── OCTOPUS_ENDER3/ │ │ │ │ └── config.txt │ │ │ └── OCTOPUS_xyz/ │ │ │ └── config.txt │ │ ├── BTT_SKRv13/ │ │ │ └── config.txt │ │ ├── BTT_SKRv14/ │ │ │ ├── SKRv14_3dp/ │ │ │ │ └── config.txt │ │ │ ├── SKRv14_TMC2209/ │ │ │ │ └── config.txt │ │ │ └── SKRv14_xyz/ │ │ │ └── config.txt │ │ ├── BTT_SKRv2/ │ │ │ ├── SKRv2_TMC2209/ │ │ │ │ └── config.txt │ │ │ ├── SKRv2_ender3/ │ │ │ │ └── config.txt │ │ │ └── SKRv2_xyz/ │ │ │ └── config.txt │ │ ├── Fysetc_Spider/ │ │ │ └── config.txt │ │ ├── Fysetc_Spider_King/ │ │ │ └── config.txt │ │ ├── Hypercube-evolution/ │ │ │ └── config.txt │ │ ├── MKS_Monster8/ │ │ │ └── config.txt │ │ ├── MKS_Robin_E3/ │ │ │ └── Robin_E3/ │ │ │ └── config.txt │ │ ├── MKS_Sbase/ │ │ │ └── MKS Sbase/ │ │ │ ├── Ender3/ │ │ │ │ └── config.txt-Ender3 │ │ │ └── config.txt │ │ └── TMC2209 Example/ │ │ ├── SKRv14_TMC2209/ │ │ │ └── config.txt │ │ └── SKRv2_TMC2209/ │ │ └── config.txt │ └── FirmwareSource/ │ ├── .gitignore │ ├── Remora-OS5/ │ │ ├── .gitignore │ │ ├── .mbed │ │ ├── MODDMA.lib │ │ ├── README.md │ │ ├── SoftwareSerial/ │ │ │ ├── SoftwareSerial.cpp │ │ │ └── SoftwareSerial.h │ │ ├── TARGET_OCTOPUS_429/ │ │ │ ├── PeripheralNames.h │ │ │ ├── PeripheralPins.c │ │ │ ├── PinNames.h │ │ │ └── system_clock.c │ │ ├── TARGET_OCTOPUS_446/ │ │ │ ├── PeripheralNames.h │ │ │ ├── PeripheralPins.c │ │ │ ├── PinNames.h │ │ │ └── system_clock.c │ │ ├── TARGET_ROBIN_E3/ │ │ │ ├── PeripheralNames.h │ │ │ ├── PeripheralPins.c │ │ │ ├── PinNames.h │ │ │ └── system_clock.c │ │ ├── TARGET_SKRV1_4/ │ │ │ ├── drivers/ │ │ │ │ ├── comms/ │ │ │ │ │ ├── MODDMA/ │ │ │ │ │ │ ├── .hg/ │ │ │ │ │ │ │ ├── 00changelog.i │ │ │ │ │ │ │ ├── branch │ │ │ │ │ │ │ ├── cache/ │ │ │ │ │ │ │ │ ├── branch2-base │ │ │ │ │ │ │ │ ├── rbc-names-v1 │ │ │ │ │ │ │ │ ├── rbc-revs-v1 │ │ │ │ │ │ │ │ └── tags2-visible │ │ │ │ │ │ │ ├── dirstate │ │ │ │ │ │ │ ├── hgrc │ │ │ │ │ │ │ ├── requires │ │ │ │ │ │ │ ├── store/ │ │ │ │ │ │ │ │ ├── 00changelog.i │ │ │ │ │ │ │ │ ├── 00manifest.i │ │ │ │ │ │ │ │ ├── data/ │ │ │ │ │ │ │ │ │ ├── _c_o_n_f_i_g.h.i │ │ │ │ │ │ │ │ │ ├── _change_log.c.i │ │ │ │ │ │ │ │ │ ├── _d_a_t_a_l_u_t_s.cpp.i │ │ │ │ │ │ │ │ │ ├── _i_n_i_t.cpp.i │ │ │ │ │ │ │ │ │ ├── _m_o_d_d_m_a.cpp.i │ │ │ │ │ │ │ │ │ ├── _m_o_d_d_m_a.h.i │ │ │ │ │ │ │ │ │ ├── _s_e_t_u_p.cpp.i │ │ │ │ │ │ │ │ │ ├── example1.cpp.i │ │ │ │ │ │ │ │ │ ├── example1.h.i │ │ │ │ │ │ │ │ │ ├── example2.cpp.i │ │ │ │ │ │ │ │ │ ├── example2.h.i │ │ │ │ │ │ │ │ │ ├── example3.h.i │ │ │ │ │ │ │ │ │ ├── example4.h.i │ │ │ │ │ │ │ │ │ └── iomacros.h.i │ │ │ │ │ │ │ │ └── fncache │ │ │ │ │ │ │ ├── thgstatus │ │ │ │ │ │ │ └── wcache/ │ │ │ │ │ │ │ └── manifestfulltextcache │ │ │ │ │ │ ├── CONFIG.h │ │ │ │ │ │ ├── ChangeLog.c │ │ │ │ │ │ ├── DATALUTS.cpp │ │ │ │ │ │ ├── INIT.cpp │ │ │ │ │ │ ├── MODDMA.cpp │ │ │ │ │ │ ├── MODDMA.h │ │ │ │ │ │ ├── SETUP.cpp │ │ │ │ │ │ ├── example1.h │ │ │ │ │ │ ├── example2.h │ │ │ │ │ │ ├── example3.h │ │ │ │ │ │ ├── example4.h │ │ │ │ │ │ └── iomacros.h │ │ │ │ │ ├── MODDMA.lib │ │ │ │ │ ├── RemoraComms.cpp │ │ │ │ │ └── RemoraComms.h │ │ │ │ ├── pin/ │ │ │ │ │ ├── pin.cpp │ │ │ │ │ └── pin.h │ │ │ │ └── qei/ │ │ │ │ ├── qeiDriver.cpp │ │ │ │ └── qeiDriver.h │ │ │ └── thread/ │ │ │ ├── createThreads.h │ │ │ ├── interrupt.cpp │ │ │ ├── interrupt.h │ │ │ ├── irqHandlers.h │ │ │ ├── pruThread.cpp │ │ │ ├── pruThread.h │ │ │ ├── qeiInterrupt.cpp │ │ │ ├── qeiInterrupt.h │ │ │ ├── timer.cpp │ │ │ └── timer.h │ │ ├── TARGET_SKRV2/ │ │ │ ├── PeripheralNames.h │ │ │ ├── PeripheralPins.c │ │ │ ├── PinNames.h │ │ │ └── system_clock.c │ │ ├── TARGET_SKR_MINI_E3/ │ │ │ ├── PeripheralNames.h │ │ │ ├── PeripheralPins.c │ │ │ ├── PinNames.h │ │ │ └── system_clock.c │ │ ├── TARGET_STM32F1/ │ │ │ ├── drivers/ │ │ │ │ ├── comms/ │ │ │ │ │ ├── RemoraComms.cpp │ │ │ │ │ └── RemoraComms.h │ │ │ │ ├── pin/ │ │ │ │ │ ├── pin.cpp │ │ │ │ │ └── pin.h │ │ │ │ └── qei/ │ │ │ │ ├── qeiDriver.cpp │ │ │ │ └── qeiDriver.h │ │ │ └── thread/ │ │ │ ├── createThreads.h │ │ │ ├── interrupt.cpp │ │ │ ├── interrupt.h │ │ │ ├── irqHandlers.h │ │ │ ├── pruThread.cpp │ │ │ ├── pruThread.h │ │ │ ├── timer.cpp │ │ │ └── timer.h │ │ ├── TARGET_STM32F103xC/ │ │ │ ├── device/ │ │ │ │ ├── TOOLCHAIN_ARM/ │ │ │ │ │ ├── startup_stm32f103xe.S │ │ │ │ │ └── stm32f103xe.sct │ │ │ │ ├── cmsis_nvic.h │ │ │ │ ├── stm32f103xe.h │ │ │ │ ├── stm32f1xx.h │ │ │ │ ├── system_stm32f1xx.h │ │ │ │ └── us_ticker_data.h │ │ │ └── objects.h │ │ ├── TARGET_STM32F4/ │ │ │ ├── drivers/ │ │ │ │ ├── SDIO/ │ │ │ │ │ ├── SDIOBlockDevice.cpp │ │ │ │ │ ├── SDIOBlockDevice.h │ │ │ │ │ ├── sdio_device.c │ │ │ │ │ └── sdio_device.h │ │ │ │ ├── comms/ │ │ │ │ │ ├── RemoraComms.cpp │ │ │ │ │ └── RemoraComms.h │ │ │ │ ├── pin/ │ │ │ │ │ ├── pin.cpp │ │ │ │ │ └── pin.h │ │ │ │ └── qei/ │ │ │ │ ├── qeiDriver.cpp │ │ │ │ └── qeiDriver.h │ │ │ └── thread/ │ │ │ ├── createThreads.h │ │ │ ├── interrupt.cpp │ │ │ ├── interrupt.h │ │ │ ├── irqHandlers.h │ │ │ ├── pruThread.cpp │ │ │ ├── pruThread.h │ │ │ ├── timer.cpp │ │ │ └── timer.h │ │ ├── TMCStepper/ │ │ │ ├── .hg/ │ │ │ │ ├── 00changelog.i │ │ │ │ ├── branch │ │ │ │ ├── cache/ │ │ │ │ │ ├── branch2-base │ │ │ │ │ ├── rbc-names-v1 │ │ │ │ │ ├── rbc-revs-v1 │ │ │ │ │ └── tags2-visible │ │ │ │ ├── dirstate │ │ │ │ ├── hgrc │ │ │ │ ├── requires │ │ │ │ ├── store/ │ │ │ │ │ ├── 00changelog.i │ │ │ │ │ ├── 00manifest.i │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── _c_h_o_p_c_o_n_f.cpp.i │ │ │ │ │ │ ├── _d_r_v___s_t_a_t_u_s.cpp.i │ │ │ │ │ │ ├── _g_c_o_n_f.cpp.i │ │ │ │ │ │ ├── _i_h_o_l_d___i_r_u_n.cpp.i │ │ │ │ │ │ ├── _p_w_m_c_o_n_f.cpp.i │ │ │ │ │ │ ├── _t_m_c2208__bitfields.h.i │ │ │ │ │ │ ├── _t_m_c2208_stepper.cpp.i │ │ │ │ │ │ ├── _t_m_c2209__bitfields.h.i │ │ │ │ │ │ ├── _t_m_c2209_stepper.cpp.i │ │ │ │ │ │ ├── _t_m_c___m_a_c_r_o_s.h.i │ │ │ │ │ │ ├── _t_m_c_stepper.cpp.i │ │ │ │ │ │ └── _t_m_c_stepper.h.i │ │ │ │ │ └── fncache │ │ │ │ ├── thgstatus │ │ │ │ └── wcache/ │ │ │ │ └── manifestfulltextcache │ │ │ ├── CHOPCONF.cpp │ │ │ ├── COOLCONF.cpp │ │ │ ├── DRV_STATUS.cpp │ │ │ ├── GCONF.cpp │ │ │ ├── IHOLD_IRUN.cpp │ │ │ ├── PWMCONF.cpp │ │ │ ├── TMC2208Stepper.cpp │ │ │ ├── TMC2208_bitfields.h │ │ │ ├── TMC2209Stepper.cpp │ │ │ ├── TMC2209_bitfields.h │ │ │ ├── TMCStepper.cpp │ │ │ ├── TMCStepper.h │ │ │ └── TMC_MACROS.h │ │ ├── WIZnetInterface-OS5/ │ │ │ ├── .hg/ │ │ │ │ ├── 00changelog.i │ │ │ │ ├── branch │ │ │ │ ├── cache/ │ │ │ │ │ ├── branch2-base │ │ │ │ │ ├── rbc-names-v1 │ │ │ │ │ ├── rbc-revs-v1 │ │ │ │ │ └── tags2-visible │ │ │ │ ├── dirstate │ │ │ │ ├── hgrc │ │ │ │ ├── requires │ │ │ │ ├── store/ │ │ │ │ │ ├── 00changelog.i │ │ │ │ │ ├── 00manifest.i │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── _socket/ │ │ │ │ │ │ │ ├── _d_h_c_p_client.cpp.i │ │ │ │ │ │ │ ├── _d_h_c_p_client.h.i │ │ │ │ │ │ │ ├── _d_n_s_client.cpp.i │ │ │ │ │ │ │ ├── _d_n_s_client.h.i │ │ │ │ │ │ │ ├── _endpoint.cpp.i │ │ │ │ │ │ │ ├── _endpoint.h.i │ │ │ │ │ │ │ ├── _t_c_p_socket_connection.cpp.i │ │ │ │ │ │ │ ├── _t_c_p_socket_connection.h.i │ │ │ │ │ │ │ ├── _t_c_p_socket_server.cpp.i │ │ │ │ │ │ │ ├── _t_c_p_socket_server.h.i │ │ │ │ │ │ │ ├── _w_i_znet___socket.cpp.i │ │ │ │ │ │ │ ├── _w_i_znet___socket.h.i │ │ │ │ │ │ │ ├── _w_i_znet___u_d_p_socket.cpp.i │ │ │ │ │ │ │ ├── _w_i_znet___u_d_p_socket.h.i │ │ │ │ │ │ │ ├── dnsname.h.i │ │ │ │ │ │ │ └── pico__string.h.i │ │ │ │ │ │ ├── _w_i_znet_interface.cpp.i │ │ │ │ │ │ ├── _w_i_znet_interface.h.i │ │ │ │ │ │ ├── arch/ │ │ │ │ │ │ │ ├── ext/ │ │ │ │ │ │ │ │ ├── _w5500.cpp.i │ │ │ │ │ │ │ │ └── _w5500.h.i │ │ │ │ │ │ │ └── int/ │ │ │ │ │ │ │ ├── _w7500x__toe.cpp.i │ │ │ │ │ │ │ └── _w7500x__toe.h.i │ │ │ │ │ │ └── eth__arch.h.i │ │ │ │ │ └── fncache │ │ │ │ └── wcache/ │ │ │ │ └── manifestfulltextcache │ │ │ ├── Socket/ │ │ │ │ ├── DHCPClient.cpp │ │ │ │ ├── DHCPClient.h │ │ │ │ ├── DNSClient.cpp │ │ │ │ ├── DNSClient.h │ │ │ │ ├── Endpoint.cpp │ │ │ │ ├── Endpoint.h │ │ │ │ ├── TCPSocketConnection.cpp │ │ │ │ ├── TCPSocketConnection.h │ │ │ │ ├── TCPSocketServer.cpp │ │ │ │ ├── TCPSocketServer.h │ │ │ │ ├── WIZnet_Socket.cpp │ │ │ │ ├── WIZnet_Socket.h │ │ │ │ ├── WIZnet_UDPSocket.cpp │ │ │ │ ├── WIZnet_UDPSocket.h │ │ │ │ ├── dnsname.h │ │ │ │ └── pico_string.h │ │ │ ├── WIZnetInterface.cpp │ │ │ ├── WIZnetInterface.h │ │ │ ├── arch/ │ │ │ │ ├── ext/ │ │ │ │ │ ├── W5500.cpp │ │ │ │ │ └── W5500.h │ │ │ │ └── int/ │ │ │ │ ├── W7500x_toe.cpp │ │ │ │ └── W7500x_toe.h │ │ │ └── eth_arch.h │ │ ├── WIZnetInterface-OS5.lib │ │ ├── configuration.h │ │ ├── custom_targets.json │ │ ├── drivers/ │ │ │ └── softPwm/ │ │ │ ├── softPwm.cpp │ │ │ └── softPwm.h │ │ ├── extern.h │ │ ├── lib/ │ │ │ └── ArduinoJson6/ │ │ │ ├── ArduinoJson/ │ │ │ │ ├── Array/ │ │ │ │ │ ├── ArrayFunctions.hpp │ │ │ │ │ ├── ArrayImpl.hpp │ │ │ │ │ ├── ArrayIterator.hpp │ │ │ │ │ ├── ArrayRef.hpp │ │ │ │ │ ├── ArrayShortcuts.hpp │ │ │ │ │ ├── ElementProxy.hpp │ │ │ │ │ └── Utilities.hpp │ │ │ │ ├── Collection/ │ │ │ │ │ ├── CollectionData.hpp │ │ │ │ │ └── CollectionImpl.hpp │ │ │ │ ├── Configuration.hpp │ │ │ │ ├── Deserialization/ │ │ │ │ │ ├── ArduinoStreamReader.hpp │ │ │ │ │ ├── CharPointerReader.hpp │ │ │ │ │ ├── DeserializationError.hpp │ │ │ │ │ ├── FlashStringReader.hpp │ │ │ │ │ ├── IteratorReader.hpp │ │ │ │ │ ├── NestingLimit.hpp │ │ │ │ │ ├── StdStreamReader.hpp │ │ │ │ │ └── deserialize.hpp │ │ │ │ ├── Document/ │ │ │ │ │ ├── BasicJsonDocument.hpp │ │ │ │ │ ├── DynamicJsonDocument.hpp │ │ │ │ │ ├── JsonDocument.hpp │ │ │ │ │ └── StaticJsonDocument.hpp │ │ │ │ ├── Json/ │ │ │ │ │ ├── EscapeSequence.hpp │ │ │ │ │ ├── JsonDeserializer.hpp │ │ │ │ │ ├── JsonSerializer.hpp │ │ │ │ │ ├── PrettyJsonSerializer.hpp │ │ │ │ │ ├── TextFormatter.hpp │ │ │ │ │ └── Utf8.hpp │ │ │ │ ├── Memory/ │ │ │ │ │ ├── Alignment.hpp │ │ │ │ │ ├── MemoryPool.hpp │ │ │ │ │ ├── StringBuilder.hpp │ │ │ │ │ └── StringSlot.hpp │ │ │ │ ├── Misc/ │ │ │ │ │ ├── SerializedValue.hpp │ │ │ │ │ └── Visitable.hpp │ │ │ │ ├── MsgPack/ │ │ │ │ │ ├── MsgPackDeserializer.hpp │ │ │ │ │ ├── MsgPackSerializer.hpp │ │ │ │ │ ├── endianess.hpp │ │ │ │ │ └── ieee754.hpp │ │ │ │ ├── Namespace.hpp │ │ │ │ ├── Numbers/ │ │ │ │ │ ├── Float.hpp │ │ │ │ │ ├── FloatParts.hpp │ │ │ │ │ ├── FloatTraits.hpp │ │ │ │ │ ├── Integer.hpp │ │ │ │ │ ├── convertNumber.hpp │ │ │ │ │ ├── parseFloat.hpp │ │ │ │ │ ├── parseInteger.hpp │ │ │ │ │ └── parseNumber.hpp │ │ │ │ ├── Object/ │ │ │ │ │ ├── MemberProxy.hpp │ │ │ │ │ ├── ObjectFunctions.hpp │ │ │ │ │ ├── ObjectImpl.hpp │ │ │ │ │ ├── ObjectIterator.hpp │ │ │ │ │ ├── ObjectRef.hpp │ │ │ │ │ ├── ObjectShortcuts.hpp │ │ │ │ │ └── Pair.hpp │ │ │ │ ├── Operators/ │ │ │ │ │ ├── VariantCasts.hpp │ │ │ │ │ ├── VariantComparisons.hpp │ │ │ │ │ ├── VariantOperators.hpp │ │ │ │ │ ├── VariantOr.hpp │ │ │ │ │ └── VariantShortcuts.hpp │ │ │ │ ├── Polyfills/ │ │ │ │ │ ├── alias_cast.hpp │ │ │ │ │ ├── assert.hpp │ │ │ │ │ ├── attributes.hpp │ │ │ │ │ ├── ctype.hpp │ │ │ │ │ ├── gsl/ │ │ │ │ │ │ └── not_null.hpp │ │ │ │ │ ├── limits.hpp │ │ │ │ │ ├── math.hpp │ │ │ │ │ ├── mpl/ │ │ │ │ │ │ └── max.hpp │ │ │ │ │ ├── type_traits/ │ │ │ │ │ │ ├── conditional.hpp │ │ │ │ │ │ ├── enable_if.hpp │ │ │ │ │ │ ├── integral_constant.hpp │ │ │ │ │ │ ├── is_array.hpp │ │ │ │ │ │ ├── is_base_of.hpp │ │ │ │ │ │ ├── is_const.hpp │ │ │ │ │ │ ├── is_floating_point.hpp │ │ │ │ │ │ ├── is_integral.hpp │ │ │ │ │ │ ├── is_same.hpp │ │ │ │ │ │ ├── is_signed.hpp │ │ │ │ │ │ ├── is_unsigned.hpp │ │ │ │ │ │ ├── make_unsigned.hpp │ │ │ │ │ │ ├── remove_const.hpp │ │ │ │ │ │ ├── remove_reference.hpp │ │ │ │ │ │ └── type_identity.hpp │ │ │ │ │ ├── type_traits.hpp │ │ │ │ │ └── utility.hpp │ │ │ │ ├── Serialization/ │ │ │ │ │ ├── DummyWriter.hpp │ │ │ │ │ ├── DynamicStringWriter.hpp │ │ │ │ │ ├── StaticStringWriter.hpp │ │ │ │ │ ├── StreamWriter.hpp │ │ │ │ │ ├── measure.hpp │ │ │ │ │ └── serialize.hpp │ │ │ │ ├── StringStorage/ │ │ │ │ │ ├── StringCopier.hpp │ │ │ │ │ ├── StringMover.hpp │ │ │ │ │ └── StringStorage.hpp │ │ │ │ ├── Strings/ │ │ │ │ │ ├── ArduinoStringAdapter.hpp │ │ │ │ │ ├── ConstRamStringAdapter.hpp │ │ │ │ │ ├── FlashStringAdapter.hpp │ │ │ │ │ ├── RamStringAdapter.hpp │ │ │ │ │ ├── SizedFlashStringAdapter.hpp │ │ │ │ │ ├── SizedRamStringAdapter.hpp │ │ │ │ │ ├── StlStringAdapter.hpp │ │ │ │ │ ├── String.hpp │ │ │ │ │ └── StringAdapters.hpp │ │ │ │ ├── Variant/ │ │ │ │ │ ├── SlotFunctions.hpp │ │ │ │ │ ├── VariantAs.hpp │ │ │ │ │ ├── VariantAsImpl.hpp │ │ │ │ │ ├── VariantContent.hpp │ │ │ │ │ ├── VariantData.hpp │ │ │ │ │ ├── VariantFunctions.hpp │ │ │ │ │ ├── VariantImpl.hpp │ │ │ │ │ ├── VariantRef.hpp │ │ │ │ │ ├── VariantSlot.hpp │ │ │ │ │ └── VariantTo.hpp │ │ │ │ ├── compatibility.hpp │ │ │ │ └── version.hpp │ │ │ ├── ArduinoJson.h │ │ │ └── ArduinoJson.hpp │ │ ├── main.cpp │ │ ├── mbed-os.lib │ │ ├── mbed_app.json │ │ ├── modules/ │ │ │ ├── blink/ │ │ │ │ ├── blink.cpp │ │ │ │ └── blink.h │ │ │ ├── debug/ │ │ │ │ ├── debug.cpp │ │ │ │ └── debug.h │ │ │ ├── digipot/ │ │ │ │ ├── DigipotBase.h │ │ │ │ ├── mcp4451.cpp │ │ │ │ └── mcp4451.h │ │ │ ├── digitalPin/ │ │ │ │ ├── digitalPin.cpp │ │ │ │ └── digitalPin.h │ │ │ ├── eStop/ │ │ │ │ ├── eStop.cpp │ │ │ │ └── eStop.h │ │ │ ├── encoder/ │ │ │ │ ├── encoder.cpp │ │ │ │ └── encoder.h │ │ │ ├── module.cpp │ │ │ ├── module.h │ │ │ ├── motorPower/ │ │ │ │ ├── motorPower.cpp │ │ │ │ └── motorPower.h │ │ │ ├── pwm/ │ │ │ │ ├── hardwarePwm.cpp │ │ │ │ ├── hardwarePwm.h │ │ │ │ ├── pwm.cpp │ │ │ │ └── pwm.h │ │ │ ├── qei/ │ │ │ │ ├── qei.cpp │ │ │ │ └── qei.h │ │ │ ├── rcservo/ │ │ │ │ ├── rcservo.cpp │ │ │ │ └── rcservo.h │ │ │ ├── resetPin/ │ │ │ │ ├── resetPin.cpp │ │ │ │ └── resetPin.h │ │ │ ├── stepgen/ │ │ │ │ ├── stepgen.cpp │ │ │ │ └── stepgen.h │ │ │ ├── switch/ │ │ │ │ ├── switch.cpp │ │ │ │ └── switch.h │ │ │ ├── temperature/ │ │ │ │ ├── temperature.cpp │ │ │ │ └── temperature.h │ │ │ └── tmc/ │ │ │ ├── tmc.h │ │ │ ├── tmc2208.cpp │ │ │ └── tmc2209.cpp │ │ ├── remora.h │ │ ├── sensors/ │ │ │ ├── tempSensor.h │ │ │ └── thermistor/ │ │ │ ├── thermistor.cpp │ │ │ └── thermistor.h │ │ ├── thread/ │ │ │ ├── timerInterrupt.cpp │ │ │ └── timerInterrupt.h │ │ └── update_mks_robin.py │ └── Remora-OS6/ │ ├── README.md │ ├── SoftwareSerial/ │ │ ├── SoftwareSerial.cpp │ │ └── SoftwareSerial.h │ ├── TARGET_MANTA8/ │ │ ├── PeripheralNames.h │ │ ├── PeripheralPins.c │ │ ├── PinNames.h │ │ └── system_clock.c │ ├── TARGET_MONSTER8/ │ │ ├── PeripheralNames.h │ │ ├── PeripheralPins.c │ │ ├── PinNames.h │ │ └── system_clock.c │ ├── TARGET_OCTOPUS_429/ │ │ ├── PeripheralNames.h │ │ ├── PeripheralPins.c │ │ ├── PinNames.h │ │ └── system_clock.c │ ├── TARGET_OCTOPUS_446/ │ │ ├── PeripheralNames.h │ │ ├── PeripheralPins.c │ │ ├── PinNames.h │ │ └── system_clock.c │ ├── TARGET_ROBIN_3/ │ │ ├── PeripheralNames.h │ │ ├── PeripheralPins.c │ │ ├── PinNames.h │ │ └── system_clock.c │ ├── TARGET_ROBIN_E3/ │ │ ├── PeripheralNames.h │ │ ├── PeripheralPins.c │ │ ├── PinNames.h │ │ └── system_clock.c │ ├── TARGET_SKRV1_4/ │ │ ├── drivers/ │ │ │ ├── comms/ │ │ │ │ ├── RemoraComms.cpp │ │ │ │ └── RemoraComms.h │ │ │ ├── pin/ │ │ │ │ ├── pin.cpp │ │ │ │ └── pin.h │ │ │ └── qei/ │ │ │ ├── qeiDriver.cpp │ │ │ └── qeiDriver.h │ │ └── thread/ │ │ ├── createThreads.h │ │ ├── interrupt.cpp │ │ ├── interrupt.h │ │ ├── irqHandlers.h │ │ ├── pruThread.cpp │ │ ├── pruThread.h │ │ ├── qeiInterrupt.cpp │ │ ├── qeiInterrupt.h │ │ ├── timer.cpp │ │ └── timer.h │ ├── TARGET_SKRV2/ │ │ ├── PeripheralNames.h │ │ ├── PeripheralPins.c │ │ ├── PinNames.h │ │ └── system_clock.c │ ├── TARGET_SKRV3/ │ │ ├── PeripheralPins.c │ │ ├── PinNames.h │ │ └── system_clock.c │ ├── TARGET_SKR_MINI_E3/ │ │ ├── PeripheralNames.h │ │ ├── PeripheralPins.c │ │ ├── PinNames.h │ │ └── system_clock.c │ ├── TARGET_SPIDER/ │ │ ├── PeripheralNames.h │ │ ├── PeripheralPins.c │ │ ├── PinNames.h │ │ └── system_clock.c │ ├── TARGET_SPIDER_KING/ │ │ ├── PeripheralNames.h │ │ ├── PeripheralPins.c │ │ ├── PinNames.h │ │ └── system_clock.c │ ├── TARGET_STM32F1/ │ │ ├── drivers/ │ │ │ ├── comms/ │ │ │ │ ├── RemoraComms.cpp │ │ │ │ └── RemoraComms.h │ │ │ ├── pin/ │ │ │ │ ├── pin.cpp │ │ │ │ └── pin.h │ │ │ └── qei/ │ │ │ ├── qeiDriver.cpp │ │ │ └── qeiDriver.h │ │ └── thread/ │ │ ├── createThreads.h │ │ ├── interrupt.cpp │ │ ├── interrupt.h │ │ ├── irqHandlers.h │ │ ├── pruThread.cpp │ │ ├── pruThread.h │ │ ├── timer.cpp │ │ └── timer.h │ ├── TARGET_STM32F4/ │ │ ├── drivers/ │ │ │ ├── SDIO/ │ │ │ │ ├── SDIOBlockDevice.cpp │ │ │ │ ├── SDIOBlockDevice.h │ │ │ │ ├── sdio_device.c │ │ │ │ └── sdio_device.h │ │ │ ├── comms/ │ │ │ │ ├── RemoraComms.cpp │ │ │ │ └── RemoraComms.h │ │ │ ├── pin/ │ │ │ │ ├── pin.cpp │ │ │ │ └── pin.h │ │ │ └── qei/ │ │ │ ├── qeiDriver.cpp │ │ │ └── qeiDriver.h │ │ └── thread/ │ │ ├── createThreads.h │ │ ├── interrupt.cpp │ │ ├── interrupt.h │ │ ├── irqHandlers.h │ │ ├── pruThread.cpp │ │ ├── pruThread.h │ │ ├── timer.cpp │ │ └── timer.h │ ├── TARGET_STM32G0/ │ │ ├── drivers/ │ │ │ ├── comms/ │ │ │ │ ├── RemoraComms.cpp │ │ │ │ └── RemoraComms.h │ │ │ ├── pin/ │ │ │ │ ├── pin.cpp │ │ │ │ └── pin.h │ │ │ └── qei/ │ │ │ ├── qeiDriver.cpp │ │ │ └── qeiDriver.h │ │ └── thread/ │ │ ├── createThreads.h │ │ ├── interrupt.cpp │ │ ├── interrupt.h │ │ ├── irqHandlers.h │ │ ├── pruThread.cpp │ │ ├── pruThread.h │ │ ├── timer.cpp │ │ └── timer.h │ ├── TARGET_STM32H7/ │ │ ├── drivers/ │ │ │ ├── SDIO/ │ │ │ │ ├── SDIOBlockDevice.cpp │ │ │ │ ├── SDIOBlockDevice.h │ │ │ │ ├── sdio_device.c │ │ │ │ └── sdio_device.h │ │ │ ├── comms/ │ │ │ │ ├── RemoraComms.cpp │ │ │ │ └── RemoraComms.h │ │ │ ├── pin/ │ │ │ │ ├── pin.cpp │ │ │ │ └── pin.h │ │ │ └── qei/ │ │ │ ├── qeiDriver.cpp │ │ │ └── qeiDriver.h │ │ └── thread/ │ │ ├── createThreads.h │ │ ├── interrupt.cpp │ │ ├── interrupt.h │ │ ├── irqHandlers.h │ │ ├── pruThread.cpp │ │ ├── pruThread.h │ │ ├── timer.cpp │ │ └── timer.h │ ├── TMCStepper/ │ │ ├── CHOPCONF.cpp │ │ ├── COOLCONF.cpp │ │ ├── DRV_STATUS.cpp │ │ ├── GCONF.cpp │ │ ├── IHOLD_IRUN.cpp │ │ ├── PWMCONF.cpp │ │ ├── TMC2208Stepper.cpp │ │ ├── TMC2208_bitfields.h │ │ ├── TMC2209Stepper.cpp │ │ ├── TMC2209_bitfields.h │ │ ├── TMCStepper.cpp │ │ ├── TMCStepper.h │ │ └── TMC_MACROS.h │ ├── configuration.h │ ├── custom_targets.json │ ├── drivers/ │ │ └── softPwm/ │ │ ├── softPwm.cpp │ │ └── softPwm.h │ ├── extern.h │ ├── lib/ │ │ └── ArduinoJson6/ │ │ ├── ArduinoJson/ │ │ │ ├── Array/ │ │ │ │ ├── ArrayFunctions.hpp │ │ │ │ ├── ArrayImpl.hpp │ │ │ │ ├── ArrayIterator.hpp │ │ │ │ ├── ArrayRef.hpp │ │ │ │ ├── ArrayShortcuts.hpp │ │ │ │ ├── ElementProxy.hpp │ │ │ │ └── Utilities.hpp │ │ │ ├── Collection/ │ │ │ │ ├── CollectionData.hpp │ │ │ │ └── CollectionImpl.hpp │ │ │ ├── Configuration.hpp │ │ │ ├── Deserialization/ │ │ │ │ ├── ArduinoStreamReader.hpp │ │ │ │ ├── CharPointerReader.hpp │ │ │ │ ├── DeserializationError.hpp │ │ │ │ ├── FlashStringReader.hpp │ │ │ │ ├── IteratorReader.hpp │ │ │ │ ├── NestingLimit.hpp │ │ │ │ ├── StdStreamReader.hpp │ │ │ │ └── deserialize.hpp │ │ │ ├── Document/ │ │ │ │ ├── BasicJsonDocument.hpp │ │ │ │ ├── DynamicJsonDocument.hpp │ │ │ │ ├── JsonDocument.hpp │ │ │ │ └── StaticJsonDocument.hpp │ │ │ ├── Json/ │ │ │ │ ├── EscapeSequence.hpp │ │ │ │ ├── JsonDeserializer.hpp │ │ │ │ ├── JsonSerializer.hpp │ │ │ │ ├── PrettyJsonSerializer.hpp │ │ │ │ ├── TextFormatter.hpp │ │ │ │ └── Utf8.hpp │ │ │ ├── Memory/ │ │ │ │ ├── Alignment.hpp │ │ │ │ ├── MemoryPool.hpp │ │ │ │ ├── StringBuilder.hpp │ │ │ │ └── StringSlot.hpp │ │ │ ├── Misc/ │ │ │ │ ├── SerializedValue.hpp │ │ │ │ └── Visitable.hpp │ │ │ ├── MsgPack/ │ │ │ │ ├── MsgPackDeserializer.hpp │ │ │ │ ├── MsgPackSerializer.hpp │ │ │ │ ├── endianess.hpp │ │ │ │ └── ieee754.hpp │ │ │ ├── Namespace.hpp │ │ │ ├── Numbers/ │ │ │ │ ├── Float.hpp │ │ │ │ ├── FloatParts.hpp │ │ │ │ ├── FloatTraits.hpp │ │ │ │ ├── Integer.hpp │ │ │ │ ├── convertNumber.hpp │ │ │ │ ├── parseFloat.hpp │ │ │ │ ├── parseInteger.hpp │ │ │ │ └── parseNumber.hpp │ │ │ ├── Object/ │ │ │ │ ├── MemberProxy.hpp │ │ │ │ ├── ObjectFunctions.hpp │ │ │ │ ├── ObjectImpl.hpp │ │ │ │ ├── ObjectIterator.hpp │ │ │ │ ├── ObjectRef.hpp │ │ │ │ ├── ObjectShortcuts.hpp │ │ │ │ └── Pair.hpp │ │ │ ├── Operators/ │ │ │ │ ├── VariantCasts.hpp │ │ │ │ ├── VariantComparisons.hpp │ │ │ │ ├── VariantOperators.hpp │ │ │ │ ├── VariantOr.hpp │ │ │ │ └── VariantShortcuts.hpp │ │ │ ├── Polyfills/ │ │ │ │ ├── alias_cast.hpp │ │ │ │ ├── assert.hpp │ │ │ │ ├── attributes.hpp │ │ │ │ ├── ctype.hpp │ │ │ │ ├── gsl/ │ │ │ │ │ └── not_null.hpp │ │ │ │ ├── limits.hpp │ │ │ │ ├── math.hpp │ │ │ │ ├── mpl/ │ │ │ │ │ └── max.hpp │ │ │ │ ├── type_traits/ │ │ │ │ │ ├── conditional.hpp │ │ │ │ │ ├── enable_if.hpp │ │ │ │ │ ├── integral_constant.hpp │ │ │ │ │ ├── is_array.hpp │ │ │ │ │ ├── is_base_of.hpp │ │ │ │ │ ├── is_const.hpp │ │ │ │ │ ├── is_floating_point.hpp │ │ │ │ │ ├── is_integral.hpp │ │ │ │ │ ├── is_same.hpp │ │ │ │ │ ├── is_signed.hpp │ │ │ │ │ ├── is_unsigned.hpp │ │ │ │ │ ├── make_unsigned.hpp │ │ │ │ │ ├── remove_const.hpp │ │ │ │ │ ├── remove_reference.hpp │ │ │ │ │ └── type_identity.hpp │ │ │ │ ├── type_traits.hpp │ │ │ │ └── utility.hpp │ │ │ ├── Serialization/ │ │ │ │ ├── DummyWriter.hpp │ │ │ │ ├── DynamicStringWriter.hpp │ │ │ │ ├── StaticStringWriter.hpp │ │ │ │ ├── StreamWriter.hpp │ │ │ │ ├── measure.hpp │ │ │ │ └── serialize.hpp │ │ │ ├── StringStorage/ │ │ │ │ ├── StringCopier.hpp │ │ │ │ ├── StringMover.hpp │ │ │ │ └── StringStorage.hpp │ │ │ ├── Strings/ │ │ │ │ ├── ArduinoStringAdapter.hpp │ │ │ │ ├── ConstRamStringAdapter.hpp │ │ │ │ ├── FlashStringAdapter.hpp │ │ │ │ ├── RamStringAdapter.hpp │ │ │ │ ├── SizedFlashStringAdapter.hpp │ │ │ │ ├── SizedRamStringAdapter.hpp │ │ │ │ ├── StlStringAdapter.hpp │ │ │ │ ├── String.hpp │ │ │ │ └── StringAdapters.hpp │ │ │ ├── Variant/ │ │ │ │ ├── SlotFunctions.hpp │ │ │ │ ├── VariantAs.hpp │ │ │ │ ├── VariantAsImpl.hpp │ │ │ │ ├── VariantContent.hpp │ │ │ │ ├── VariantData.hpp │ │ │ │ ├── VariantFunctions.hpp │ │ │ │ ├── VariantImpl.hpp │ │ │ │ ├── VariantRef.hpp │ │ │ │ ├── VariantSlot.hpp │ │ │ │ └── VariantTo.hpp │ │ │ ├── compatibility.hpp │ │ │ └── version.hpp │ │ ├── ArduinoJson.h │ │ └── ArduinoJson.hpp │ ├── main.cpp │ ├── mbed-os.lib │ ├── mbed_app.json │ ├── modules/ │ │ ├── blink/ │ │ │ ├── blink.cpp │ │ │ └── blink.h │ │ ├── debug/ │ │ │ ├── debug.cpp │ │ │ └── debug.h │ │ ├── digipot/ │ │ │ ├── DigipotBase.h │ │ │ ├── mcp4451.cpp │ │ │ └── mcp4451.h │ │ ├── digitalPin/ │ │ │ ├── digitalPin.cpp │ │ │ └── digitalPin.h │ │ ├── eStop/ │ │ │ ├── eStop.cpp │ │ │ └── eStop.h │ │ ├── encoder/ │ │ │ ├── encoder.cpp │ │ │ └── encoder.h │ │ ├── module.cpp │ │ ├── module.h │ │ ├── motorPower/ │ │ │ ├── motorPower.cpp │ │ │ └── motorPower.h │ │ ├── pwm/ │ │ │ ├── hardwarePwm.cpp │ │ │ ├── hardwarePwm.h │ │ │ ├── pwm.cpp │ │ │ └── pwm.h │ │ ├── qei/ │ │ │ ├── qei.cpp │ │ │ └── qei.h │ │ ├── rcservo/ │ │ │ ├── rcservo.cpp │ │ │ └── rcservo.h │ │ ├── resetPin/ │ │ │ ├── resetPin.cpp │ │ │ └── resetPin.h │ │ ├── stepgen/ │ │ │ ├── stepgen.cpp │ │ │ └── stepgen.h │ │ ├── switch/ │ │ │ ├── switch.cpp │ │ │ └── switch.h │ │ ├── temperature/ │ │ │ ├── temperature.cpp │ │ │ └── temperature.h │ │ └── tmc/ │ │ ├── tmc.h │ │ ├── tmc2208.cpp │ │ └── tmc2209.cpp │ ├── remora.h │ ├── sensors/ │ │ ├── tempSensor.h │ │ └── thermistor/ │ │ ├── thermistor.cpp │ │ └── thermistor.h │ ├── thread/ │ │ ├── timerInterrupt.cpp │ │ └── timerInterrupt.h │ └── update_mks_robin.py ├── LinuxCNC/ │ ├── Components/ │ │ ├── NVMPG/ │ │ │ └── nvmpg.c │ │ ├── PIDcontroller/ │ │ │ ├── PIDcontroller.c │ │ │ └── PIDcontroller.md │ │ ├── PRUencoder/ │ │ │ └── PRUencoder.c │ │ ├── README.md │ │ ├── Remora/ │ │ │ ├── bcm2835.c │ │ │ ├── bcm2835.h │ │ │ ├── remora.h │ │ │ └── remora_lpc.c │ │ ├── Remora-eth/ │ │ │ ├── remora-eth-3.0.c │ │ │ └── remora-eth-3.0.h │ │ └── Remora-spi/ │ │ ├── bcm2835.c │ │ ├── bcm2835.h │ │ ├── dtcboards.h │ │ ├── gpiochip_rp1.c │ │ ├── gpiochip_rp1.h │ │ ├── remora-spi.c │ │ ├── remora.h │ │ ├── rp1lib.c │ │ ├── rp1lib.h │ │ ├── spi-dw.c │ │ └── spi-dw.h │ ├── ConfigSamples/ │ │ ├── ender3/ │ │ │ ├── 3D_printer_panel.xml │ │ │ ├── 3Dprinter.hal │ │ │ ├── custom_postgui.hal │ │ │ ├── ender3.hal │ │ │ ├── ender3.ini │ │ │ ├── gcode2ngc.py │ │ │ ├── linuxcnc.var │ │ │ ├── linuxcnc.var.bak │ │ │ ├── postgui_call_list.hal │ │ │ ├── probe-results.txt │ │ │ ├── pyvcp_options.hal │ │ │ └── tool.tbl │ │ ├── hypercube/ │ │ │ ├── 3D_printer_panel.xml │ │ │ ├── 3Dprinter.hal │ │ │ ├── autosave.halscope │ │ │ ├── compensation.py │ │ │ ├── custom_postgui.hal │ │ │ ├── gcode2ngc.py │ │ │ ├── hypercube.hal │ │ │ ├── hypercube.ini │ │ │ ├── hypercube.pref │ │ │ ├── linuxcnc.var │ │ │ ├── linuxcnc.var.bak │ │ │ ├── postgui_call_list.hal │ │ │ ├── probe-results.txt │ │ │ ├── pyvcp_options.hal │ │ │ ├── tool.tbl │ │ │ └── tool.tbl.bak │ │ ├── remora-closed-loop/ │ │ │ ├── .qtpyvcp-messages.json │ │ │ ├── 3D_printer_panel.xml │ │ │ ├── 3Dprinter.hal │ │ │ ├── autosave.halscope │ │ │ ├── compensation.py │ │ │ ├── custom_postgui.hal │ │ │ ├── encoder-fb.halscope │ │ │ ├── linuxcnc.var │ │ │ ├── linuxcnc.var.bak │ │ │ ├── my.halshow │ │ │ ├── postgui_call_list.hal │ │ │ ├── probe-results.txt │ │ │ ├── pyvcp_options.hal │ │ │ ├── remora.hal │ │ │ ├── remora.ini │ │ │ ├── remora.pref │ │ │ └── tool.tbl │ │ ├── remora-eth/ │ │ │ ├── 3D_printer_panel.xml │ │ │ ├── 3Dprinter.hal │ │ │ ├── autosave.halscope │ │ │ ├── custom_postgui.hal │ │ │ ├── gcode2ngc.py │ │ │ ├── linuxcnc.var │ │ │ ├── linuxcnc.var.bak │ │ │ ├── postgui_call_list.hal │ │ │ ├── probe-results.txt │ │ │ ├── pyvcp_options.hal │ │ │ ├── remora-eth.hal │ │ │ ├── remora-eth.ini │ │ │ └── tool.tbl │ │ ├── remora-octopus/ │ │ │ ├── Remora-XY.prefs │ │ │ ├── axis.ngc │ │ │ ├── custom_postgui.hal │ │ │ ├── halshow.preferences │ │ │ ├── linuxcnc.var │ │ │ ├── linuxcnc.var.bak │ │ │ ├── postgui_call_list.hal │ │ │ ├── remora-xyz.hal │ │ │ ├── remora-xyz.ini │ │ │ ├── tool.tbl │ │ │ └── usercommand_regularmac_800.py │ │ └── remora-xyz/ │ │ ├── custom_postgui.hal │ │ ├── postgui_call_list.hal │ │ ├── remora-xyz.hal │ │ ├── remora-xyz.ini │ │ └── tool.tbl │ └── README.md └── README.md