diff --git a/PINOUTS.md b/PINOUTS.md
index 617c9e5d3..02fbe6aac 100644
--- a/PINOUTS.md
+++ b/PINOUTS.md
@@ -12,9 +12,9 @@ This wiring can be completely modified by the user.
| DOUT5 | DISPLAY DAT |
| DOUT6 | DISPLAY CS |
| DOUT7 | DISPLAY BEEP |
-| DOUT8 | IC74HC595_DATA |
-| DOUT9 | IC74HC595_CLK |
-| DOUT10 | IC74HC595_LATCH |
+| DOUT8 | SHIFT_REGISTER_DATA |
+| DOUT9 | SHIFT_REGISTER_CLK |
+| DOUT10 | SHIFT_REGISTER_LATCH |
| DOUT11 | STEPPER_DIGIPOT_CS |
| DOUT12 | STEPPER0_MSTEP1 |
| DOUT13 | STEPPER1_MSTEP1 |
diff --git a/docs/mcumap_gen.xlsx b/docs/mcumap_gen.xlsx
index 4b73af16e..9e3ae089b 100644
Binary files a/docs/mcumap_gen.xlsx and b/docs/mcumap_gen.xlsx differ
diff --git a/makefiles/virtual/uCNC-emulator.dev b/makefiles/virtual/uCNC-emulator.dev
index f2717d481..54a8cde1c 100644
--- a/makefiles/virtual/uCNC-emulator.dev
+++ b/makefiles/virtual/uCNC-emulator.dev
@@ -29,7 +29,7 @@ IncludeVersionInfo=0
SupportXPThemes=0
CompilerSet=1
CompilerSettings=000000e0g0000000001000000
-UnitCount=94
+UnitCount=96
[VersionInfo]
Major=1
@@ -260,18 +260,8 @@ Priority=1000
OverrideBuildCmd=0
BuildCmd=
-[Unit23]
-FileName=..\..\uCNC\src\modules\ic74hc595.c
-CompileCpp=1
-Folder=
-Compile=1
-Link=1
-Priority=1000
-OverrideBuildCmd=0
-BuildCmd=
-
[Unit24]
-FileName=..\..\uCNC\src\modules\ic74hc595.h
+FileName=..\..\uCNC\src\modules\modbus.c
CompileCpp=1
Folder=
Compile=1
@@ -281,7 +271,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit25]
-FileName=..\..\uCNC\src\modules\modbus.c
+FileName=..\..\uCNC\src\modules\modbus.h
CompileCpp=1
Folder=
Compile=1
@@ -291,7 +281,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit26]
-FileName=..\..\uCNC\src\modules\modbus.h
+FileName=..\..\uCNC\src\modules\pid.c
CompileCpp=1
Folder=
Compile=1
@@ -301,7 +291,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit27]
-FileName=..\..\uCNC\src\modules\pid.c
+FileName=..\..\uCNC\src\modules\pid.h
CompileCpp=1
Folder=
Compile=1
@@ -311,7 +301,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit28]
-FileName=..\..\uCNC\src\modules\pid.h
+FileName=..\..\uCNC\src\modules\softi2c.c
CompileCpp=1
Folder=
Compile=1
@@ -321,7 +311,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit29]
-FileName=..\..\uCNC\src\modules\softi2c.c
+FileName=..\..\uCNC\src\modules\softi2c.h
CompileCpp=1
Folder=
Compile=1
@@ -331,7 +321,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit30]
-FileName=..\..\uCNC\src\modules\softi2c.h
+FileName=..\..\uCNC\src\modules\softspi.c
CompileCpp=1
Folder=
Compile=1
@@ -341,7 +331,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit31]
-FileName=..\..\uCNC\src\modules\softspi.c
+FileName=..\..\uCNC\src\modules\softspi.h
CompileCpp=1
Folder=
Compile=1
@@ -351,7 +341,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit32]
-FileName=..\..\uCNC\src\modules\softspi.h
+FileName=..\..\uCNC\src\modules\softuart.c
CompileCpp=1
Folder=
Compile=1
@@ -361,7 +351,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit33]
-FileName=..\..\uCNC\src\modules\softuart.c
+FileName=..\..\uCNC\src\modules\softuart.h
CompileCpp=1
Folder=
Compile=1
@@ -371,7 +361,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit34]
-FileName=..\..\uCNC\src\modules\softuart.h
+FileName=..\..\uCNC\src\modules\system_languages.h
CompileCpp=1
Folder=
Compile=1
@@ -381,7 +371,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit35]
-FileName=..\..\uCNC\src\modules\system_languages.h
+FileName=..\..\uCNC\src\modules\language\language_en.h
CompileCpp=1
Folder=
Compile=1
@@ -391,7 +381,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit38]
-FileName=..\..\uCNC\src\interface\grbl_interface.h
+FileName=..\..\uCNC\src\hal\io_hal.h
CompileCpp=1
Folder=
Compile=1
@@ -401,7 +391,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit42]
-FileName=..\..\uCNC\src\hal\tools\tool_helper.h
+FileName=..\..\uCNC\src\hal\tools\tools\laser_ppi.c
CompileCpp=1
Folder=
Compile=1
@@ -411,7 +401,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit43]
-FileName=..\..\uCNC\src\hal\tools\tools\laser_ppi.c
+FileName=..\..\uCNC\src\hal\tools\tools\laser_pwm.c
CompileCpp=1
Folder=
Compile=1
@@ -421,7 +411,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit44]
-FileName=..\..\uCNC\src\hal\tools\tools\laser_pwm.c
+FileName=..\..\uCNC\src\hal\tools\tools\pen_servo.c
CompileCpp=1
Folder=
Compile=1
@@ -431,7 +421,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit45]
-FileName=..\..\uCNC\src\hal\tools\tools\pen_servo.c
+FileName=..\..\uCNC\src\hal\tools\tools\plasma_thc.c
CompileCpp=1
Folder=
Compile=1
@@ -441,7 +431,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit46]
-FileName=..\..\uCNC\src\hal\tools\tools\plasma_thc.c
+FileName=..\..\uCNC\src\hal\tools\tools\spindle_besc.c
CompileCpp=1
Folder=
Compile=1
@@ -451,7 +441,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit47]
-FileName=..\..\uCNC\src\hal\tools\tools\spindle_besc.c
+FileName=..\..\uCNC\src\hal\tools\tools\spindle_pwm.c
CompileCpp=1
Folder=
Compile=1
@@ -461,7 +451,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit48]
-FileName=..\..\uCNC\src\hal\tools\tools\spindle_pwm.c
+FileName=..\..\uCNC\src\hal\tools\tools\spindle_relay.c
CompileCpp=1
Folder=
Compile=1
@@ -471,7 +461,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit49]
-FileName=..\..\uCNC\src\hal\tools\tools\spindle_relay.c
+FileName=..\..\uCNC\src\hal\tools\tools\vfd_modbus.c
CompileCpp=1
Folder=
Compile=1
@@ -481,7 +471,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit50]
-FileName=..\..\uCNC\src\hal\tools\tools\vfd_modbus.c
+FileName=..\..\uCNC\src\hal\tools\tools\vfd_pwm.c
CompileCpp=1
Folder=
Compile=1
@@ -491,7 +481,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit51]
-FileName=..\..\uCNC\src\hal\tools\tools\vfd_pwm.c
+FileName=..\..\uCNC\src\hal\mcus\mcu.c
CompileCpp=1
Folder=
Compile=1
@@ -501,7 +491,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit52]
-FileName=..\..\uCNC\src\hal\mcus\mcu.c
+FileName=..\..\uCNC\src\hal\mcus\mcu.h
CompileCpp=1
Folder=
Compile=1
@@ -511,7 +501,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit53]
-FileName=..\..\uCNC\src\hal\mcus\mcu.h
+FileName=..\..\uCNC\src\hal\mcus\mcudefs.h
CompileCpp=1
Folder=
Compile=1
@@ -521,7 +511,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit54]
-FileName=..\..\uCNC\src\hal\mcus\mcudefs.h
+FileName=..\..\uCNC\src\hal\mcus\mcus.h
CompileCpp=1
Folder=
Compile=1
@@ -531,7 +521,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit55]
-FileName=..\..\uCNC\src\hal\mcus\mcus.h
+FileName=..\..\uCNC\src\hal\mcus\virtual\mcumap_virtual.h
CompileCpp=1
Folder=
Compile=1
@@ -541,7 +531,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit56]
-FileName=..\..\uCNC\src\hal\mcus\virtual\mcumap_virtual.h
+FileName=..\..\uCNC\src\hal\kinematics\kinematic.c
CompileCpp=1
Folder=
Compile=1
@@ -551,7 +541,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit57]
-FileName=..\..\uCNC\src\hal\kinematics\kinematic.c
+FileName=..\..\uCNC\src\hal\kinematics\kinematic.h
CompileCpp=1
Folder=
Compile=1
@@ -561,7 +551,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit58]
-FileName=..\..\uCNC\src\hal\kinematics\kinematic.h
+FileName=..\..\uCNC\src\hal\kinematics\kinematic_cartesian.c
CompileCpp=1
Folder=
Compile=1
@@ -571,7 +561,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit59]
-FileName=..\..\uCNC\src\hal\kinematics\kinematic_cartesian.c
+FileName=..\..\uCNC\src\hal\kinematics\kinematic_cartesian.h
CompileCpp=1
Folder=
Compile=1
@@ -581,7 +571,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit60]
-FileName=..\..\uCNC\src\hal\kinematics\kinematic_cartesian.h
+FileName=..\..\uCNC\src\hal\kinematics\kinematic_corexy.c
CompileCpp=1
Folder=
Compile=1
@@ -591,7 +581,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit61]
-FileName=..\..\uCNC\src\hal\kinematics\kinematic_corexy.c
+FileName=..\..\uCNC\src\hal\kinematics\kinematic_corexy.h
CompileCpp=1
Folder=
Compile=1
@@ -601,7 +591,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit62]
-FileName=..\..\uCNC\src\hal\kinematics\kinematic_corexy.h
+FileName=..\..\uCNC\src\hal\kinematics\kinematic_delta.c
CompileCpp=1
Folder=
Compile=1
@@ -611,7 +601,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit63]
-FileName=..\..\uCNC\src\hal\kinematics\kinematic_delta.c
+FileName=..\..\uCNC\src\hal\kinematics\kinematic_delta.h
CompileCpp=1
Folder=
Compile=1
@@ -621,7 +611,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit64]
-FileName=..\..\uCNC\src\hal\kinematics\kinematic_delta.h
+FileName=..\..\uCNC\src\hal\kinematics\kinematic_linear_delta.c
CompileCpp=1
Folder=
Compile=1
@@ -631,7 +621,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit65]
-FileName=..\..\uCNC\src\hal\kinematics\kinematic_linear_delta.c
+FileName=..\..\uCNC\src\hal\kinematics\kinematic_linear_delta.h
CompileCpp=1
Folder=
Compile=1
@@ -641,7 +631,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit66]
-FileName=..\..\uCNC\src\hal\kinematics\kinematic_linear_delta.h
+FileName=..\..\uCNC\src\hal\kinematics\kinematic_scara.c
CompileCpp=1
Folder=
Compile=1
@@ -651,7 +641,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit67]
-FileName=..\..\uCNC\src\hal\kinematics\kinematic_scara.c
+FileName=..\..\uCNC\src\hal\kinematics\kinematic_scara.h
CompileCpp=1
Folder=
Compile=1
@@ -661,7 +651,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit68]
-FileName=..\..\uCNC\src\hal\kinematics\kinematic_scara.h
+FileName=..\..\uCNC\src\hal\kinematics\kinematicdefs.h
CompileCpp=1
Folder=
Compile=1
@@ -671,7 +661,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit69]
-FileName=..\..\uCNC\src\hal\kinematics\kinematicdefs.h
+FileName=..\..\uCNC\src\hal\kinematics\kinematics.h
CompileCpp=1
Folder=
Compile=1
@@ -681,7 +671,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit70]
-FileName=..\..\uCNC\src\hal\kinematics\kinematics.h
+FileName=..\..\uCNC\src\hal\boards\boarddefs.h
CompileCpp=1
Folder=
Compile=1
@@ -691,7 +681,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit71]
-FileName=..\..\uCNC\src\hal\boards\boarddefs.h
+FileName=..\..\uCNC\src\core\interpolator.c
CompileCpp=1
Folder=
Compile=1
@@ -701,7 +691,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit72]
-FileName=..\..\uCNC\src\core\interpolator.c
+FileName=..\..\uCNC\src\core\interpolator.h
CompileCpp=1
Folder=
Compile=1
@@ -711,7 +701,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit73]
-FileName=..\..\uCNC\src\core\interpolator.h
+FileName=..\..\uCNC\src\core\io_control.c
CompileCpp=1
Folder=
Compile=1
@@ -721,7 +711,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit74]
-FileName=..\..\uCNC\src\core\io_control.c
+FileName=..\..\uCNC\src\core\io_control.h
CompileCpp=1
Folder=
Compile=1
@@ -731,7 +721,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit75]
-FileName=..\..\uCNC\src\core\io_control.h
+FileName=..\..\uCNC\src\core\motion_control.c
CompileCpp=1
Folder=
Compile=1
@@ -741,7 +731,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit76]
-FileName=..\..\uCNC\src\core\motion_control.c
+FileName=..\..\uCNC\src\core\motion_control.h
CompileCpp=1
Folder=
Compile=1
@@ -751,7 +741,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit77]
-FileName=..\..\uCNC\src\core\motion_control.h
+FileName=..\..\uCNC\src\core\parser.c
CompileCpp=1
Folder=
Compile=1
@@ -761,7 +751,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit78]
-FileName=..\..\uCNC\src\core\parser.c
+FileName=..\..\uCNC\src\core\parser.h
CompileCpp=1
Folder=
Compile=1
@@ -771,7 +761,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit79]
-FileName=..\..\uCNC\src\core\parser.h
+FileName=..\..\uCNC\src\core\planner.c
CompileCpp=1
Folder=
Compile=1
@@ -781,7 +771,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit80]
-FileName=..\..\uCNC\src\core\planner.c
+FileName=..\..\uCNC\src\core\planner.h
CompileCpp=1
Folder=
Compile=1
@@ -791,7 +781,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit81]
-FileName=..\..\uCNC\src\core\planner.h
+FileName=..\..\uCNC\src\utils.c
CompileCpp=1
Folder=
Compile=1
@@ -801,7 +791,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit82]
-FileName=..\..\uCNC\src\utils.c
+FileName=..\..\uCNC\src\interface\grbl_print.c
CompileCpp=1
Folder=
Compile=1
@@ -811,7 +801,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit84]
-FileName=..\..\uCNC\src\interface\grbl_protocol.c
+FileName=..\..\uCNC\src\interface\grbl_settings.c
CompileCpp=1
Folder=
Compile=1
@@ -821,7 +811,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit85]
-FileName=..\..\uCNC\src\interface\grbl_settings.c
+FileName=..\..\uCNC\src\interface\grbl_stream.c
Folder=
Compile=1
Link=1
@@ -831,7 +821,7 @@ BuildCmd=
CompileCpp=1
[Unit86]
-FileName=..\..\uCNC\src\interface\grbl_stream.c
+FileName=..\..\uCNC\src\interface\grbl_print.h
CompileCpp=1
Folder=
Compile=1
@@ -841,7 +831,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit89]
-FileName=..\..\uCNC\src\interface\grbl_settings.h
+FileName=..\..\uCNC\src\interface\grbl_stream.h
CompileCpp=1
Folder=
Compile=1
@@ -851,7 +841,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit90]
-FileName=..\..\uCNC\src\interface\grbl_stream.h
+FileName=..\..\uCNC\src\interface\serial_compatibility.h
CompileCpp=1
Folder=
Compile=1
@@ -861,7 +851,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit91]
-FileName=..\..\uCNC\src\interface\serial_compatibility.h
+FileName=..\..\uCNC\src\modules\file_system.c
CompileCpp=1
Folder=
Compile=1
@@ -871,7 +861,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit93]
-FileName=..\..\uCNC\src\modules\file_system.h
+FileName=..\..\uCNC\src\core\parser_expr.c
CompileCpp=1
Folder=
Compile=1
@@ -881,7 +871,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit96]
-FileName=..\..\uCNC\src\modules\m66\parser_m66.c
+FileName=..\..\uCNC\src\modules\shift_register.h
CompileCpp=1
Folder=
Compile=1
@@ -901,7 +891,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit87]
-FileName=..\..\uCNC\src\interface\grbl_print.h
+FileName=..\..\uCNC\src\interface\grbl_protocol.h
CompileCpp=1
Folder=
Compile=1
@@ -911,7 +901,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit88]
-FileName=..\..\uCNC\src\interface\grbl_protocol.h
+FileName=..\..\uCNC\src\interface\grbl_settings.h
CompileCpp=1
Folder=
Compile=1
@@ -921,7 +911,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit36]
-FileName=..\..\uCNC\src\modules\language\language_en.h
+FileName=..\..\uCNC\src\interface\defaults.h
CompileCpp=1
Folder=
Compile=1
@@ -931,7 +921,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit37]
-FileName=..\..\uCNC\src\interface\defaults.h
+FileName=..\..\uCNC\src\interface\grbl_interface.h
CompileCpp=1
Folder=
Compile=1
@@ -941,7 +931,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit41]
-FileName=..\..\uCNC\src\hal\tools\tool.h
+FileName=..\..\uCNC\src\hal\tools\tool_helper.h
CompileCpp=1
Folder=
Compile=1
@@ -951,7 +941,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit39]
-FileName=..\..\uCNC\src\hal\io_hal.h
+FileName=..\..\uCNC\src\hal\tools\tool.c
CompileCpp=1
Folder=
Compile=1
@@ -961,7 +951,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit40]
-FileName=..\..\uCNC\src\hal\tools\tool.c
+FileName=..\..\uCNC\src\hal\tools\tool.h
CompileCpp=1
Folder=
Compile=1
@@ -971,7 +961,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit95]
-FileName=..\..\uCNC\src\modules\system_menu.h
+FileName=..\..\uCNC\src\modules\shift_register.c
CompileCpp=1
Folder=
Compile=1
@@ -1011,7 +1001,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit83]
-FileName=..\..\uCNC\src\interface\grbl_print.c
+FileName=..\..\uCNC\src\interface\grbl_protocol.c
CompileCpp=1
Folder=
Compile=1
@@ -1021,7 +1011,7 @@ OverrideBuildCmd=0
BuildCmd=
[Unit92]
-FileName=..\..\uCNC\src\modules\file_system.c
+FileName=..\..\uCNC\src\modules\file_system.h
CompileCpp=1
Folder=
Compile=1
@@ -1031,7 +1021,17 @@ OverrideBuildCmd=0
BuildCmd=
[Unit94]
-FileName=..\..\uCNC\src\core\parser_expr.c
+FileName=..\..\uCNC\src\modules\ic74hc165.h
+CompileCpp=1
+Folder=
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit23]
+FileName=..\..\uCNC\src\modules\ic74hc595.h
CompileCpp=1
Folder=
Compile=1
diff --git a/uCNC/src/cnc.c b/uCNC/src/cnc.c
index d1b45292c..8b492b4cf 100644
--- a/uCNC/src/cnc.c
+++ b/uCNC/src/cnc.c
@@ -1065,6 +1065,9 @@ static void cnc_io_dotasks(void)
{
// run internal mcu tasks (USB and communications)
mcu_dotasks();
+#if IC74HC595_COUNT > 0 || IC74HC165_COUNT > 0
+ shift_register_io_pins(); // update extended IO
+#endif
mcu_limits_changed_cb();
mcu_controls_changed_cb();
diff --git a/uCNC/src/cnc_hal_config_helper.h b/uCNC/src/cnc_hal_config_helper.h
index 725558679..413aff80e 100644
--- a/uCNC/src/cnc_hal_config_helper.h
+++ b/uCNC/src/cnc_hal_config_helper.h
@@ -54,7 +54,7 @@ extern "C"
// final HAL configurations
#include "../cnc_hal_config.h" //inicializes the HAL hardcoded connections
#include "../cnc_hal_overrides.h" //config override file
-#include "modules/ic74hc595.h" // io extender
+#include "modules/shift_register.h" // io extender
/**
*
diff --git a/uCNC/src/core/io_control.c b/uCNC/src/core/io_control.c
index 00b041698..8ad5a1a23 100644
--- a/uCNC/src/core/io_control.c
+++ b/uCNC/src/core/io_control.c
@@ -236,6 +236,10 @@ MCU_IO_CALLBACK void mcu_inputs_changed_cb(void)
uint8_t inputs = 0;
uint8_t diff;
+#ifdef IC74HC165_HAS_DINS
+ shift_register_io_pins();
+#endif
+
#if (ASSERT_PIN(DIN0) && defined(DIN0_ISR))
if (io_get_input(DIN0))
{
@@ -321,6 +325,9 @@ uint8_t io_get_limits(void)
{
#ifdef DISABLE_ALL_LIMITS
return 0;
+#endif
+#ifdef IC74HC165_HAS_LIMITS
+ shift_register_io_pins();
#endif
uint8_t value = 0;
@@ -374,6 +381,9 @@ uint8_t io_get_controls(void)
{
#ifdef DISABLE_ALL_CONTROLS
return 0;
+#endif
+#ifdef IC74HC165_HAS_CONTROLS
+ shift_register_io_pins();
#endif
uint8_t value = 0;
#if ASSERT_PIN(ESTOP)
@@ -428,6 +438,9 @@ bool io_get_probe(void)
#if !ASSERT_PIN(PROBE)
return false;
#else
+#ifdef IC74HC165_HAS_PROBE
+ shift_register_io_pins();
+#endif
#if ASSERT_PIN(PROBE)
bool probe = (io_get_input(PROBE) != 0);
return (!g_settings.probe_invert_mask) ? probe : !probe;
@@ -527,7 +540,7 @@ void io_set_steps(uint8_t mask)
#endif
#ifdef IC74HC595_HAS_STEPS
- ic74hc595_shift_io_pins();
+ shift_register_io_pins();
#endif
}
@@ -591,7 +604,7 @@ void io_toggle_steps(uint8_t mask)
#endif
#ifdef IC74HC595_HAS_STEPS
- ic74hc595_shift_io_pins();
+ shift_register_io_pins();
#endif
}
@@ -710,7 +723,7 @@ void io_set_dirs(uint8_t mask)
#endif
#ifdef IC74HC595_HAS_DIRS
- ic74hc595_shift_io_pins();
+ shift_register_io_pins();
#endif
}
@@ -802,7 +815,7 @@ void io_enable_steppers(uint8_t mask)
#endif
#ifdef IC74HC595_HAS_STEPS_EN
- ic74hc595_shift_io_pins();
+ shift_register_io_pins();
#endif
}
@@ -985,7 +998,7 @@ MCU_CALLBACK void io_soft_pwm_update(void)
#endif
#ifdef IC74HC595_HAS_PWMS
- ic74hc595_shift_io_pins();
+ shift_register_io_pins();
#endif
}
#endif
@@ -1750,13 +1763,38 @@ void io_set_pinvalue(uint8_t pin, uint8_t value)
}
}
-#ifdef IC74HC595_HAS_DOUTS
- ic74hc595_shift_io_pins();
-#endif
+ // this ensures the pin is updated after writing (but might lead to slow or sucessive multiple readings and make firmware slow)
+ // extended pins (when not updated by an ISR), are updated frequently in the main loop
+ // for this reason will be assumed that extended pins might not update instantly.
+ // updating handling must be treated as a per need case like done in softuart/softspi modules
+
+ // #if (IC74HC595_COUNT > 0)
+ // #if defined(IC74HC165_HAS_PWM) || defined(IC74HC165_HAS_SERVOS) || defined(IC74HC165_HAS_DOUTS)
+ // if (pin >= PWM_PINS_OFFSET && pin < 100)
+ // {
+ // shift_register_io_pins();
+ // }
+ // #endif
+ // #endif
}
int16_t io_get_pinvalue(uint8_t pin)
{
+
+ // this ensures the pin is updated before reading (but might lead to slow or sucessive multiple readings and make firmware slow)
+ // extended pins (when not updated by an ISR), are updated frequently in the main loop
+ // for this reason will be assumed that extended pins might not update instantly
+ // updating handling must be treated as a per need case like done in softuart/softspi modules
+
+ // #if (IC74HC165_COUNT > 0)
+ // #if defined(IC74HC165_HAS_LIMITS) || defined(IC74HC165_HAS_CONTROLS) || defined(IC74HC165_HAS_PROBE)
+ // if (pin >= 100 && pin < ANALOG_PINS_OFFSET)
+ // {
+ // shift_register_io_pins();
+ // }
+ // #endif
+ // #endif
+
switch (pin)
{
#if ASSERT_PIN(STEP0)
diff --git a/uCNC/src/hal/boards/esp32/boardmap_mks_dlc32.h b/uCNC/src/hal/boards/esp32/boardmap_mks_dlc32.h
index 7c882258c..98ea7406f 100644
--- a/uCNC/src/hal/boards/esp32/boardmap_mks_dlc32.h
+++ b/uCNC/src/hal/boards/esp32/boardmap_mks_dlc32.h
@@ -54,7 +54,7 @@ extern "C"
// bitbanging 74hc595 (not used)
// uses 3 x 74HS595
// #define IC74HC595_COUNT 1
- // #define IC74HC595_DELAY_CYCLES 0
+ // #define SHIFT_REGISTER_DELAY_CYCLES 0
// configure the 74HC595 modules
// #define DOUT8_BIT 21
// #define DOUT9_BIT 16
diff --git a/uCNC/src/hal/boards/esp32/boardmap_mks_tinybee.h b/uCNC/src/hal/boards/esp32/boardmap_mks_tinybee.h
index 8448ef55f..99ae7b15c 100644
--- a/uCNC/src/hal/boards/esp32/boardmap_mks_tinybee.h
+++ b/uCNC/src/hal/boards/esp32/boardmap_mks_tinybee.h
@@ -50,7 +50,7 @@ extern "C"
// bitbanging 74hc595 (not used)
// uses 3 x 74HS595
// #define IC74HC595_COUNT 3
-// #define IC74HC595_DELAY_CYCLES 0
+// #define SHIFT_REGISTER_DELAY_CYCLES 0
// configure the 74HC595 modules
// #define DOUT8_BIT 27
// #define DOUT9_BIT 25
diff --git a/uCNC/src/hal/io_hal.h b/uCNC/src/hal/io_hal.h
index 697b0f11d..23522d3c7 100644
--- a/uCNC/src/hal/io_hal.h
+++ b/uCNC/src/hal/io_hal.h
@@ -7,38 +7,25 @@ extern "C"
{
#endif
-/*IO HAL*/
+ /*IO HAL*/
+
+ /*PWM*/
+ extern uint8_t g_soft_pwm_res;
+ extern uint8_t g_io_soft_pwm[16];
+ extern uint8_t mcu_softpwm_freq_config(uint16_t freq);
+
#if ASSERT_PIN_IO(STEP0)
#define io1_config_output mcu_config_output(STEP0)
#define io1_set_output mcu_set_output(STEP0)
#define io1_clear_output mcu_clear_output(STEP0)
#define io1_toggle_output mcu_toggle_output(STEP0)
#define io1_get_output mcu_get_output(STEP0)
-#if !defined(STEP0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io1_config_input mcu_config_input(STEP0)
-#else
-#define io1_config_input mcu_config_input(STEP0);mcu_config_pullup(STEP0)
-#endif
-#define io1_config_pullup mcu_config_pullup(STEP0)
-#define io1_get_input mcu_get_input(STEP0)
#elif ASSERT_PIN_EXTENDED(STEP0)
#define io1_config_output
-#define io1_set_output ic74hc595_set_pin(STEP0);ic74hc595_shift_io_pins()
-#define io1_clear_output ic74hc595_clear_pin(STEP0);ic74hc595_shift_io_pins()
-#define io1_toggle_output ic74hc595_toggle_pin(STEP0);ic74hc595_shift_io_pins()
+#define io1_set_output ic74hc595_set_pin(STEP0)
+#define io1_clear_output ic74hc595_clear_pin(STEP0)
+#define io1_toggle_output ic74hc595_toggle_pin(STEP0)
#define io1_get_output ic74hc595_get_pin(STEP0)
-#define io1_config_input
-#define io1_config_pullup
-#define io1_get_input 0
-#else
-#define io1_config_output
-#define io1_set_output
-#define io1_clear_output
-#define io1_toggle_output
-#define io1_get_output 0
-#define io1_config_input
-#define io1_config_pullup
-#define io1_get_input 0
#endif
#if ASSERT_PIN_IO(STEP1)
#define io2_config_output mcu_config_output(STEP1)
@@ -46,31 +33,12 @@ extern "C"
#define io2_clear_output mcu_clear_output(STEP1)
#define io2_toggle_output mcu_toggle_output(STEP1)
#define io2_get_output mcu_get_output(STEP1)
-#if !defined(STEP1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io2_config_input mcu_config_input(STEP1)
-#else
-#define io2_config_input mcu_config_input(STEP1);mcu_config_pullup(STEP1)
-#endif
-#define io2_config_pullup mcu_config_pullup(STEP1)
-#define io2_get_input mcu_get_input(STEP1)
#elif ASSERT_PIN_EXTENDED(STEP1)
#define io2_config_output
-#define io2_set_output ic74hc595_set_pin(STEP1);ic74hc595_shift_io_pins()
-#define io2_clear_output ic74hc595_clear_pin(STEP1);ic74hc595_shift_io_pins()
-#define io2_toggle_output ic74hc595_toggle_pin(STEP1);ic74hc595_shift_io_pins()
+#define io2_set_output ic74hc595_set_pin(STEP1)
+#define io2_clear_output ic74hc595_clear_pin(STEP1)
+#define io2_toggle_output ic74hc595_toggle_pin(STEP1)
#define io2_get_output ic74hc595_get_pin(STEP1)
-#define io2_config_input
-#define io2_config_pullup
-#define io2_get_input 0
-#else
-#define io2_config_output
-#define io2_set_output
-#define io2_clear_output
-#define io2_toggle_output
-#define io2_get_output 0
-#define io2_config_input
-#define io2_config_pullup
-#define io2_get_input 0
#endif
#if ASSERT_PIN_IO(STEP2)
#define io3_config_output mcu_config_output(STEP2)
@@ -78,31 +46,12 @@ extern "C"
#define io3_clear_output mcu_clear_output(STEP2)
#define io3_toggle_output mcu_toggle_output(STEP2)
#define io3_get_output mcu_get_output(STEP2)
-#if !defined(STEP2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io3_config_input mcu_config_input(STEP2)
-#else
-#define io3_config_input mcu_config_input(STEP2);mcu_config_pullup(STEP2)
-#endif
-#define io3_config_pullup mcu_config_pullup(STEP2)
-#define io3_get_input mcu_get_input(STEP2)
#elif ASSERT_PIN_EXTENDED(STEP2)
#define io3_config_output
-#define io3_set_output ic74hc595_set_pin(STEP2);ic74hc595_shift_io_pins()
-#define io3_clear_output ic74hc595_clear_pin(STEP2);ic74hc595_shift_io_pins()
-#define io3_toggle_output ic74hc595_toggle_pin(STEP2);ic74hc595_shift_io_pins()
+#define io3_set_output ic74hc595_set_pin(STEP2)
+#define io3_clear_output ic74hc595_clear_pin(STEP2)
+#define io3_toggle_output ic74hc595_toggle_pin(STEP2)
#define io3_get_output ic74hc595_get_pin(STEP2)
-#define io3_config_input
-#define io3_config_pullup
-#define io3_get_input 0
-#else
-#define io3_config_output
-#define io3_set_output
-#define io3_clear_output
-#define io3_toggle_output
-#define io3_get_output 0
-#define io3_config_input
-#define io3_config_pullup
-#define io3_get_input 0
#endif
#if ASSERT_PIN_IO(STEP3)
#define io4_config_output mcu_config_output(STEP3)
@@ -110,31 +59,12 @@ extern "C"
#define io4_clear_output mcu_clear_output(STEP3)
#define io4_toggle_output mcu_toggle_output(STEP3)
#define io4_get_output mcu_get_output(STEP3)
-#if !defined(STEP3_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io4_config_input mcu_config_input(STEP3)
-#else
-#define io4_config_input mcu_config_input(STEP3);mcu_config_pullup(STEP3)
-#endif
-#define io4_config_pullup mcu_config_pullup(STEP3)
-#define io4_get_input mcu_get_input(STEP3)
#elif ASSERT_PIN_EXTENDED(STEP3)
#define io4_config_output
-#define io4_set_output ic74hc595_set_pin(STEP3);ic74hc595_shift_io_pins()
-#define io4_clear_output ic74hc595_clear_pin(STEP3);ic74hc595_shift_io_pins()
-#define io4_toggle_output ic74hc595_toggle_pin(STEP3);ic74hc595_shift_io_pins()
+#define io4_set_output ic74hc595_set_pin(STEP3)
+#define io4_clear_output ic74hc595_clear_pin(STEP3)
+#define io4_toggle_output ic74hc595_toggle_pin(STEP3)
#define io4_get_output ic74hc595_get_pin(STEP3)
-#define io4_config_input
-#define io4_config_pullup
-#define io4_get_input 0
-#else
-#define io4_config_output
-#define io4_set_output
-#define io4_clear_output
-#define io4_toggle_output
-#define io4_get_output 0
-#define io4_config_input
-#define io4_config_pullup
-#define io4_get_input 0
#endif
#if ASSERT_PIN_IO(STEP4)
#define io5_config_output mcu_config_output(STEP4)
@@ -142,31 +72,12 @@ extern "C"
#define io5_clear_output mcu_clear_output(STEP4)
#define io5_toggle_output mcu_toggle_output(STEP4)
#define io5_get_output mcu_get_output(STEP4)
-#if !defined(STEP4_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io5_config_input mcu_config_input(STEP4)
-#else
-#define io5_config_input mcu_config_input(STEP4);mcu_config_pullup(STEP4)
-#endif
-#define io5_config_pullup mcu_config_pullup(STEP4)
-#define io5_get_input mcu_get_input(STEP4)
#elif ASSERT_PIN_EXTENDED(STEP4)
#define io5_config_output
-#define io5_set_output ic74hc595_set_pin(STEP4);ic74hc595_shift_io_pins()
-#define io5_clear_output ic74hc595_clear_pin(STEP4);ic74hc595_shift_io_pins()
-#define io5_toggle_output ic74hc595_toggle_pin(STEP4);ic74hc595_shift_io_pins()
+#define io5_set_output ic74hc595_set_pin(STEP4)
+#define io5_clear_output ic74hc595_clear_pin(STEP4)
+#define io5_toggle_output ic74hc595_toggle_pin(STEP4)
#define io5_get_output ic74hc595_get_pin(STEP4)
-#define io5_config_input
-#define io5_config_pullup
-#define io5_get_input 0
-#else
-#define io5_config_output
-#define io5_set_output
-#define io5_clear_output
-#define io5_toggle_output
-#define io5_get_output 0
-#define io5_config_input
-#define io5_config_pullup
-#define io5_get_input 0
#endif
#if ASSERT_PIN_IO(STEP5)
#define io6_config_output mcu_config_output(STEP5)
@@ -174,31 +85,12 @@ extern "C"
#define io6_clear_output mcu_clear_output(STEP5)
#define io6_toggle_output mcu_toggle_output(STEP5)
#define io6_get_output mcu_get_output(STEP5)
-#if !defined(STEP5_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io6_config_input mcu_config_input(STEP5)
-#else
-#define io6_config_input mcu_config_input(STEP5);mcu_config_pullup(STEP5)
-#endif
-#define io6_config_pullup mcu_config_pullup(STEP5)
-#define io6_get_input mcu_get_input(STEP5)
#elif ASSERT_PIN_EXTENDED(STEP5)
#define io6_config_output
-#define io6_set_output ic74hc595_set_pin(STEP5);ic74hc595_shift_io_pins()
-#define io6_clear_output ic74hc595_clear_pin(STEP5);ic74hc595_shift_io_pins()
-#define io6_toggle_output ic74hc595_toggle_pin(STEP5);ic74hc595_shift_io_pins()
+#define io6_set_output ic74hc595_set_pin(STEP5)
+#define io6_clear_output ic74hc595_clear_pin(STEP5)
+#define io6_toggle_output ic74hc595_toggle_pin(STEP5)
#define io6_get_output ic74hc595_get_pin(STEP5)
-#define io6_config_input
-#define io6_config_pullup
-#define io6_get_input 0
-#else
-#define io6_config_output
-#define io6_set_output
-#define io6_clear_output
-#define io6_toggle_output
-#define io6_get_output 0
-#define io6_config_input
-#define io6_config_pullup
-#define io6_get_input 0
#endif
#if ASSERT_PIN_IO(STEP6)
#define io7_config_output mcu_config_output(STEP6)
@@ -206,31 +98,12 @@ extern "C"
#define io7_clear_output mcu_clear_output(STEP6)
#define io7_toggle_output mcu_toggle_output(STEP6)
#define io7_get_output mcu_get_output(STEP6)
-#if !defined(STEP6_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io7_config_input mcu_config_input(STEP6)
-#else
-#define io7_config_input mcu_config_input(STEP6);mcu_config_pullup(STEP6)
-#endif
-#define io7_config_pullup mcu_config_pullup(STEP6)
-#define io7_get_input mcu_get_input(STEP6)
#elif ASSERT_PIN_EXTENDED(STEP6)
#define io7_config_output
-#define io7_set_output ic74hc595_set_pin(STEP6);ic74hc595_shift_io_pins()
-#define io7_clear_output ic74hc595_clear_pin(STEP6);ic74hc595_shift_io_pins()
-#define io7_toggle_output ic74hc595_toggle_pin(STEP6);ic74hc595_shift_io_pins()
+#define io7_set_output ic74hc595_set_pin(STEP6)
+#define io7_clear_output ic74hc595_clear_pin(STEP6)
+#define io7_toggle_output ic74hc595_toggle_pin(STEP6)
#define io7_get_output ic74hc595_get_pin(STEP6)
-#define io7_config_input
-#define io7_config_pullup
-#define io7_get_input 0
-#else
-#define io7_config_output
-#define io7_set_output
-#define io7_clear_output
-#define io7_toggle_output
-#define io7_get_output 0
-#define io7_config_input
-#define io7_config_pullup
-#define io7_get_input 0
#endif
#if ASSERT_PIN_IO(STEP7)
#define io8_config_output mcu_config_output(STEP7)
@@ -238,31 +111,12 @@ extern "C"
#define io8_clear_output mcu_clear_output(STEP7)
#define io8_toggle_output mcu_toggle_output(STEP7)
#define io8_get_output mcu_get_output(STEP7)
-#if !defined(STEP7_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io8_config_input mcu_config_input(STEP7)
-#else
-#define io8_config_input mcu_config_input(STEP7);mcu_config_pullup(STEP7)
-#endif
-#define io8_config_pullup mcu_config_pullup(STEP7)
-#define io8_get_input mcu_get_input(STEP7)
#elif ASSERT_PIN_EXTENDED(STEP7)
#define io8_config_output
-#define io8_set_output ic74hc595_set_pin(STEP7);ic74hc595_shift_io_pins()
-#define io8_clear_output ic74hc595_clear_pin(STEP7);ic74hc595_shift_io_pins()
-#define io8_toggle_output ic74hc595_toggle_pin(STEP7);ic74hc595_shift_io_pins()
+#define io8_set_output ic74hc595_set_pin(STEP7)
+#define io8_clear_output ic74hc595_clear_pin(STEP7)
+#define io8_toggle_output ic74hc595_toggle_pin(STEP7)
#define io8_get_output ic74hc595_get_pin(STEP7)
-#define io8_config_input
-#define io8_config_pullup
-#define io8_get_input 0
-#else
-#define io8_config_output
-#define io8_set_output
-#define io8_clear_output
-#define io8_toggle_output
-#define io8_get_output 0
-#define io8_config_input
-#define io8_config_pullup
-#define io8_get_input 0
#endif
#if ASSERT_PIN_IO(DIR0)
#define io9_config_output mcu_config_output(DIR0)
@@ -270,31 +124,12 @@ extern "C"
#define io9_clear_output mcu_clear_output(DIR0)
#define io9_toggle_output mcu_toggle_output(DIR0)
#define io9_get_output mcu_get_output(DIR0)
-#if !defined(DIR0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io9_config_input mcu_config_input(DIR0)
-#else
-#define io9_config_input mcu_config_input(DIR0);mcu_config_pullup(DIR0)
-#endif
-#define io9_config_pullup mcu_config_pullup(DIR0)
-#define io9_get_input mcu_get_input(DIR0)
#elif ASSERT_PIN_EXTENDED(DIR0)
#define io9_config_output
-#define io9_set_output ic74hc595_set_pin(DIR0);ic74hc595_shift_io_pins()
-#define io9_clear_output ic74hc595_clear_pin(DIR0);ic74hc595_shift_io_pins()
-#define io9_toggle_output ic74hc595_toggle_pin(DIR0);ic74hc595_shift_io_pins()
+#define io9_set_output ic74hc595_set_pin(DIR0)
+#define io9_clear_output ic74hc595_clear_pin(DIR0)
+#define io9_toggle_output ic74hc595_toggle_pin(DIR0)
#define io9_get_output ic74hc595_get_pin(DIR0)
-#define io9_config_input
-#define io9_config_pullup
-#define io9_get_input 0
-#else
-#define io9_config_output
-#define io9_set_output
-#define io9_clear_output
-#define io9_toggle_output
-#define io9_get_output 0
-#define io9_config_input
-#define io9_config_pullup
-#define io9_get_input 0
#endif
#if ASSERT_PIN_IO(DIR1)
#define io10_config_output mcu_config_output(DIR1)
@@ -302,31 +137,12 @@ extern "C"
#define io10_clear_output mcu_clear_output(DIR1)
#define io10_toggle_output mcu_toggle_output(DIR1)
#define io10_get_output mcu_get_output(DIR1)
-#if !defined(DIR1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io10_config_input mcu_config_input(DIR1)
-#else
-#define io10_config_input mcu_config_input(DIR1);mcu_config_pullup(DIR1)
-#endif
-#define io10_config_pullup mcu_config_pullup(DIR1)
-#define io10_get_input mcu_get_input(DIR1)
#elif ASSERT_PIN_EXTENDED(DIR1)
#define io10_config_output
-#define io10_set_output ic74hc595_set_pin(DIR1);ic74hc595_shift_io_pins()
-#define io10_clear_output ic74hc595_clear_pin(DIR1);ic74hc595_shift_io_pins()
-#define io10_toggle_output ic74hc595_toggle_pin(DIR1);ic74hc595_shift_io_pins()
+#define io10_set_output ic74hc595_set_pin(DIR1)
+#define io10_clear_output ic74hc595_clear_pin(DIR1)
+#define io10_toggle_output ic74hc595_toggle_pin(DIR1)
#define io10_get_output ic74hc595_get_pin(DIR1)
-#define io10_config_input
-#define io10_config_pullup
-#define io10_get_input 0
-#else
-#define io10_config_output
-#define io10_set_output
-#define io10_clear_output
-#define io10_toggle_output
-#define io10_get_output 0
-#define io10_config_input
-#define io10_config_pullup
-#define io10_get_input 0
#endif
#if ASSERT_PIN_IO(DIR2)
#define io11_config_output mcu_config_output(DIR2)
@@ -334,31 +150,12 @@ extern "C"
#define io11_clear_output mcu_clear_output(DIR2)
#define io11_toggle_output mcu_toggle_output(DIR2)
#define io11_get_output mcu_get_output(DIR2)
-#if !defined(DIR2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io11_config_input mcu_config_input(DIR2)
-#else
-#define io11_config_input mcu_config_input(DIR2);mcu_config_pullup(DIR2)
-#endif
-#define io11_config_pullup mcu_config_pullup(DIR2)
-#define io11_get_input mcu_get_input(DIR2)
#elif ASSERT_PIN_EXTENDED(DIR2)
#define io11_config_output
-#define io11_set_output ic74hc595_set_pin(DIR2);ic74hc595_shift_io_pins()
-#define io11_clear_output ic74hc595_clear_pin(DIR2);ic74hc595_shift_io_pins()
-#define io11_toggle_output ic74hc595_toggle_pin(DIR2);ic74hc595_shift_io_pins()
+#define io11_set_output ic74hc595_set_pin(DIR2)
+#define io11_clear_output ic74hc595_clear_pin(DIR2)
+#define io11_toggle_output ic74hc595_toggle_pin(DIR2)
#define io11_get_output ic74hc595_get_pin(DIR2)
-#define io11_config_input
-#define io11_config_pullup
-#define io11_get_input 0
-#else
-#define io11_config_output
-#define io11_set_output
-#define io11_clear_output
-#define io11_toggle_output
-#define io11_get_output 0
-#define io11_config_input
-#define io11_config_pullup
-#define io11_get_input 0
#endif
#if ASSERT_PIN_IO(DIR3)
#define io12_config_output mcu_config_output(DIR3)
@@ -366,31 +163,12 @@ extern "C"
#define io12_clear_output mcu_clear_output(DIR3)
#define io12_toggle_output mcu_toggle_output(DIR3)
#define io12_get_output mcu_get_output(DIR3)
-#if !defined(DIR3_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io12_config_input mcu_config_input(DIR3)
-#else
-#define io12_config_input mcu_config_input(DIR3);mcu_config_pullup(DIR3)
-#endif
-#define io12_config_pullup mcu_config_pullup(DIR3)
-#define io12_get_input mcu_get_input(DIR3)
#elif ASSERT_PIN_EXTENDED(DIR3)
#define io12_config_output
-#define io12_set_output ic74hc595_set_pin(DIR3);ic74hc595_shift_io_pins()
-#define io12_clear_output ic74hc595_clear_pin(DIR3);ic74hc595_shift_io_pins()
-#define io12_toggle_output ic74hc595_toggle_pin(DIR3);ic74hc595_shift_io_pins()
+#define io12_set_output ic74hc595_set_pin(DIR3)
+#define io12_clear_output ic74hc595_clear_pin(DIR3)
+#define io12_toggle_output ic74hc595_toggle_pin(DIR3)
#define io12_get_output ic74hc595_get_pin(DIR3)
-#define io12_config_input
-#define io12_config_pullup
-#define io12_get_input 0
-#else
-#define io12_config_output
-#define io12_set_output
-#define io12_clear_output
-#define io12_toggle_output
-#define io12_get_output 0
-#define io12_config_input
-#define io12_config_pullup
-#define io12_get_input 0
#endif
#if ASSERT_PIN_IO(DIR4)
#define io13_config_output mcu_config_output(DIR4)
@@ -398,31 +176,12 @@ extern "C"
#define io13_clear_output mcu_clear_output(DIR4)
#define io13_toggle_output mcu_toggle_output(DIR4)
#define io13_get_output mcu_get_output(DIR4)
-#if !defined(DIR4_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io13_config_input mcu_config_input(DIR4)
-#else
-#define io13_config_input mcu_config_input(DIR4);mcu_config_pullup(DIR4)
-#endif
-#define io13_config_pullup mcu_config_pullup(DIR4)
-#define io13_get_input mcu_get_input(DIR4)
#elif ASSERT_PIN_EXTENDED(DIR4)
#define io13_config_output
-#define io13_set_output ic74hc595_set_pin(DIR4);ic74hc595_shift_io_pins()
-#define io13_clear_output ic74hc595_clear_pin(DIR4);ic74hc595_shift_io_pins()
-#define io13_toggle_output ic74hc595_toggle_pin(DIR4);ic74hc595_shift_io_pins()
+#define io13_set_output ic74hc595_set_pin(DIR4)
+#define io13_clear_output ic74hc595_clear_pin(DIR4)
+#define io13_toggle_output ic74hc595_toggle_pin(DIR4)
#define io13_get_output ic74hc595_get_pin(DIR4)
-#define io13_config_input
-#define io13_config_pullup
-#define io13_get_input 0
-#else
-#define io13_config_output
-#define io13_set_output
-#define io13_clear_output
-#define io13_toggle_output
-#define io13_get_output 0
-#define io13_config_input
-#define io13_config_pullup
-#define io13_get_input 0
#endif
#if ASSERT_PIN_IO(DIR5)
#define io14_config_output mcu_config_output(DIR5)
@@ -430,31 +189,12 @@ extern "C"
#define io14_clear_output mcu_clear_output(DIR5)
#define io14_toggle_output mcu_toggle_output(DIR5)
#define io14_get_output mcu_get_output(DIR5)
-#if !defined(DIR5_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io14_config_input mcu_config_input(DIR5)
-#else
-#define io14_config_input mcu_config_input(DIR5);mcu_config_pullup(DIR5)
-#endif
-#define io14_config_pullup mcu_config_pullup(DIR5)
-#define io14_get_input mcu_get_input(DIR5)
#elif ASSERT_PIN_EXTENDED(DIR5)
#define io14_config_output
-#define io14_set_output ic74hc595_set_pin(DIR5);ic74hc595_shift_io_pins()
-#define io14_clear_output ic74hc595_clear_pin(DIR5);ic74hc595_shift_io_pins()
-#define io14_toggle_output ic74hc595_toggle_pin(DIR5);ic74hc595_shift_io_pins()
+#define io14_set_output ic74hc595_set_pin(DIR5)
+#define io14_clear_output ic74hc595_clear_pin(DIR5)
+#define io14_toggle_output ic74hc595_toggle_pin(DIR5)
#define io14_get_output ic74hc595_get_pin(DIR5)
-#define io14_config_input
-#define io14_config_pullup
-#define io14_get_input 0
-#else
-#define io14_config_output
-#define io14_set_output
-#define io14_clear_output
-#define io14_toggle_output
-#define io14_get_output 0
-#define io14_config_input
-#define io14_config_pullup
-#define io14_get_input 0
#endif
#if ASSERT_PIN_IO(DIR6)
#define io15_config_output mcu_config_output(DIR6)
@@ -462,31 +202,12 @@ extern "C"
#define io15_clear_output mcu_clear_output(DIR6)
#define io15_toggle_output mcu_toggle_output(DIR6)
#define io15_get_output mcu_get_output(DIR6)
-#if !defined(DIR6_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io15_config_input mcu_config_input(DIR6)
-#else
-#define io15_config_input mcu_config_input(DIR6);mcu_config_pullup(DIR6)
-#endif
-#define io15_config_pullup mcu_config_pullup(DIR6)
-#define io15_get_input mcu_get_input(DIR6)
#elif ASSERT_PIN_EXTENDED(DIR6)
#define io15_config_output
-#define io15_set_output ic74hc595_set_pin(DIR6);ic74hc595_shift_io_pins()
-#define io15_clear_output ic74hc595_clear_pin(DIR6);ic74hc595_shift_io_pins()
-#define io15_toggle_output ic74hc595_toggle_pin(DIR6);ic74hc595_shift_io_pins()
+#define io15_set_output ic74hc595_set_pin(DIR6)
+#define io15_clear_output ic74hc595_clear_pin(DIR6)
+#define io15_toggle_output ic74hc595_toggle_pin(DIR6)
#define io15_get_output ic74hc595_get_pin(DIR6)
-#define io15_config_input
-#define io15_config_pullup
-#define io15_get_input 0
-#else
-#define io15_config_output
-#define io15_set_output
-#define io15_clear_output
-#define io15_toggle_output
-#define io15_get_output 0
-#define io15_config_input
-#define io15_config_pullup
-#define io15_get_input 0
#endif
#if ASSERT_PIN_IO(DIR7)
#define io16_config_output mcu_config_output(DIR7)
@@ -494,31 +215,12 @@ extern "C"
#define io16_clear_output mcu_clear_output(DIR7)
#define io16_toggle_output mcu_toggle_output(DIR7)
#define io16_get_output mcu_get_output(DIR7)
-#if !defined(DIR7_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io16_config_input mcu_config_input(DIR7)
-#else
-#define io16_config_input mcu_config_input(DIR7);mcu_config_pullup(DIR7)
-#endif
-#define io16_config_pullup mcu_config_pullup(DIR7)
-#define io16_get_input mcu_get_input(DIR7)
#elif ASSERT_PIN_EXTENDED(DIR7)
#define io16_config_output
-#define io16_set_output ic74hc595_set_pin(DIR7);ic74hc595_shift_io_pins()
-#define io16_clear_output ic74hc595_clear_pin(DIR7);ic74hc595_shift_io_pins()
-#define io16_toggle_output ic74hc595_toggle_pin(DIR7);ic74hc595_shift_io_pins()
+#define io16_set_output ic74hc595_set_pin(DIR7)
+#define io16_clear_output ic74hc595_clear_pin(DIR7)
+#define io16_toggle_output ic74hc595_toggle_pin(DIR7)
#define io16_get_output ic74hc595_get_pin(DIR7)
-#define io16_config_input
-#define io16_config_pullup
-#define io16_get_input 0
-#else
-#define io16_config_output
-#define io16_set_output
-#define io16_clear_output
-#define io16_toggle_output
-#define io16_get_output 0
-#define io16_config_input
-#define io16_config_pullup
-#define io16_get_input 0
#endif
#if ASSERT_PIN_IO(STEP0_EN)
#define io17_config_output mcu_config_output(STEP0_EN)
@@ -526,31 +228,12 @@ extern "C"
#define io17_clear_output mcu_clear_output(STEP0_EN)
#define io17_toggle_output mcu_toggle_output(STEP0_EN)
#define io17_get_output mcu_get_output(STEP0_EN)
-#if !defined(STEP0_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io17_config_input mcu_config_input(STEP0_EN)
-#else
-#define io17_config_input mcu_config_input(STEP0_EN);mcu_config_pullup(STEP0_EN)
-#endif
-#define io17_config_pullup mcu_config_pullup(STEP0_EN)
-#define io17_get_input mcu_get_input(STEP0_EN)
#elif ASSERT_PIN_EXTENDED(STEP0_EN)
#define io17_config_output
-#define io17_set_output ic74hc595_set_pin(STEP0_EN);ic74hc595_shift_io_pins()
-#define io17_clear_output ic74hc595_clear_pin(STEP0_EN);ic74hc595_shift_io_pins()
-#define io17_toggle_output ic74hc595_toggle_pin(STEP0_EN);ic74hc595_shift_io_pins()
+#define io17_set_output ic74hc595_set_pin(STEP0_EN)
+#define io17_clear_output ic74hc595_clear_pin(STEP0_EN)
+#define io17_toggle_output ic74hc595_toggle_pin(STEP0_EN)
#define io17_get_output ic74hc595_get_pin(STEP0_EN)
-#define io17_config_input
-#define io17_config_pullup
-#define io17_get_input 0
-#else
-#define io17_config_output
-#define io17_set_output
-#define io17_clear_output
-#define io17_toggle_output
-#define io17_get_output 0
-#define io17_config_input
-#define io17_config_pullup
-#define io17_get_input 0
#endif
#if ASSERT_PIN_IO(STEP1_EN)
#define io18_config_output mcu_config_output(STEP1_EN)
@@ -558,31 +241,12 @@ extern "C"
#define io18_clear_output mcu_clear_output(STEP1_EN)
#define io18_toggle_output mcu_toggle_output(STEP1_EN)
#define io18_get_output mcu_get_output(STEP1_EN)
-#if !defined(STEP1_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io18_config_input mcu_config_input(STEP1_EN)
-#else
-#define io18_config_input mcu_config_input(STEP1_EN);mcu_config_pullup(STEP1_EN)
-#endif
-#define io18_config_pullup mcu_config_pullup(STEP1_EN)
-#define io18_get_input mcu_get_input(STEP1_EN)
#elif ASSERT_PIN_EXTENDED(STEP1_EN)
#define io18_config_output
-#define io18_set_output ic74hc595_set_pin(STEP1_EN);ic74hc595_shift_io_pins()
-#define io18_clear_output ic74hc595_clear_pin(STEP1_EN);ic74hc595_shift_io_pins()
-#define io18_toggle_output ic74hc595_toggle_pin(STEP1_EN);ic74hc595_shift_io_pins()
+#define io18_set_output ic74hc595_set_pin(STEP1_EN)
+#define io18_clear_output ic74hc595_clear_pin(STEP1_EN)
+#define io18_toggle_output ic74hc595_toggle_pin(STEP1_EN)
#define io18_get_output ic74hc595_get_pin(STEP1_EN)
-#define io18_config_input
-#define io18_config_pullup
-#define io18_get_input 0
-#else
-#define io18_config_output
-#define io18_set_output
-#define io18_clear_output
-#define io18_toggle_output
-#define io18_get_output 0
-#define io18_config_input
-#define io18_config_pullup
-#define io18_get_input 0
#endif
#if ASSERT_PIN_IO(STEP2_EN)
#define io19_config_output mcu_config_output(STEP2_EN)
@@ -590,31 +254,12 @@ extern "C"
#define io19_clear_output mcu_clear_output(STEP2_EN)
#define io19_toggle_output mcu_toggle_output(STEP2_EN)
#define io19_get_output mcu_get_output(STEP2_EN)
-#if !defined(STEP2_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io19_config_input mcu_config_input(STEP2_EN)
-#else
-#define io19_config_input mcu_config_input(STEP2_EN);mcu_config_pullup(STEP2_EN)
-#endif
-#define io19_config_pullup mcu_config_pullup(STEP2_EN)
-#define io19_get_input mcu_get_input(STEP2_EN)
#elif ASSERT_PIN_EXTENDED(STEP2_EN)
#define io19_config_output
-#define io19_set_output ic74hc595_set_pin(STEP2_EN);ic74hc595_shift_io_pins()
-#define io19_clear_output ic74hc595_clear_pin(STEP2_EN);ic74hc595_shift_io_pins()
-#define io19_toggle_output ic74hc595_toggle_pin(STEP2_EN);ic74hc595_shift_io_pins()
+#define io19_set_output ic74hc595_set_pin(STEP2_EN)
+#define io19_clear_output ic74hc595_clear_pin(STEP2_EN)
+#define io19_toggle_output ic74hc595_toggle_pin(STEP2_EN)
#define io19_get_output ic74hc595_get_pin(STEP2_EN)
-#define io19_config_input
-#define io19_config_pullup
-#define io19_get_input 0
-#else
-#define io19_config_output
-#define io19_set_output
-#define io19_clear_output
-#define io19_toggle_output
-#define io19_get_output 0
-#define io19_config_input
-#define io19_config_pullup
-#define io19_get_input 0
#endif
#if ASSERT_PIN_IO(STEP3_EN)
#define io20_config_output mcu_config_output(STEP3_EN)
@@ -622,31 +267,12 @@ extern "C"
#define io20_clear_output mcu_clear_output(STEP3_EN)
#define io20_toggle_output mcu_toggle_output(STEP3_EN)
#define io20_get_output mcu_get_output(STEP3_EN)
-#if !defined(STEP3_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io20_config_input mcu_config_input(STEP3_EN)
-#else
-#define io20_config_input mcu_config_input(STEP3_EN);mcu_config_pullup(STEP3_EN)
-#endif
-#define io20_config_pullup mcu_config_pullup(STEP3_EN)
-#define io20_get_input mcu_get_input(STEP3_EN)
#elif ASSERT_PIN_EXTENDED(STEP3_EN)
#define io20_config_output
-#define io20_set_output ic74hc595_set_pin(STEP3_EN);ic74hc595_shift_io_pins()
-#define io20_clear_output ic74hc595_clear_pin(STEP3_EN);ic74hc595_shift_io_pins()
-#define io20_toggle_output ic74hc595_toggle_pin(STEP3_EN);ic74hc595_shift_io_pins()
+#define io20_set_output ic74hc595_set_pin(STEP3_EN)
+#define io20_clear_output ic74hc595_clear_pin(STEP3_EN)
+#define io20_toggle_output ic74hc595_toggle_pin(STEP3_EN)
#define io20_get_output ic74hc595_get_pin(STEP3_EN)
-#define io20_config_input
-#define io20_config_pullup
-#define io20_get_input 0
-#else
-#define io20_config_output
-#define io20_set_output
-#define io20_clear_output
-#define io20_toggle_output
-#define io20_get_output 0
-#define io20_config_input
-#define io20_config_pullup
-#define io20_get_input 0
#endif
#if ASSERT_PIN_IO(STEP4_EN)
#define io21_config_output mcu_config_output(STEP4_EN)
@@ -654,31 +280,12 @@ extern "C"
#define io21_clear_output mcu_clear_output(STEP4_EN)
#define io21_toggle_output mcu_toggle_output(STEP4_EN)
#define io21_get_output mcu_get_output(STEP4_EN)
-#if !defined(STEP4_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io21_config_input mcu_config_input(STEP4_EN)
-#else
-#define io21_config_input mcu_config_input(STEP4_EN);mcu_config_pullup(STEP4_EN)
-#endif
-#define io21_config_pullup mcu_config_pullup(STEP4_EN)
-#define io21_get_input mcu_get_input(STEP4_EN)
#elif ASSERT_PIN_EXTENDED(STEP4_EN)
#define io21_config_output
-#define io21_set_output ic74hc595_set_pin(STEP4_EN);ic74hc595_shift_io_pins()
-#define io21_clear_output ic74hc595_clear_pin(STEP4_EN);ic74hc595_shift_io_pins()
-#define io21_toggle_output ic74hc595_toggle_pin(STEP4_EN);ic74hc595_shift_io_pins()
+#define io21_set_output ic74hc595_set_pin(STEP4_EN)
+#define io21_clear_output ic74hc595_clear_pin(STEP4_EN)
+#define io21_toggle_output ic74hc595_toggle_pin(STEP4_EN)
#define io21_get_output ic74hc595_get_pin(STEP4_EN)
-#define io21_config_input
-#define io21_config_pullup
-#define io21_get_input 0
-#else
-#define io21_config_output
-#define io21_set_output
-#define io21_clear_output
-#define io21_toggle_output
-#define io21_get_output 0
-#define io21_config_input
-#define io21_config_pullup
-#define io21_get_input 0
#endif
#if ASSERT_PIN_IO(STEP5_EN)
#define io22_config_output mcu_config_output(STEP5_EN)
@@ -686,31 +293,12 @@ extern "C"
#define io22_clear_output mcu_clear_output(STEP5_EN)
#define io22_toggle_output mcu_toggle_output(STEP5_EN)
#define io22_get_output mcu_get_output(STEP5_EN)
-#if !defined(STEP5_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io22_config_input mcu_config_input(STEP5_EN)
-#else
-#define io22_config_input mcu_config_input(STEP5_EN);mcu_config_pullup(STEP5_EN)
-#endif
-#define io22_config_pullup mcu_config_pullup(STEP5_EN)
-#define io22_get_input mcu_get_input(STEP5_EN)
#elif ASSERT_PIN_EXTENDED(STEP5_EN)
#define io22_config_output
-#define io22_set_output ic74hc595_set_pin(STEP5_EN);ic74hc595_shift_io_pins()
-#define io22_clear_output ic74hc595_clear_pin(STEP5_EN);ic74hc595_shift_io_pins()
-#define io22_toggle_output ic74hc595_toggle_pin(STEP5_EN);ic74hc595_shift_io_pins()
+#define io22_set_output ic74hc595_set_pin(STEP5_EN)
+#define io22_clear_output ic74hc595_clear_pin(STEP5_EN)
+#define io22_toggle_output ic74hc595_toggle_pin(STEP5_EN)
#define io22_get_output ic74hc595_get_pin(STEP5_EN)
-#define io22_config_input
-#define io22_config_pullup
-#define io22_get_input 0
-#else
-#define io22_config_output
-#define io22_set_output
-#define io22_clear_output
-#define io22_toggle_output
-#define io22_get_output 0
-#define io22_config_input
-#define io22_config_pullup
-#define io22_get_input 0
#endif
#if ASSERT_PIN_IO(STEP6_EN)
#define io23_config_output mcu_config_output(STEP6_EN)
@@ -718,31 +306,12 @@ extern "C"
#define io23_clear_output mcu_clear_output(STEP6_EN)
#define io23_toggle_output mcu_toggle_output(STEP6_EN)
#define io23_get_output mcu_get_output(STEP6_EN)
-#if !defined(STEP6_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io23_config_input mcu_config_input(STEP6_EN)
-#else
-#define io23_config_input mcu_config_input(STEP6_EN);mcu_config_pullup(STEP6_EN)
-#endif
-#define io23_config_pullup mcu_config_pullup(STEP6_EN)
-#define io23_get_input mcu_get_input(STEP6_EN)
#elif ASSERT_PIN_EXTENDED(STEP6_EN)
#define io23_config_output
-#define io23_set_output ic74hc595_set_pin(STEP6_EN);ic74hc595_shift_io_pins()
-#define io23_clear_output ic74hc595_clear_pin(STEP6_EN);ic74hc595_shift_io_pins()
-#define io23_toggle_output ic74hc595_toggle_pin(STEP6_EN);ic74hc595_shift_io_pins()
+#define io23_set_output ic74hc595_set_pin(STEP6_EN)
+#define io23_clear_output ic74hc595_clear_pin(STEP6_EN)
+#define io23_toggle_output ic74hc595_toggle_pin(STEP6_EN)
#define io23_get_output ic74hc595_get_pin(STEP6_EN)
-#define io23_config_input
-#define io23_config_pullup
-#define io23_get_input 0
-#else
-#define io23_config_output
-#define io23_set_output
-#define io23_clear_output
-#define io23_toggle_output
-#define io23_get_output 0
-#define io23_config_input
-#define io23_config_pullup
-#define io23_get_input 0
#endif
#if ASSERT_PIN_IO(STEP7_EN)
#define io24_config_output mcu_config_output(STEP7_EN)
@@ -750,31 +319,12 @@ extern "C"
#define io24_clear_output mcu_clear_output(STEP7_EN)
#define io24_toggle_output mcu_toggle_output(STEP7_EN)
#define io24_get_output mcu_get_output(STEP7_EN)
-#if !defined(STEP7_EN_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io24_config_input mcu_config_input(STEP7_EN)
-#else
-#define io24_config_input mcu_config_input(STEP7_EN);mcu_config_pullup(STEP7_EN)
-#endif
-#define io24_config_pullup mcu_config_pullup(STEP7_EN)
-#define io24_get_input mcu_get_input(STEP7_EN)
#elif ASSERT_PIN_EXTENDED(STEP7_EN)
#define io24_config_output
-#define io24_set_output ic74hc595_set_pin(STEP7_EN);ic74hc595_shift_io_pins()
-#define io24_clear_output ic74hc595_clear_pin(STEP7_EN);ic74hc595_shift_io_pins()
-#define io24_toggle_output ic74hc595_toggle_pin(STEP7_EN);ic74hc595_shift_io_pins()
+#define io24_set_output ic74hc595_set_pin(STEP7_EN)
+#define io24_clear_output ic74hc595_clear_pin(STEP7_EN)
+#define io24_toggle_output ic74hc595_toggle_pin(STEP7_EN)
#define io24_get_output ic74hc595_get_pin(STEP7_EN)
-#define io24_config_input
-#define io24_config_pullup
-#define io24_get_input 0
-#else
-#define io24_config_output
-#define io24_set_output
-#define io24_clear_output
-#define io24_toggle_output
-#define io24_get_output 0
-#define io24_config_input
-#define io24_config_pullup
-#define io24_get_input 0
#endif
#if ASSERT_PIN_IO(PWM0)
#define io25_config_output mcu_config_output(PWM0)
@@ -782,31 +332,25 @@ extern "C"
#define io25_clear_output mcu_clear_output(PWM0)
#define io25_toggle_output mcu_toggle_output(PWM0)
#define io25_get_output mcu_get_output(PWM0)
-#if !defined(PWM0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io25_config_input mcu_config_input(PWM0)
-#else
-#define io25_config_input mcu_config_input(PWM0);mcu_config_pullup(PWM0)
-#endif
-#define io25_config_pullup mcu_config_pullup(PWM0)
-#define io25_get_input mcu_get_input(PWM0)
+#define io25_config_pwm(freq) mcu_config_pwm(PWM0, freq)
+#define io25_set_pwm(value) mcu_set_pwm(PWM0, value)
+#define io25_get_pwm mcu_get_pwm(PWM0)
#elif ASSERT_PIN_EXTENDED(PWM0)
-#define io25_config_output
-#define io25_set_output ic74hc595_set_pin(PWM0);ic74hc595_shift_io_pins()
-#define io25_clear_output ic74hc595_clear_pin(PWM0);ic74hc595_shift_io_pins()
-#define io25_toggle_output ic74hc595_toggle_pin(PWM0);ic74hc595_shift_io_pins()
+#define io25_config_output ({})
+#define io25_set_output ic74hc595_set_pin(PWM0)
+#define io25_clear_output ic74hc595_clear_pin(PWM0)
+#define io25_toggle_output ic74hc595_toggle_pin(PWM0)
#define io25_get_output ic74hc595_get_pin(PWM0)
-#define io25_config_input
-#define io25_config_pullup
-#define io25_get_input 0
-#else
-#define io25_config_output
-#define io25_set_output
-#define io25_clear_output
-#define io25_toggle_output
-#define io25_get_output 0
-#define io25_config_input
-#define io25_config_pullup
-#define io25_get_input 0
+#define io25_config_pwm(freq) \
+ { \
+ io_config_output(PWM0); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io25_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM0 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io25_get_pwm g_io_soft_pwm[PWM0 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM1)
#define io26_config_output mcu_config_output(PWM1)
@@ -814,31 +358,25 @@ extern "C"
#define io26_clear_output mcu_clear_output(PWM1)
#define io26_toggle_output mcu_toggle_output(PWM1)
#define io26_get_output mcu_get_output(PWM1)
-#if !defined(PWM1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io26_config_input mcu_config_input(PWM1)
-#else
-#define io26_config_input mcu_config_input(PWM1);mcu_config_pullup(PWM1)
-#endif
-#define io26_config_pullup mcu_config_pullup(PWM1)
-#define io26_get_input mcu_get_input(PWM1)
+#define io26_config_pwm(freq) mcu_config_pwm(PWM1, freq)
+#define io26_set_pwm(value) mcu_set_pwm(PWM1, value)
+#define io26_get_pwm mcu_get_pwm(PWM1)
#elif ASSERT_PIN_EXTENDED(PWM1)
-#define io26_config_output
-#define io26_set_output ic74hc595_set_pin(PWM1);ic74hc595_shift_io_pins()
-#define io26_clear_output ic74hc595_clear_pin(PWM1);ic74hc595_shift_io_pins()
-#define io26_toggle_output ic74hc595_toggle_pin(PWM1);ic74hc595_shift_io_pins()
+#define io26_config_output ({})
+#define io26_set_output ic74hc595_set_pin(PWM1)
+#define io26_clear_output ic74hc595_clear_pin(PWM1)
+#define io26_toggle_output ic74hc595_toggle_pin(PWM1)
#define io26_get_output ic74hc595_get_pin(PWM1)
-#define io26_config_input
-#define io26_config_pullup
-#define io26_get_input 0
-#else
-#define io26_config_output
-#define io26_set_output
-#define io26_clear_output
-#define io26_toggle_output
-#define io26_get_output 0
-#define io26_config_input
-#define io26_config_pullup
-#define io26_get_input 0
+#define io26_config_pwm(freq) \
+ { \
+ io_config_output(PWM1); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io26_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM1 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io26_get_pwm g_io_soft_pwm[PWM1 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM2)
#define io27_config_output mcu_config_output(PWM2)
@@ -846,31 +384,25 @@ extern "C"
#define io27_clear_output mcu_clear_output(PWM2)
#define io27_toggle_output mcu_toggle_output(PWM2)
#define io27_get_output mcu_get_output(PWM2)
-#if !defined(PWM2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io27_config_input mcu_config_input(PWM2)
-#else
-#define io27_config_input mcu_config_input(PWM2);mcu_config_pullup(PWM2)
-#endif
-#define io27_config_pullup mcu_config_pullup(PWM2)
-#define io27_get_input mcu_get_input(PWM2)
+#define io27_config_pwm(freq) mcu_config_pwm(PWM2, freq)
+#define io27_set_pwm(value) mcu_set_pwm(PWM2, value)
+#define io27_get_pwm mcu_get_pwm(PWM2)
#elif ASSERT_PIN_EXTENDED(PWM2)
-#define io27_config_output
-#define io27_set_output ic74hc595_set_pin(PWM2);ic74hc595_shift_io_pins()
-#define io27_clear_output ic74hc595_clear_pin(PWM2);ic74hc595_shift_io_pins()
-#define io27_toggle_output ic74hc595_toggle_pin(PWM2);ic74hc595_shift_io_pins()
+#define io27_config_output ({})
+#define io27_set_output ic74hc595_set_pin(PWM2)
+#define io27_clear_output ic74hc595_clear_pin(PWM2)
+#define io27_toggle_output ic74hc595_toggle_pin(PWM2)
#define io27_get_output ic74hc595_get_pin(PWM2)
-#define io27_config_input
-#define io27_config_pullup
-#define io27_get_input 0
-#else
-#define io27_config_output
-#define io27_set_output
-#define io27_clear_output
-#define io27_toggle_output
-#define io27_get_output 0
-#define io27_config_input
-#define io27_config_pullup
-#define io27_get_input 0
+#define io27_config_pwm(freq) \
+ { \
+ io_config_output(PWM2); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io27_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM2 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io27_get_pwm g_io_soft_pwm[PWM2 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM3)
#define io28_config_output mcu_config_output(PWM3)
@@ -878,31 +410,25 @@ extern "C"
#define io28_clear_output mcu_clear_output(PWM3)
#define io28_toggle_output mcu_toggle_output(PWM3)
#define io28_get_output mcu_get_output(PWM3)
-#if !defined(PWM3_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io28_config_input mcu_config_input(PWM3)
-#else
-#define io28_config_input mcu_config_input(PWM3);mcu_config_pullup(PWM3)
-#endif
-#define io28_config_pullup mcu_config_pullup(PWM3)
-#define io28_get_input mcu_get_input(PWM3)
+#define io28_config_pwm(freq) mcu_config_pwm(PWM3, freq)
+#define io28_set_pwm(value) mcu_set_pwm(PWM3, value)
+#define io28_get_pwm mcu_get_pwm(PWM3)
#elif ASSERT_PIN_EXTENDED(PWM3)
-#define io28_config_output
-#define io28_set_output ic74hc595_set_pin(PWM3);ic74hc595_shift_io_pins()
-#define io28_clear_output ic74hc595_clear_pin(PWM3);ic74hc595_shift_io_pins()
-#define io28_toggle_output ic74hc595_toggle_pin(PWM3);ic74hc595_shift_io_pins()
+#define io28_config_output ({})
+#define io28_set_output ic74hc595_set_pin(PWM3)
+#define io28_clear_output ic74hc595_clear_pin(PWM3)
+#define io28_toggle_output ic74hc595_toggle_pin(PWM3)
#define io28_get_output ic74hc595_get_pin(PWM3)
-#define io28_config_input
-#define io28_config_pullup
-#define io28_get_input 0
-#else
-#define io28_config_output
-#define io28_set_output
-#define io28_clear_output
-#define io28_toggle_output
-#define io28_get_output 0
-#define io28_config_input
-#define io28_config_pullup
-#define io28_get_input 0
+#define io28_config_pwm(freq) \
+ { \
+ io_config_output(PWM3); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io28_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM3 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io28_get_pwm g_io_soft_pwm[PWM3 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM4)
#define io29_config_output mcu_config_output(PWM4)
@@ -910,31 +436,25 @@ extern "C"
#define io29_clear_output mcu_clear_output(PWM4)
#define io29_toggle_output mcu_toggle_output(PWM4)
#define io29_get_output mcu_get_output(PWM4)
-#if !defined(PWM4_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io29_config_input mcu_config_input(PWM4)
-#else
-#define io29_config_input mcu_config_input(PWM4);mcu_config_pullup(PWM4)
-#endif
-#define io29_config_pullup mcu_config_pullup(PWM4)
-#define io29_get_input mcu_get_input(PWM4)
+#define io29_config_pwm(freq) mcu_config_pwm(PWM4, freq)
+#define io29_set_pwm(value) mcu_set_pwm(PWM4, value)
+#define io29_get_pwm mcu_get_pwm(PWM4)
#elif ASSERT_PIN_EXTENDED(PWM4)
-#define io29_config_output
-#define io29_set_output ic74hc595_set_pin(PWM4);ic74hc595_shift_io_pins()
-#define io29_clear_output ic74hc595_clear_pin(PWM4);ic74hc595_shift_io_pins()
-#define io29_toggle_output ic74hc595_toggle_pin(PWM4);ic74hc595_shift_io_pins()
+#define io29_config_output ({})
+#define io29_set_output ic74hc595_set_pin(PWM4)
+#define io29_clear_output ic74hc595_clear_pin(PWM4)
+#define io29_toggle_output ic74hc595_toggle_pin(PWM4)
#define io29_get_output ic74hc595_get_pin(PWM4)
-#define io29_config_input
-#define io29_config_pullup
-#define io29_get_input 0
-#else
-#define io29_config_output
-#define io29_set_output
-#define io29_clear_output
-#define io29_toggle_output
-#define io29_get_output 0
-#define io29_config_input
-#define io29_config_pullup
-#define io29_get_input 0
+#define io29_config_pwm(freq) \
+ { \
+ io_config_output(PWM4); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io29_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM4 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io29_get_pwm g_io_soft_pwm[PWM4 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM5)
#define io30_config_output mcu_config_output(PWM5)
@@ -942,31 +462,25 @@ extern "C"
#define io30_clear_output mcu_clear_output(PWM5)
#define io30_toggle_output mcu_toggle_output(PWM5)
#define io30_get_output mcu_get_output(PWM5)
-#if !defined(PWM5_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io30_config_input mcu_config_input(PWM5)
-#else
-#define io30_config_input mcu_config_input(PWM5);mcu_config_pullup(PWM5)
-#endif
-#define io30_config_pullup mcu_config_pullup(PWM5)
-#define io30_get_input mcu_get_input(PWM5)
+#define io30_config_pwm(freq) mcu_config_pwm(PWM5, freq)
+#define io30_set_pwm(value) mcu_set_pwm(PWM5, value)
+#define io30_get_pwm mcu_get_pwm(PWM5)
#elif ASSERT_PIN_EXTENDED(PWM5)
-#define io30_config_output
-#define io30_set_output ic74hc595_set_pin(PWM5);ic74hc595_shift_io_pins()
-#define io30_clear_output ic74hc595_clear_pin(PWM5);ic74hc595_shift_io_pins()
-#define io30_toggle_output ic74hc595_toggle_pin(PWM5);ic74hc595_shift_io_pins()
+#define io30_config_output ({})
+#define io30_set_output ic74hc595_set_pin(PWM5)
+#define io30_clear_output ic74hc595_clear_pin(PWM5)
+#define io30_toggle_output ic74hc595_toggle_pin(PWM5)
#define io30_get_output ic74hc595_get_pin(PWM5)
-#define io30_config_input
-#define io30_config_pullup
-#define io30_get_input 0
-#else
-#define io30_config_output
-#define io30_set_output
-#define io30_clear_output
-#define io30_toggle_output
-#define io30_get_output 0
-#define io30_config_input
-#define io30_config_pullup
-#define io30_get_input 0
+#define io30_config_pwm(freq) \
+ { \
+ io_config_output(PWM5); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io30_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM5 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io30_get_pwm g_io_soft_pwm[PWM5 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM6)
#define io31_config_output mcu_config_output(PWM6)
@@ -974,31 +488,25 @@ extern "C"
#define io31_clear_output mcu_clear_output(PWM6)
#define io31_toggle_output mcu_toggle_output(PWM6)
#define io31_get_output mcu_get_output(PWM6)
-#if !defined(PWM6_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io31_config_input mcu_config_input(PWM6)
-#else
-#define io31_config_input mcu_config_input(PWM6);mcu_config_pullup(PWM6)
-#endif
-#define io31_config_pullup mcu_config_pullup(PWM6)
-#define io31_get_input mcu_get_input(PWM6)
+#define io31_config_pwm(freq) mcu_config_pwm(PWM6, freq)
+#define io31_set_pwm(value) mcu_set_pwm(PWM6, value)
+#define io31_get_pwm mcu_get_pwm(PWM6)
#elif ASSERT_PIN_EXTENDED(PWM6)
-#define io31_config_output
-#define io31_set_output ic74hc595_set_pin(PWM6);ic74hc595_shift_io_pins()
-#define io31_clear_output ic74hc595_clear_pin(PWM6);ic74hc595_shift_io_pins()
-#define io31_toggle_output ic74hc595_toggle_pin(PWM6);ic74hc595_shift_io_pins()
+#define io31_config_output ({})
+#define io31_set_output ic74hc595_set_pin(PWM6)
+#define io31_clear_output ic74hc595_clear_pin(PWM6)
+#define io31_toggle_output ic74hc595_toggle_pin(PWM6)
#define io31_get_output ic74hc595_get_pin(PWM6)
-#define io31_config_input
-#define io31_config_pullup
-#define io31_get_input 0
-#else
-#define io31_config_output
-#define io31_set_output
-#define io31_clear_output
-#define io31_toggle_output
-#define io31_get_output 0
-#define io31_config_input
-#define io31_config_pullup
-#define io31_get_input 0
+#define io31_config_pwm(freq) \
+ { \
+ io_config_output(PWM6); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io31_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM6 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io31_get_pwm g_io_soft_pwm[PWM6 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM7)
#define io32_config_output mcu_config_output(PWM7)
@@ -1006,31 +514,25 @@ extern "C"
#define io32_clear_output mcu_clear_output(PWM7)
#define io32_toggle_output mcu_toggle_output(PWM7)
#define io32_get_output mcu_get_output(PWM7)
-#if !defined(PWM7_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io32_config_input mcu_config_input(PWM7)
-#else
-#define io32_config_input mcu_config_input(PWM7);mcu_config_pullup(PWM7)
-#endif
-#define io32_config_pullup mcu_config_pullup(PWM7)
-#define io32_get_input mcu_get_input(PWM7)
+#define io32_config_pwm(freq) mcu_config_pwm(PWM7, freq)
+#define io32_set_pwm(value) mcu_set_pwm(PWM7, value)
+#define io32_get_pwm mcu_get_pwm(PWM7)
#elif ASSERT_PIN_EXTENDED(PWM7)
-#define io32_config_output
-#define io32_set_output ic74hc595_set_pin(PWM7);ic74hc595_shift_io_pins()
-#define io32_clear_output ic74hc595_clear_pin(PWM7);ic74hc595_shift_io_pins()
-#define io32_toggle_output ic74hc595_toggle_pin(PWM7);ic74hc595_shift_io_pins()
+#define io32_config_output ({})
+#define io32_set_output ic74hc595_set_pin(PWM7)
+#define io32_clear_output ic74hc595_clear_pin(PWM7)
+#define io32_toggle_output ic74hc595_toggle_pin(PWM7)
#define io32_get_output ic74hc595_get_pin(PWM7)
-#define io32_config_input
-#define io32_config_pullup
-#define io32_get_input 0
-#else
-#define io32_config_output
-#define io32_set_output
-#define io32_clear_output
-#define io32_toggle_output
-#define io32_get_output 0
-#define io32_config_input
-#define io32_config_pullup
-#define io32_get_input 0
+#define io32_config_pwm(freq) \
+ { \
+ io_config_output(PWM7); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io32_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM7 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io32_get_pwm g_io_soft_pwm[PWM7 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM8)
#define io33_config_output mcu_config_output(PWM8)
@@ -1038,31 +540,25 @@ extern "C"
#define io33_clear_output mcu_clear_output(PWM8)
#define io33_toggle_output mcu_toggle_output(PWM8)
#define io33_get_output mcu_get_output(PWM8)
-#if !defined(PWM8_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io33_config_input mcu_config_input(PWM8)
-#else
-#define io33_config_input mcu_config_input(PWM8);mcu_config_pullup(PWM8)
-#endif
-#define io33_config_pullup mcu_config_pullup(PWM8)
-#define io33_get_input mcu_get_input(PWM8)
+#define io33_config_pwm(freq) mcu_config_pwm(PWM8, freq)
+#define io33_set_pwm(value) mcu_set_pwm(PWM8, value)
+#define io33_get_pwm mcu_get_pwm(PWM8)
#elif ASSERT_PIN_EXTENDED(PWM8)
-#define io33_config_output
-#define io33_set_output ic74hc595_set_pin(PWM8);ic74hc595_shift_io_pins()
-#define io33_clear_output ic74hc595_clear_pin(PWM8);ic74hc595_shift_io_pins()
-#define io33_toggle_output ic74hc595_toggle_pin(PWM8);ic74hc595_shift_io_pins()
+#define io33_config_output ({})
+#define io33_set_output ic74hc595_set_pin(PWM8)
+#define io33_clear_output ic74hc595_clear_pin(PWM8)
+#define io33_toggle_output ic74hc595_toggle_pin(PWM8)
#define io33_get_output ic74hc595_get_pin(PWM8)
-#define io33_config_input
-#define io33_config_pullup
-#define io33_get_input 0
-#else
-#define io33_config_output
-#define io33_set_output
-#define io33_clear_output
-#define io33_toggle_output
-#define io33_get_output 0
-#define io33_config_input
-#define io33_config_pullup
-#define io33_get_input 0
+#define io33_config_pwm(freq) \
+ { \
+ io_config_output(PWM8); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io33_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM8 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io33_get_pwm g_io_soft_pwm[PWM8 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM9)
#define io34_config_output mcu_config_output(PWM9)
@@ -1070,31 +566,25 @@ extern "C"
#define io34_clear_output mcu_clear_output(PWM9)
#define io34_toggle_output mcu_toggle_output(PWM9)
#define io34_get_output mcu_get_output(PWM9)
-#if !defined(PWM9_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io34_config_input mcu_config_input(PWM9)
-#else
-#define io34_config_input mcu_config_input(PWM9);mcu_config_pullup(PWM9)
-#endif
-#define io34_config_pullup mcu_config_pullup(PWM9)
-#define io34_get_input mcu_get_input(PWM9)
+#define io34_config_pwm(freq) mcu_config_pwm(PWM9, freq)
+#define io34_set_pwm(value) mcu_set_pwm(PWM9, value)
+#define io34_get_pwm mcu_get_pwm(PWM9)
#elif ASSERT_PIN_EXTENDED(PWM9)
-#define io34_config_output
-#define io34_set_output ic74hc595_set_pin(PWM9);ic74hc595_shift_io_pins()
-#define io34_clear_output ic74hc595_clear_pin(PWM9);ic74hc595_shift_io_pins()
-#define io34_toggle_output ic74hc595_toggle_pin(PWM9);ic74hc595_shift_io_pins()
+#define io34_config_output ({})
+#define io34_set_output ic74hc595_set_pin(PWM9)
+#define io34_clear_output ic74hc595_clear_pin(PWM9)
+#define io34_toggle_output ic74hc595_toggle_pin(PWM9)
#define io34_get_output ic74hc595_get_pin(PWM9)
-#define io34_config_input
-#define io34_config_pullup
-#define io34_get_input 0
-#else
-#define io34_config_output
-#define io34_set_output
-#define io34_clear_output
-#define io34_toggle_output
-#define io34_get_output 0
-#define io34_config_input
-#define io34_config_pullup
-#define io34_get_input 0
+#define io34_config_pwm(freq) \
+ { \
+ io_config_output(PWM9); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io34_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM9 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io34_get_pwm g_io_soft_pwm[PWM9 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM10)
#define io35_config_output mcu_config_output(PWM10)
@@ -1102,31 +592,25 @@ extern "C"
#define io35_clear_output mcu_clear_output(PWM10)
#define io35_toggle_output mcu_toggle_output(PWM10)
#define io35_get_output mcu_get_output(PWM10)
-#if !defined(PWM10_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io35_config_input mcu_config_input(PWM10)
-#else
-#define io35_config_input mcu_config_input(PWM10);mcu_config_pullup(PWM10)
-#endif
-#define io35_config_pullup mcu_config_pullup(PWM10)
-#define io35_get_input mcu_get_input(PWM10)
-#elif ASSERT_PIN_EXTENDED(PWM10)
-#define io35_config_output
-#define io35_set_output ic74hc595_set_pin(PWM10);ic74hc595_shift_io_pins()
-#define io35_clear_output ic74hc595_clear_pin(PWM10);ic74hc595_shift_io_pins()
-#define io35_toggle_output ic74hc595_toggle_pin(PWM10);ic74hc595_shift_io_pins()
-#define io35_get_output ic74hc595_get_pin(PWM10)
-#define io35_config_input
-#define io35_config_pullup
-#define io35_get_input 0
-#else
-#define io35_config_output
-#define io35_set_output
-#define io35_clear_output
-#define io35_toggle_output
-#define io35_get_output 0
-#define io35_config_input
-#define io35_config_pullup
-#define io35_get_input 0
+#define io35_config_pwm(freq) mcu_config_pwm(PWM10, freq)
+#define io35_set_pwm(value) mcu_set_pwm(PWM10, value)
+#define io35_get_pwm mcu_get_pwm(PWM10)
+#elif ASSERT_PIN_EXTENDED(PWM10)
+#define io35_config_output ({})
+#define io35_set_output ic74hc595_set_pin(PWM10)
+#define io35_clear_output ic74hc595_clear_pin(PWM10)
+#define io35_toggle_output ic74hc595_toggle_pin(PWM10)
+#define io35_get_output ic74hc595_get_pin(PWM10)
+#define io35_config_pwm(freq) \
+ { \
+ io_config_output(PWM10); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io35_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM10 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io35_get_pwm g_io_soft_pwm[PWM10 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM11)
#define io36_config_output mcu_config_output(PWM11)
@@ -1134,31 +618,25 @@ extern "C"
#define io36_clear_output mcu_clear_output(PWM11)
#define io36_toggle_output mcu_toggle_output(PWM11)
#define io36_get_output mcu_get_output(PWM11)
-#if !defined(PWM11_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io36_config_input mcu_config_input(PWM11)
-#else
-#define io36_config_input mcu_config_input(PWM11);mcu_config_pullup(PWM11)
-#endif
-#define io36_config_pullup mcu_config_pullup(PWM11)
-#define io36_get_input mcu_get_input(PWM11)
+#define io36_config_pwm(freq) mcu_config_pwm(PWM11, freq)
+#define io36_set_pwm(value) mcu_set_pwm(PWM11, value)
+#define io36_get_pwm mcu_get_pwm(PWM11)
#elif ASSERT_PIN_EXTENDED(PWM11)
-#define io36_config_output
-#define io36_set_output ic74hc595_set_pin(PWM11);ic74hc595_shift_io_pins()
-#define io36_clear_output ic74hc595_clear_pin(PWM11);ic74hc595_shift_io_pins()
-#define io36_toggle_output ic74hc595_toggle_pin(PWM11);ic74hc595_shift_io_pins()
+#define io36_config_output ({})
+#define io36_set_output ic74hc595_set_pin(PWM11)
+#define io36_clear_output ic74hc595_clear_pin(PWM11)
+#define io36_toggle_output ic74hc595_toggle_pin(PWM11)
#define io36_get_output ic74hc595_get_pin(PWM11)
-#define io36_config_input
-#define io36_config_pullup
-#define io36_get_input 0
-#else
-#define io36_config_output
-#define io36_set_output
-#define io36_clear_output
-#define io36_toggle_output
-#define io36_get_output 0
-#define io36_config_input
-#define io36_config_pullup
-#define io36_get_input 0
+#define io36_config_pwm(freq) \
+ { \
+ io_config_output(PWM11); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io36_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM11 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io36_get_pwm g_io_soft_pwm[PWM11 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM12)
#define io37_config_output mcu_config_output(PWM12)
@@ -1166,31 +644,25 @@ extern "C"
#define io37_clear_output mcu_clear_output(PWM12)
#define io37_toggle_output mcu_toggle_output(PWM12)
#define io37_get_output mcu_get_output(PWM12)
-#if !defined(PWM12_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io37_config_input mcu_config_input(PWM12)
-#else
-#define io37_config_input mcu_config_input(PWM12);mcu_config_pullup(PWM12)
-#endif
-#define io37_config_pullup mcu_config_pullup(PWM12)
-#define io37_get_input mcu_get_input(PWM12)
+#define io37_config_pwm(freq) mcu_config_pwm(PWM12, freq)
+#define io37_set_pwm(value) mcu_set_pwm(PWM12, value)
+#define io37_get_pwm mcu_get_pwm(PWM12)
#elif ASSERT_PIN_EXTENDED(PWM12)
-#define io37_config_output
-#define io37_set_output ic74hc595_set_pin(PWM12);ic74hc595_shift_io_pins()
-#define io37_clear_output ic74hc595_clear_pin(PWM12);ic74hc595_shift_io_pins()
-#define io37_toggle_output ic74hc595_toggle_pin(PWM12);ic74hc595_shift_io_pins()
+#define io37_config_output ({})
+#define io37_set_output ic74hc595_set_pin(PWM12)
+#define io37_clear_output ic74hc595_clear_pin(PWM12)
+#define io37_toggle_output ic74hc595_toggle_pin(PWM12)
#define io37_get_output ic74hc595_get_pin(PWM12)
-#define io37_config_input
-#define io37_config_pullup
-#define io37_get_input 0
-#else
-#define io37_config_output
-#define io37_set_output
-#define io37_clear_output
-#define io37_toggle_output
-#define io37_get_output 0
-#define io37_config_input
-#define io37_config_pullup
-#define io37_get_input 0
+#define io37_config_pwm(freq) \
+ { \
+ io_config_output(PWM12); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io37_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM12 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io37_get_pwm g_io_soft_pwm[PWM12 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM13)
#define io38_config_output mcu_config_output(PWM13)
@@ -1198,31 +670,25 @@ extern "C"
#define io38_clear_output mcu_clear_output(PWM13)
#define io38_toggle_output mcu_toggle_output(PWM13)
#define io38_get_output mcu_get_output(PWM13)
-#if !defined(PWM13_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io38_config_input mcu_config_input(PWM13)
-#else
-#define io38_config_input mcu_config_input(PWM13);mcu_config_pullup(PWM13)
-#endif
-#define io38_config_pullup mcu_config_pullup(PWM13)
-#define io38_get_input mcu_get_input(PWM13)
+#define io38_config_pwm(freq) mcu_config_pwm(PWM13, freq)
+#define io38_set_pwm(value) mcu_set_pwm(PWM13, value)
+#define io38_get_pwm mcu_get_pwm(PWM13)
#elif ASSERT_PIN_EXTENDED(PWM13)
-#define io38_config_output
-#define io38_set_output ic74hc595_set_pin(PWM13);ic74hc595_shift_io_pins()
-#define io38_clear_output ic74hc595_clear_pin(PWM13);ic74hc595_shift_io_pins()
-#define io38_toggle_output ic74hc595_toggle_pin(PWM13);ic74hc595_shift_io_pins()
+#define io38_config_output ({})
+#define io38_set_output ic74hc595_set_pin(PWM13)
+#define io38_clear_output ic74hc595_clear_pin(PWM13)
+#define io38_toggle_output ic74hc595_toggle_pin(PWM13)
#define io38_get_output ic74hc595_get_pin(PWM13)
-#define io38_config_input
-#define io38_config_pullup
-#define io38_get_input 0
-#else
-#define io38_config_output
-#define io38_set_output
-#define io38_clear_output
-#define io38_toggle_output
-#define io38_get_output 0
-#define io38_config_input
-#define io38_config_pullup
-#define io38_get_input 0
+#define io38_config_pwm(freq) \
+ { \
+ io_config_output(PWM13); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io38_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM13 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io38_get_pwm g_io_soft_pwm[PWM13 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM14)
#define io39_config_output mcu_config_output(PWM14)
@@ -1230,31 +696,25 @@ extern "C"
#define io39_clear_output mcu_clear_output(PWM14)
#define io39_toggle_output mcu_toggle_output(PWM14)
#define io39_get_output mcu_get_output(PWM14)
-#if !defined(PWM14_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io39_config_input mcu_config_input(PWM14)
-#else
-#define io39_config_input mcu_config_input(PWM14);mcu_config_pullup(PWM14)
-#endif
-#define io39_config_pullup mcu_config_pullup(PWM14)
-#define io39_get_input mcu_get_input(PWM14)
+#define io39_config_pwm(freq) mcu_config_pwm(PWM14, freq)
+#define io39_set_pwm(value) mcu_set_pwm(PWM14, value)
+#define io39_get_pwm mcu_get_pwm(PWM14)
#elif ASSERT_PIN_EXTENDED(PWM14)
-#define io39_config_output
-#define io39_set_output ic74hc595_set_pin(PWM14);ic74hc595_shift_io_pins()
-#define io39_clear_output ic74hc595_clear_pin(PWM14);ic74hc595_shift_io_pins()
-#define io39_toggle_output ic74hc595_toggle_pin(PWM14);ic74hc595_shift_io_pins()
+#define io39_config_output ({})
+#define io39_set_output ic74hc595_set_pin(PWM14)
+#define io39_clear_output ic74hc595_clear_pin(PWM14)
+#define io39_toggle_output ic74hc595_toggle_pin(PWM14)
#define io39_get_output ic74hc595_get_pin(PWM14)
-#define io39_config_input
-#define io39_config_pullup
-#define io39_get_input 0
-#else
-#define io39_config_output
-#define io39_set_output
-#define io39_clear_output
-#define io39_toggle_output
-#define io39_get_output 0
-#define io39_config_input
-#define io39_config_pullup
-#define io39_get_input 0
+#define io39_config_pwm(freq) \
+ { \
+ io_config_output(PWM14); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io39_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM14 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io39_get_pwm g_io_soft_pwm[PWM14 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(PWM15)
#define io40_config_output mcu_config_output(PWM15)
@@ -1262,31 +722,25 @@ extern "C"
#define io40_clear_output mcu_clear_output(PWM15)
#define io40_toggle_output mcu_toggle_output(PWM15)
#define io40_get_output mcu_get_output(PWM15)
-#if !defined(PWM15_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io40_config_input mcu_config_input(PWM15)
-#else
-#define io40_config_input mcu_config_input(PWM15);mcu_config_pullup(PWM15)
-#endif
-#define io40_config_pullup mcu_config_pullup(PWM15)
-#define io40_get_input mcu_get_input(PWM15)
+#define io40_config_pwm(freq) mcu_config_pwm(PWM15, freq)
+#define io40_set_pwm(value) mcu_set_pwm(PWM15, value)
+#define io40_get_pwm mcu_get_pwm(PWM15)
#elif ASSERT_PIN_EXTENDED(PWM15)
-#define io40_config_output
-#define io40_set_output ic74hc595_set_pin(PWM15);ic74hc595_shift_io_pins()
-#define io40_clear_output ic74hc595_clear_pin(PWM15);ic74hc595_shift_io_pins()
-#define io40_toggle_output ic74hc595_toggle_pin(PWM15);ic74hc595_shift_io_pins()
+#define io40_config_output ({})
+#define io40_set_output ic74hc595_set_pin(PWM15)
+#define io40_clear_output ic74hc595_clear_pin(PWM15)
+#define io40_toggle_output ic74hc595_toggle_pin(PWM15)
#define io40_get_output ic74hc595_get_pin(PWM15)
-#define io40_config_input
-#define io40_config_pullup
-#define io40_get_input 0
-#else
-#define io40_config_output
-#define io40_set_output
-#define io40_clear_output
-#define io40_toggle_output
-#define io40_get_output 0
-#define io40_config_input
-#define io40_config_pullup
-#define io40_get_input 0
+#define io40_config_pwm(freq) \
+ { \
+ io_config_output(PWM15); \
+ g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
+ }
+#define io40_set_pwm(value) \
+ { \
+ g_io_soft_pwm[PWM15 - PWM_PINS_OFFSET] = (0xFF & value); \
+ }
+#define io40_get_pwm g_io_soft_pwm[PWM15 - PWM_PINS_OFFSET]
#endif
#if ASSERT_PIN_IO(SERVO0)
#define io41_config_output mcu_config_output(SERVO0)
@@ -1294,31 +748,16 @@ extern "C"
#define io41_clear_output mcu_clear_output(SERVO0)
#define io41_toggle_output mcu_toggle_output(SERVO0)
#define io41_get_output mcu_get_output(SERVO0)
-#if !defined(SERVO0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io41_config_input mcu_config_input(SERVO0)
-#else
-#define io41_config_input mcu_config_input(SERVO0);mcu_config_pullup(SERVO0)
-#endif
-#define io41_config_pullup mcu_config_pullup(SERVO0)
-#define io41_get_input mcu_get_input(SERVO0)
+#define io41_set_pwm(value) mcu_set_servo(SERVO0, value)
+#define io41_get_pwm mcu_get_servo(SERVO0)
#elif ASSERT_PIN_EXTENDED(SERVO0)
#define io41_config_output
-#define io41_set_output ic74hc595_set_pin(SERVO0);ic74hc595_shift_io_pins()
-#define io41_clear_output ic74hc595_clear_pin(SERVO0);ic74hc595_shift_io_pins()
-#define io41_toggle_output ic74hc595_toggle_pin(SERVO0);ic74hc595_shift_io_pins()
+#define io41_set_output ic74hc595_set_pin(SERVO0)
+#define io41_clear_output ic74hc595_clear_pin(SERVO0)
+#define io41_toggle_output ic74hc595_toggle_pin(SERVO0)
#define io41_get_output ic74hc595_get_pin(SERVO0)
-#define io41_config_input
-#define io41_config_pullup
-#define io41_get_input 0
-#else
-#define io41_config_output
-#define io41_set_output
-#define io41_clear_output
-#define io41_toggle_output
-#define io41_get_output 0
-#define io41_config_input
-#define io41_config_pullup
-#define io41_get_input 0
+#define io41_set_pwm(value) mcu_set_servo(SERVO0, value)
+#define io41_get_pwm mcu_get_servo(SERVO0)
#endif
#if ASSERT_PIN_IO(SERVO1)
#define io42_config_output mcu_config_output(SERVO1)
@@ -1326,31 +765,16 @@ extern "C"
#define io42_clear_output mcu_clear_output(SERVO1)
#define io42_toggle_output mcu_toggle_output(SERVO1)
#define io42_get_output mcu_get_output(SERVO1)
-#if !defined(SERVO1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io42_config_input mcu_config_input(SERVO1)
-#else
-#define io42_config_input mcu_config_input(SERVO1);mcu_config_pullup(SERVO1)
-#endif
-#define io42_config_pullup mcu_config_pullup(SERVO1)
-#define io42_get_input mcu_get_input(SERVO1)
+#define io42_set_pwm(value) mcu_set_servo(SERVO1, value)
+#define io42_get_pwm mcu_get_servo(SERVO1)
#elif ASSERT_PIN_EXTENDED(SERVO1)
#define io42_config_output
-#define io42_set_output ic74hc595_set_pin(SERVO1);ic74hc595_shift_io_pins()
-#define io42_clear_output ic74hc595_clear_pin(SERVO1);ic74hc595_shift_io_pins()
-#define io42_toggle_output ic74hc595_toggle_pin(SERVO1);ic74hc595_shift_io_pins()
+#define io42_set_output ic74hc595_set_pin(SERVO1)
+#define io42_clear_output ic74hc595_clear_pin(SERVO1)
+#define io42_toggle_output ic74hc595_toggle_pin(SERVO1)
#define io42_get_output ic74hc595_get_pin(SERVO1)
-#define io42_config_input
-#define io42_config_pullup
-#define io42_get_input 0
-#else
-#define io42_config_output
-#define io42_set_output
-#define io42_clear_output
-#define io42_toggle_output
-#define io42_get_output 0
-#define io42_config_input
-#define io42_config_pullup
-#define io42_get_input 0
+#define io42_set_pwm(value) mcu_set_servo(SERVO1, value)
+#define io42_get_pwm mcu_get_servo(SERVO1)
#endif
#if ASSERT_PIN_IO(SERVO2)
#define io43_config_output mcu_config_output(SERVO2)
@@ -1358,31 +782,16 @@ extern "C"
#define io43_clear_output mcu_clear_output(SERVO2)
#define io43_toggle_output mcu_toggle_output(SERVO2)
#define io43_get_output mcu_get_output(SERVO2)
-#if !defined(SERVO2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io43_config_input mcu_config_input(SERVO2)
-#else
-#define io43_config_input mcu_config_input(SERVO2);mcu_config_pullup(SERVO2)
-#endif
-#define io43_config_pullup mcu_config_pullup(SERVO2)
-#define io43_get_input mcu_get_input(SERVO2)
+#define io43_set_pwm(value) mcu_set_servo(SERVO2, value)
+#define io43_get_pwm mcu_get_servo(SERVO2)
#elif ASSERT_PIN_EXTENDED(SERVO2)
#define io43_config_output
-#define io43_set_output ic74hc595_set_pin(SERVO2);ic74hc595_shift_io_pins()
-#define io43_clear_output ic74hc595_clear_pin(SERVO2);ic74hc595_shift_io_pins()
-#define io43_toggle_output ic74hc595_toggle_pin(SERVO2);ic74hc595_shift_io_pins()
+#define io43_set_output ic74hc595_set_pin(SERVO2)
+#define io43_clear_output ic74hc595_clear_pin(SERVO2)
+#define io43_toggle_output ic74hc595_toggle_pin(SERVO2)
#define io43_get_output ic74hc595_get_pin(SERVO2)
-#define io43_config_input
-#define io43_config_pullup
-#define io43_get_input 0
-#else
-#define io43_config_output
-#define io43_set_output
-#define io43_clear_output
-#define io43_toggle_output
-#define io43_get_output 0
-#define io43_config_input
-#define io43_config_pullup
-#define io43_get_input 0
+#define io43_set_pwm(value) mcu_set_servo(SERVO2, value)
+#define io43_get_pwm mcu_get_servo(SERVO2)
#endif
#if ASSERT_PIN_IO(SERVO3)
#define io44_config_output mcu_config_output(SERVO3)
@@ -1390,31 +799,16 @@ extern "C"
#define io44_clear_output mcu_clear_output(SERVO3)
#define io44_toggle_output mcu_toggle_output(SERVO3)
#define io44_get_output mcu_get_output(SERVO3)
-#if !defined(SERVO3_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io44_config_input mcu_config_input(SERVO3)
-#else
-#define io44_config_input mcu_config_input(SERVO3);mcu_config_pullup(SERVO3)
-#endif
-#define io44_config_pullup mcu_config_pullup(SERVO3)
-#define io44_get_input mcu_get_input(SERVO3)
+#define io44_set_pwm(value) mcu_set_servo(SERVO3, value)
+#define io44_get_pwm mcu_get_servo(SERVO3)
#elif ASSERT_PIN_EXTENDED(SERVO3)
#define io44_config_output
-#define io44_set_output ic74hc595_set_pin(SERVO3);ic74hc595_shift_io_pins()
-#define io44_clear_output ic74hc595_clear_pin(SERVO3);ic74hc595_shift_io_pins()
-#define io44_toggle_output ic74hc595_toggle_pin(SERVO3);ic74hc595_shift_io_pins()
+#define io44_set_output ic74hc595_set_pin(SERVO3)
+#define io44_clear_output ic74hc595_clear_pin(SERVO3)
+#define io44_toggle_output ic74hc595_toggle_pin(SERVO3)
#define io44_get_output ic74hc595_get_pin(SERVO3)
-#define io44_config_input
-#define io44_config_pullup
-#define io44_get_input 0
-#else
-#define io44_config_output
-#define io44_set_output
-#define io44_clear_output
-#define io44_toggle_output
-#define io44_get_output 0
-#define io44_config_input
-#define io44_config_pullup
-#define io44_get_input 0
+#define io44_set_pwm(value) mcu_set_servo(SERVO3, value)
+#define io44_get_pwm mcu_get_servo(SERVO3)
#endif
#if ASSERT_PIN_IO(SERVO4)
#define io45_config_output mcu_config_output(SERVO4)
@@ -1422,31 +816,16 @@ extern "C"
#define io45_clear_output mcu_clear_output(SERVO4)
#define io45_toggle_output mcu_toggle_output(SERVO4)
#define io45_get_output mcu_get_output(SERVO4)
-#if !defined(SERVO4_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io45_config_input mcu_config_input(SERVO4)
-#else
-#define io45_config_input mcu_config_input(SERVO4);mcu_config_pullup(SERVO4)
-#endif
-#define io45_config_pullup mcu_config_pullup(SERVO4)
-#define io45_get_input mcu_get_input(SERVO4)
+#define io45_set_pwm(value) mcu_set_servo(SERVO4, value)
+#define io45_get_pwm mcu_get_servo(SERVO4)
#elif ASSERT_PIN_EXTENDED(SERVO4)
#define io45_config_output
-#define io45_set_output ic74hc595_set_pin(SERVO4);ic74hc595_shift_io_pins()
-#define io45_clear_output ic74hc595_clear_pin(SERVO4);ic74hc595_shift_io_pins()
-#define io45_toggle_output ic74hc595_toggle_pin(SERVO4);ic74hc595_shift_io_pins()
+#define io45_set_output ic74hc595_set_pin(SERVO4)
+#define io45_clear_output ic74hc595_clear_pin(SERVO4)
+#define io45_toggle_output ic74hc595_toggle_pin(SERVO4)
#define io45_get_output ic74hc595_get_pin(SERVO4)
-#define io45_config_input
-#define io45_config_pullup
-#define io45_get_input 0
-#else
-#define io45_config_output
-#define io45_set_output
-#define io45_clear_output
-#define io45_toggle_output
-#define io45_get_output 0
-#define io45_config_input
-#define io45_config_pullup
-#define io45_get_input 0
+#define io45_set_pwm(value) mcu_set_servo(SERVO4, value)
+#define io45_get_pwm mcu_get_servo(SERVO4)
#endif
#if ASSERT_PIN_IO(SERVO5)
#define io46_config_output mcu_config_output(SERVO5)
@@ -1454,31 +833,16 @@ extern "C"
#define io46_clear_output mcu_clear_output(SERVO5)
#define io46_toggle_output mcu_toggle_output(SERVO5)
#define io46_get_output mcu_get_output(SERVO5)
-#if !defined(SERVO5_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io46_config_input mcu_config_input(SERVO5)
-#else
-#define io46_config_input mcu_config_input(SERVO5);mcu_config_pullup(SERVO5)
-#endif
-#define io46_config_pullup mcu_config_pullup(SERVO5)
-#define io46_get_input mcu_get_input(SERVO5)
+#define io46_set_pwm(value) mcu_set_servo(SERVO5, value)
+#define io46_get_pwm mcu_get_servo(SERVO5)
#elif ASSERT_PIN_EXTENDED(SERVO5)
#define io46_config_output
-#define io46_set_output ic74hc595_set_pin(SERVO5);ic74hc595_shift_io_pins()
-#define io46_clear_output ic74hc595_clear_pin(SERVO5);ic74hc595_shift_io_pins()
-#define io46_toggle_output ic74hc595_toggle_pin(SERVO5);ic74hc595_shift_io_pins()
+#define io46_set_output ic74hc595_set_pin(SERVO5)
+#define io46_clear_output ic74hc595_clear_pin(SERVO5)
+#define io46_toggle_output ic74hc595_toggle_pin(SERVO5)
#define io46_get_output ic74hc595_get_pin(SERVO5)
-#define io46_config_input
-#define io46_config_pullup
-#define io46_get_input 0
-#else
-#define io46_config_output
-#define io46_set_output
-#define io46_clear_output
-#define io46_toggle_output
-#define io46_get_output 0
-#define io46_config_input
-#define io46_config_pullup
-#define io46_get_input 0
+#define io46_set_pwm(value) mcu_set_servo(SERVO5, value)
+#define io46_get_pwm mcu_get_servo(SERVO5)
#endif
#if ASSERT_PIN_IO(DOUT0)
#define io47_config_output mcu_config_output(DOUT0)
@@ -1486,31 +850,15 @@ extern "C"
#define io47_clear_output mcu_clear_output(DOUT0)
#define io47_toggle_output mcu_toggle_output(DOUT0)
#define io47_get_output mcu_get_output(DOUT0)
-#if !defined(DOUT0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io47_config_input mcu_config_input(DOUT0)
-#else
-#define io47_config_input mcu_config_input(DOUT0);mcu_config_pullup(DOUT0)
-#endif
#define io47_config_pullup mcu_config_pullup(DOUT0)
#define io47_get_input mcu_get_input(DOUT0)
#elif ASSERT_PIN_EXTENDED(DOUT0)
#define io47_config_output
-#define io47_set_output ic74hc595_set_pin(DOUT0);ic74hc595_shift_io_pins()
-#define io47_clear_output ic74hc595_clear_pin(DOUT0);ic74hc595_shift_io_pins()
-#define io47_toggle_output ic74hc595_toggle_pin(DOUT0);ic74hc595_shift_io_pins()
+#define io47_set_output ic74hc595_set_pin(DOUT0)
+#define io47_clear_output ic74hc595_clear_pin(DOUT0)
+#define io47_toggle_output ic74hc595_toggle_pin(DOUT0)
#define io47_get_output ic74hc595_get_pin(DOUT0)
-#define io47_config_input
-#define io47_config_pullup
-#define io47_get_input 0
-#else
-#define io47_config_output
-#define io47_set_output
-#define io47_clear_output
-#define io47_toggle_output
-#define io47_get_output 0
-#define io47_config_input
-#define io47_config_pullup
-#define io47_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT1)
#define io48_config_output mcu_config_output(DOUT1)
@@ -1518,31 +866,15 @@ extern "C"
#define io48_clear_output mcu_clear_output(DOUT1)
#define io48_toggle_output mcu_toggle_output(DOUT1)
#define io48_get_output mcu_get_output(DOUT1)
-#if !defined(DOUT1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io48_config_input mcu_config_input(DOUT1)
-#else
-#define io48_config_input mcu_config_input(DOUT1);mcu_config_pullup(DOUT1)
-#endif
#define io48_config_pullup mcu_config_pullup(DOUT1)
#define io48_get_input mcu_get_input(DOUT1)
#elif ASSERT_PIN_EXTENDED(DOUT1)
#define io48_config_output
-#define io48_set_output ic74hc595_set_pin(DOUT1);ic74hc595_shift_io_pins()
-#define io48_clear_output ic74hc595_clear_pin(DOUT1);ic74hc595_shift_io_pins()
-#define io48_toggle_output ic74hc595_toggle_pin(DOUT1);ic74hc595_shift_io_pins()
+#define io48_set_output ic74hc595_set_pin(DOUT1)
+#define io48_clear_output ic74hc595_clear_pin(DOUT1)
+#define io48_toggle_output ic74hc595_toggle_pin(DOUT1)
#define io48_get_output ic74hc595_get_pin(DOUT1)
-#define io48_config_input
-#define io48_config_pullup
-#define io48_get_input 0
-#else
-#define io48_config_output
-#define io48_set_output
-#define io48_clear_output
-#define io48_toggle_output
-#define io48_get_output 0
-#define io48_config_input
-#define io48_config_pullup
-#define io48_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT2)
#define io49_config_output mcu_config_output(DOUT2)
@@ -1550,31 +882,15 @@ extern "C"
#define io49_clear_output mcu_clear_output(DOUT2)
#define io49_toggle_output mcu_toggle_output(DOUT2)
#define io49_get_output mcu_get_output(DOUT2)
-#if !defined(DOUT2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io49_config_input mcu_config_input(DOUT2)
-#else
-#define io49_config_input mcu_config_input(DOUT2);mcu_config_pullup(DOUT2)
-#endif
#define io49_config_pullup mcu_config_pullup(DOUT2)
#define io49_get_input mcu_get_input(DOUT2)
#elif ASSERT_PIN_EXTENDED(DOUT2)
#define io49_config_output
-#define io49_set_output ic74hc595_set_pin(DOUT2);ic74hc595_shift_io_pins()
-#define io49_clear_output ic74hc595_clear_pin(DOUT2);ic74hc595_shift_io_pins()
-#define io49_toggle_output ic74hc595_toggle_pin(DOUT2);ic74hc595_shift_io_pins()
+#define io49_set_output ic74hc595_set_pin(DOUT2)
+#define io49_clear_output ic74hc595_clear_pin(DOUT2)
+#define io49_toggle_output ic74hc595_toggle_pin(DOUT2)
#define io49_get_output ic74hc595_get_pin(DOUT2)
-#define io49_config_input
-#define io49_config_pullup
-#define io49_get_input 0
-#else
-#define io49_config_output
-#define io49_set_output
-#define io49_clear_output
-#define io49_toggle_output
-#define io49_get_output 0
-#define io49_config_input
-#define io49_config_pullup
-#define io49_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT3)
#define io50_config_output mcu_config_output(DOUT3)
@@ -1582,31 +898,15 @@ extern "C"
#define io50_clear_output mcu_clear_output(DOUT3)
#define io50_toggle_output mcu_toggle_output(DOUT3)
#define io50_get_output mcu_get_output(DOUT3)
-#if !defined(DOUT3_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io50_config_input mcu_config_input(DOUT3)
-#else
-#define io50_config_input mcu_config_input(DOUT3);mcu_config_pullup(DOUT3)
-#endif
#define io50_config_pullup mcu_config_pullup(DOUT3)
#define io50_get_input mcu_get_input(DOUT3)
#elif ASSERT_PIN_EXTENDED(DOUT3)
#define io50_config_output
-#define io50_set_output ic74hc595_set_pin(DOUT3);ic74hc595_shift_io_pins()
-#define io50_clear_output ic74hc595_clear_pin(DOUT3);ic74hc595_shift_io_pins()
-#define io50_toggle_output ic74hc595_toggle_pin(DOUT3);ic74hc595_shift_io_pins()
+#define io50_set_output ic74hc595_set_pin(DOUT3)
+#define io50_clear_output ic74hc595_clear_pin(DOUT3)
+#define io50_toggle_output ic74hc595_toggle_pin(DOUT3)
#define io50_get_output ic74hc595_get_pin(DOUT3)
-#define io50_config_input
-#define io50_config_pullup
-#define io50_get_input 0
-#else
-#define io50_config_output
-#define io50_set_output
-#define io50_clear_output
-#define io50_toggle_output
-#define io50_get_output 0
-#define io50_config_input
-#define io50_config_pullup
-#define io50_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT4)
#define io51_config_output mcu_config_output(DOUT4)
@@ -1614,31 +914,15 @@ extern "C"
#define io51_clear_output mcu_clear_output(DOUT4)
#define io51_toggle_output mcu_toggle_output(DOUT4)
#define io51_get_output mcu_get_output(DOUT4)
-#if !defined(DOUT4_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io51_config_input mcu_config_input(DOUT4)
-#else
-#define io51_config_input mcu_config_input(DOUT4);mcu_config_pullup(DOUT4)
-#endif
#define io51_config_pullup mcu_config_pullup(DOUT4)
#define io51_get_input mcu_get_input(DOUT4)
#elif ASSERT_PIN_EXTENDED(DOUT4)
#define io51_config_output
-#define io51_set_output ic74hc595_set_pin(DOUT4);ic74hc595_shift_io_pins()
-#define io51_clear_output ic74hc595_clear_pin(DOUT4);ic74hc595_shift_io_pins()
-#define io51_toggle_output ic74hc595_toggle_pin(DOUT4);ic74hc595_shift_io_pins()
+#define io51_set_output ic74hc595_set_pin(DOUT4)
+#define io51_clear_output ic74hc595_clear_pin(DOUT4)
+#define io51_toggle_output ic74hc595_toggle_pin(DOUT4)
#define io51_get_output ic74hc595_get_pin(DOUT4)
-#define io51_config_input
-#define io51_config_pullup
-#define io51_get_input 0
-#else
-#define io51_config_output
-#define io51_set_output
-#define io51_clear_output
-#define io51_toggle_output
-#define io51_get_output 0
-#define io51_config_input
-#define io51_config_pullup
-#define io51_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT5)
#define io52_config_output mcu_config_output(DOUT5)
@@ -1646,31 +930,15 @@ extern "C"
#define io52_clear_output mcu_clear_output(DOUT5)
#define io52_toggle_output mcu_toggle_output(DOUT5)
#define io52_get_output mcu_get_output(DOUT5)
-#if !defined(DOUT5_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io52_config_input mcu_config_input(DOUT5)
-#else
-#define io52_config_input mcu_config_input(DOUT5);mcu_config_pullup(DOUT5)
-#endif
#define io52_config_pullup mcu_config_pullup(DOUT5)
#define io52_get_input mcu_get_input(DOUT5)
#elif ASSERT_PIN_EXTENDED(DOUT5)
#define io52_config_output
-#define io52_set_output ic74hc595_set_pin(DOUT5);ic74hc595_shift_io_pins()
-#define io52_clear_output ic74hc595_clear_pin(DOUT5);ic74hc595_shift_io_pins()
-#define io52_toggle_output ic74hc595_toggle_pin(DOUT5);ic74hc595_shift_io_pins()
+#define io52_set_output ic74hc595_set_pin(DOUT5)
+#define io52_clear_output ic74hc595_clear_pin(DOUT5)
+#define io52_toggle_output ic74hc595_toggle_pin(DOUT5)
#define io52_get_output ic74hc595_get_pin(DOUT5)
-#define io52_config_input
-#define io52_config_pullup
-#define io52_get_input 0
-#else
-#define io52_config_output
-#define io52_set_output
-#define io52_clear_output
-#define io52_toggle_output
-#define io52_get_output 0
-#define io52_config_input
-#define io52_config_pullup
-#define io52_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT6)
#define io53_config_output mcu_config_output(DOUT6)
@@ -1678,31 +946,15 @@ extern "C"
#define io53_clear_output mcu_clear_output(DOUT6)
#define io53_toggle_output mcu_toggle_output(DOUT6)
#define io53_get_output mcu_get_output(DOUT6)
-#if !defined(DOUT6_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io53_config_input mcu_config_input(DOUT6)
-#else
-#define io53_config_input mcu_config_input(DOUT6);mcu_config_pullup(DOUT6)
-#endif
#define io53_config_pullup mcu_config_pullup(DOUT6)
#define io53_get_input mcu_get_input(DOUT6)
#elif ASSERT_PIN_EXTENDED(DOUT6)
#define io53_config_output
-#define io53_set_output ic74hc595_set_pin(DOUT6);ic74hc595_shift_io_pins()
-#define io53_clear_output ic74hc595_clear_pin(DOUT6);ic74hc595_shift_io_pins()
-#define io53_toggle_output ic74hc595_toggle_pin(DOUT6);ic74hc595_shift_io_pins()
+#define io53_set_output ic74hc595_set_pin(DOUT6)
+#define io53_clear_output ic74hc595_clear_pin(DOUT6)
+#define io53_toggle_output ic74hc595_toggle_pin(DOUT6)
#define io53_get_output ic74hc595_get_pin(DOUT6)
-#define io53_config_input
-#define io53_config_pullup
-#define io53_get_input 0
-#else
-#define io53_config_output
-#define io53_set_output
-#define io53_clear_output
-#define io53_toggle_output
-#define io53_get_output 0
-#define io53_config_input
-#define io53_config_pullup
-#define io53_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT7)
#define io54_config_output mcu_config_output(DOUT7)
@@ -1710,31 +962,15 @@ extern "C"
#define io54_clear_output mcu_clear_output(DOUT7)
#define io54_toggle_output mcu_toggle_output(DOUT7)
#define io54_get_output mcu_get_output(DOUT7)
-#if !defined(DOUT7_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io54_config_input mcu_config_input(DOUT7)
-#else
-#define io54_config_input mcu_config_input(DOUT7);mcu_config_pullup(DOUT7)
-#endif
#define io54_config_pullup mcu_config_pullup(DOUT7)
#define io54_get_input mcu_get_input(DOUT7)
#elif ASSERT_PIN_EXTENDED(DOUT7)
#define io54_config_output
-#define io54_set_output ic74hc595_set_pin(DOUT7);ic74hc595_shift_io_pins()
-#define io54_clear_output ic74hc595_clear_pin(DOUT7);ic74hc595_shift_io_pins()
-#define io54_toggle_output ic74hc595_toggle_pin(DOUT7);ic74hc595_shift_io_pins()
+#define io54_set_output ic74hc595_set_pin(DOUT7)
+#define io54_clear_output ic74hc595_clear_pin(DOUT7)
+#define io54_toggle_output ic74hc595_toggle_pin(DOUT7)
#define io54_get_output ic74hc595_get_pin(DOUT7)
-#define io54_config_input
-#define io54_config_pullup
-#define io54_get_input 0
-#else
-#define io54_config_output
-#define io54_set_output
-#define io54_clear_output
-#define io54_toggle_output
-#define io54_get_output 0
-#define io54_config_input
-#define io54_config_pullup
-#define io54_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT8)
#define io55_config_output mcu_config_output(DOUT8)
@@ -1742,31 +978,15 @@ extern "C"
#define io55_clear_output mcu_clear_output(DOUT8)
#define io55_toggle_output mcu_toggle_output(DOUT8)
#define io55_get_output mcu_get_output(DOUT8)
-#if !defined(DOUT8_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io55_config_input mcu_config_input(DOUT8)
-#else
-#define io55_config_input mcu_config_input(DOUT8);mcu_config_pullup(DOUT8)
-#endif
#define io55_config_pullup mcu_config_pullup(DOUT8)
#define io55_get_input mcu_get_input(DOUT8)
#elif ASSERT_PIN_EXTENDED(DOUT8)
#define io55_config_output
-#define io55_set_output ic74hc595_set_pin(DOUT8);ic74hc595_shift_io_pins()
-#define io55_clear_output ic74hc595_clear_pin(DOUT8);ic74hc595_shift_io_pins()
-#define io55_toggle_output ic74hc595_toggle_pin(DOUT8);ic74hc595_shift_io_pins()
+#define io55_set_output ic74hc595_set_pin(DOUT8)
+#define io55_clear_output ic74hc595_clear_pin(DOUT8)
+#define io55_toggle_output ic74hc595_toggle_pin(DOUT8)
#define io55_get_output ic74hc595_get_pin(DOUT8)
-#define io55_config_input
-#define io55_config_pullup
-#define io55_get_input 0
-#else
-#define io55_config_output
-#define io55_set_output
-#define io55_clear_output
-#define io55_toggle_output
-#define io55_get_output 0
-#define io55_config_input
-#define io55_config_pullup
-#define io55_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT9)
#define io56_config_output mcu_config_output(DOUT9)
@@ -1774,31 +994,15 @@ extern "C"
#define io56_clear_output mcu_clear_output(DOUT9)
#define io56_toggle_output mcu_toggle_output(DOUT9)
#define io56_get_output mcu_get_output(DOUT9)
-#if !defined(DOUT9_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io56_config_input mcu_config_input(DOUT9)
-#else
-#define io56_config_input mcu_config_input(DOUT9);mcu_config_pullup(DOUT9)
-#endif
#define io56_config_pullup mcu_config_pullup(DOUT9)
#define io56_get_input mcu_get_input(DOUT9)
#elif ASSERT_PIN_EXTENDED(DOUT9)
#define io56_config_output
-#define io56_set_output ic74hc595_set_pin(DOUT9);ic74hc595_shift_io_pins()
-#define io56_clear_output ic74hc595_clear_pin(DOUT9);ic74hc595_shift_io_pins()
-#define io56_toggle_output ic74hc595_toggle_pin(DOUT9);ic74hc595_shift_io_pins()
+#define io56_set_output ic74hc595_set_pin(DOUT9)
+#define io56_clear_output ic74hc595_clear_pin(DOUT9)
+#define io56_toggle_output ic74hc595_toggle_pin(DOUT9)
#define io56_get_output ic74hc595_get_pin(DOUT9)
-#define io56_config_input
-#define io56_config_pullup
-#define io56_get_input 0
-#else
-#define io56_config_output
-#define io56_set_output
-#define io56_clear_output
-#define io56_toggle_output
-#define io56_get_output 0
-#define io56_config_input
-#define io56_config_pullup
-#define io56_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT10)
#define io57_config_output mcu_config_output(DOUT10)
@@ -1806,31 +1010,15 @@ extern "C"
#define io57_clear_output mcu_clear_output(DOUT10)
#define io57_toggle_output mcu_toggle_output(DOUT10)
#define io57_get_output mcu_get_output(DOUT10)
-#if !defined(DOUT10_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io57_config_input mcu_config_input(DOUT10)
-#else
-#define io57_config_input mcu_config_input(DOUT10);mcu_config_pullup(DOUT10)
-#endif
#define io57_config_pullup mcu_config_pullup(DOUT10)
#define io57_get_input mcu_get_input(DOUT10)
#elif ASSERT_PIN_EXTENDED(DOUT10)
#define io57_config_output
-#define io57_set_output ic74hc595_set_pin(DOUT10);ic74hc595_shift_io_pins()
-#define io57_clear_output ic74hc595_clear_pin(DOUT10);ic74hc595_shift_io_pins()
-#define io57_toggle_output ic74hc595_toggle_pin(DOUT10);ic74hc595_shift_io_pins()
+#define io57_set_output ic74hc595_set_pin(DOUT10)
+#define io57_clear_output ic74hc595_clear_pin(DOUT10)
+#define io57_toggle_output ic74hc595_toggle_pin(DOUT10)
#define io57_get_output ic74hc595_get_pin(DOUT10)
-#define io57_config_input
-#define io57_config_pullup
-#define io57_get_input 0
-#else
-#define io57_config_output
-#define io57_set_output
-#define io57_clear_output
-#define io57_toggle_output
-#define io57_get_output 0
-#define io57_config_input
-#define io57_config_pullup
-#define io57_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT11)
#define io58_config_output mcu_config_output(DOUT11)
@@ -1838,31 +1026,15 @@ extern "C"
#define io58_clear_output mcu_clear_output(DOUT11)
#define io58_toggle_output mcu_toggle_output(DOUT11)
#define io58_get_output mcu_get_output(DOUT11)
-#if !defined(DOUT11_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io58_config_input mcu_config_input(DOUT11)
-#else
-#define io58_config_input mcu_config_input(DOUT11);mcu_config_pullup(DOUT11)
-#endif
#define io58_config_pullup mcu_config_pullup(DOUT11)
#define io58_get_input mcu_get_input(DOUT11)
#elif ASSERT_PIN_EXTENDED(DOUT11)
#define io58_config_output
-#define io58_set_output ic74hc595_set_pin(DOUT11);ic74hc595_shift_io_pins()
-#define io58_clear_output ic74hc595_clear_pin(DOUT11);ic74hc595_shift_io_pins()
-#define io58_toggle_output ic74hc595_toggle_pin(DOUT11);ic74hc595_shift_io_pins()
+#define io58_set_output ic74hc595_set_pin(DOUT11)
+#define io58_clear_output ic74hc595_clear_pin(DOUT11)
+#define io58_toggle_output ic74hc595_toggle_pin(DOUT11)
#define io58_get_output ic74hc595_get_pin(DOUT11)
-#define io58_config_input
-#define io58_config_pullup
-#define io58_get_input 0
-#else
-#define io58_config_output
-#define io58_set_output
-#define io58_clear_output
-#define io58_toggle_output
-#define io58_get_output 0
-#define io58_config_input
-#define io58_config_pullup
-#define io58_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT12)
#define io59_config_output mcu_config_output(DOUT12)
@@ -1870,31 +1042,15 @@ extern "C"
#define io59_clear_output mcu_clear_output(DOUT12)
#define io59_toggle_output mcu_toggle_output(DOUT12)
#define io59_get_output mcu_get_output(DOUT12)
-#if !defined(DOUT12_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io59_config_input mcu_config_input(DOUT12)
-#else
-#define io59_config_input mcu_config_input(DOUT12);mcu_config_pullup(DOUT12)
-#endif
#define io59_config_pullup mcu_config_pullup(DOUT12)
#define io59_get_input mcu_get_input(DOUT12)
#elif ASSERT_PIN_EXTENDED(DOUT12)
#define io59_config_output
-#define io59_set_output ic74hc595_set_pin(DOUT12);ic74hc595_shift_io_pins()
-#define io59_clear_output ic74hc595_clear_pin(DOUT12);ic74hc595_shift_io_pins()
-#define io59_toggle_output ic74hc595_toggle_pin(DOUT12);ic74hc595_shift_io_pins()
+#define io59_set_output ic74hc595_set_pin(DOUT12)
+#define io59_clear_output ic74hc595_clear_pin(DOUT12)
+#define io59_toggle_output ic74hc595_toggle_pin(DOUT12)
#define io59_get_output ic74hc595_get_pin(DOUT12)
-#define io59_config_input
-#define io59_config_pullup
-#define io59_get_input 0
-#else
-#define io59_config_output
-#define io59_set_output
-#define io59_clear_output
-#define io59_toggle_output
-#define io59_get_output 0
-#define io59_config_input
-#define io59_config_pullup
-#define io59_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT13)
#define io60_config_output mcu_config_output(DOUT13)
@@ -1902,31 +1058,15 @@ extern "C"
#define io60_clear_output mcu_clear_output(DOUT13)
#define io60_toggle_output mcu_toggle_output(DOUT13)
#define io60_get_output mcu_get_output(DOUT13)
-#if !defined(DOUT13_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io60_config_input mcu_config_input(DOUT13)
-#else
-#define io60_config_input mcu_config_input(DOUT13);mcu_config_pullup(DOUT13)
-#endif
#define io60_config_pullup mcu_config_pullup(DOUT13)
#define io60_get_input mcu_get_input(DOUT13)
#elif ASSERT_PIN_EXTENDED(DOUT13)
#define io60_config_output
-#define io60_set_output ic74hc595_set_pin(DOUT13);ic74hc595_shift_io_pins()
-#define io60_clear_output ic74hc595_clear_pin(DOUT13);ic74hc595_shift_io_pins()
-#define io60_toggle_output ic74hc595_toggle_pin(DOUT13);ic74hc595_shift_io_pins()
+#define io60_set_output ic74hc595_set_pin(DOUT13)
+#define io60_clear_output ic74hc595_clear_pin(DOUT13)
+#define io60_toggle_output ic74hc595_toggle_pin(DOUT13)
#define io60_get_output ic74hc595_get_pin(DOUT13)
-#define io60_config_input
-#define io60_config_pullup
-#define io60_get_input 0
-#else
-#define io60_config_output
-#define io60_set_output
-#define io60_clear_output
-#define io60_toggle_output
-#define io60_get_output 0
-#define io60_config_input
-#define io60_config_pullup
-#define io60_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT14)
#define io61_config_output mcu_config_output(DOUT14)
@@ -1934,31 +1074,15 @@ extern "C"
#define io61_clear_output mcu_clear_output(DOUT14)
#define io61_toggle_output mcu_toggle_output(DOUT14)
#define io61_get_output mcu_get_output(DOUT14)
-#if !defined(DOUT14_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io61_config_input mcu_config_input(DOUT14)
-#else
-#define io61_config_input mcu_config_input(DOUT14);mcu_config_pullup(DOUT14)
-#endif
#define io61_config_pullup mcu_config_pullup(DOUT14)
#define io61_get_input mcu_get_input(DOUT14)
#elif ASSERT_PIN_EXTENDED(DOUT14)
#define io61_config_output
-#define io61_set_output ic74hc595_set_pin(DOUT14);ic74hc595_shift_io_pins()
-#define io61_clear_output ic74hc595_clear_pin(DOUT14);ic74hc595_shift_io_pins()
-#define io61_toggle_output ic74hc595_toggle_pin(DOUT14);ic74hc595_shift_io_pins()
+#define io61_set_output ic74hc595_set_pin(DOUT14)
+#define io61_clear_output ic74hc595_clear_pin(DOUT14)
+#define io61_toggle_output ic74hc595_toggle_pin(DOUT14)
#define io61_get_output ic74hc595_get_pin(DOUT14)
-#define io61_config_input
-#define io61_config_pullup
-#define io61_get_input 0
-#else
-#define io61_config_output
-#define io61_set_output
-#define io61_clear_output
-#define io61_toggle_output
-#define io61_get_output 0
-#define io61_config_input
-#define io61_config_pullup
-#define io61_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT15)
#define io62_config_output mcu_config_output(DOUT15)
@@ -1966,31 +1090,15 @@ extern "C"
#define io62_clear_output mcu_clear_output(DOUT15)
#define io62_toggle_output mcu_toggle_output(DOUT15)
#define io62_get_output mcu_get_output(DOUT15)
-#if !defined(DOUT15_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io62_config_input mcu_config_input(DOUT15)
-#else
-#define io62_config_input mcu_config_input(DOUT15);mcu_config_pullup(DOUT15)
-#endif
#define io62_config_pullup mcu_config_pullup(DOUT15)
#define io62_get_input mcu_get_input(DOUT15)
#elif ASSERT_PIN_EXTENDED(DOUT15)
#define io62_config_output
-#define io62_set_output ic74hc595_set_pin(DOUT15);ic74hc595_shift_io_pins()
-#define io62_clear_output ic74hc595_clear_pin(DOUT15);ic74hc595_shift_io_pins()
-#define io62_toggle_output ic74hc595_toggle_pin(DOUT15);ic74hc595_shift_io_pins()
+#define io62_set_output ic74hc595_set_pin(DOUT15)
+#define io62_clear_output ic74hc595_clear_pin(DOUT15)
+#define io62_toggle_output ic74hc595_toggle_pin(DOUT15)
#define io62_get_output ic74hc595_get_pin(DOUT15)
-#define io62_config_input
-#define io62_config_pullup
-#define io62_get_input 0
-#else
-#define io62_config_output
-#define io62_set_output
-#define io62_clear_output
-#define io62_toggle_output
-#define io62_get_output 0
-#define io62_config_input
-#define io62_config_pullup
-#define io62_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT16)
#define io63_config_output mcu_config_output(DOUT16)
@@ -1998,31 +1106,15 @@ extern "C"
#define io63_clear_output mcu_clear_output(DOUT16)
#define io63_toggle_output mcu_toggle_output(DOUT16)
#define io63_get_output mcu_get_output(DOUT16)
-#if !defined(DOUT16_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io63_config_input mcu_config_input(DOUT16)
-#else
-#define io63_config_input mcu_config_input(DOUT16);mcu_config_pullup(DOUT16)
-#endif
#define io63_config_pullup mcu_config_pullup(DOUT16)
#define io63_get_input mcu_get_input(DOUT16)
#elif ASSERT_PIN_EXTENDED(DOUT16)
#define io63_config_output
-#define io63_set_output ic74hc595_set_pin(DOUT16);ic74hc595_shift_io_pins()
-#define io63_clear_output ic74hc595_clear_pin(DOUT16);ic74hc595_shift_io_pins()
-#define io63_toggle_output ic74hc595_toggle_pin(DOUT16);ic74hc595_shift_io_pins()
+#define io63_set_output ic74hc595_set_pin(DOUT16)
+#define io63_clear_output ic74hc595_clear_pin(DOUT16)
+#define io63_toggle_output ic74hc595_toggle_pin(DOUT16)
#define io63_get_output ic74hc595_get_pin(DOUT16)
-#define io63_config_input
-#define io63_config_pullup
-#define io63_get_input 0
-#else
-#define io63_config_output
-#define io63_set_output
-#define io63_clear_output
-#define io63_toggle_output
-#define io63_get_output 0
-#define io63_config_input
-#define io63_config_pullup
-#define io63_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT17)
#define io64_config_output mcu_config_output(DOUT17)
@@ -2030,31 +1122,15 @@ extern "C"
#define io64_clear_output mcu_clear_output(DOUT17)
#define io64_toggle_output mcu_toggle_output(DOUT17)
#define io64_get_output mcu_get_output(DOUT17)
-#if !defined(DOUT17_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io64_config_input mcu_config_input(DOUT17)
-#else
-#define io64_config_input mcu_config_input(DOUT17);mcu_config_pullup(DOUT17)
-#endif
#define io64_config_pullup mcu_config_pullup(DOUT17)
#define io64_get_input mcu_get_input(DOUT17)
#elif ASSERT_PIN_EXTENDED(DOUT17)
#define io64_config_output
-#define io64_set_output ic74hc595_set_pin(DOUT17);ic74hc595_shift_io_pins()
-#define io64_clear_output ic74hc595_clear_pin(DOUT17);ic74hc595_shift_io_pins()
-#define io64_toggle_output ic74hc595_toggle_pin(DOUT17);ic74hc595_shift_io_pins()
+#define io64_set_output ic74hc595_set_pin(DOUT17)
+#define io64_clear_output ic74hc595_clear_pin(DOUT17)
+#define io64_toggle_output ic74hc595_toggle_pin(DOUT17)
#define io64_get_output ic74hc595_get_pin(DOUT17)
-#define io64_config_input
-#define io64_config_pullup
-#define io64_get_input 0
-#else
-#define io64_config_output
-#define io64_set_output
-#define io64_clear_output
-#define io64_toggle_output
-#define io64_get_output 0
-#define io64_config_input
-#define io64_config_pullup
-#define io64_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT18)
#define io65_config_output mcu_config_output(DOUT18)
@@ -2062,31 +1138,15 @@ extern "C"
#define io65_clear_output mcu_clear_output(DOUT18)
#define io65_toggle_output mcu_toggle_output(DOUT18)
#define io65_get_output mcu_get_output(DOUT18)
-#if !defined(DOUT18_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io65_config_input mcu_config_input(DOUT18)
-#else
-#define io65_config_input mcu_config_input(DOUT18);mcu_config_pullup(DOUT18)
-#endif
#define io65_config_pullup mcu_config_pullup(DOUT18)
#define io65_get_input mcu_get_input(DOUT18)
#elif ASSERT_PIN_EXTENDED(DOUT18)
#define io65_config_output
-#define io65_set_output ic74hc595_set_pin(DOUT18);ic74hc595_shift_io_pins()
-#define io65_clear_output ic74hc595_clear_pin(DOUT18);ic74hc595_shift_io_pins()
-#define io65_toggle_output ic74hc595_toggle_pin(DOUT18);ic74hc595_shift_io_pins()
+#define io65_set_output ic74hc595_set_pin(DOUT18)
+#define io65_clear_output ic74hc595_clear_pin(DOUT18)
+#define io65_toggle_output ic74hc595_toggle_pin(DOUT18)
#define io65_get_output ic74hc595_get_pin(DOUT18)
-#define io65_config_input
-#define io65_config_pullup
-#define io65_get_input 0
-#else
-#define io65_config_output
-#define io65_set_output
-#define io65_clear_output
-#define io65_toggle_output
-#define io65_get_output 0
-#define io65_config_input
-#define io65_config_pullup
-#define io65_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT19)
#define io66_config_output mcu_config_output(DOUT19)
@@ -2094,31 +1154,15 @@ extern "C"
#define io66_clear_output mcu_clear_output(DOUT19)
#define io66_toggle_output mcu_toggle_output(DOUT19)
#define io66_get_output mcu_get_output(DOUT19)
-#if !defined(DOUT19_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io66_config_input mcu_config_input(DOUT19)
-#else
-#define io66_config_input mcu_config_input(DOUT19);mcu_config_pullup(DOUT19)
-#endif
#define io66_config_pullup mcu_config_pullup(DOUT19)
#define io66_get_input mcu_get_input(DOUT19)
#elif ASSERT_PIN_EXTENDED(DOUT19)
#define io66_config_output
-#define io66_set_output ic74hc595_set_pin(DOUT19);ic74hc595_shift_io_pins()
-#define io66_clear_output ic74hc595_clear_pin(DOUT19);ic74hc595_shift_io_pins()
-#define io66_toggle_output ic74hc595_toggle_pin(DOUT19);ic74hc595_shift_io_pins()
+#define io66_set_output ic74hc595_set_pin(DOUT19)
+#define io66_clear_output ic74hc595_clear_pin(DOUT19)
+#define io66_toggle_output ic74hc595_toggle_pin(DOUT19)
#define io66_get_output ic74hc595_get_pin(DOUT19)
-#define io66_config_input
-#define io66_config_pullup
-#define io66_get_input 0
-#else
-#define io66_config_output
-#define io66_set_output
-#define io66_clear_output
-#define io66_toggle_output
-#define io66_get_output 0
-#define io66_config_input
-#define io66_config_pullup
-#define io66_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT20)
#define io67_config_output mcu_config_output(DOUT20)
@@ -2126,31 +1170,15 @@ extern "C"
#define io67_clear_output mcu_clear_output(DOUT20)
#define io67_toggle_output mcu_toggle_output(DOUT20)
#define io67_get_output mcu_get_output(DOUT20)
-#if !defined(DOUT20_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io67_config_input mcu_config_input(DOUT20)
-#else
-#define io67_config_input mcu_config_input(DOUT20);mcu_config_pullup(DOUT20)
-#endif
#define io67_config_pullup mcu_config_pullup(DOUT20)
#define io67_get_input mcu_get_input(DOUT20)
#elif ASSERT_PIN_EXTENDED(DOUT20)
#define io67_config_output
-#define io67_set_output ic74hc595_set_pin(DOUT20);ic74hc595_shift_io_pins()
-#define io67_clear_output ic74hc595_clear_pin(DOUT20);ic74hc595_shift_io_pins()
-#define io67_toggle_output ic74hc595_toggle_pin(DOUT20);ic74hc595_shift_io_pins()
+#define io67_set_output ic74hc595_set_pin(DOUT20)
+#define io67_clear_output ic74hc595_clear_pin(DOUT20)
+#define io67_toggle_output ic74hc595_toggle_pin(DOUT20)
#define io67_get_output ic74hc595_get_pin(DOUT20)
-#define io67_config_input
-#define io67_config_pullup
-#define io67_get_input 0
-#else
-#define io67_config_output
-#define io67_set_output
-#define io67_clear_output
-#define io67_toggle_output
-#define io67_get_output 0
-#define io67_config_input
-#define io67_config_pullup
-#define io67_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT21)
#define io68_config_output mcu_config_output(DOUT21)
@@ -2158,31 +1186,15 @@ extern "C"
#define io68_clear_output mcu_clear_output(DOUT21)
#define io68_toggle_output mcu_toggle_output(DOUT21)
#define io68_get_output mcu_get_output(DOUT21)
-#if !defined(DOUT21_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io68_config_input mcu_config_input(DOUT21)
-#else
-#define io68_config_input mcu_config_input(DOUT21);mcu_config_pullup(DOUT21)
-#endif
#define io68_config_pullup mcu_config_pullup(DOUT21)
#define io68_get_input mcu_get_input(DOUT21)
#elif ASSERT_PIN_EXTENDED(DOUT21)
#define io68_config_output
-#define io68_set_output ic74hc595_set_pin(DOUT21);ic74hc595_shift_io_pins()
-#define io68_clear_output ic74hc595_clear_pin(DOUT21);ic74hc595_shift_io_pins()
-#define io68_toggle_output ic74hc595_toggle_pin(DOUT21);ic74hc595_shift_io_pins()
+#define io68_set_output ic74hc595_set_pin(DOUT21)
+#define io68_clear_output ic74hc595_clear_pin(DOUT21)
+#define io68_toggle_output ic74hc595_toggle_pin(DOUT21)
#define io68_get_output ic74hc595_get_pin(DOUT21)
-#define io68_config_input
-#define io68_config_pullup
-#define io68_get_input 0
-#else
-#define io68_config_output
-#define io68_set_output
-#define io68_clear_output
-#define io68_toggle_output
-#define io68_get_output 0
-#define io68_config_input
-#define io68_config_pullup
-#define io68_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT22)
#define io69_config_output mcu_config_output(DOUT22)
@@ -2190,31 +1202,15 @@ extern "C"
#define io69_clear_output mcu_clear_output(DOUT22)
#define io69_toggle_output mcu_toggle_output(DOUT22)
#define io69_get_output mcu_get_output(DOUT22)
-#if !defined(DOUT22_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io69_config_input mcu_config_input(DOUT22)
-#else
-#define io69_config_input mcu_config_input(DOUT22);mcu_config_pullup(DOUT22)
-#endif
#define io69_config_pullup mcu_config_pullup(DOUT22)
#define io69_get_input mcu_get_input(DOUT22)
#elif ASSERT_PIN_EXTENDED(DOUT22)
#define io69_config_output
-#define io69_set_output ic74hc595_set_pin(DOUT22);ic74hc595_shift_io_pins()
-#define io69_clear_output ic74hc595_clear_pin(DOUT22);ic74hc595_shift_io_pins()
-#define io69_toggle_output ic74hc595_toggle_pin(DOUT22);ic74hc595_shift_io_pins()
+#define io69_set_output ic74hc595_set_pin(DOUT22)
+#define io69_clear_output ic74hc595_clear_pin(DOUT22)
+#define io69_toggle_output ic74hc595_toggle_pin(DOUT22)
#define io69_get_output ic74hc595_get_pin(DOUT22)
-#define io69_config_input
-#define io69_config_pullup
-#define io69_get_input 0
-#else
-#define io69_config_output
-#define io69_set_output
-#define io69_clear_output
-#define io69_toggle_output
-#define io69_get_output 0
-#define io69_config_input
-#define io69_config_pullup
-#define io69_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT23)
#define io70_config_output mcu_config_output(DOUT23)
@@ -2222,31 +1218,15 @@ extern "C"
#define io70_clear_output mcu_clear_output(DOUT23)
#define io70_toggle_output mcu_toggle_output(DOUT23)
#define io70_get_output mcu_get_output(DOUT23)
-#if !defined(DOUT23_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io70_config_input mcu_config_input(DOUT23)
-#else
-#define io70_config_input mcu_config_input(DOUT23);mcu_config_pullup(DOUT23)
-#endif
#define io70_config_pullup mcu_config_pullup(DOUT23)
#define io70_get_input mcu_get_input(DOUT23)
#elif ASSERT_PIN_EXTENDED(DOUT23)
#define io70_config_output
-#define io70_set_output ic74hc595_set_pin(DOUT23);ic74hc595_shift_io_pins()
-#define io70_clear_output ic74hc595_clear_pin(DOUT23);ic74hc595_shift_io_pins()
-#define io70_toggle_output ic74hc595_toggle_pin(DOUT23);ic74hc595_shift_io_pins()
+#define io70_set_output ic74hc595_set_pin(DOUT23)
+#define io70_clear_output ic74hc595_clear_pin(DOUT23)
+#define io70_toggle_output ic74hc595_toggle_pin(DOUT23)
#define io70_get_output ic74hc595_get_pin(DOUT23)
-#define io70_config_input
-#define io70_config_pullup
-#define io70_get_input 0
-#else
-#define io70_config_output
-#define io70_set_output
-#define io70_clear_output
-#define io70_toggle_output
-#define io70_get_output 0
-#define io70_config_input
-#define io70_config_pullup
-#define io70_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT24)
#define io71_config_output mcu_config_output(DOUT24)
@@ -2254,31 +1234,15 @@ extern "C"
#define io71_clear_output mcu_clear_output(DOUT24)
#define io71_toggle_output mcu_toggle_output(DOUT24)
#define io71_get_output mcu_get_output(DOUT24)
-#if !defined(DOUT24_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io71_config_input mcu_config_input(DOUT24)
-#else
-#define io71_config_input mcu_config_input(DOUT24);mcu_config_pullup(DOUT24)
-#endif
#define io71_config_pullup mcu_config_pullup(DOUT24)
#define io71_get_input mcu_get_input(DOUT24)
#elif ASSERT_PIN_EXTENDED(DOUT24)
#define io71_config_output
-#define io71_set_output ic74hc595_set_pin(DOUT24);ic74hc595_shift_io_pins()
-#define io71_clear_output ic74hc595_clear_pin(DOUT24);ic74hc595_shift_io_pins()
-#define io71_toggle_output ic74hc595_toggle_pin(DOUT24);ic74hc595_shift_io_pins()
+#define io71_set_output ic74hc595_set_pin(DOUT24)
+#define io71_clear_output ic74hc595_clear_pin(DOUT24)
+#define io71_toggle_output ic74hc595_toggle_pin(DOUT24)
#define io71_get_output ic74hc595_get_pin(DOUT24)
-#define io71_config_input
-#define io71_config_pullup
-#define io71_get_input 0
-#else
-#define io71_config_output
-#define io71_set_output
-#define io71_clear_output
-#define io71_toggle_output
-#define io71_get_output 0
-#define io71_config_input
-#define io71_config_pullup
-#define io71_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT25)
#define io72_config_output mcu_config_output(DOUT25)
@@ -2286,31 +1250,15 @@ extern "C"
#define io72_clear_output mcu_clear_output(DOUT25)
#define io72_toggle_output mcu_toggle_output(DOUT25)
#define io72_get_output mcu_get_output(DOUT25)
-#if !defined(DOUT25_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io72_config_input mcu_config_input(DOUT25)
-#else
-#define io72_config_input mcu_config_input(DOUT25);mcu_config_pullup(DOUT25)
-#endif
#define io72_config_pullup mcu_config_pullup(DOUT25)
#define io72_get_input mcu_get_input(DOUT25)
#elif ASSERT_PIN_EXTENDED(DOUT25)
#define io72_config_output
-#define io72_set_output ic74hc595_set_pin(DOUT25);ic74hc595_shift_io_pins()
-#define io72_clear_output ic74hc595_clear_pin(DOUT25);ic74hc595_shift_io_pins()
-#define io72_toggle_output ic74hc595_toggle_pin(DOUT25);ic74hc595_shift_io_pins()
+#define io72_set_output ic74hc595_set_pin(DOUT25)
+#define io72_clear_output ic74hc595_clear_pin(DOUT25)
+#define io72_toggle_output ic74hc595_toggle_pin(DOUT25)
#define io72_get_output ic74hc595_get_pin(DOUT25)
-#define io72_config_input
-#define io72_config_pullup
-#define io72_get_input 0
-#else
-#define io72_config_output
-#define io72_set_output
-#define io72_clear_output
-#define io72_toggle_output
-#define io72_get_output 0
-#define io72_config_input
-#define io72_config_pullup
-#define io72_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT26)
#define io73_config_output mcu_config_output(DOUT26)
@@ -2318,31 +1266,15 @@ extern "C"
#define io73_clear_output mcu_clear_output(DOUT26)
#define io73_toggle_output mcu_toggle_output(DOUT26)
#define io73_get_output mcu_get_output(DOUT26)
-#if !defined(DOUT26_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io73_config_input mcu_config_input(DOUT26)
-#else
-#define io73_config_input mcu_config_input(DOUT26);mcu_config_pullup(DOUT26)
-#endif
#define io73_config_pullup mcu_config_pullup(DOUT26)
#define io73_get_input mcu_get_input(DOUT26)
#elif ASSERT_PIN_EXTENDED(DOUT26)
#define io73_config_output
-#define io73_set_output ic74hc595_set_pin(DOUT26);ic74hc595_shift_io_pins()
-#define io73_clear_output ic74hc595_clear_pin(DOUT26);ic74hc595_shift_io_pins()
-#define io73_toggle_output ic74hc595_toggle_pin(DOUT26);ic74hc595_shift_io_pins()
+#define io73_set_output ic74hc595_set_pin(DOUT26)
+#define io73_clear_output ic74hc595_clear_pin(DOUT26)
+#define io73_toggle_output ic74hc595_toggle_pin(DOUT26)
#define io73_get_output ic74hc595_get_pin(DOUT26)
-#define io73_config_input
-#define io73_config_pullup
-#define io73_get_input 0
-#else
-#define io73_config_output
-#define io73_set_output
-#define io73_clear_output
-#define io73_toggle_output
-#define io73_get_output 0
-#define io73_config_input
-#define io73_config_pullup
-#define io73_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT27)
#define io74_config_output mcu_config_output(DOUT27)
@@ -2350,31 +1282,15 @@ extern "C"
#define io74_clear_output mcu_clear_output(DOUT27)
#define io74_toggle_output mcu_toggle_output(DOUT27)
#define io74_get_output mcu_get_output(DOUT27)
-#if !defined(DOUT27_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io74_config_input mcu_config_input(DOUT27)
-#else
-#define io74_config_input mcu_config_input(DOUT27);mcu_config_pullup(DOUT27)
-#endif
#define io74_config_pullup mcu_config_pullup(DOUT27)
#define io74_get_input mcu_get_input(DOUT27)
#elif ASSERT_PIN_EXTENDED(DOUT27)
#define io74_config_output
-#define io74_set_output ic74hc595_set_pin(DOUT27);ic74hc595_shift_io_pins()
-#define io74_clear_output ic74hc595_clear_pin(DOUT27);ic74hc595_shift_io_pins()
-#define io74_toggle_output ic74hc595_toggle_pin(DOUT27);ic74hc595_shift_io_pins()
+#define io74_set_output ic74hc595_set_pin(DOUT27)
+#define io74_clear_output ic74hc595_clear_pin(DOUT27)
+#define io74_toggle_output ic74hc595_toggle_pin(DOUT27)
#define io74_get_output ic74hc595_get_pin(DOUT27)
-#define io74_config_input
-#define io74_config_pullup
-#define io74_get_input 0
-#else
-#define io74_config_output
-#define io74_set_output
-#define io74_clear_output
-#define io74_toggle_output
-#define io74_get_output 0
-#define io74_config_input
-#define io74_config_pullup
-#define io74_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT28)
#define io75_config_output mcu_config_output(DOUT28)
@@ -2382,31 +1298,15 @@ extern "C"
#define io75_clear_output mcu_clear_output(DOUT28)
#define io75_toggle_output mcu_toggle_output(DOUT28)
#define io75_get_output mcu_get_output(DOUT28)
-#if !defined(DOUT28_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io75_config_input mcu_config_input(DOUT28)
-#else
-#define io75_config_input mcu_config_input(DOUT28);mcu_config_pullup(DOUT28)
-#endif
#define io75_config_pullup mcu_config_pullup(DOUT28)
#define io75_get_input mcu_get_input(DOUT28)
#elif ASSERT_PIN_EXTENDED(DOUT28)
#define io75_config_output
-#define io75_set_output ic74hc595_set_pin(DOUT28);ic74hc595_shift_io_pins()
-#define io75_clear_output ic74hc595_clear_pin(DOUT28);ic74hc595_shift_io_pins()
-#define io75_toggle_output ic74hc595_toggle_pin(DOUT28);ic74hc595_shift_io_pins()
+#define io75_set_output ic74hc595_set_pin(DOUT28)
+#define io75_clear_output ic74hc595_clear_pin(DOUT28)
+#define io75_toggle_output ic74hc595_toggle_pin(DOUT28)
#define io75_get_output ic74hc595_get_pin(DOUT28)
-#define io75_config_input
-#define io75_config_pullup
-#define io75_get_input 0
-#else
-#define io75_config_output
-#define io75_set_output
-#define io75_clear_output
-#define io75_toggle_output
-#define io75_get_output 0
-#define io75_config_input
-#define io75_config_pullup
-#define io75_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT29)
#define io76_config_output mcu_config_output(DOUT29)
@@ -2414,31 +1314,15 @@ extern "C"
#define io76_clear_output mcu_clear_output(DOUT29)
#define io76_toggle_output mcu_toggle_output(DOUT29)
#define io76_get_output mcu_get_output(DOUT29)
-#if !defined(DOUT29_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io76_config_input mcu_config_input(DOUT29)
-#else
-#define io76_config_input mcu_config_input(DOUT29);mcu_config_pullup(DOUT29)
-#endif
#define io76_config_pullup mcu_config_pullup(DOUT29)
#define io76_get_input mcu_get_input(DOUT29)
#elif ASSERT_PIN_EXTENDED(DOUT29)
#define io76_config_output
-#define io76_set_output ic74hc595_set_pin(DOUT29);ic74hc595_shift_io_pins()
-#define io76_clear_output ic74hc595_clear_pin(DOUT29);ic74hc595_shift_io_pins()
-#define io76_toggle_output ic74hc595_toggle_pin(DOUT29);ic74hc595_shift_io_pins()
+#define io76_set_output ic74hc595_set_pin(DOUT29)
+#define io76_clear_output ic74hc595_clear_pin(DOUT29)
+#define io76_toggle_output ic74hc595_toggle_pin(DOUT29)
#define io76_get_output ic74hc595_get_pin(DOUT29)
-#define io76_config_input
-#define io76_config_pullup
-#define io76_get_input 0
-#else
-#define io76_config_output
-#define io76_set_output
-#define io76_clear_output
-#define io76_toggle_output
-#define io76_get_output 0
-#define io76_config_input
-#define io76_config_pullup
-#define io76_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT30)
#define io77_config_output mcu_config_output(DOUT30)
@@ -2446,31 +1330,15 @@ extern "C"
#define io77_clear_output mcu_clear_output(DOUT30)
#define io77_toggle_output mcu_toggle_output(DOUT30)
#define io77_get_output mcu_get_output(DOUT30)
-#if !defined(DOUT30_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io77_config_input mcu_config_input(DOUT30)
-#else
-#define io77_config_input mcu_config_input(DOUT30);mcu_config_pullup(DOUT30)
-#endif
#define io77_config_pullup mcu_config_pullup(DOUT30)
#define io77_get_input mcu_get_input(DOUT30)
#elif ASSERT_PIN_EXTENDED(DOUT30)
#define io77_config_output
-#define io77_set_output ic74hc595_set_pin(DOUT30);ic74hc595_shift_io_pins()
-#define io77_clear_output ic74hc595_clear_pin(DOUT30);ic74hc595_shift_io_pins()
-#define io77_toggle_output ic74hc595_toggle_pin(DOUT30);ic74hc595_shift_io_pins()
+#define io77_set_output ic74hc595_set_pin(DOUT30)
+#define io77_clear_output ic74hc595_clear_pin(DOUT30)
+#define io77_toggle_output ic74hc595_toggle_pin(DOUT30)
#define io77_get_output ic74hc595_get_pin(DOUT30)
-#define io77_config_input
-#define io77_config_pullup
-#define io77_get_input 0
-#else
-#define io77_config_output
-#define io77_set_output
-#define io77_clear_output
-#define io77_toggle_output
-#define io77_get_output 0
-#define io77_config_input
-#define io77_config_pullup
-#define io77_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT31)
#define io78_config_output mcu_config_output(DOUT31)
@@ -2478,31 +1346,15 @@ extern "C"
#define io78_clear_output mcu_clear_output(DOUT31)
#define io78_toggle_output mcu_toggle_output(DOUT31)
#define io78_get_output mcu_get_output(DOUT31)
-#if !defined(DOUT31_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io78_config_input mcu_config_input(DOUT31)
-#else
-#define io78_config_input mcu_config_input(DOUT31);mcu_config_pullup(DOUT31)
-#endif
#define io78_config_pullup mcu_config_pullup(DOUT31)
#define io78_get_input mcu_get_input(DOUT31)
#elif ASSERT_PIN_EXTENDED(DOUT31)
#define io78_config_output
-#define io78_set_output ic74hc595_set_pin(DOUT31);ic74hc595_shift_io_pins()
-#define io78_clear_output ic74hc595_clear_pin(DOUT31);ic74hc595_shift_io_pins()
-#define io78_toggle_output ic74hc595_toggle_pin(DOUT31);ic74hc595_shift_io_pins()
+#define io78_set_output ic74hc595_set_pin(DOUT31)
+#define io78_clear_output ic74hc595_clear_pin(DOUT31)
+#define io78_toggle_output ic74hc595_toggle_pin(DOUT31)
#define io78_get_output ic74hc595_get_pin(DOUT31)
-#define io78_config_input
-#define io78_config_pullup
-#define io78_get_input 0
-#else
-#define io78_config_output
-#define io78_set_output
-#define io78_clear_output
-#define io78_toggle_output
-#define io78_get_output 0
-#define io78_config_input
-#define io78_config_pullup
-#define io78_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT32)
#define io79_config_output mcu_config_output(DOUT32)
@@ -2510,31 +1362,15 @@ extern "C"
#define io79_clear_output mcu_clear_output(DOUT32)
#define io79_toggle_output mcu_toggle_output(DOUT32)
#define io79_get_output mcu_get_output(DOUT32)
-#if !defined(DOUT32_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io79_config_input mcu_config_input(DOUT32)
-#else
-#define io79_config_input mcu_config_input(DOUT32);mcu_config_pullup(DOUT32)
-#endif
#define io79_config_pullup mcu_config_pullup(DOUT32)
#define io79_get_input mcu_get_input(DOUT32)
#elif ASSERT_PIN_EXTENDED(DOUT32)
#define io79_config_output
-#define io79_set_output ic74hc595_set_pin(DOUT32);ic74hc595_shift_io_pins()
-#define io79_clear_output ic74hc595_clear_pin(DOUT32);ic74hc595_shift_io_pins()
-#define io79_toggle_output ic74hc595_toggle_pin(DOUT32);ic74hc595_shift_io_pins()
+#define io79_set_output ic74hc595_set_pin(DOUT32)
+#define io79_clear_output ic74hc595_clear_pin(DOUT32)
+#define io79_toggle_output ic74hc595_toggle_pin(DOUT32)
#define io79_get_output ic74hc595_get_pin(DOUT32)
-#define io79_config_input
-#define io79_config_pullup
-#define io79_get_input 0
-#else
-#define io79_config_output
-#define io79_set_output
-#define io79_clear_output
-#define io79_toggle_output
-#define io79_get_output 0
-#define io79_config_input
-#define io79_config_pullup
-#define io79_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT33)
#define io80_config_output mcu_config_output(DOUT33)
@@ -2542,31 +1378,15 @@ extern "C"
#define io80_clear_output mcu_clear_output(DOUT33)
#define io80_toggle_output mcu_toggle_output(DOUT33)
#define io80_get_output mcu_get_output(DOUT33)
-#if !defined(DOUT33_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io80_config_input mcu_config_input(DOUT33)
-#else
-#define io80_config_input mcu_config_input(DOUT33);mcu_config_pullup(DOUT33)
-#endif
#define io80_config_pullup mcu_config_pullup(DOUT33)
#define io80_get_input mcu_get_input(DOUT33)
#elif ASSERT_PIN_EXTENDED(DOUT33)
#define io80_config_output
-#define io80_set_output ic74hc595_set_pin(DOUT33);ic74hc595_shift_io_pins()
-#define io80_clear_output ic74hc595_clear_pin(DOUT33);ic74hc595_shift_io_pins()
-#define io80_toggle_output ic74hc595_toggle_pin(DOUT33);ic74hc595_shift_io_pins()
+#define io80_set_output ic74hc595_set_pin(DOUT33)
+#define io80_clear_output ic74hc595_clear_pin(DOUT33)
+#define io80_toggle_output ic74hc595_toggle_pin(DOUT33)
#define io80_get_output ic74hc595_get_pin(DOUT33)
-#define io80_config_input
-#define io80_config_pullup
-#define io80_get_input 0
-#else
-#define io80_config_output
-#define io80_set_output
-#define io80_clear_output
-#define io80_toggle_output
-#define io80_get_output 0
-#define io80_config_input
-#define io80_config_pullup
-#define io80_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT34)
#define io81_config_output mcu_config_output(DOUT34)
@@ -2574,31 +1394,15 @@ extern "C"
#define io81_clear_output mcu_clear_output(DOUT34)
#define io81_toggle_output mcu_toggle_output(DOUT34)
#define io81_get_output mcu_get_output(DOUT34)
-#if !defined(DOUT34_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io81_config_input mcu_config_input(DOUT34)
-#else
-#define io81_config_input mcu_config_input(DOUT34);mcu_config_pullup(DOUT34)
-#endif
#define io81_config_pullup mcu_config_pullup(DOUT34)
#define io81_get_input mcu_get_input(DOUT34)
#elif ASSERT_PIN_EXTENDED(DOUT34)
#define io81_config_output
-#define io81_set_output ic74hc595_set_pin(DOUT34);ic74hc595_shift_io_pins()
-#define io81_clear_output ic74hc595_clear_pin(DOUT34);ic74hc595_shift_io_pins()
-#define io81_toggle_output ic74hc595_toggle_pin(DOUT34);ic74hc595_shift_io_pins()
+#define io81_set_output ic74hc595_set_pin(DOUT34)
+#define io81_clear_output ic74hc595_clear_pin(DOUT34)
+#define io81_toggle_output ic74hc595_toggle_pin(DOUT34)
#define io81_get_output ic74hc595_get_pin(DOUT34)
-#define io81_config_input
-#define io81_config_pullup
-#define io81_get_input 0
-#else
-#define io81_config_output
-#define io81_set_output
-#define io81_clear_output
-#define io81_toggle_output
-#define io81_get_output 0
-#define io81_config_input
-#define io81_config_pullup
-#define io81_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT35)
#define io82_config_output mcu_config_output(DOUT35)
@@ -2606,31 +1410,15 @@ extern "C"
#define io82_clear_output mcu_clear_output(DOUT35)
#define io82_toggle_output mcu_toggle_output(DOUT35)
#define io82_get_output mcu_get_output(DOUT35)
-#if !defined(DOUT35_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io82_config_input mcu_config_input(DOUT35)
-#else
-#define io82_config_input mcu_config_input(DOUT35);mcu_config_pullup(DOUT35)
-#endif
#define io82_config_pullup mcu_config_pullup(DOUT35)
#define io82_get_input mcu_get_input(DOUT35)
#elif ASSERT_PIN_EXTENDED(DOUT35)
#define io82_config_output
-#define io82_set_output ic74hc595_set_pin(DOUT35);ic74hc595_shift_io_pins()
-#define io82_clear_output ic74hc595_clear_pin(DOUT35);ic74hc595_shift_io_pins()
-#define io82_toggle_output ic74hc595_toggle_pin(DOUT35);ic74hc595_shift_io_pins()
+#define io82_set_output ic74hc595_set_pin(DOUT35)
+#define io82_clear_output ic74hc595_clear_pin(DOUT35)
+#define io82_toggle_output ic74hc595_toggle_pin(DOUT35)
#define io82_get_output ic74hc595_get_pin(DOUT35)
-#define io82_config_input
-#define io82_config_pullup
-#define io82_get_input 0
-#else
-#define io82_config_output
-#define io82_set_output
-#define io82_clear_output
-#define io82_toggle_output
-#define io82_get_output 0
-#define io82_config_input
-#define io82_config_pullup
-#define io82_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT36)
#define io83_config_output mcu_config_output(DOUT36)
@@ -2638,31 +1426,15 @@ extern "C"
#define io83_clear_output mcu_clear_output(DOUT36)
#define io83_toggle_output mcu_toggle_output(DOUT36)
#define io83_get_output mcu_get_output(DOUT36)
-#if !defined(DOUT36_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io83_config_input mcu_config_input(DOUT36)
-#else
-#define io83_config_input mcu_config_input(DOUT36);mcu_config_pullup(DOUT36)
-#endif
#define io83_config_pullup mcu_config_pullup(DOUT36)
#define io83_get_input mcu_get_input(DOUT36)
#elif ASSERT_PIN_EXTENDED(DOUT36)
#define io83_config_output
-#define io83_set_output ic74hc595_set_pin(DOUT36);ic74hc595_shift_io_pins()
-#define io83_clear_output ic74hc595_clear_pin(DOUT36);ic74hc595_shift_io_pins()
-#define io83_toggle_output ic74hc595_toggle_pin(DOUT36);ic74hc595_shift_io_pins()
+#define io83_set_output ic74hc595_set_pin(DOUT36)
+#define io83_clear_output ic74hc595_clear_pin(DOUT36)
+#define io83_toggle_output ic74hc595_toggle_pin(DOUT36)
#define io83_get_output ic74hc595_get_pin(DOUT36)
-#define io83_config_input
-#define io83_config_pullup
-#define io83_get_input 0
-#else
-#define io83_config_output
-#define io83_set_output
-#define io83_clear_output
-#define io83_toggle_output
-#define io83_get_output 0
-#define io83_config_input
-#define io83_config_pullup
-#define io83_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT37)
#define io84_config_output mcu_config_output(DOUT37)
@@ -2670,31 +1442,15 @@ extern "C"
#define io84_clear_output mcu_clear_output(DOUT37)
#define io84_toggle_output mcu_toggle_output(DOUT37)
#define io84_get_output mcu_get_output(DOUT37)
-#if !defined(DOUT37_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io84_config_input mcu_config_input(DOUT37)
-#else
-#define io84_config_input mcu_config_input(DOUT37);mcu_config_pullup(DOUT37)
-#endif
#define io84_config_pullup mcu_config_pullup(DOUT37)
#define io84_get_input mcu_get_input(DOUT37)
#elif ASSERT_PIN_EXTENDED(DOUT37)
#define io84_config_output
-#define io84_set_output ic74hc595_set_pin(DOUT37);ic74hc595_shift_io_pins()
-#define io84_clear_output ic74hc595_clear_pin(DOUT37);ic74hc595_shift_io_pins()
-#define io84_toggle_output ic74hc595_toggle_pin(DOUT37);ic74hc595_shift_io_pins()
+#define io84_set_output ic74hc595_set_pin(DOUT37)
+#define io84_clear_output ic74hc595_clear_pin(DOUT37)
+#define io84_toggle_output ic74hc595_toggle_pin(DOUT37)
#define io84_get_output ic74hc595_get_pin(DOUT37)
-#define io84_config_input
-#define io84_config_pullup
-#define io84_get_input 0
-#else
-#define io84_config_output
-#define io84_set_output
-#define io84_clear_output
-#define io84_toggle_output
-#define io84_get_output 0
-#define io84_config_input
-#define io84_config_pullup
-#define io84_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT38)
#define io85_config_output mcu_config_output(DOUT38)
@@ -2702,31 +1458,15 @@ extern "C"
#define io85_clear_output mcu_clear_output(DOUT38)
#define io85_toggle_output mcu_toggle_output(DOUT38)
#define io85_get_output mcu_get_output(DOUT38)
-#if !defined(DOUT38_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io85_config_input mcu_config_input(DOUT38)
-#else
-#define io85_config_input mcu_config_input(DOUT38);mcu_config_pullup(DOUT38)
-#endif
#define io85_config_pullup mcu_config_pullup(DOUT38)
#define io85_get_input mcu_get_input(DOUT38)
#elif ASSERT_PIN_EXTENDED(DOUT38)
#define io85_config_output
-#define io85_set_output ic74hc595_set_pin(DOUT38);ic74hc595_shift_io_pins()
-#define io85_clear_output ic74hc595_clear_pin(DOUT38);ic74hc595_shift_io_pins()
-#define io85_toggle_output ic74hc595_toggle_pin(DOUT38);ic74hc595_shift_io_pins()
+#define io85_set_output ic74hc595_set_pin(DOUT38)
+#define io85_clear_output ic74hc595_clear_pin(DOUT38)
+#define io85_toggle_output ic74hc595_toggle_pin(DOUT38)
#define io85_get_output ic74hc595_get_pin(DOUT38)
-#define io85_config_input
-#define io85_config_pullup
-#define io85_get_input 0
-#else
-#define io85_config_output
-#define io85_set_output
-#define io85_clear_output
-#define io85_toggle_output
-#define io85_get_output 0
-#define io85_config_input
-#define io85_config_pullup
-#define io85_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT39)
#define io86_config_output mcu_config_output(DOUT39)
@@ -2734,31 +1474,15 @@ extern "C"
#define io86_clear_output mcu_clear_output(DOUT39)
#define io86_toggle_output mcu_toggle_output(DOUT39)
#define io86_get_output mcu_get_output(DOUT39)
-#if !defined(DOUT39_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io86_config_input mcu_config_input(DOUT39)
-#else
-#define io86_config_input mcu_config_input(DOUT39);mcu_config_pullup(DOUT39)
-#endif
#define io86_config_pullup mcu_config_pullup(DOUT39)
#define io86_get_input mcu_get_input(DOUT39)
#elif ASSERT_PIN_EXTENDED(DOUT39)
#define io86_config_output
-#define io86_set_output ic74hc595_set_pin(DOUT39);ic74hc595_shift_io_pins()
-#define io86_clear_output ic74hc595_clear_pin(DOUT39);ic74hc595_shift_io_pins()
-#define io86_toggle_output ic74hc595_toggle_pin(DOUT39);ic74hc595_shift_io_pins()
+#define io86_set_output ic74hc595_set_pin(DOUT39)
+#define io86_clear_output ic74hc595_clear_pin(DOUT39)
+#define io86_toggle_output ic74hc595_toggle_pin(DOUT39)
#define io86_get_output ic74hc595_get_pin(DOUT39)
-#define io86_config_input
-#define io86_config_pullup
-#define io86_get_input 0
-#else
-#define io86_config_output
-#define io86_set_output
-#define io86_clear_output
-#define io86_toggle_output
-#define io86_get_output 0
-#define io86_config_input
-#define io86_config_pullup
-#define io86_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT40)
#define io87_config_output mcu_config_output(DOUT40)
@@ -2766,31 +1490,15 @@ extern "C"
#define io87_clear_output mcu_clear_output(DOUT40)
#define io87_toggle_output mcu_toggle_output(DOUT40)
#define io87_get_output mcu_get_output(DOUT40)
-#if !defined(DOUT40_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io87_config_input mcu_config_input(DOUT40)
-#else
-#define io87_config_input mcu_config_input(DOUT40);mcu_config_pullup(DOUT40)
-#endif
#define io87_config_pullup mcu_config_pullup(DOUT40)
#define io87_get_input mcu_get_input(DOUT40)
#elif ASSERT_PIN_EXTENDED(DOUT40)
#define io87_config_output
-#define io87_set_output ic74hc595_set_pin(DOUT40);ic74hc595_shift_io_pins()
-#define io87_clear_output ic74hc595_clear_pin(DOUT40);ic74hc595_shift_io_pins()
-#define io87_toggle_output ic74hc595_toggle_pin(DOUT40);ic74hc595_shift_io_pins()
+#define io87_set_output ic74hc595_set_pin(DOUT40)
+#define io87_clear_output ic74hc595_clear_pin(DOUT40)
+#define io87_toggle_output ic74hc595_toggle_pin(DOUT40)
#define io87_get_output ic74hc595_get_pin(DOUT40)
-#define io87_config_input
-#define io87_config_pullup
-#define io87_get_input 0
-#else
-#define io87_config_output
-#define io87_set_output
-#define io87_clear_output
-#define io87_toggle_output
-#define io87_get_output 0
-#define io87_config_input
-#define io87_config_pullup
-#define io87_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT41)
#define io88_config_output mcu_config_output(DOUT41)
@@ -2798,31 +1506,15 @@ extern "C"
#define io88_clear_output mcu_clear_output(DOUT41)
#define io88_toggle_output mcu_toggle_output(DOUT41)
#define io88_get_output mcu_get_output(DOUT41)
-#if !defined(DOUT41_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io88_config_input mcu_config_input(DOUT41)
-#else
-#define io88_config_input mcu_config_input(DOUT41);mcu_config_pullup(DOUT41)
-#endif
#define io88_config_pullup mcu_config_pullup(DOUT41)
#define io88_get_input mcu_get_input(DOUT41)
#elif ASSERT_PIN_EXTENDED(DOUT41)
#define io88_config_output
-#define io88_set_output ic74hc595_set_pin(DOUT41);ic74hc595_shift_io_pins()
-#define io88_clear_output ic74hc595_clear_pin(DOUT41);ic74hc595_shift_io_pins()
-#define io88_toggle_output ic74hc595_toggle_pin(DOUT41);ic74hc595_shift_io_pins()
+#define io88_set_output ic74hc595_set_pin(DOUT41)
+#define io88_clear_output ic74hc595_clear_pin(DOUT41)
+#define io88_toggle_output ic74hc595_toggle_pin(DOUT41)
#define io88_get_output ic74hc595_get_pin(DOUT41)
-#define io88_config_input
-#define io88_config_pullup
-#define io88_get_input 0
-#else
-#define io88_config_output
-#define io88_set_output
-#define io88_clear_output
-#define io88_toggle_output
-#define io88_get_output 0
-#define io88_config_input
-#define io88_config_pullup
-#define io88_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT42)
#define io89_config_output mcu_config_output(DOUT42)
@@ -2830,31 +1522,15 @@ extern "C"
#define io89_clear_output mcu_clear_output(DOUT42)
#define io89_toggle_output mcu_toggle_output(DOUT42)
#define io89_get_output mcu_get_output(DOUT42)
-#if !defined(DOUT42_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io89_config_input mcu_config_input(DOUT42)
-#else
-#define io89_config_input mcu_config_input(DOUT42);mcu_config_pullup(DOUT42)
-#endif
#define io89_config_pullup mcu_config_pullup(DOUT42)
#define io89_get_input mcu_get_input(DOUT42)
#elif ASSERT_PIN_EXTENDED(DOUT42)
#define io89_config_output
-#define io89_set_output ic74hc595_set_pin(DOUT42);ic74hc595_shift_io_pins()
-#define io89_clear_output ic74hc595_clear_pin(DOUT42);ic74hc595_shift_io_pins()
-#define io89_toggle_output ic74hc595_toggle_pin(DOUT42);ic74hc595_shift_io_pins()
+#define io89_set_output ic74hc595_set_pin(DOUT42)
+#define io89_clear_output ic74hc595_clear_pin(DOUT42)
+#define io89_toggle_output ic74hc595_toggle_pin(DOUT42)
#define io89_get_output ic74hc595_get_pin(DOUT42)
-#define io89_config_input
-#define io89_config_pullup
-#define io89_get_input 0
-#else
-#define io89_config_output
-#define io89_set_output
-#define io89_clear_output
-#define io89_toggle_output
-#define io89_get_output 0
-#define io89_config_input
-#define io89_config_pullup
-#define io89_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT43)
#define io90_config_output mcu_config_output(DOUT43)
@@ -2862,31 +1538,15 @@ extern "C"
#define io90_clear_output mcu_clear_output(DOUT43)
#define io90_toggle_output mcu_toggle_output(DOUT43)
#define io90_get_output mcu_get_output(DOUT43)
-#if !defined(DOUT43_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io90_config_input mcu_config_input(DOUT43)
-#else
-#define io90_config_input mcu_config_input(DOUT43);mcu_config_pullup(DOUT43)
-#endif
#define io90_config_pullup mcu_config_pullup(DOUT43)
#define io90_get_input mcu_get_input(DOUT43)
#elif ASSERT_PIN_EXTENDED(DOUT43)
#define io90_config_output
-#define io90_set_output ic74hc595_set_pin(DOUT43);ic74hc595_shift_io_pins()
-#define io90_clear_output ic74hc595_clear_pin(DOUT43);ic74hc595_shift_io_pins()
-#define io90_toggle_output ic74hc595_toggle_pin(DOUT43);ic74hc595_shift_io_pins()
+#define io90_set_output ic74hc595_set_pin(DOUT43)
+#define io90_clear_output ic74hc595_clear_pin(DOUT43)
+#define io90_toggle_output ic74hc595_toggle_pin(DOUT43)
#define io90_get_output ic74hc595_get_pin(DOUT43)
-#define io90_config_input
-#define io90_config_pullup
-#define io90_get_input 0
-#else
-#define io90_config_output
-#define io90_set_output
-#define io90_clear_output
-#define io90_toggle_output
-#define io90_get_output 0
-#define io90_config_input
-#define io90_config_pullup
-#define io90_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT44)
#define io91_config_output mcu_config_output(DOUT44)
@@ -2894,31 +1554,15 @@ extern "C"
#define io91_clear_output mcu_clear_output(DOUT44)
#define io91_toggle_output mcu_toggle_output(DOUT44)
#define io91_get_output mcu_get_output(DOUT44)
-#if !defined(DOUT44_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io91_config_input mcu_config_input(DOUT44)
-#else
-#define io91_config_input mcu_config_input(DOUT44);mcu_config_pullup(DOUT44)
-#endif
#define io91_config_pullup mcu_config_pullup(DOUT44)
#define io91_get_input mcu_get_input(DOUT44)
#elif ASSERT_PIN_EXTENDED(DOUT44)
#define io91_config_output
-#define io91_set_output ic74hc595_set_pin(DOUT44);ic74hc595_shift_io_pins()
-#define io91_clear_output ic74hc595_clear_pin(DOUT44);ic74hc595_shift_io_pins()
-#define io91_toggle_output ic74hc595_toggle_pin(DOUT44);ic74hc595_shift_io_pins()
+#define io91_set_output ic74hc595_set_pin(DOUT44)
+#define io91_clear_output ic74hc595_clear_pin(DOUT44)
+#define io91_toggle_output ic74hc595_toggle_pin(DOUT44)
#define io91_get_output ic74hc595_get_pin(DOUT44)
-#define io91_config_input
-#define io91_config_pullup
-#define io91_get_input 0
-#else
-#define io91_config_output
-#define io91_set_output
-#define io91_clear_output
-#define io91_toggle_output
-#define io91_get_output 0
-#define io91_config_input
-#define io91_config_pullup
-#define io91_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT45)
#define io92_config_output mcu_config_output(DOUT45)
@@ -2926,31 +1570,15 @@ extern "C"
#define io92_clear_output mcu_clear_output(DOUT45)
#define io92_toggle_output mcu_toggle_output(DOUT45)
#define io92_get_output mcu_get_output(DOUT45)
-#if !defined(DOUT45_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io92_config_input mcu_config_input(DOUT45)
-#else
-#define io92_config_input mcu_config_input(DOUT45);mcu_config_pullup(DOUT45)
-#endif
#define io92_config_pullup mcu_config_pullup(DOUT45)
#define io92_get_input mcu_get_input(DOUT45)
#elif ASSERT_PIN_EXTENDED(DOUT45)
#define io92_config_output
-#define io92_set_output ic74hc595_set_pin(DOUT45);ic74hc595_shift_io_pins()
-#define io92_clear_output ic74hc595_clear_pin(DOUT45);ic74hc595_shift_io_pins()
-#define io92_toggle_output ic74hc595_toggle_pin(DOUT45);ic74hc595_shift_io_pins()
+#define io92_set_output ic74hc595_set_pin(DOUT45)
+#define io92_clear_output ic74hc595_clear_pin(DOUT45)
+#define io92_toggle_output ic74hc595_toggle_pin(DOUT45)
#define io92_get_output ic74hc595_get_pin(DOUT45)
-#define io92_config_input
-#define io92_config_pullup
-#define io92_get_input 0
-#else
-#define io92_config_output
-#define io92_set_output
-#define io92_clear_output
-#define io92_toggle_output
-#define io92_get_output 0
-#define io92_config_input
-#define io92_config_pullup
-#define io92_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT46)
#define io93_config_output mcu_config_output(DOUT46)
@@ -2958,31 +1586,15 @@ extern "C"
#define io93_clear_output mcu_clear_output(DOUT46)
#define io93_toggle_output mcu_toggle_output(DOUT46)
#define io93_get_output mcu_get_output(DOUT46)
-#if !defined(DOUT46_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io93_config_input mcu_config_input(DOUT46)
-#else
-#define io93_config_input mcu_config_input(DOUT46);mcu_config_pullup(DOUT46)
-#endif
#define io93_config_pullup mcu_config_pullup(DOUT46)
#define io93_get_input mcu_get_input(DOUT46)
#elif ASSERT_PIN_EXTENDED(DOUT46)
#define io93_config_output
-#define io93_set_output ic74hc595_set_pin(DOUT46);ic74hc595_shift_io_pins()
-#define io93_clear_output ic74hc595_clear_pin(DOUT46);ic74hc595_shift_io_pins()
-#define io93_toggle_output ic74hc595_toggle_pin(DOUT46);ic74hc595_shift_io_pins()
+#define io93_set_output ic74hc595_set_pin(DOUT46)
+#define io93_clear_output ic74hc595_clear_pin(DOUT46)
+#define io93_toggle_output ic74hc595_toggle_pin(DOUT46)
#define io93_get_output ic74hc595_get_pin(DOUT46)
-#define io93_config_input
-#define io93_config_pullup
-#define io93_get_input 0
-#else
-#define io93_config_output
-#define io93_set_output
-#define io93_clear_output
-#define io93_toggle_output
-#define io93_get_output 0
-#define io93_config_input
-#define io93_config_pullup
-#define io93_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT47)
#define io94_config_output mcu_config_output(DOUT47)
@@ -2990,31 +1602,15 @@ extern "C"
#define io94_clear_output mcu_clear_output(DOUT47)
#define io94_toggle_output mcu_toggle_output(DOUT47)
#define io94_get_output mcu_get_output(DOUT47)
-#if !defined(DOUT47_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io94_config_input mcu_config_input(DOUT47)
-#else
-#define io94_config_input mcu_config_input(DOUT47);mcu_config_pullup(DOUT47)
-#endif
#define io94_config_pullup mcu_config_pullup(DOUT47)
#define io94_get_input mcu_get_input(DOUT47)
#elif ASSERT_PIN_EXTENDED(DOUT47)
#define io94_config_output
-#define io94_set_output ic74hc595_set_pin(DOUT47);ic74hc595_shift_io_pins()
-#define io94_clear_output ic74hc595_clear_pin(DOUT47);ic74hc595_shift_io_pins()
-#define io94_toggle_output ic74hc595_toggle_pin(DOUT47);ic74hc595_shift_io_pins()
+#define io94_set_output ic74hc595_set_pin(DOUT47)
+#define io94_clear_output ic74hc595_clear_pin(DOUT47)
+#define io94_toggle_output ic74hc595_toggle_pin(DOUT47)
#define io94_get_output ic74hc595_get_pin(DOUT47)
-#define io94_config_input
-#define io94_config_pullup
-#define io94_get_input 0
-#else
-#define io94_config_output
-#define io94_set_output
-#define io94_clear_output
-#define io94_toggle_output
-#define io94_get_output 0
-#define io94_config_input
-#define io94_config_pullup
-#define io94_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT48)
#define io95_config_output mcu_config_output(DOUT48)
@@ -3022,31 +1618,15 @@ extern "C"
#define io95_clear_output mcu_clear_output(DOUT48)
#define io95_toggle_output mcu_toggle_output(DOUT48)
#define io95_get_output mcu_get_output(DOUT48)
-#if !defined(DOUT48_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io95_config_input mcu_config_input(DOUT48)
-#else
-#define io95_config_input mcu_config_input(DOUT48);mcu_config_pullup(DOUT48)
-#endif
#define io95_config_pullup mcu_config_pullup(DOUT48)
#define io95_get_input mcu_get_input(DOUT48)
#elif ASSERT_PIN_EXTENDED(DOUT48)
#define io95_config_output
-#define io95_set_output ic74hc595_set_pin(DOUT48);ic74hc595_shift_io_pins()
-#define io95_clear_output ic74hc595_clear_pin(DOUT48);ic74hc595_shift_io_pins()
-#define io95_toggle_output ic74hc595_toggle_pin(DOUT48);ic74hc595_shift_io_pins()
+#define io95_set_output ic74hc595_set_pin(DOUT48)
+#define io95_clear_output ic74hc595_clear_pin(DOUT48)
+#define io95_toggle_output ic74hc595_toggle_pin(DOUT48)
#define io95_get_output ic74hc595_get_pin(DOUT48)
-#define io95_config_input
-#define io95_config_pullup
-#define io95_get_input 0
-#else
-#define io95_config_output
-#define io95_set_output
-#define io95_clear_output
-#define io95_toggle_output
-#define io95_get_output 0
-#define io95_config_input
-#define io95_config_pullup
-#define io95_get_input 0
#endif
#if ASSERT_PIN_IO(DOUT49)
#define io96_config_output mcu_config_output(DOUT49)
@@ -3054,31 +1634,15 @@ extern "C"
#define io96_clear_output mcu_clear_output(DOUT49)
#define io96_toggle_output mcu_toggle_output(DOUT49)
#define io96_get_output mcu_get_output(DOUT49)
-#if !defined(DOUT49_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io96_config_input mcu_config_input(DOUT49)
-#else
-#define io96_config_input mcu_config_input(DOUT49);mcu_config_pullup(DOUT49)
-#endif
#define io96_config_pullup mcu_config_pullup(DOUT49)
#define io96_get_input mcu_get_input(DOUT49)
#elif ASSERT_PIN_EXTENDED(DOUT49)
#define io96_config_output
-#define io96_set_output ic74hc595_set_pin(DOUT49);ic74hc595_shift_io_pins()
-#define io96_clear_output ic74hc595_clear_pin(DOUT49);ic74hc595_shift_io_pins()
-#define io96_toggle_output ic74hc595_toggle_pin(DOUT49);ic74hc595_shift_io_pins()
+#define io96_set_output ic74hc595_set_pin(DOUT49)
+#define io96_clear_output ic74hc595_clear_pin(DOUT49)
+#define io96_toggle_output ic74hc595_toggle_pin(DOUT49)
#define io96_get_output ic74hc595_get_pin(DOUT49)
-#define io96_config_input
-#define io96_config_pullup
-#define io96_get_input 0
-#else
-#define io96_config_output
-#define io96_set_output
-#define io96_clear_output
-#define io96_toggle_output
-#define io96_get_output 0
-#define io96_config_input
-#define io96_config_pullup
-#define io96_get_input 0
#endif
#if ASSERT_PIN_IO(LIMIT_X)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3091,30 +1655,16 @@ extern "C"
#if !defined(LIMIT_X_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io100_config_input mcu_config_input(LIMIT_X)
#else
-#define io100_config_input mcu_config_input(LIMIT_X);mcu_config_pullup(LIMIT_X)
+#define io100_config_input \
+ mcu_config_input(LIMIT_X); \
+ mcu_config_pullup(LIMIT_X)
#endif
#define io100_config_pullup mcu_config_pullup(LIMIT_X)
#define io100_get_input mcu_get_input(LIMIT_X)
#elif ASSERT_PIN_EXTENDED(LIMIT_X)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io100_config_output
-#define io100_set_output ic74hc595_set_pin(LIMIT_X);ic74hc595_shift_io_pins()
-#define io100_clear_output ic74hc595_clear_pin(LIMIT_X);ic74hc595_shift_io_pins()
-#define io100_toggle_output ic74hc595_toggle_pin(LIMIT_X);ic74hc595_shift_io_pins()
-#define io100_get_output ic74hc595_get_pin(LIMIT_X)
-#endif
#define io100_config_input
#define io100_config_pullup
-#define io100_get_input 0
-#else
-#define io100_config_output
-#define io100_set_output
-#define io100_clear_output
-#define io100_toggle_output
-#define io100_get_output 0
-#define io100_config_input
-#define io100_config_pullup
-#define io100_get_input 0
+#define io100_get_input ic74hc165_get_pin(LIMIT_X)
#endif
#if ASSERT_PIN_IO(LIMIT_Y)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3127,30 +1677,16 @@ extern "C"
#if !defined(LIMIT_Y_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io101_config_input mcu_config_input(LIMIT_Y)
#else
-#define io101_config_input mcu_config_input(LIMIT_Y);mcu_config_pullup(LIMIT_Y)
+#define io101_config_input \
+ mcu_config_input(LIMIT_Y); \
+ mcu_config_pullup(LIMIT_Y)
#endif
#define io101_config_pullup mcu_config_pullup(LIMIT_Y)
#define io101_get_input mcu_get_input(LIMIT_Y)
#elif ASSERT_PIN_EXTENDED(LIMIT_Y)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io101_config_output
-#define io101_set_output ic74hc595_set_pin(LIMIT_Y);ic74hc595_shift_io_pins()
-#define io101_clear_output ic74hc595_clear_pin(LIMIT_Y);ic74hc595_shift_io_pins()
-#define io101_toggle_output ic74hc595_toggle_pin(LIMIT_Y);ic74hc595_shift_io_pins()
-#define io101_get_output ic74hc595_get_pin(LIMIT_Y)
-#endif
-#define io101_config_input
-#define io101_config_pullup
-#define io101_get_input 0
-#else
-#define io101_config_output
-#define io101_set_output
-#define io101_clear_output
-#define io101_toggle_output
-#define io101_get_output 0
#define io101_config_input
#define io101_config_pullup
-#define io101_get_input 0
+#define io101_get_input ic74hc165_get_pin(LIMIT_Y)
#endif
#if ASSERT_PIN_IO(LIMIT_Z)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3163,30 +1699,16 @@ extern "C"
#if !defined(LIMIT_Z_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io102_config_input mcu_config_input(LIMIT_Z)
#else
-#define io102_config_input mcu_config_input(LIMIT_Z);mcu_config_pullup(LIMIT_Z)
+#define io102_config_input \
+ mcu_config_input(LIMIT_Z); \
+ mcu_config_pullup(LIMIT_Z)
#endif
#define io102_config_pullup mcu_config_pullup(LIMIT_Z)
#define io102_get_input mcu_get_input(LIMIT_Z)
#elif ASSERT_PIN_EXTENDED(LIMIT_Z)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io102_config_output
-#define io102_set_output ic74hc595_set_pin(LIMIT_Z);ic74hc595_shift_io_pins()
-#define io102_clear_output ic74hc595_clear_pin(LIMIT_Z);ic74hc595_shift_io_pins()
-#define io102_toggle_output ic74hc595_toggle_pin(LIMIT_Z);ic74hc595_shift_io_pins()
-#define io102_get_output ic74hc595_get_pin(LIMIT_Z)
-#endif
-#define io102_config_input
-#define io102_config_pullup
-#define io102_get_input 0
-#else
-#define io102_config_output
-#define io102_set_output
-#define io102_clear_output
-#define io102_toggle_output
-#define io102_get_output 0
#define io102_config_input
#define io102_config_pullup
-#define io102_get_input 0
+#define io102_get_input ic74hc165_get_pin(LIMIT_Z)
#endif
#if ASSERT_PIN_IO(LIMIT_X2)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3199,30 +1721,16 @@ extern "C"
#if !defined(LIMIT_X2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io103_config_input mcu_config_input(LIMIT_X2)
#else
-#define io103_config_input mcu_config_input(LIMIT_X2);mcu_config_pullup(LIMIT_X2)
+#define io103_config_input \
+ mcu_config_input(LIMIT_X2); \
+ mcu_config_pullup(LIMIT_X2)
#endif
#define io103_config_pullup mcu_config_pullup(LIMIT_X2)
#define io103_get_input mcu_get_input(LIMIT_X2)
#elif ASSERT_PIN_EXTENDED(LIMIT_X2)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io103_config_output
-#define io103_set_output ic74hc595_set_pin(LIMIT_X2);ic74hc595_shift_io_pins()
-#define io103_clear_output ic74hc595_clear_pin(LIMIT_X2);ic74hc595_shift_io_pins()
-#define io103_toggle_output ic74hc595_toggle_pin(LIMIT_X2);ic74hc595_shift_io_pins()
-#define io103_get_output ic74hc595_get_pin(LIMIT_X2)
-#endif
-#define io103_config_input
-#define io103_config_pullup
-#define io103_get_input 0
-#else
-#define io103_config_output
-#define io103_set_output
-#define io103_clear_output
-#define io103_toggle_output
-#define io103_get_output 0
#define io103_config_input
#define io103_config_pullup
-#define io103_get_input 0
+#define io103_get_input ic74hc165_get_pin(LIMIT_X2)
#endif
#if ASSERT_PIN_IO(LIMIT_Y2)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3235,30 +1743,16 @@ extern "C"
#if !defined(LIMIT_Y2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io104_config_input mcu_config_input(LIMIT_Y2)
#else
-#define io104_config_input mcu_config_input(LIMIT_Y2);mcu_config_pullup(LIMIT_Y2)
+#define io104_config_input \
+ mcu_config_input(LIMIT_Y2); \
+ mcu_config_pullup(LIMIT_Y2)
#endif
#define io104_config_pullup mcu_config_pullup(LIMIT_Y2)
#define io104_get_input mcu_get_input(LIMIT_Y2)
#elif ASSERT_PIN_EXTENDED(LIMIT_Y2)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io104_config_output
-#define io104_set_output ic74hc595_set_pin(LIMIT_Y2);ic74hc595_shift_io_pins()
-#define io104_clear_output ic74hc595_clear_pin(LIMIT_Y2);ic74hc595_shift_io_pins()
-#define io104_toggle_output ic74hc595_toggle_pin(LIMIT_Y2);ic74hc595_shift_io_pins()
-#define io104_get_output ic74hc595_get_pin(LIMIT_Y2)
-#endif
#define io104_config_input
#define io104_config_pullup
-#define io104_get_input 0
-#else
-#define io104_config_output
-#define io104_set_output
-#define io104_clear_output
-#define io104_toggle_output
-#define io104_get_output 0
-#define io104_config_input
-#define io104_config_pullup
-#define io104_get_input 0
+#define io104_get_input ic74hc165_get_pin(LIMIT_Y2)
#endif
#if ASSERT_PIN_IO(LIMIT_Z2)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3271,30 +1765,16 @@ extern "C"
#if !defined(LIMIT_Z2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io105_config_input mcu_config_input(LIMIT_Z2)
#else
-#define io105_config_input mcu_config_input(LIMIT_Z2);mcu_config_pullup(LIMIT_Z2)
+#define io105_config_input \
+ mcu_config_input(LIMIT_Z2); \
+ mcu_config_pullup(LIMIT_Z2)
#endif
#define io105_config_pullup mcu_config_pullup(LIMIT_Z2)
#define io105_get_input mcu_get_input(LIMIT_Z2)
#elif ASSERT_PIN_EXTENDED(LIMIT_Z2)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io105_config_output
-#define io105_set_output ic74hc595_set_pin(LIMIT_Z2);ic74hc595_shift_io_pins()
-#define io105_clear_output ic74hc595_clear_pin(LIMIT_Z2);ic74hc595_shift_io_pins()
-#define io105_toggle_output ic74hc595_toggle_pin(LIMIT_Z2);ic74hc595_shift_io_pins()
-#define io105_get_output ic74hc595_get_pin(LIMIT_Z2)
-#endif
-#define io105_config_input
-#define io105_config_pullup
-#define io105_get_input 0
-#else
-#define io105_config_output
-#define io105_set_output
-#define io105_clear_output
-#define io105_toggle_output
-#define io105_get_output 0
#define io105_config_input
#define io105_config_pullup
-#define io105_get_input 0
+#define io105_get_input ic74hc165_get_pin(LIMIT_Z2)
#endif
#if ASSERT_PIN_IO(LIMIT_A)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3307,30 +1787,16 @@ extern "C"
#if !defined(LIMIT_A_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io106_config_input mcu_config_input(LIMIT_A)
#else
-#define io106_config_input mcu_config_input(LIMIT_A);mcu_config_pullup(LIMIT_A)
+#define io106_config_input \
+ mcu_config_input(LIMIT_A); \
+ mcu_config_pullup(LIMIT_A)
#endif
#define io106_config_pullup mcu_config_pullup(LIMIT_A)
#define io106_get_input mcu_get_input(LIMIT_A)
#elif ASSERT_PIN_EXTENDED(LIMIT_A)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io106_config_output
-#define io106_set_output ic74hc595_set_pin(LIMIT_A);ic74hc595_shift_io_pins()
-#define io106_clear_output ic74hc595_clear_pin(LIMIT_A);ic74hc595_shift_io_pins()
-#define io106_toggle_output ic74hc595_toggle_pin(LIMIT_A);ic74hc595_shift_io_pins()
-#define io106_get_output ic74hc595_get_pin(LIMIT_A)
-#endif
-#define io106_config_input
-#define io106_config_pullup
-#define io106_get_input 0
-#else
-#define io106_config_output
-#define io106_set_output
-#define io106_clear_output
-#define io106_toggle_output
-#define io106_get_output 0
#define io106_config_input
#define io106_config_pullup
-#define io106_get_input 0
+#define io106_get_input ic74hc165_get_pin(LIMIT_A)
#endif
#if ASSERT_PIN_IO(LIMIT_B)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3343,30 +1809,16 @@ extern "C"
#if !defined(LIMIT_B_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io107_config_input mcu_config_input(LIMIT_B)
#else
-#define io107_config_input mcu_config_input(LIMIT_B);mcu_config_pullup(LIMIT_B)
+#define io107_config_input \
+ mcu_config_input(LIMIT_B); \
+ mcu_config_pullup(LIMIT_B)
#endif
#define io107_config_pullup mcu_config_pullup(LIMIT_B)
#define io107_get_input mcu_get_input(LIMIT_B)
#elif ASSERT_PIN_EXTENDED(LIMIT_B)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io107_config_output
-#define io107_set_output ic74hc595_set_pin(LIMIT_B);ic74hc595_shift_io_pins()
-#define io107_clear_output ic74hc595_clear_pin(LIMIT_B);ic74hc595_shift_io_pins()
-#define io107_toggle_output ic74hc595_toggle_pin(LIMIT_B);ic74hc595_shift_io_pins()
-#define io107_get_output ic74hc595_get_pin(LIMIT_B)
-#endif
-#define io107_config_input
-#define io107_config_pullup
-#define io107_get_input 0
-#else
-#define io107_config_output
-#define io107_set_output
-#define io107_clear_output
-#define io107_toggle_output
-#define io107_get_output 0
#define io107_config_input
#define io107_config_pullup
-#define io107_get_input 0
+#define io107_get_input ic74hc165_get_pin(LIMIT_B)
#endif
#if ASSERT_PIN_IO(LIMIT_C)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3379,30 +1831,16 @@ extern "C"
#if !defined(LIMIT_C_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io108_config_input mcu_config_input(LIMIT_C)
#else
-#define io108_config_input mcu_config_input(LIMIT_C);mcu_config_pullup(LIMIT_C)
+#define io108_config_input \
+ mcu_config_input(LIMIT_C); \
+ mcu_config_pullup(LIMIT_C)
#endif
#define io108_config_pullup mcu_config_pullup(LIMIT_C)
#define io108_get_input mcu_get_input(LIMIT_C)
#elif ASSERT_PIN_EXTENDED(LIMIT_C)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io108_config_output
-#define io108_set_output ic74hc595_set_pin(LIMIT_C);ic74hc595_shift_io_pins()
-#define io108_clear_output ic74hc595_clear_pin(LIMIT_C);ic74hc595_shift_io_pins()
-#define io108_toggle_output ic74hc595_toggle_pin(LIMIT_C);ic74hc595_shift_io_pins()
-#define io108_get_output ic74hc595_get_pin(LIMIT_C)
-#endif
#define io108_config_input
#define io108_config_pullup
-#define io108_get_input 0
-#else
-#define io108_config_output
-#define io108_set_output
-#define io108_clear_output
-#define io108_toggle_output
-#define io108_get_output 0
-#define io108_config_input
-#define io108_config_pullup
-#define io108_get_input 0
+#define io108_get_input ic74hc165_get_pin(LIMIT_C)
#endif
#if ASSERT_PIN_IO(PROBE)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3415,30 +1853,16 @@ extern "C"
#if !defined(PROBE_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io109_config_input mcu_config_input(PROBE)
#else
-#define io109_config_input mcu_config_input(PROBE);mcu_config_pullup(PROBE)
+#define io109_config_input \
+ mcu_config_input(PROBE); \
+ mcu_config_pullup(PROBE)
#endif
#define io109_config_pullup mcu_config_pullup(PROBE)
#define io109_get_input mcu_get_input(PROBE)
#elif ASSERT_PIN_EXTENDED(PROBE)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io109_config_output
-#define io109_set_output ic74hc595_set_pin(PROBE);ic74hc595_shift_io_pins()
-#define io109_clear_output ic74hc595_clear_pin(PROBE);ic74hc595_shift_io_pins()
-#define io109_toggle_output ic74hc595_toggle_pin(PROBE);ic74hc595_shift_io_pins()
-#define io109_get_output ic74hc595_get_pin(PROBE)
-#endif
-#define io109_config_input
-#define io109_config_pullup
-#define io109_get_input 0
-#else
-#define io109_config_output
-#define io109_set_output
-#define io109_clear_output
-#define io109_toggle_output
-#define io109_get_output 0
#define io109_config_input
#define io109_config_pullup
-#define io109_get_input 0
+#define io109_get_input ic74hc165_get_pin(PROBE)
#endif
#if ASSERT_PIN_IO(ESTOP)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3451,30 +1875,16 @@ extern "C"
#if !defined(ESTOP_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io110_config_input mcu_config_input(ESTOP)
#else
-#define io110_config_input mcu_config_input(ESTOP);mcu_config_pullup(ESTOP)
+#define io110_config_input \
+ mcu_config_input(ESTOP); \
+ mcu_config_pullup(ESTOP)
#endif
#define io110_config_pullup mcu_config_pullup(ESTOP)
#define io110_get_input mcu_get_input(ESTOP)
#elif ASSERT_PIN_EXTENDED(ESTOP)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io110_config_output
-#define io110_set_output ic74hc595_set_pin(ESTOP);ic74hc595_shift_io_pins()
-#define io110_clear_output ic74hc595_clear_pin(ESTOP);ic74hc595_shift_io_pins()
-#define io110_toggle_output ic74hc595_toggle_pin(ESTOP);ic74hc595_shift_io_pins()
-#define io110_get_output ic74hc595_get_pin(ESTOP)
-#endif
-#define io110_config_input
-#define io110_config_pullup
-#define io110_get_input 0
-#else
-#define io110_config_output
-#define io110_set_output
-#define io110_clear_output
-#define io110_toggle_output
-#define io110_get_output 0
#define io110_config_input
#define io110_config_pullup
-#define io110_get_input 0
+#define io110_get_input ic74hc165_get_pin(ESTOP)
#endif
#if ASSERT_PIN_IO(SAFETY_DOOR)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3487,30 +1897,16 @@ extern "C"
#if !defined(SAFETY_DOOR_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io111_config_input mcu_config_input(SAFETY_DOOR)
#else
-#define io111_config_input mcu_config_input(SAFETY_DOOR);mcu_config_pullup(SAFETY_DOOR)
+#define io111_config_input \
+ mcu_config_input(SAFETY_DOOR); \
+ mcu_config_pullup(SAFETY_DOOR)
#endif
#define io111_config_pullup mcu_config_pullup(SAFETY_DOOR)
#define io111_get_input mcu_get_input(SAFETY_DOOR)
#elif ASSERT_PIN_EXTENDED(SAFETY_DOOR)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io111_config_output
-#define io111_set_output ic74hc595_set_pin(SAFETY_DOOR);ic74hc595_shift_io_pins()
-#define io111_clear_output ic74hc595_clear_pin(SAFETY_DOOR);ic74hc595_shift_io_pins()
-#define io111_toggle_output ic74hc595_toggle_pin(SAFETY_DOOR);ic74hc595_shift_io_pins()
-#define io111_get_output ic74hc595_get_pin(SAFETY_DOOR)
-#endif
-#define io111_config_input
-#define io111_config_pullup
-#define io111_get_input 0
-#else
-#define io111_config_output
-#define io111_set_output
-#define io111_clear_output
-#define io111_toggle_output
-#define io111_get_output 0
#define io111_config_input
#define io111_config_pullup
-#define io111_get_input 0
+#define io111_get_input ic74hc165_get_pin(SAFETY_DOOR)
#endif
#if ASSERT_PIN_IO(FHOLD)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3523,30 +1919,16 @@ extern "C"
#if !defined(FHOLD_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io112_config_input mcu_config_input(FHOLD)
#else
-#define io112_config_input mcu_config_input(FHOLD);mcu_config_pullup(FHOLD)
+#define io112_config_input \
+ mcu_config_input(FHOLD); \
+ mcu_config_pullup(FHOLD)
#endif
#define io112_config_pullup mcu_config_pullup(FHOLD)
#define io112_get_input mcu_get_input(FHOLD)
#elif ASSERT_PIN_EXTENDED(FHOLD)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io112_config_output
-#define io112_set_output ic74hc595_set_pin(FHOLD);ic74hc595_shift_io_pins()
-#define io112_clear_output ic74hc595_clear_pin(FHOLD);ic74hc595_shift_io_pins()
-#define io112_toggle_output ic74hc595_toggle_pin(FHOLD);ic74hc595_shift_io_pins()
-#define io112_get_output ic74hc595_get_pin(FHOLD)
-#endif
#define io112_config_input
#define io112_config_pullup
-#define io112_get_input 0
-#else
-#define io112_config_output
-#define io112_set_output
-#define io112_clear_output
-#define io112_toggle_output
-#define io112_get_output 0
-#define io112_config_input
-#define io112_config_pullup
-#define io112_get_input 0
+#define io112_get_input ic74hc165_get_pin(FHOLD)
#endif
#if ASSERT_PIN_IO(CS_RES)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3559,121 +1941,175 @@ extern "C"
#if !defined(CS_RES_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io113_config_input mcu_config_input(CS_RES)
#else
-#define io113_config_input mcu_config_input(CS_RES);mcu_config_pullup(CS_RES)
+#define io113_config_input \
+ mcu_config_input(CS_RES); \
+ mcu_config_pullup(CS_RES)
#endif
#define io113_config_pullup mcu_config_pullup(CS_RES)
#define io113_get_input mcu_get_input(CS_RES)
#elif ASSERT_PIN_EXTENDED(CS_RES)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io113_config_output
-#define io113_set_output ic74hc595_set_pin(CS_RES);ic74hc595_shift_io_pins()
-#define io113_clear_output ic74hc595_clear_pin(CS_RES);ic74hc595_shift_io_pins()
-#define io113_toggle_output ic74hc595_toggle_pin(CS_RES);ic74hc595_shift_io_pins()
-#define io113_get_output ic74hc595_get_pin(CS_RES)
-#endif
-#define io113_config_input
-#define io113_config_pullup
-#define io113_get_input 0
-#else
-#define io113_config_output
-#define io113_set_output
-#define io113_clear_output
-#define io113_toggle_output
-#define io113_get_output 0
#define io113_config_input
#define io113_config_pullup
-#define io113_get_input 0
+#define io113_get_input ic74hc165_get_pin(CS_RES)
#endif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#if ASSERT_PIN_IO(DIN0)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io130_config_output mcu_config_output(DIN0)
-#define io130_set_output mcu_set_output(DIN0)
-#define io130_clear_output mcu_clear_output(DIN0)
-#define io130_toggle_output mcu_toggle_output(DIN0)
-#define io130_get_output mcu_get_output(DIN0)
+#if ASSERT_PIN_IO(ANALOG0)
+#define io114_config_analog mcu_config_analog(ANALOG0)
+#define io114_get_analog mcu_get_analog(ANALOG0)
+#elif ASSERT_PIN_EXTENDED(ANALOG0)
+#define io114_config_analog
+#define io114_get_analog 0
#endif
-#if !defined(DIN0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io130_config_input mcu_config_input(DIN0)
-#else
-#define io130_config_input mcu_config_input(DIN0);mcu_config_pullup(DIN0)
+#if ASSERT_PIN_IO(ANALOG1)
+#define io115_config_analog mcu_config_analog(ANALOG1)
+#define io115_get_analog mcu_get_analog(ANALOG1)
+#elif ASSERT_PIN_EXTENDED(ANALOG1)
+#define io115_config_analog
+#define io115_get_analog 0
#endif
-#define io130_config_pullup mcu_config_pullup(DIN0)
-#define io130_get_input mcu_get_input(DIN0)
-#elif ASSERT_PIN_EXTENDED(DIN0)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io130_config_output
-#define io130_set_output ic74hc595_set_pin(DIN0);ic74hc595_shift_io_pins()
-#define io130_clear_output ic74hc595_clear_pin(DIN0);ic74hc595_shift_io_pins()
-#define io130_toggle_output ic74hc595_toggle_pin(DIN0);ic74hc595_shift_io_pins()
-#define io130_get_output ic74hc595_get_pin(DIN0)
+#if ASSERT_PIN_IO(ANALOG2)
+#define io116_config_analog mcu_config_analog(ANALOG2)
+#define io116_get_analog mcu_get_analog(ANALOG2)
+#elif ASSERT_PIN_EXTENDED(ANALOG2)
+#define io116_config_analog
+#define io116_get_analog 0
#endif
-#define io130_config_input
-#define io130_config_pullup
-#define io130_get_input 0
-#else
-#define io130_config_output
-#define io130_set_output
-#define io130_clear_output
-#define io130_toggle_output
-#define io130_get_output 0
-#define io130_config_input
-#define io130_config_pullup
-#define io130_get_input 0
+#if ASSERT_PIN_IO(ANALOG3)
+#define io117_config_analog mcu_config_analog(ANALOG3)
+#define io117_get_analog mcu_get_analog(ANALOG3)
+#elif ASSERT_PIN_EXTENDED(ANALOG3)
+#define io117_config_analog
+#define io117_get_analog 0
#endif
-#if ASSERT_PIN_IO(DIN1)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io131_config_output mcu_config_output(DIN1)
-#define io131_set_output mcu_set_output(DIN1)
-#define io131_clear_output mcu_clear_output(DIN1)
-#define io131_toggle_output mcu_toggle_output(DIN1)
-#define io131_get_output mcu_get_output(DIN1)
+#if ASSERT_PIN_IO(ANALOG4)
+#define io118_config_analog mcu_config_analog(ANALOG4)
+#define io118_get_analog mcu_get_analog(ANALOG4)
+#elif ASSERT_PIN_EXTENDED(ANALOG4)
+#define io118_config_analog
+#define io118_get_analog 0
#endif
-#if !defined(DIN1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
-#define io131_config_input mcu_config_input(DIN1)
-#else
-#define io131_config_input mcu_config_input(DIN1);mcu_config_pullup(DIN1)
+#if ASSERT_PIN_IO(ANALOG5)
+#define io119_config_analog mcu_config_analog(ANALOG5)
+#define io119_get_analog mcu_get_analog(ANALOG5)
+#elif ASSERT_PIN_EXTENDED(ANALOG5)
+#define io119_config_analog
+#define io119_get_analog 0
#endif
-#define io131_config_pullup mcu_config_pullup(DIN1)
-#define io131_get_input mcu_get_input(DIN1)
-#elif ASSERT_PIN_EXTENDED(DIN1)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io131_config_output
-#define io131_set_output ic74hc595_set_pin(DIN1);ic74hc595_shift_io_pins()
-#define io131_clear_output ic74hc595_clear_pin(DIN1);ic74hc595_shift_io_pins()
-#define io131_toggle_output ic74hc595_toggle_pin(DIN1);ic74hc595_shift_io_pins()
-#define io131_get_output ic74hc595_get_pin(DIN1)
+#if ASSERT_PIN_IO(ANALOG6)
+#define io120_config_analog mcu_config_analog(ANALOG6)
+#define io120_get_analog mcu_get_analog(ANALOG6)
+#elif ASSERT_PIN_EXTENDED(ANALOG6)
+#define io120_config_analog
+#define io120_get_analog 0
#endif
-#define io131_config_input
-#define io131_config_pullup
-#define io131_get_input 0
-#else
-#define io131_config_output
-#define io131_set_output
-#define io131_clear_output
-#define io131_toggle_output
-#define io131_get_output 0
-#define io131_config_input
-#define io131_config_pullup
-#define io131_get_input 0
+#if ASSERT_PIN_IO(ANALOG7)
+#define io121_config_analog mcu_config_analog(ANALOG7)
+#define io121_get_analog mcu_get_analog(ANALOG7)
+#elif ASSERT_PIN_EXTENDED(ANALOG7)
+#define io121_config_analog
+#define io121_get_analog 0
#endif
-#if ASSERT_PIN_IO(DIN2)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
+#if ASSERT_PIN_IO(ANALOG8)
+#define io122_config_analog mcu_config_analog(ANALOG8)
+#define io122_get_analog mcu_get_analog(ANALOG8)
+#elif ASSERT_PIN_EXTENDED(ANALOG8)
+#define io122_config_analog
+#define io122_get_analog 0
+#endif
+#if ASSERT_PIN_IO(ANALOG9)
+#define io123_config_analog mcu_config_analog(ANALOG9)
+#define io123_get_analog mcu_get_analog(ANALOG9)
+#elif ASSERT_PIN_EXTENDED(ANALOG9)
+#define io123_config_analog
+#define io123_get_analog 0
+#endif
+#if ASSERT_PIN_IO(ANALOG10)
+#define io124_config_analog mcu_config_analog(ANALOG10)
+#define io124_get_analog mcu_get_analog(ANALOG10)
+#elif ASSERT_PIN_EXTENDED(ANALOG10)
+#define io124_config_analog
+#define io124_get_analog 0
+#endif
+#if ASSERT_PIN_IO(ANALOG11)
+#define io125_config_analog mcu_config_analog(ANALOG11)
+#define io125_get_analog mcu_get_analog(ANALOG11)
+#elif ASSERT_PIN_EXTENDED(ANALOG11)
+#define io125_config_analog
+#define io125_get_analog 0
+#endif
+#if ASSERT_PIN_IO(ANALOG12)
+#define io126_config_analog mcu_config_analog(ANALOG12)
+#define io126_get_analog mcu_get_analog(ANALOG12)
+#elif ASSERT_PIN_EXTENDED(ANALOG12)
+#define io126_config_analog
+#define io126_get_analog 0
+#endif
+#if ASSERT_PIN_IO(ANALOG13)
+#define io127_config_analog mcu_config_analog(ANALOG13)
+#define io127_get_analog mcu_get_analog(ANALOG13)
+#elif ASSERT_PIN_EXTENDED(ANALOG13)
+#define io127_config_analog
+#define io127_get_analog 0
+#endif
+#if ASSERT_PIN_IO(ANALOG14)
+#define io128_config_analog mcu_config_analog(ANALOG14)
+#define io128_get_analog mcu_get_analog(ANALOG14)
+#elif ASSERT_PIN_EXTENDED(ANALOG14)
+#define io128_config_analog
+#define io128_get_analog 0
+#endif
+#if ASSERT_PIN_IO(ANALOG15)
+#define io129_config_analog mcu_config_analog(ANALOG15)
+#define io129_get_analog mcu_get_analog(ANALOG15)
+#elif ASSERT_PIN_EXTENDED(ANALOG15)
+#define io129_config_analog
+#define io129_get_analog 0
+#endif
+#if ASSERT_PIN_IO(DIN0)
+#ifdef DISABLE_HAL_CONFIG_PROTECTION
+#define io130_config_output mcu_config_output(DIN0)
+#define io130_set_output mcu_set_output(DIN0)
+#define io130_clear_output mcu_clear_output(DIN0)
+#define io130_toggle_output mcu_toggle_output(DIN0)
+#define io130_get_output mcu_get_output(DIN0)
+#endif
+#if !defined(DIN0_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
+#define io130_config_input mcu_config_input(DIN0)
+#else
+#define io130_config_input \
+ mcu_config_input(DIN0); \
+ mcu_config_pullup(DIN0)
+#endif
+#define io130_config_pullup mcu_config_pullup(DIN0)
+#define io130_get_input mcu_get_input(DIN0)
+#elif ASSERT_PIN_EXTENDED(DIN0)
+#define io130_config_input
+#define io130_config_pullup
+#define io130_get_input ic74hc165_get_pin(DIN0)
+#endif
+#if ASSERT_PIN_IO(DIN1)
+#ifdef DISABLE_HAL_CONFIG_PROTECTION
+#define io131_config_output mcu_config_output(DIN1)
+#define io131_set_output mcu_set_output(DIN1)
+#define io131_clear_output mcu_clear_output(DIN1)
+#define io131_toggle_output mcu_toggle_output(DIN1)
+#define io131_get_output mcu_get_output(DIN1)
+#endif
+#if !defined(DIN1_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
+#define io131_config_input mcu_config_input(DIN1)
+#else
+#define io131_config_input \
+ mcu_config_input(DIN1); \
+ mcu_config_pullup(DIN1)
+#endif
+#define io131_config_pullup mcu_config_pullup(DIN1)
+#define io131_get_input mcu_get_input(DIN1)
+#elif ASSERT_PIN_EXTENDED(DIN1)
+#define io131_config_input
+#define io131_config_pullup
+#define io131_get_input ic74hc165_get_pin(DIN1)
+#endif
+#if ASSERT_PIN_IO(DIN2)
+#ifdef DISABLE_HAL_CONFIG_PROTECTION
#define io132_config_output mcu_config_output(DIN2)
#define io132_set_output mcu_set_output(DIN2)
#define io132_clear_output mcu_clear_output(DIN2)
@@ -3683,30 +2119,16 @@ extern "C"
#if !defined(DIN2_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io132_config_input mcu_config_input(DIN2)
#else
-#define io132_config_input mcu_config_input(DIN2);mcu_config_pullup(DIN2)
+#define io132_config_input \
+ mcu_config_input(DIN2); \
+ mcu_config_pullup(DIN2)
#endif
#define io132_config_pullup mcu_config_pullup(DIN2)
#define io132_get_input mcu_get_input(DIN2)
#elif ASSERT_PIN_EXTENDED(DIN2)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io132_config_output
-#define io132_set_output ic74hc595_set_pin(DIN2);ic74hc595_shift_io_pins()
-#define io132_clear_output ic74hc595_clear_pin(DIN2);ic74hc595_shift_io_pins()
-#define io132_toggle_output ic74hc595_toggle_pin(DIN2);ic74hc595_shift_io_pins()
-#define io132_get_output ic74hc595_get_pin(DIN2)
-#endif
#define io132_config_input
#define io132_config_pullup
-#define io132_get_input 0
-#else
-#define io132_config_output
-#define io132_set_output
-#define io132_clear_output
-#define io132_toggle_output
-#define io132_get_output 0
-#define io132_config_input
-#define io132_config_pullup
-#define io132_get_input 0
+#define io132_get_input ic74hc165_get_pin(DIN2)
#endif
#if ASSERT_PIN_IO(DIN3)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3719,30 +2141,16 @@ extern "C"
#if !defined(DIN3_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io133_config_input mcu_config_input(DIN3)
#else
-#define io133_config_input mcu_config_input(DIN3);mcu_config_pullup(DIN3)
+#define io133_config_input \
+ mcu_config_input(DIN3); \
+ mcu_config_pullup(DIN3)
#endif
#define io133_config_pullup mcu_config_pullup(DIN3)
#define io133_get_input mcu_get_input(DIN3)
#elif ASSERT_PIN_EXTENDED(DIN3)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io133_config_output
-#define io133_set_output ic74hc595_set_pin(DIN3);ic74hc595_shift_io_pins()
-#define io133_clear_output ic74hc595_clear_pin(DIN3);ic74hc595_shift_io_pins()
-#define io133_toggle_output ic74hc595_toggle_pin(DIN3);ic74hc595_shift_io_pins()
-#define io133_get_output ic74hc595_get_pin(DIN3)
-#endif
-#define io133_config_input
-#define io133_config_pullup
-#define io133_get_input 0
-#else
-#define io133_config_output
-#define io133_set_output
-#define io133_clear_output
-#define io133_toggle_output
-#define io133_get_output 0
#define io133_config_input
#define io133_config_pullup
-#define io133_get_input 0
+#define io133_get_input ic74hc165_get_pin(DIN3)
#endif
#if ASSERT_PIN_IO(DIN4)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3755,30 +2163,16 @@ extern "C"
#if !defined(DIN4_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io134_config_input mcu_config_input(DIN4)
#else
-#define io134_config_input mcu_config_input(DIN4);mcu_config_pullup(DIN4)
+#define io134_config_input \
+ mcu_config_input(DIN4); \
+ mcu_config_pullup(DIN4)
#endif
#define io134_config_pullup mcu_config_pullup(DIN4)
#define io134_get_input mcu_get_input(DIN4)
#elif ASSERT_PIN_EXTENDED(DIN4)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io134_config_output
-#define io134_set_output ic74hc595_set_pin(DIN4);ic74hc595_shift_io_pins()
-#define io134_clear_output ic74hc595_clear_pin(DIN4);ic74hc595_shift_io_pins()
-#define io134_toggle_output ic74hc595_toggle_pin(DIN4);ic74hc595_shift_io_pins()
-#define io134_get_output ic74hc595_get_pin(DIN4)
-#endif
-#define io134_config_input
-#define io134_config_pullup
-#define io134_get_input 0
-#else
-#define io134_config_output
-#define io134_set_output
-#define io134_clear_output
-#define io134_toggle_output
-#define io134_get_output 0
#define io134_config_input
#define io134_config_pullup
-#define io134_get_input 0
+#define io134_get_input ic74hc165_get_pin(DIN4)
#endif
#if ASSERT_PIN_IO(DIN5)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3791,30 +2185,16 @@ extern "C"
#if !defined(DIN5_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io135_config_input mcu_config_input(DIN5)
#else
-#define io135_config_input mcu_config_input(DIN5);mcu_config_pullup(DIN5)
+#define io135_config_input \
+ mcu_config_input(DIN5); \
+ mcu_config_pullup(DIN5)
#endif
#define io135_config_pullup mcu_config_pullup(DIN5)
#define io135_get_input mcu_get_input(DIN5)
#elif ASSERT_PIN_EXTENDED(DIN5)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io135_config_output
-#define io135_set_output ic74hc595_set_pin(DIN5);ic74hc595_shift_io_pins()
-#define io135_clear_output ic74hc595_clear_pin(DIN5);ic74hc595_shift_io_pins()
-#define io135_toggle_output ic74hc595_toggle_pin(DIN5);ic74hc595_shift_io_pins()
-#define io135_get_output ic74hc595_get_pin(DIN5)
-#endif
-#define io135_config_input
-#define io135_config_pullup
-#define io135_get_input 0
-#else
-#define io135_config_output
-#define io135_set_output
-#define io135_clear_output
-#define io135_toggle_output
-#define io135_get_output 0
#define io135_config_input
#define io135_config_pullup
-#define io135_get_input 0
+#define io135_get_input ic74hc165_get_pin(DIN5)
#endif
#if ASSERT_PIN_IO(DIN6)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3827,30 +2207,16 @@ extern "C"
#if !defined(DIN6_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io136_config_input mcu_config_input(DIN6)
#else
-#define io136_config_input mcu_config_input(DIN6);mcu_config_pullup(DIN6)
+#define io136_config_input \
+ mcu_config_input(DIN6); \
+ mcu_config_pullup(DIN6)
#endif
#define io136_config_pullup mcu_config_pullup(DIN6)
#define io136_get_input mcu_get_input(DIN6)
#elif ASSERT_PIN_EXTENDED(DIN6)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io136_config_output
-#define io136_set_output ic74hc595_set_pin(DIN6);ic74hc595_shift_io_pins()
-#define io136_clear_output ic74hc595_clear_pin(DIN6);ic74hc595_shift_io_pins()
-#define io136_toggle_output ic74hc595_toggle_pin(DIN6);ic74hc595_shift_io_pins()
-#define io136_get_output ic74hc595_get_pin(DIN6)
-#endif
#define io136_config_input
#define io136_config_pullup
-#define io136_get_input 0
-#else
-#define io136_config_output
-#define io136_set_output
-#define io136_clear_output
-#define io136_toggle_output
-#define io136_get_output 0
-#define io136_config_input
-#define io136_config_pullup
-#define io136_get_input 0
+#define io136_get_input ic74hc165_get_pin(DIN6)
#endif
#if ASSERT_PIN_IO(DIN7)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3863,30 +2229,16 @@ extern "C"
#if !defined(DIN7_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io137_config_input mcu_config_input(DIN7)
#else
-#define io137_config_input mcu_config_input(DIN7);mcu_config_pullup(DIN7)
+#define io137_config_input \
+ mcu_config_input(DIN7); \
+ mcu_config_pullup(DIN7)
#endif
#define io137_config_pullup mcu_config_pullup(DIN7)
#define io137_get_input mcu_get_input(DIN7)
#elif ASSERT_PIN_EXTENDED(DIN7)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io137_config_output
-#define io137_set_output ic74hc595_set_pin(DIN7);ic74hc595_shift_io_pins()
-#define io137_clear_output ic74hc595_clear_pin(DIN7);ic74hc595_shift_io_pins()
-#define io137_toggle_output ic74hc595_toggle_pin(DIN7);ic74hc595_shift_io_pins()
-#define io137_get_output ic74hc595_get_pin(DIN7)
-#endif
-#define io137_config_input
-#define io137_config_pullup
-#define io137_get_input 0
-#else
-#define io137_config_output
-#define io137_set_output
-#define io137_clear_output
-#define io137_toggle_output
-#define io137_get_output 0
#define io137_config_input
#define io137_config_pullup
-#define io137_get_input 0
+#define io137_get_input ic74hc165_get_pin(DIN7)
#endif
#if ASSERT_PIN_IO(DIN8)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3899,30 +2251,16 @@ extern "C"
#if !defined(DIN8_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io138_config_input mcu_config_input(DIN8)
#else
-#define io138_config_input mcu_config_input(DIN8);mcu_config_pullup(DIN8)
+#define io138_config_input \
+ mcu_config_input(DIN8); \
+ mcu_config_pullup(DIN8)
#endif
#define io138_config_pullup mcu_config_pullup(DIN8)
#define io138_get_input mcu_get_input(DIN8)
#elif ASSERT_PIN_EXTENDED(DIN8)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io138_config_output
-#define io138_set_output ic74hc595_set_pin(DIN8);ic74hc595_shift_io_pins()
-#define io138_clear_output ic74hc595_clear_pin(DIN8);ic74hc595_shift_io_pins()
-#define io138_toggle_output ic74hc595_toggle_pin(DIN8);ic74hc595_shift_io_pins()
-#define io138_get_output ic74hc595_get_pin(DIN8)
-#endif
-#define io138_config_input
-#define io138_config_pullup
-#define io138_get_input 0
-#else
-#define io138_config_output
-#define io138_set_output
-#define io138_clear_output
-#define io138_toggle_output
-#define io138_get_output 0
#define io138_config_input
#define io138_config_pullup
-#define io138_get_input 0
+#define io138_get_input ic74hc165_get_pin(DIN8)
#endif
#if ASSERT_PIN_IO(DIN9)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3935,30 +2273,16 @@ extern "C"
#if !defined(DIN9_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io139_config_input mcu_config_input(DIN9)
#else
-#define io139_config_input mcu_config_input(DIN9);mcu_config_pullup(DIN9)
+#define io139_config_input \
+ mcu_config_input(DIN9); \
+ mcu_config_pullup(DIN9)
#endif
#define io139_config_pullup mcu_config_pullup(DIN9)
#define io139_get_input mcu_get_input(DIN9)
#elif ASSERT_PIN_EXTENDED(DIN9)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io139_config_output
-#define io139_set_output ic74hc595_set_pin(DIN9);ic74hc595_shift_io_pins()
-#define io139_clear_output ic74hc595_clear_pin(DIN9);ic74hc595_shift_io_pins()
-#define io139_toggle_output ic74hc595_toggle_pin(DIN9);ic74hc595_shift_io_pins()
-#define io139_get_output ic74hc595_get_pin(DIN9)
-#endif
-#define io139_config_input
-#define io139_config_pullup
-#define io139_get_input 0
-#else
-#define io139_config_output
-#define io139_set_output
-#define io139_clear_output
-#define io139_toggle_output
-#define io139_get_output 0
#define io139_config_input
#define io139_config_pullup
-#define io139_get_input 0
+#define io139_get_input ic74hc165_get_pin(DIN9)
#endif
#if ASSERT_PIN_IO(DIN10)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -3971,30 +2295,16 @@ extern "C"
#if !defined(DIN10_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io140_config_input mcu_config_input(DIN10)
#else
-#define io140_config_input mcu_config_input(DIN10);mcu_config_pullup(DIN10)
+#define io140_config_input \
+ mcu_config_input(DIN10); \
+ mcu_config_pullup(DIN10)
#endif
#define io140_config_pullup mcu_config_pullup(DIN10)
#define io140_get_input mcu_get_input(DIN10)
#elif ASSERT_PIN_EXTENDED(DIN10)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io140_config_output
-#define io140_set_output ic74hc595_set_pin(DIN10);ic74hc595_shift_io_pins()
-#define io140_clear_output ic74hc595_clear_pin(DIN10);ic74hc595_shift_io_pins()
-#define io140_toggle_output ic74hc595_toggle_pin(DIN10);ic74hc595_shift_io_pins()
-#define io140_get_output ic74hc595_get_pin(DIN10)
-#endif
#define io140_config_input
#define io140_config_pullup
-#define io140_get_input 0
-#else
-#define io140_config_output
-#define io140_set_output
-#define io140_clear_output
-#define io140_toggle_output
-#define io140_get_output 0
-#define io140_config_input
-#define io140_config_pullup
-#define io140_get_input 0
+#define io140_get_input ic74hc165_get_pin(DIN10)
#endif
#if ASSERT_PIN_IO(DIN11)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4007,30 +2317,16 @@ extern "C"
#if !defined(DIN11_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io141_config_input mcu_config_input(DIN11)
#else
-#define io141_config_input mcu_config_input(DIN11);mcu_config_pullup(DIN11)
+#define io141_config_input \
+ mcu_config_input(DIN11); \
+ mcu_config_pullup(DIN11)
#endif
#define io141_config_pullup mcu_config_pullup(DIN11)
#define io141_get_input mcu_get_input(DIN11)
#elif ASSERT_PIN_EXTENDED(DIN11)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io141_config_output
-#define io141_set_output ic74hc595_set_pin(DIN11);ic74hc595_shift_io_pins()
-#define io141_clear_output ic74hc595_clear_pin(DIN11);ic74hc595_shift_io_pins()
-#define io141_toggle_output ic74hc595_toggle_pin(DIN11);ic74hc595_shift_io_pins()
-#define io141_get_output ic74hc595_get_pin(DIN11)
-#endif
-#define io141_config_input
-#define io141_config_pullup
-#define io141_get_input 0
-#else
-#define io141_config_output
-#define io141_set_output
-#define io141_clear_output
-#define io141_toggle_output
-#define io141_get_output 0
#define io141_config_input
#define io141_config_pullup
-#define io141_get_input 0
+#define io141_get_input ic74hc165_get_pin(DIN11)
#endif
#if ASSERT_PIN_IO(DIN12)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4043,30 +2339,16 @@ extern "C"
#if !defined(DIN12_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io142_config_input mcu_config_input(DIN12)
#else
-#define io142_config_input mcu_config_input(DIN12);mcu_config_pullup(DIN12)
+#define io142_config_input \
+ mcu_config_input(DIN12); \
+ mcu_config_pullup(DIN12)
#endif
#define io142_config_pullup mcu_config_pullup(DIN12)
#define io142_get_input mcu_get_input(DIN12)
#elif ASSERT_PIN_EXTENDED(DIN12)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io142_config_output
-#define io142_set_output ic74hc595_set_pin(DIN12);ic74hc595_shift_io_pins()
-#define io142_clear_output ic74hc595_clear_pin(DIN12);ic74hc595_shift_io_pins()
-#define io142_toggle_output ic74hc595_toggle_pin(DIN12);ic74hc595_shift_io_pins()
-#define io142_get_output ic74hc595_get_pin(DIN12)
-#endif
-#define io142_config_input
-#define io142_config_pullup
-#define io142_get_input 0
-#else
-#define io142_config_output
-#define io142_set_output
-#define io142_clear_output
-#define io142_toggle_output
-#define io142_get_output 0
#define io142_config_input
#define io142_config_pullup
-#define io142_get_input 0
+#define io142_get_input ic74hc165_get_pin(DIN12)
#endif
#if ASSERT_PIN_IO(DIN13)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4079,30 +2361,16 @@ extern "C"
#if !defined(DIN13_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io143_config_input mcu_config_input(DIN13)
#else
-#define io143_config_input mcu_config_input(DIN13);mcu_config_pullup(DIN13)
+#define io143_config_input \
+ mcu_config_input(DIN13); \
+ mcu_config_pullup(DIN13)
#endif
#define io143_config_pullup mcu_config_pullup(DIN13)
#define io143_get_input mcu_get_input(DIN13)
#elif ASSERT_PIN_EXTENDED(DIN13)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io143_config_output
-#define io143_set_output ic74hc595_set_pin(DIN13);ic74hc595_shift_io_pins()
-#define io143_clear_output ic74hc595_clear_pin(DIN13);ic74hc595_shift_io_pins()
-#define io143_toggle_output ic74hc595_toggle_pin(DIN13);ic74hc595_shift_io_pins()
-#define io143_get_output ic74hc595_get_pin(DIN13)
-#endif
-#define io143_config_input
-#define io143_config_pullup
-#define io143_get_input 0
-#else
-#define io143_config_output
-#define io143_set_output
-#define io143_clear_output
-#define io143_toggle_output
-#define io143_get_output 0
#define io143_config_input
#define io143_config_pullup
-#define io143_get_input 0
+#define io143_get_input ic74hc165_get_pin(DIN13)
#endif
#if ASSERT_PIN_IO(DIN14)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4115,30 +2383,16 @@ extern "C"
#if !defined(DIN14_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io144_config_input mcu_config_input(DIN14)
#else
-#define io144_config_input mcu_config_input(DIN14);mcu_config_pullup(DIN14)
+#define io144_config_input \
+ mcu_config_input(DIN14); \
+ mcu_config_pullup(DIN14)
#endif
#define io144_config_pullup mcu_config_pullup(DIN14)
#define io144_get_input mcu_get_input(DIN14)
#elif ASSERT_PIN_EXTENDED(DIN14)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io144_config_output
-#define io144_set_output ic74hc595_set_pin(DIN14);ic74hc595_shift_io_pins()
-#define io144_clear_output ic74hc595_clear_pin(DIN14);ic74hc595_shift_io_pins()
-#define io144_toggle_output ic74hc595_toggle_pin(DIN14);ic74hc595_shift_io_pins()
-#define io144_get_output ic74hc595_get_pin(DIN14)
-#endif
#define io144_config_input
#define io144_config_pullup
-#define io144_get_input 0
-#else
-#define io144_config_output
-#define io144_set_output
-#define io144_clear_output
-#define io144_toggle_output
-#define io144_get_output 0
-#define io144_config_input
-#define io144_config_pullup
-#define io144_get_input 0
+#define io144_get_input ic74hc165_get_pin(DIN14)
#endif
#if ASSERT_PIN_IO(DIN15)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4151,30 +2405,16 @@ extern "C"
#if !defined(DIN15_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io145_config_input mcu_config_input(DIN15)
#else
-#define io145_config_input mcu_config_input(DIN15);mcu_config_pullup(DIN15)
+#define io145_config_input \
+ mcu_config_input(DIN15); \
+ mcu_config_pullup(DIN15)
#endif
#define io145_config_pullup mcu_config_pullup(DIN15)
#define io145_get_input mcu_get_input(DIN15)
#elif ASSERT_PIN_EXTENDED(DIN15)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io145_config_output
-#define io145_set_output ic74hc595_set_pin(DIN15);ic74hc595_shift_io_pins()
-#define io145_clear_output ic74hc595_clear_pin(DIN15);ic74hc595_shift_io_pins()
-#define io145_toggle_output ic74hc595_toggle_pin(DIN15);ic74hc595_shift_io_pins()
-#define io145_get_output ic74hc595_get_pin(DIN15)
-#endif
-#define io145_config_input
-#define io145_config_pullup
-#define io145_get_input 0
-#else
-#define io145_config_output
-#define io145_set_output
-#define io145_clear_output
-#define io145_toggle_output
-#define io145_get_output 0
#define io145_config_input
#define io145_config_pullup
-#define io145_get_input 0
+#define io145_get_input ic74hc165_get_pin(DIN15)
#endif
#if ASSERT_PIN_IO(DIN16)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4187,30 +2427,16 @@ extern "C"
#if !defined(DIN16_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io146_config_input mcu_config_input(DIN16)
#else
-#define io146_config_input mcu_config_input(DIN16);mcu_config_pullup(DIN16)
+#define io146_config_input \
+ mcu_config_input(DIN16); \
+ mcu_config_pullup(DIN16)
#endif
#define io146_config_pullup mcu_config_pullup(DIN16)
#define io146_get_input mcu_get_input(DIN16)
#elif ASSERT_PIN_EXTENDED(DIN16)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io146_config_output
-#define io146_set_output ic74hc595_set_pin(DIN16);ic74hc595_shift_io_pins()
-#define io146_clear_output ic74hc595_clear_pin(DIN16);ic74hc595_shift_io_pins()
-#define io146_toggle_output ic74hc595_toggle_pin(DIN16);ic74hc595_shift_io_pins()
-#define io146_get_output ic74hc595_get_pin(DIN16)
-#endif
-#define io146_config_input
-#define io146_config_pullup
-#define io146_get_input 0
-#else
-#define io146_config_output
-#define io146_set_output
-#define io146_clear_output
-#define io146_toggle_output
-#define io146_get_output 0
#define io146_config_input
#define io146_config_pullup
-#define io146_get_input 0
+#define io146_get_input ic74hc165_get_pin(DIN16)
#endif
#if ASSERT_PIN_IO(DIN17)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4223,30 +2449,16 @@ extern "C"
#if !defined(DIN17_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io147_config_input mcu_config_input(DIN17)
#else
-#define io147_config_input mcu_config_input(DIN17);mcu_config_pullup(DIN17)
+#define io147_config_input \
+ mcu_config_input(DIN17); \
+ mcu_config_pullup(DIN17)
#endif
#define io147_config_pullup mcu_config_pullup(DIN17)
#define io147_get_input mcu_get_input(DIN17)
#elif ASSERT_PIN_EXTENDED(DIN17)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io147_config_output
-#define io147_set_output ic74hc595_set_pin(DIN17);ic74hc595_shift_io_pins()
-#define io147_clear_output ic74hc595_clear_pin(DIN17);ic74hc595_shift_io_pins()
-#define io147_toggle_output ic74hc595_toggle_pin(DIN17);ic74hc595_shift_io_pins()
-#define io147_get_output ic74hc595_get_pin(DIN17)
-#endif
-#define io147_config_input
-#define io147_config_pullup
-#define io147_get_input 0
-#else
-#define io147_config_output
-#define io147_set_output
-#define io147_clear_output
-#define io147_toggle_output
-#define io147_get_output 0
#define io147_config_input
#define io147_config_pullup
-#define io147_get_input 0
+#define io147_get_input ic74hc165_get_pin(DIN17)
#endif
#if ASSERT_PIN_IO(DIN18)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4259,30 +2471,16 @@ extern "C"
#if !defined(DIN18_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io148_config_input mcu_config_input(DIN18)
#else
-#define io148_config_input mcu_config_input(DIN18);mcu_config_pullup(DIN18)
+#define io148_config_input \
+ mcu_config_input(DIN18); \
+ mcu_config_pullup(DIN18)
#endif
#define io148_config_pullup mcu_config_pullup(DIN18)
#define io148_get_input mcu_get_input(DIN18)
#elif ASSERT_PIN_EXTENDED(DIN18)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io148_config_output
-#define io148_set_output ic74hc595_set_pin(DIN18);ic74hc595_shift_io_pins()
-#define io148_clear_output ic74hc595_clear_pin(DIN18);ic74hc595_shift_io_pins()
-#define io148_toggle_output ic74hc595_toggle_pin(DIN18);ic74hc595_shift_io_pins()
-#define io148_get_output ic74hc595_get_pin(DIN18)
-#endif
#define io148_config_input
#define io148_config_pullup
-#define io148_get_input 0
-#else
-#define io148_config_output
-#define io148_set_output
-#define io148_clear_output
-#define io148_toggle_output
-#define io148_get_output 0
-#define io148_config_input
-#define io148_config_pullup
-#define io148_get_input 0
+#define io148_get_input ic74hc165_get_pin(DIN18)
#endif
#if ASSERT_PIN_IO(DIN19)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4295,30 +2493,16 @@ extern "C"
#if !defined(DIN19_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io149_config_input mcu_config_input(DIN19)
#else
-#define io149_config_input mcu_config_input(DIN19);mcu_config_pullup(DIN19)
+#define io149_config_input \
+ mcu_config_input(DIN19); \
+ mcu_config_pullup(DIN19)
#endif
#define io149_config_pullup mcu_config_pullup(DIN19)
#define io149_get_input mcu_get_input(DIN19)
#elif ASSERT_PIN_EXTENDED(DIN19)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io149_config_output
-#define io149_set_output ic74hc595_set_pin(DIN19);ic74hc595_shift_io_pins()
-#define io149_clear_output ic74hc595_clear_pin(DIN19);ic74hc595_shift_io_pins()
-#define io149_toggle_output ic74hc595_toggle_pin(DIN19);ic74hc595_shift_io_pins()
-#define io149_get_output ic74hc595_get_pin(DIN19)
-#endif
-#define io149_config_input
-#define io149_config_pullup
-#define io149_get_input 0
-#else
-#define io149_config_output
-#define io149_set_output
-#define io149_clear_output
-#define io149_toggle_output
-#define io149_get_output 0
#define io149_config_input
#define io149_config_pullup
-#define io149_get_input 0
+#define io149_get_input ic74hc165_get_pin(DIN19)
#endif
#if ASSERT_PIN_IO(DIN20)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4331,30 +2515,16 @@ extern "C"
#if !defined(DIN20_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io150_config_input mcu_config_input(DIN20)
#else
-#define io150_config_input mcu_config_input(DIN20);mcu_config_pullup(DIN20)
+#define io150_config_input \
+ mcu_config_input(DIN20); \
+ mcu_config_pullup(DIN20)
#endif
#define io150_config_pullup mcu_config_pullup(DIN20)
#define io150_get_input mcu_get_input(DIN20)
#elif ASSERT_PIN_EXTENDED(DIN20)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io150_config_output
-#define io150_set_output ic74hc595_set_pin(DIN20);ic74hc595_shift_io_pins()
-#define io150_clear_output ic74hc595_clear_pin(DIN20);ic74hc595_shift_io_pins()
-#define io150_toggle_output ic74hc595_toggle_pin(DIN20);ic74hc595_shift_io_pins()
-#define io150_get_output ic74hc595_get_pin(DIN20)
-#endif
-#define io150_config_input
-#define io150_config_pullup
-#define io150_get_input 0
-#else
-#define io150_config_output
-#define io150_set_output
-#define io150_clear_output
-#define io150_toggle_output
-#define io150_get_output 0
#define io150_config_input
#define io150_config_pullup
-#define io150_get_input 0
+#define io150_get_input ic74hc165_get_pin(DIN20)
#endif
#if ASSERT_PIN_IO(DIN21)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4367,30 +2537,16 @@ extern "C"
#if !defined(DIN21_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io151_config_input mcu_config_input(DIN21)
#else
-#define io151_config_input mcu_config_input(DIN21);mcu_config_pullup(DIN21)
+#define io151_config_input \
+ mcu_config_input(DIN21); \
+ mcu_config_pullup(DIN21)
#endif
#define io151_config_pullup mcu_config_pullup(DIN21)
#define io151_get_input mcu_get_input(DIN21)
#elif ASSERT_PIN_EXTENDED(DIN21)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io151_config_output
-#define io151_set_output ic74hc595_set_pin(DIN21);ic74hc595_shift_io_pins()
-#define io151_clear_output ic74hc595_clear_pin(DIN21);ic74hc595_shift_io_pins()
-#define io151_toggle_output ic74hc595_toggle_pin(DIN21);ic74hc595_shift_io_pins()
-#define io151_get_output ic74hc595_get_pin(DIN21)
-#endif
-#define io151_config_input
-#define io151_config_pullup
-#define io151_get_input 0
-#else
-#define io151_config_output
-#define io151_set_output
-#define io151_clear_output
-#define io151_toggle_output
-#define io151_get_output 0
#define io151_config_input
#define io151_config_pullup
-#define io151_get_input 0
+#define io151_get_input ic74hc165_get_pin(DIN21)
#endif
#if ASSERT_PIN_IO(DIN22)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4403,30 +2559,16 @@ extern "C"
#if !defined(DIN22_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io152_config_input mcu_config_input(DIN22)
#else
-#define io152_config_input mcu_config_input(DIN22);mcu_config_pullup(DIN22)
+#define io152_config_input \
+ mcu_config_input(DIN22); \
+ mcu_config_pullup(DIN22)
#endif
#define io152_config_pullup mcu_config_pullup(DIN22)
#define io152_get_input mcu_get_input(DIN22)
#elif ASSERT_PIN_EXTENDED(DIN22)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io152_config_output
-#define io152_set_output ic74hc595_set_pin(DIN22);ic74hc595_shift_io_pins()
-#define io152_clear_output ic74hc595_clear_pin(DIN22);ic74hc595_shift_io_pins()
-#define io152_toggle_output ic74hc595_toggle_pin(DIN22);ic74hc595_shift_io_pins()
-#define io152_get_output ic74hc595_get_pin(DIN22)
-#endif
#define io152_config_input
#define io152_config_pullup
-#define io152_get_input 0
-#else
-#define io152_config_output
-#define io152_set_output
-#define io152_clear_output
-#define io152_toggle_output
-#define io152_get_output 0
-#define io152_config_input
-#define io152_config_pullup
-#define io152_get_input 0
+#define io152_get_input ic74hc165_get_pin(DIN22)
#endif
#if ASSERT_PIN_IO(DIN23)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4439,30 +2581,16 @@ extern "C"
#if !defined(DIN23_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io153_config_input mcu_config_input(DIN23)
#else
-#define io153_config_input mcu_config_input(DIN23);mcu_config_pullup(DIN23)
+#define io153_config_input \
+ mcu_config_input(DIN23); \
+ mcu_config_pullup(DIN23)
#endif
#define io153_config_pullup mcu_config_pullup(DIN23)
#define io153_get_input mcu_get_input(DIN23)
#elif ASSERT_PIN_EXTENDED(DIN23)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io153_config_output
-#define io153_set_output ic74hc595_set_pin(DIN23);ic74hc595_shift_io_pins()
-#define io153_clear_output ic74hc595_clear_pin(DIN23);ic74hc595_shift_io_pins()
-#define io153_toggle_output ic74hc595_toggle_pin(DIN23);ic74hc595_shift_io_pins()
-#define io153_get_output ic74hc595_get_pin(DIN23)
-#endif
-#define io153_config_input
-#define io153_config_pullup
-#define io153_get_input 0
-#else
-#define io153_config_output
-#define io153_set_output
-#define io153_clear_output
-#define io153_toggle_output
-#define io153_get_output 0
#define io153_config_input
#define io153_config_pullup
-#define io153_get_input 0
+#define io153_get_input ic74hc165_get_pin(DIN23)
#endif
#if ASSERT_PIN_IO(DIN24)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4475,30 +2603,16 @@ extern "C"
#if !defined(DIN24_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io154_config_input mcu_config_input(DIN24)
#else
-#define io154_config_input mcu_config_input(DIN24);mcu_config_pullup(DIN24)
+#define io154_config_input \
+ mcu_config_input(DIN24); \
+ mcu_config_pullup(DIN24)
#endif
#define io154_config_pullup mcu_config_pullup(DIN24)
#define io154_get_input mcu_get_input(DIN24)
#elif ASSERT_PIN_EXTENDED(DIN24)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io154_config_output
-#define io154_set_output ic74hc595_set_pin(DIN24);ic74hc595_shift_io_pins()
-#define io154_clear_output ic74hc595_clear_pin(DIN24);ic74hc595_shift_io_pins()
-#define io154_toggle_output ic74hc595_toggle_pin(DIN24);ic74hc595_shift_io_pins()
-#define io154_get_output ic74hc595_get_pin(DIN24)
-#endif
-#define io154_config_input
-#define io154_config_pullup
-#define io154_get_input 0
-#else
-#define io154_config_output
-#define io154_set_output
-#define io154_clear_output
-#define io154_toggle_output
-#define io154_get_output 0
#define io154_config_input
#define io154_config_pullup
-#define io154_get_input 0
+#define io154_get_input ic74hc165_get_pin(DIN24)
#endif
#if ASSERT_PIN_IO(DIN25)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4511,30 +2625,16 @@ extern "C"
#if !defined(DIN25_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io155_config_input mcu_config_input(DIN25)
#else
-#define io155_config_input mcu_config_input(DIN25);mcu_config_pullup(DIN25)
+#define io155_config_input \
+ mcu_config_input(DIN25); \
+ mcu_config_pullup(DIN25)
#endif
#define io155_config_pullup mcu_config_pullup(DIN25)
#define io155_get_input mcu_get_input(DIN25)
#elif ASSERT_PIN_EXTENDED(DIN25)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io155_config_output
-#define io155_set_output ic74hc595_set_pin(DIN25);ic74hc595_shift_io_pins()
-#define io155_clear_output ic74hc595_clear_pin(DIN25);ic74hc595_shift_io_pins()
-#define io155_toggle_output ic74hc595_toggle_pin(DIN25);ic74hc595_shift_io_pins()
-#define io155_get_output ic74hc595_get_pin(DIN25)
-#endif
-#define io155_config_input
-#define io155_config_pullup
-#define io155_get_input 0
-#else
-#define io155_config_output
-#define io155_set_output
-#define io155_clear_output
-#define io155_toggle_output
-#define io155_get_output 0
#define io155_config_input
#define io155_config_pullup
-#define io155_get_input 0
+#define io155_get_input ic74hc165_get_pin(DIN25)
#endif
#if ASSERT_PIN_IO(DIN26)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4547,30 +2647,16 @@ extern "C"
#if !defined(DIN26_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io156_config_input mcu_config_input(DIN26)
#else
-#define io156_config_input mcu_config_input(DIN26);mcu_config_pullup(DIN26)
+#define io156_config_input \
+ mcu_config_input(DIN26); \
+ mcu_config_pullup(DIN26)
#endif
#define io156_config_pullup mcu_config_pullup(DIN26)
#define io156_get_input mcu_get_input(DIN26)
#elif ASSERT_PIN_EXTENDED(DIN26)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io156_config_output
-#define io156_set_output ic74hc595_set_pin(DIN26);ic74hc595_shift_io_pins()
-#define io156_clear_output ic74hc595_clear_pin(DIN26);ic74hc595_shift_io_pins()
-#define io156_toggle_output ic74hc595_toggle_pin(DIN26);ic74hc595_shift_io_pins()
-#define io156_get_output ic74hc595_get_pin(DIN26)
-#endif
#define io156_config_input
#define io156_config_pullup
-#define io156_get_input 0
-#else
-#define io156_config_output
-#define io156_set_output
-#define io156_clear_output
-#define io156_toggle_output
-#define io156_get_output 0
-#define io156_config_input
-#define io156_config_pullup
-#define io156_get_input 0
+#define io156_get_input ic74hc165_get_pin(DIN26)
#endif
#if ASSERT_PIN_IO(DIN27)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4583,30 +2669,16 @@ extern "C"
#if !defined(DIN27_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io157_config_input mcu_config_input(DIN27)
#else
-#define io157_config_input mcu_config_input(DIN27);mcu_config_pullup(DIN27)
+#define io157_config_input \
+ mcu_config_input(DIN27); \
+ mcu_config_pullup(DIN27)
#endif
#define io157_config_pullup mcu_config_pullup(DIN27)
#define io157_get_input mcu_get_input(DIN27)
#elif ASSERT_PIN_EXTENDED(DIN27)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io157_config_output
-#define io157_set_output ic74hc595_set_pin(DIN27);ic74hc595_shift_io_pins()
-#define io157_clear_output ic74hc595_clear_pin(DIN27);ic74hc595_shift_io_pins()
-#define io157_toggle_output ic74hc595_toggle_pin(DIN27);ic74hc595_shift_io_pins()
-#define io157_get_output ic74hc595_get_pin(DIN27)
-#endif
-#define io157_config_input
-#define io157_config_pullup
-#define io157_get_input 0
-#else
-#define io157_config_output
-#define io157_set_output
-#define io157_clear_output
-#define io157_toggle_output
-#define io157_get_output 0
#define io157_config_input
#define io157_config_pullup
-#define io157_get_input 0
+#define io157_get_input ic74hc165_get_pin(DIN27)
#endif
#if ASSERT_PIN_IO(DIN28)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4619,30 +2691,16 @@ extern "C"
#if !defined(DIN28_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io158_config_input mcu_config_input(DIN28)
#else
-#define io158_config_input mcu_config_input(DIN28);mcu_config_pullup(DIN28)
+#define io158_config_input \
+ mcu_config_input(DIN28); \
+ mcu_config_pullup(DIN28)
#endif
#define io158_config_pullup mcu_config_pullup(DIN28)
#define io158_get_input mcu_get_input(DIN28)
#elif ASSERT_PIN_EXTENDED(DIN28)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io158_config_output
-#define io158_set_output ic74hc595_set_pin(DIN28);ic74hc595_shift_io_pins()
-#define io158_clear_output ic74hc595_clear_pin(DIN28);ic74hc595_shift_io_pins()
-#define io158_toggle_output ic74hc595_toggle_pin(DIN28);ic74hc595_shift_io_pins()
-#define io158_get_output ic74hc595_get_pin(DIN28)
-#endif
-#define io158_config_input
-#define io158_config_pullup
-#define io158_get_input 0
-#else
-#define io158_config_output
-#define io158_set_output
-#define io158_clear_output
-#define io158_toggle_output
-#define io158_get_output 0
#define io158_config_input
#define io158_config_pullup
-#define io158_get_input 0
+#define io158_get_input ic74hc165_get_pin(DIN28)
#endif
#if ASSERT_PIN_IO(DIN29)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4655,30 +2713,16 @@ extern "C"
#if !defined(DIN29_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io159_config_input mcu_config_input(DIN29)
#else
-#define io159_config_input mcu_config_input(DIN29);mcu_config_pullup(DIN29)
+#define io159_config_input \
+ mcu_config_input(DIN29); \
+ mcu_config_pullup(DIN29)
#endif
#define io159_config_pullup mcu_config_pullup(DIN29)
#define io159_get_input mcu_get_input(DIN29)
#elif ASSERT_PIN_EXTENDED(DIN29)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io159_config_output
-#define io159_set_output ic74hc595_set_pin(DIN29);ic74hc595_shift_io_pins()
-#define io159_clear_output ic74hc595_clear_pin(DIN29);ic74hc595_shift_io_pins()
-#define io159_toggle_output ic74hc595_toggle_pin(DIN29);ic74hc595_shift_io_pins()
-#define io159_get_output ic74hc595_get_pin(DIN29)
-#endif
-#define io159_config_input
-#define io159_config_pullup
-#define io159_get_input 0
-#else
-#define io159_config_output
-#define io159_set_output
-#define io159_clear_output
-#define io159_toggle_output
-#define io159_get_output 0
#define io159_config_input
#define io159_config_pullup
-#define io159_get_input 0
+#define io159_get_input ic74hc165_get_pin(DIN29)
#endif
#if ASSERT_PIN_IO(DIN30)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4691,30 +2735,16 @@ extern "C"
#if !defined(DIN30_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io160_config_input mcu_config_input(DIN30)
#else
-#define io160_config_input mcu_config_input(DIN30);mcu_config_pullup(DIN30)
+#define io160_config_input \
+ mcu_config_input(DIN30); \
+ mcu_config_pullup(DIN30)
#endif
#define io160_config_pullup mcu_config_pullup(DIN30)
#define io160_get_input mcu_get_input(DIN30)
#elif ASSERT_PIN_EXTENDED(DIN30)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io160_config_output
-#define io160_set_output ic74hc595_set_pin(DIN30);ic74hc595_shift_io_pins()
-#define io160_clear_output ic74hc595_clear_pin(DIN30);ic74hc595_shift_io_pins()
-#define io160_toggle_output ic74hc595_toggle_pin(DIN30);ic74hc595_shift_io_pins()
-#define io160_get_output ic74hc595_get_pin(DIN30)
-#endif
#define io160_config_input
#define io160_config_pullup
-#define io160_get_input 0
-#else
-#define io160_config_output
-#define io160_set_output
-#define io160_clear_output
-#define io160_toggle_output
-#define io160_get_output 0
-#define io160_config_input
-#define io160_config_pullup
-#define io160_get_input 0
+#define io160_get_input ic74hc165_get_pin(DIN30)
#endif
#if ASSERT_PIN_IO(DIN31)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4727,30 +2757,16 @@ extern "C"
#if !defined(DIN31_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io161_config_input mcu_config_input(DIN31)
#else
-#define io161_config_input mcu_config_input(DIN31);mcu_config_pullup(DIN31)
+#define io161_config_input \
+ mcu_config_input(DIN31); \
+ mcu_config_pullup(DIN31)
#endif
#define io161_config_pullup mcu_config_pullup(DIN31)
#define io161_get_input mcu_get_input(DIN31)
#elif ASSERT_PIN_EXTENDED(DIN31)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io161_config_output
-#define io161_set_output ic74hc595_set_pin(DIN31);ic74hc595_shift_io_pins()
-#define io161_clear_output ic74hc595_clear_pin(DIN31);ic74hc595_shift_io_pins()
-#define io161_toggle_output ic74hc595_toggle_pin(DIN31);ic74hc595_shift_io_pins()
-#define io161_get_output ic74hc595_get_pin(DIN31)
-#endif
-#define io161_config_input
-#define io161_config_pullup
-#define io161_get_input 0
-#else
-#define io161_config_output
-#define io161_set_output
-#define io161_clear_output
-#define io161_toggle_output
-#define io161_get_output 0
#define io161_config_input
#define io161_config_pullup
-#define io161_get_input 0
+#define io161_get_input ic74hc165_get_pin(DIN31)
#endif
#if ASSERT_PIN_IO(DIN32)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4763,30 +2779,16 @@ extern "C"
#if !defined(DIN32_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io162_config_input mcu_config_input(DIN32)
#else
-#define io162_config_input mcu_config_input(DIN32);mcu_config_pullup(DIN32)
+#define io162_config_input \
+ mcu_config_input(DIN32); \
+ mcu_config_pullup(DIN32)
#endif
#define io162_config_pullup mcu_config_pullup(DIN32)
#define io162_get_input mcu_get_input(DIN32)
#elif ASSERT_PIN_EXTENDED(DIN32)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io162_config_output
-#define io162_set_output ic74hc595_set_pin(DIN32);ic74hc595_shift_io_pins()
-#define io162_clear_output ic74hc595_clear_pin(DIN32);ic74hc595_shift_io_pins()
-#define io162_toggle_output ic74hc595_toggle_pin(DIN32);ic74hc595_shift_io_pins()
-#define io162_get_output ic74hc595_get_pin(DIN32)
-#endif
-#define io162_config_input
-#define io162_config_pullup
-#define io162_get_input 0
-#else
-#define io162_config_output
-#define io162_set_output
-#define io162_clear_output
-#define io162_toggle_output
-#define io162_get_output 0
#define io162_config_input
#define io162_config_pullup
-#define io162_get_input 0
+#define io162_get_input ic74hc165_get_pin(DIN32)
#endif
#if ASSERT_PIN_IO(DIN33)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4799,30 +2801,16 @@ extern "C"
#if !defined(DIN33_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io163_config_input mcu_config_input(DIN33)
#else
-#define io163_config_input mcu_config_input(DIN33);mcu_config_pullup(DIN33)
+#define io163_config_input \
+ mcu_config_input(DIN33); \
+ mcu_config_pullup(DIN33)
#endif
#define io163_config_pullup mcu_config_pullup(DIN33)
#define io163_get_input mcu_get_input(DIN33)
#elif ASSERT_PIN_EXTENDED(DIN33)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io163_config_output
-#define io163_set_output ic74hc595_set_pin(DIN33);ic74hc595_shift_io_pins()
-#define io163_clear_output ic74hc595_clear_pin(DIN33);ic74hc595_shift_io_pins()
-#define io163_toggle_output ic74hc595_toggle_pin(DIN33);ic74hc595_shift_io_pins()
-#define io163_get_output ic74hc595_get_pin(DIN33)
-#endif
-#define io163_config_input
-#define io163_config_pullup
-#define io163_get_input 0
-#else
-#define io163_config_output
-#define io163_set_output
-#define io163_clear_output
-#define io163_toggle_output
-#define io163_get_output 0
#define io163_config_input
#define io163_config_pullup
-#define io163_get_input 0
+#define io163_get_input ic74hc165_get_pin(DIN33)
#endif
#if ASSERT_PIN_IO(DIN34)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4835,30 +2823,16 @@ extern "C"
#if !defined(DIN34_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io164_config_input mcu_config_input(DIN34)
#else
-#define io164_config_input mcu_config_input(DIN34);mcu_config_pullup(DIN34)
+#define io164_config_input \
+ mcu_config_input(DIN34); \
+ mcu_config_pullup(DIN34)
#endif
#define io164_config_pullup mcu_config_pullup(DIN34)
#define io164_get_input mcu_get_input(DIN34)
#elif ASSERT_PIN_EXTENDED(DIN34)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io164_config_output
-#define io164_set_output ic74hc595_set_pin(DIN34);ic74hc595_shift_io_pins()
-#define io164_clear_output ic74hc595_clear_pin(DIN34);ic74hc595_shift_io_pins()
-#define io164_toggle_output ic74hc595_toggle_pin(DIN34);ic74hc595_shift_io_pins()
-#define io164_get_output ic74hc595_get_pin(DIN34)
-#endif
#define io164_config_input
#define io164_config_pullup
-#define io164_get_input 0
-#else
-#define io164_config_output
-#define io164_set_output
-#define io164_clear_output
-#define io164_toggle_output
-#define io164_get_output 0
-#define io164_config_input
-#define io164_config_pullup
-#define io164_get_input 0
+#define io164_get_input ic74hc165_get_pin(DIN34)
#endif
#if ASSERT_PIN_IO(DIN35)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4871,30 +2845,16 @@ extern "C"
#if !defined(DIN35_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io165_config_input mcu_config_input(DIN35)
#else
-#define io165_config_input mcu_config_input(DIN35);mcu_config_pullup(DIN35)
+#define io165_config_input \
+ mcu_config_input(DIN35); \
+ mcu_config_pullup(DIN35)
#endif
#define io165_config_pullup mcu_config_pullup(DIN35)
#define io165_get_input mcu_get_input(DIN35)
#elif ASSERT_PIN_EXTENDED(DIN35)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io165_config_output
-#define io165_set_output ic74hc595_set_pin(DIN35);ic74hc595_shift_io_pins()
-#define io165_clear_output ic74hc595_clear_pin(DIN35);ic74hc595_shift_io_pins()
-#define io165_toggle_output ic74hc595_toggle_pin(DIN35);ic74hc595_shift_io_pins()
-#define io165_get_output ic74hc595_get_pin(DIN35)
-#endif
-#define io165_config_input
-#define io165_config_pullup
-#define io165_get_input 0
-#else
-#define io165_config_output
-#define io165_set_output
-#define io165_clear_output
-#define io165_toggle_output
-#define io165_get_output 0
#define io165_config_input
#define io165_config_pullup
-#define io165_get_input 0
+#define io165_get_input ic74hc165_get_pin(DIN35)
#endif
#if ASSERT_PIN_IO(DIN36)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4907,30 +2867,16 @@ extern "C"
#if !defined(DIN36_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io166_config_input mcu_config_input(DIN36)
#else
-#define io166_config_input mcu_config_input(DIN36);mcu_config_pullup(DIN36)
+#define io166_config_input \
+ mcu_config_input(DIN36); \
+ mcu_config_pullup(DIN36)
#endif
#define io166_config_pullup mcu_config_pullup(DIN36)
#define io166_get_input mcu_get_input(DIN36)
#elif ASSERT_PIN_EXTENDED(DIN36)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io166_config_output
-#define io166_set_output ic74hc595_set_pin(DIN36);ic74hc595_shift_io_pins()
-#define io166_clear_output ic74hc595_clear_pin(DIN36);ic74hc595_shift_io_pins()
-#define io166_toggle_output ic74hc595_toggle_pin(DIN36);ic74hc595_shift_io_pins()
-#define io166_get_output ic74hc595_get_pin(DIN36)
-#endif
-#define io166_config_input
-#define io166_config_pullup
-#define io166_get_input 0
-#else
-#define io166_config_output
-#define io166_set_output
-#define io166_clear_output
-#define io166_toggle_output
-#define io166_get_output 0
#define io166_config_input
#define io166_config_pullup
-#define io166_get_input 0
+#define io166_get_input ic74hc165_get_pin(DIN36)
#endif
#if ASSERT_PIN_IO(DIN37)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4943,30 +2889,16 @@ extern "C"
#if !defined(DIN37_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io167_config_input mcu_config_input(DIN37)
#else
-#define io167_config_input mcu_config_input(DIN37);mcu_config_pullup(DIN37)
+#define io167_config_input \
+ mcu_config_input(DIN37); \
+ mcu_config_pullup(DIN37)
#endif
#define io167_config_pullup mcu_config_pullup(DIN37)
#define io167_get_input mcu_get_input(DIN37)
#elif ASSERT_PIN_EXTENDED(DIN37)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io167_config_output
-#define io167_set_output ic74hc595_set_pin(DIN37);ic74hc595_shift_io_pins()
-#define io167_clear_output ic74hc595_clear_pin(DIN37);ic74hc595_shift_io_pins()
-#define io167_toggle_output ic74hc595_toggle_pin(DIN37);ic74hc595_shift_io_pins()
-#define io167_get_output ic74hc595_get_pin(DIN37)
-#endif
-#define io167_config_input
-#define io167_config_pullup
-#define io167_get_input 0
-#else
-#define io167_config_output
-#define io167_set_output
-#define io167_clear_output
-#define io167_toggle_output
-#define io167_get_output 0
#define io167_config_input
#define io167_config_pullup
-#define io167_get_input 0
+#define io167_get_input ic74hc165_get_pin(DIN37)
#endif
#if ASSERT_PIN_IO(DIN38)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -4979,30 +2911,16 @@ extern "C"
#if !defined(DIN38_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io168_config_input mcu_config_input(DIN38)
#else
-#define io168_config_input mcu_config_input(DIN38);mcu_config_pullup(DIN38)
+#define io168_config_input \
+ mcu_config_input(DIN38); \
+ mcu_config_pullup(DIN38)
#endif
#define io168_config_pullup mcu_config_pullup(DIN38)
#define io168_get_input mcu_get_input(DIN38)
#elif ASSERT_PIN_EXTENDED(DIN38)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io168_config_output
-#define io168_set_output ic74hc595_set_pin(DIN38);ic74hc595_shift_io_pins()
-#define io168_clear_output ic74hc595_clear_pin(DIN38);ic74hc595_shift_io_pins()
-#define io168_toggle_output ic74hc595_toggle_pin(DIN38);ic74hc595_shift_io_pins()
-#define io168_get_output ic74hc595_get_pin(DIN38)
-#endif
#define io168_config_input
#define io168_config_pullup
-#define io168_get_input 0
-#else
-#define io168_config_output
-#define io168_set_output
-#define io168_clear_output
-#define io168_toggle_output
-#define io168_get_output 0
-#define io168_config_input
-#define io168_config_pullup
-#define io168_get_input 0
+#define io168_get_input ic74hc165_get_pin(DIN38)
#endif
#if ASSERT_PIN_IO(DIN39)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -5015,30 +2933,16 @@ extern "C"
#if !defined(DIN39_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io169_config_input mcu_config_input(DIN39)
#else
-#define io169_config_input mcu_config_input(DIN39);mcu_config_pullup(DIN39)
+#define io169_config_input \
+ mcu_config_input(DIN39); \
+ mcu_config_pullup(DIN39)
#endif
#define io169_config_pullup mcu_config_pullup(DIN39)
#define io169_get_input mcu_get_input(DIN39)
#elif ASSERT_PIN_EXTENDED(DIN39)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io169_config_output
-#define io169_set_output ic74hc595_set_pin(DIN39);ic74hc595_shift_io_pins()
-#define io169_clear_output ic74hc595_clear_pin(DIN39);ic74hc595_shift_io_pins()
-#define io169_toggle_output ic74hc595_toggle_pin(DIN39);ic74hc595_shift_io_pins()
-#define io169_get_output ic74hc595_get_pin(DIN39)
-#endif
-#define io169_config_input
-#define io169_config_pullup
-#define io169_get_input 0
-#else
-#define io169_config_output
-#define io169_set_output
-#define io169_clear_output
-#define io169_toggle_output
-#define io169_get_output 0
#define io169_config_input
#define io169_config_pullup
-#define io169_get_input 0
+#define io169_get_input ic74hc165_get_pin(DIN39)
#endif
#if ASSERT_PIN_IO(DIN40)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -5051,30 +2955,16 @@ extern "C"
#if !defined(DIN40_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io170_config_input mcu_config_input(DIN40)
#else
-#define io170_config_input mcu_config_input(DIN40);mcu_config_pullup(DIN40)
+#define io170_config_input \
+ mcu_config_input(DIN40); \
+ mcu_config_pullup(DIN40)
#endif
#define io170_config_pullup mcu_config_pullup(DIN40)
#define io170_get_input mcu_get_input(DIN40)
#elif ASSERT_PIN_EXTENDED(DIN40)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io170_config_output
-#define io170_set_output ic74hc595_set_pin(DIN40);ic74hc595_shift_io_pins()
-#define io170_clear_output ic74hc595_clear_pin(DIN40);ic74hc595_shift_io_pins()
-#define io170_toggle_output ic74hc595_toggle_pin(DIN40);ic74hc595_shift_io_pins()
-#define io170_get_output ic74hc595_get_pin(DIN40)
-#endif
-#define io170_config_input
-#define io170_config_pullup
-#define io170_get_input 0
-#else
-#define io170_config_output
-#define io170_set_output
-#define io170_clear_output
-#define io170_toggle_output
-#define io170_get_output 0
#define io170_config_input
#define io170_config_pullup
-#define io170_get_input 0
+#define io170_get_input ic74hc165_get_pin(DIN40)
#endif
#if ASSERT_PIN_IO(DIN41)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -5087,30 +2977,16 @@ extern "C"
#if !defined(DIN41_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io171_config_input mcu_config_input(DIN41)
#else
-#define io171_config_input mcu_config_input(DIN41);mcu_config_pullup(DIN41)
+#define io171_config_input \
+ mcu_config_input(DIN41); \
+ mcu_config_pullup(DIN41)
#endif
#define io171_config_pullup mcu_config_pullup(DIN41)
#define io171_get_input mcu_get_input(DIN41)
#elif ASSERT_PIN_EXTENDED(DIN41)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io171_config_output
-#define io171_set_output ic74hc595_set_pin(DIN41);ic74hc595_shift_io_pins()
-#define io171_clear_output ic74hc595_clear_pin(DIN41);ic74hc595_shift_io_pins()
-#define io171_toggle_output ic74hc595_toggle_pin(DIN41);ic74hc595_shift_io_pins()
-#define io171_get_output ic74hc595_get_pin(DIN41)
-#endif
-#define io171_config_input
-#define io171_config_pullup
-#define io171_get_input 0
-#else
-#define io171_config_output
-#define io171_set_output
-#define io171_clear_output
-#define io171_toggle_output
-#define io171_get_output 0
#define io171_config_input
#define io171_config_pullup
-#define io171_get_input 0
+#define io171_get_input ic74hc165_get_pin(DIN41)
#endif
#if ASSERT_PIN_IO(DIN42)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -5123,30 +2999,16 @@ extern "C"
#if !defined(DIN42_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io172_config_input mcu_config_input(DIN42)
#else
-#define io172_config_input mcu_config_input(DIN42);mcu_config_pullup(DIN42)
+#define io172_config_input \
+ mcu_config_input(DIN42); \
+ mcu_config_pullup(DIN42)
#endif
#define io172_config_pullup mcu_config_pullup(DIN42)
#define io172_get_input mcu_get_input(DIN42)
#elif ASSERT_PIN_EXTENDED(DIN42)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io172_config_output
-#define io172_set_output ic74hc595_set_pin(DIN42);ic74hc595_shift_io_pins()
-#define io172_clear_output ic74hc595_clear_pin(DIN42);ic74hc595_shift_io_pins()
-#define io172_toggle_output ic74hc595_toggle_pin(DIN42);ic74hc595_shift_io_pins()
-#define io172_get_output ic74hc595_get_pin(DIN42)
-#endif
#define io172_config_input
#define io172_config_pullup
-#define io172_get_input 0
-#else
-#define io172_config_output
-#define io172_set_output
-#define io172_clear_output
-#define io172_toggle_output
-#define io172_get_output 0
-#define io172_config_input
-#define io172_config_pullup
-#define io172_get_input 0
+#define io172_get_input ic74hc165_get_pin(DIN42)
#endif
#if ASSERT_PIN_IO(DIN43)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -5159,30 +3021,16 @@ extern "C"
#if !defined(DIN43_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io173_config_input mcu_config_input(DIN43)
#else
-#define io173_config_input mcu_config_input(DIN43);mcu_config_pullup(DIN43)
+#define io173_config_input \
+ mcu_config_input(DIN43); \
+ mcu_config_pullup(DIN43)
#endif
#define io173_config_pullup mcu_config_pullup(DIN43)
#define io173_get_input mcu_get_input(DIN43)
#elif ASSERT_PIN_EXTENDED(DIN43)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io173_config_output
-#define io173_set_output ic74hc595_set_pin(DIN43);ic74hc595_shift_io_pins()
-#define io173_clear_output ic74hc595_clear_pin(DIN43);ic74hc595_shift_io_pins()
-#define io173_toggle_output ic74hc595_toggle_pin(DIN43);ic74hc595_shift_io_pins()
-#define io173_get_output ic74hc595_get_pin(DIN43)
-#endif
-#define io173_config_input
-#define io173_config_pullup
-#define io173_get_input 0
-#else
-#define io173_config_output
-#define io173_set_output
-#define io173_clear_output
-#define io173_toggle_output
-#define io173_get_output 0
#define io173_config_input
#define io173_config_pullup
-#define io173_get_input 0
+#define io173_get_input ic74hc165_get_pin(DIN43)
#endif
#if ASSERT_PIN_IO(DIN44)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -5195,30 +3043,16 @@ extern "C"
#if !defined(DIN44_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io174_config_input mcu_config_input(DIN44)
#else
-#define io174_config_input mcu_config_input(DIN44);mcu_config_pullup(DIN44)
+#define io174_config_input \
+ mcu_config_input(DIN44); \
+ mcu_config_pullup(DIN44)
#endif
#define io174_config_pullup mcu_config_pullup(DIN44)
#define io174_get_input mcu_get_input(DIN44)
#elif ASSERT_PIN_EXTENDED(DIN44)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io174_config_output
-#define io174_set_output ic74hc595_set_pin(DIN44);ic74hc595_shift_io_pins()
-#define io174_clear_output ic74hc595_clear_pin(DIN44);ic74hc595_shift_io_pins()
-#define io174_toggle_output ic74hc595_toggle_pin(DIN44);ic74hc595_shift_io_pins()
-#define io174_get_output ic74hc595_get_pin(DIN44)
-#endif
-#define io174_config_input
-#define io174_config_pullup
-#define io174_get_input 0
-#else
-#define io174_config_output
-#define io174_set_output
-#define io174_clear_output
-#define io174_toggle_output
-#define io174_get_output 0
#define io174_config_input
#define io174_config_pullup
-#define io174_get_input 0
+#define io174_get_input ic74hc165_get_pin(DIN44)
#endif
#if ASSERT_PIN_IO(DIN45)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -5231,30 +3065,16 @@ extern "C"
#if !defined(DIN45_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io175_config_input mcu_config_input(DIN45)
#else
-#define io175_config_input mcu_config_input(DIN45);mcu_config_pullup(DIN45)
+#define io175_config_input \
+ mcu_config_input(DIN45); \
+ mcu_config_pullup(DIN45)
#endif
#define io175_config_pullup mcu_config_pullup(DIN45)
#define io175_get_input mcu_get_input(DIN45)
#elif ASSERT_PIN_EXTENDED(DIN45)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io175_config_output
-#define io175_set_output ic74hc595_set_pin(DIN45);ic74hc595_shift_io_pins()
-#define io175_clear_output ic74hc595_clear_pin(DIN45);ic74hc595_shift_io_pins()
-#define io175_toggle_output ic74hc595_toggle_pin(DIN45);ic74hc595_shift_io_pins()
-#define io175_get_output ic74hc595_get_pin(DIN45)
-#endif
-#define io175_config_input
-#define io175_config_pullup
-#define io175_get_input 0
-#else
-#define io175_config_output
-#define io175_set_output
-#define io175_clear_output
-#define io175_toggle_output
-#define io175_get_output 0
#define io175_config_input
#define io175_config_pullup
-#define io175_get_input 0
+#define io175_get_input ic74hc165_get_pin(DIN45)
#endif
#if ASSERT_PIN_IO(DIN46)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -5267,30 +3087,16 @@ extern "C"
#if !defined(DIN46_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io176_config_input mcu_config_input(DIN46)
#else
-#define io176_config_input mcu_config_input(DIN46);mcu_config_pullup(DIN46)
+#define io176_config_input \
+ mcu_config_input(DIN46); \
+ mcu_config_pullup(DIN46)
#endif
#define io176_config_pullup mcu_config_pullup(DIN46)
#define io176_get_input mcu_get_input(DIN46)
#elif ASSERT_PIN_EXTENDED(DIN46)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io176_config_output
-#define io176_set_output ic74hc595_set_pin(DIN46);ic74hc595_shift_io_pins()
-#define io176_clear_output ic74hc595_clear_pin(DIN46);ic74hc595_shift_io_pins()
-#define io176_toggle_output ic74hc595_toggle_pin(DIN46);ic74hc595_shift_io_pins()
-#define io176_get_output ic74hc595_get_pin(DIN46)
-#endif
#define io176_config_input
#define io176_config_pullup
-#define io176_get_input 0
-#else
-#define io176_config_output
-#define io176_set_output
-#define io176_clear_output
-#define io176_toggle_output
-#define io176_get_output 0
-#define io176_config_input
-#define io176_config_pullup
-#define io176_get_input 0
+#define io176_get_input ic74hc165_get_pin(DIN46)
#endif
#if ASSERT_PIN_IO(DIN47)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -5303,30 +3109,16 @@ extern "C"
#if !defined(DIN47_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io177_config_input mcu_config_input(DIN47)
#else
-#define io177_config_input mcu_config_input(DIN47);mcu_config_pullup(DIN47)
+#define io177_config_input \
+ mcu_config_input(DIN47); \
+ mcu_config_pullup(DIN47)
#endif
#define io177_config_pullup mcu_config_pullup(DIN47)
#define io177_get_input mcu_get_input(DIN47)
#elif ASSERT_PIN_EXTENDED(DIN47)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io177_config_output
-#define io177_set_output ic74hc595_set_pin(DIN47);ic74hc595_shift_io_pins()
-#define io177_clear_output ic74hc595_clear_pin(DIN47);ic74hc595_shift_io_pins()
-#define io177_toggle_output ic74hc595_toggle_pin(DIN47);ic74hc595_shift_io_pins()
-#define io177_get_output ic74hc595_get_pin(DIN47)
-#endif
-#define io177_config_input
-#define io177_config_pullup
-#define io177_get_input 0
-#else
-#define io177_config_output
-#define io177_set_output
-#define io177_clear_output
-#define io177_toggle_output
-#define io177_get_output 0
#define io177_config_input
#define io177_config_pullup
-#define io177_get_input 0
+#define io177_get_input ic74hc165_get_pin(DIN47)
#endif
#if ASSERT_PIN_IO(DIN48)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -5339,30 +3131,16 @@ extern "C"
#if !defined(DIN48_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io178_config_input mcu_config_input(DIN48)
#else
-#define io178_config_input mcu_config_input(DIN48);mcu_config_pullup(DIN48)
+#define io178_config_input \
+ mcu_config_input(DIN48); \
+ mcu_config_pullup(DIN48)
#endif
#define io178_config_pullup mcu_config_pullup(DIN48)
#define io178_get_input mcu_get_input(DIN48)
#elif ASSERT_PIN_EXTENDED(DIN48)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io178_config_output
-#define io178_set_output ic74hc595_set_pin(DIN48);ic74hc595_shift_io_pins()
-#define io178_clear_output ic74hc595_clear_pin(DIN48);ic74hc595_shift_io_pins()
-#define io178_toggle_output ic74hc595_toggle_pin(DIN48);ic74hc595_shift_io_pins()
-#define io178_get_output ic74hc595_get_pin(DIN48)
-#endif
-#define io178_config_input
-#define io178_config_pullup
-#define io178_get_input 0
-#else
-#define io178_config_output
-#define io178_set_output
-#define io178_clear_output
-#define io178_toggle_output
-#define io178_get_output 0
#define io178_config_input
#define io178_config_pullup
-#define io178_get_input 0
+#define io178_get_input ic74hc165_get_pin(DIN48)
#endif
#if ASSERT_PIN_IO(DIN49)
#ifdef DISABLE_HAL_CONFIG_PROTECTION
@@ -5375,30 +3153,16 @@ extern "C"
#if !defined(DIN49_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io179_config_input mcu_config_input(DIN49)
#else
-#define io179_config_input mcu_config_input(DIN49);mcu_config_pullup(DIN49)
+#define io179_config_input \
+ mcu_config_input(DIN49); \
+ mcu_config_pullup(DIN49)
#endif
#define io179_config_pullup mcu_config_pullup(DIN49)
#define io179_get_input mcu_get_input(DIN49)
#elif ASSERT_PIN_EXTENDED(DIN49)
-#ifdef DISABLE_HAL_CONFIG_PROTECTION
-#define io179_config_output
-#define io179_set_output ic74hc595_set_pin(DIN49);ic74hc595_shift_io_pins()
-#define io179_clear_output ic74hc595_clear_pin(DIN49);ic74hc595_shift_io_pins()
-#define io179_toggle_output ic74hc595_toggle_pin(DIN49);ic74hc595_shift_io_pins()
-#define io179_get_output ic74hc595_get_pin(DIN49)
-#endif
-#define io179_config_input
-#define io179_config_pullup
-#define io179_get_input 0
-#else
-#define io179_config_output
-#define io179_set_output
-#define io179_clear_output
-#define io179_toggle_output
-#define io179_get_output 0
#define io179_config_input
#define io179_config_pullup
-#define io179_get_input 0
+#define io179_get_input ic74hc165_get_pin(DIN49)
#endif
#if ASSERT_PIN_IO(SPI_CS)
#define io207_config_output mcu_config_output(SPI_CS)
@@ -5406,31 +3170,15 @@ extern "C"
#define io207_clear_output mcu_clear_output(SPI_CS)
#define io207_toggle_output mcu_toggle_output(SPI_CS)
#define io207_get_output mcu_get_output(SPI_CS)
-#if !defined(SPI_CS_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io207_config_input mcu_config_input(SPI_CS)
-#else
-#define io207_config_input mcu_config_input(SPI_CS);mcu_config_pullup(SPI_CS)
-#endif
#define io207_config_pullup mcu_config_pullup(SPI_CS)
#define io207_get_input mcu_get_input(SPI_CS)
#elif ASSERT_PIN_EXTENDED(SPI_CS)
#define io207_config_output
-#define io207_set_output ic74hc595_set_pin(SPI_CS);ic74hc595_shift_io_pins()
-#define io207_clear_output ic74hc595_clear_pin(SPI_CS);ic74hc595_shift_io_pins()
-#define io207_toggle_output ic74hc595_toggle_pin(SPI_CS);ic74hc595_shift_io_pins()
+#define io207_set_output ic74hc595_set_pin(SPI_CS)
+#define io207_clear_output ic74hc595_clear_pin(SPI_CS)
+#define io207_toggle_output ic74hc595_toggle_pin(SPI_CS)
#define io207_get_output ic74hc595_get_pin(SPI_CS)
-#define io207_config_input
-#define io207_config_pullup
-#define io207_get_input 0
-#else
-#define io207_config_output
-#define io207_set_output
-#define io207_clear_output
-#define io207_toggle_output
-#define io207_get_output 0
-#define io207_config_input
-#define io207_config_pullup
-#define io207_get_input 0
#endif
#if ASSERT_PIN_IO(SPI2_CS)
#define io215_config_output mcu_config_output(SPI2_CS)
@@ -5438,565 +3186,15 @@ extern "C"
#define io215_clear_output mcu_clear_output(SPI2_CS)
#define io215_toggle_output mcu_toggle_output(SPI2_CS)
#define io215_get_output mcu_get_output(SPI2_CS)
-#if !defined(SPI2_CS_PULLUP) && !defined(FORCE_HAL_IO_DIRECTION_ONREQUEST)
#define io215_config_input mcu_config_input(SPI2_CS)
-#else
-#define io215_config_input mcu_config_input(SPI2_CS);mcu_config_pullup(SPI2_CS)
-#endif
#define io215_config_pullup mcu_config_pullup(SPI2_CS)
#define io215_get_input mcu_get_input(SPI2_CS)
#elif ASSERT_PIN_EXTENDED(SPI2_CS)
#define io215_config_output
-#define io215_set_output ic74hc595_set_pin(SPI2_CS);ic74hc595_shift_io_pins()
-#define io215_clear_output ic74hc595_clear_pin(SPI2_CS);ic74hc595_shift_io_pins()
-#define io215_toggle_output ic74hc595_toggle_pin(SPI2_CS);ic74hc595_shift_io_pins()
+#define io215_set_output ic74hc595_set_pin(SPI2_CS)
+#define io215_clear_output ic74hc595_clear_pin(SPI2_CS)
+#define io215_toggle_output ic74hc595_toggle_pin(SPI2_CS)
#define io215_get_output ic74hc595_get_pin(SPI2_CS)
-#define io215_config_input
-#define io215_config_pullup
-#define io215_get_input 0
-#else
-#define io215_config_output
-#define io215_set_output
-#define io215_clear_output
-#define io215_toggle_output
-#define io215_get_output 0
-#define io215_config_input
-#define io215_config_pullup
-#define io215_get_input 0
-#endif
-
- /*PWM*/
- extern uint8_t g_soft_pwm_res;
- extern uint8_t g_io_soft_pwm[16];
- extern uint8_t mcu_softpwm_freq_config(uint16_t freq);
-
-#if ASSERT_PIN_IO(PWM0)
-#define io25_config_pwm(freq) mcu_config_pwm(PWM0, freq)
-#define io25_set_pwm(value) mcu_set_pwm(PWM0, value)
-#define io25_get_pwm mcu_get_pwm(PWM0)
-#elif ASSERT_PIN_EXTENDED(PWM0)
-#define io25_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io25_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM0 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io25_get_pwm g_io_soft_pwm[PWM0 - PWM_PINS_OFFSET]
-#else
-#define io25_config_pwm(freq)
-#define io25_set_pwm(value)
-#define io25_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM1)
-#define io26_config_pwm(freq) mcu_config_pwm(PWM1, freq)
-#define io26_set_pwm(value) mcu_set_pwm(PWM1, value)
-#define io26_get_pwm mcu_get_pwm(PWM1)
-#elif ASSERT_PIN_EXTENDED(PWM1)
-#define io26_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io26_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM1 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io26_get_pwm g_io_soft_pwm[PWM1 - PWM_PINS_OFFSET]
-#else
-#define io26_config_pwm(freq)
-#define io26_set_pwm(value)
-#define io26_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM2)
-#define io27_config_pwm(freq) mcu_config_pwm(PWM2, freq)
-#define io27_set_pwm(value) mcu_set_pwm(PWM2, value)
-#define io27_get_pwm mcu_get_pwm(PWM2)
-#elif ASSERT_PIN_EXTENDED(PWM2)
-#define io27_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io27_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM2 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io27_get_pwm g_io_soft_pwm[PWM2 - PWM_PINS_OFFSET]
-#else
-#define io27_config_pwm(freq)
-#define io27_set_pwm(value)
-#define io27_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM3)
-#define io28_config_pwm(freq) mcu_config_pwm(PWM3, freq)
-#define io28_set_pwm(value) mcu_set_pwm(PWM3, value)
-#define io28_get_pwm mcu_get_pwm(PWM3)
-#elif ASSERT_PIN_EXTENDED(PWM3)
-#define io28_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io28_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM3 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io28_get_pwm g_io_soft_pwm[PWM3 - PWM_PINS_OFFSET]
-#else
-#define io28_config_pwm(freq)
-#define io28_set_pwm(value)
-#define io28_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM4)
-#define io29_config_pwm(freq) mcu_config_pwm(PWM4, freq)
-#define io29_set_pwm(value) mcu_set_pwm(PWM4, value)
-#define io29_get_pwm mcu_get_pwm(PWM4)
-#elif ASSERT_PIN_EXTENDED(PWM4)
-#define io29_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io29_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM4 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io29_get_pwm g_io_soft_pwm[PWM4 - PWM_PINS_OFFSET]
-#else
-#define io29_config_pwm(freq)
-#define io29_set_pwm(value)
-#define io29_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM5)
-#define io30_config_pwm(freq) mcu_config_pwm(PWM5, freq)
-#define io30_set_pwm(value) mcu_set_pwm(PWM5, value)
-#define io30_get_pwm mcu_get_pwm(PWM5)
-#elif ASSERT_PIN_EXTENDED(PWM5)
-#define io30_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io30_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM5 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io30_get_pwm g_io_soft_pwm[PWM5 - PWM_PINS_OFFSET]
-#else
-#define io30_config_pwm(freq)
-#define io30_set_pwm(value)
-#define io30_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM6)
-#define io31_config_pwm(freq) mcu_config_pwm(PWM6, freq)
-#define io31_set_pwm(value) mcu_set_pwm(PWM6, value)
-#define io31_get_pwm mcu_get_pwm(PWM6)
-#elif ASSERT_PIN_EXTENDED(PWM6)
-#define io31_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io31_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM6 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io31_get_pwm g_io_soft_pwm[PWM6 - PWM_PINS_OFFSET]
-#else
-#define io31_config_pwm(freq)
-#define io31_set_pwm(value)
-#define io31_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM7)
-#define io32_config_pwm(freq) mcu_config_pwm(PWM7, freq)
-#define io32_set_pwm(value) mcu_set_pwm(PWM7, value)
-#define io32_get_pwm mcu_get_pwm(PWM7)
-#elif ASSERT_PIN_EXTENDED(PWM7)
-#define io32_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io32_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM7 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io32_get_pwm g_io_soft_pwm[PWM7 - PWM_PINS_OFFSET]
-#else
-#define io32_config_pwm(freq)
-#define io32_set_pwm(value)
-#define io32_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM8)
-#define io33_config_pwm(freq) mcu_config_pwm(PWM8, freq)
-#define io33_set_pwm(value) mcu_set_pwm(PWM8, value)
-#define io33_get_pwm mcu_get_pwm(PWM8)
-#elif ASSERT_PIN_EXTENDED(PWM8)
-#define io33_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io33_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM8 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io33_get_pwm g_io_soft_pwm[PWM8 - PWM_PINS_OFFSET]
-#else
-#define io33_config_pwm(freq)
-#define io33_set_pwm(value)
-#define io33_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM9)
-#define io34_config_pwm(freq) mcu_config_pwm(PWM9, freq)
-#define io34_set_pwm(value) mcu_set_pwm(PWM9, value)
-#define io34_get_pwm mcu_get_pwm(PWM9)
-#elif ASSERT_PIN_EXTENDED(PWM9)
-#define io34_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io34_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM9 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io34_get_pwm g_io_soft_pwm[PWM9 - PWM_PINS_OFFSET]
-#else
-#define io34_config_pwm(freq)
-#define io34_set_pwm(value)
-#define io34_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM10)
-#define io35_config_pwm(freq) mcu_config_pwm(PWM10, freq)
-#define io35_set_pwm(value) mcu_set_pwm(PWM10, value)
-#define io35_get_pwm mcu_get_pwm(PWM10)
-#elif ASSERT_PIN_EXTENDED(PWM10)
-#define io35_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io35_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM10 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io35_get_pwm g_io_soft_pwm[PWM10 - PWM_PINS_OFFSET]
-#else
-#define io35_config_pwm(freq)
-#define io35_set_pwm(value)
-#define io35_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM11)
-#define io36_config_pwm(freq) mcu_config_pwm(PWM11, freq)
-#define io36_set_pwm(value) mcu_set_pwm(PWM11, value)
-#define io36_get_pwm mcu_get_pwm(PWM11)
-#elif ASSERT_PIN_EXTENDED(PWM11)
-#define io36_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io36_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM11 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io36_get_pwm g_io_soft_pwm[PWM11 - PWM_PINS_OFFSET]
-#else
-#define io36_config_pwm(freq)
-#define io36_set_pwm(value)
-#define io36_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM12)
-#define io37_config_pwm(freq) mcu_config_pwm(PWM12, freq)
-#define io37_set_pwm(value) mcu_set_pwm(PWM12, value)
-#define io37_get_pwm mcu_get_pwm(PWM12)
-#elif ASSERT_PIN_EXTENDED(PWM12)
-#define io37_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io37_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM12 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io37_get_pwm g_io_soft_pwm[PWM12 - PWM_PINS_OFFSET]
-#else
-#define io37_config_pwm(freq)
-#define io37_set_pwm(value)
-#define io37_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM13)
-#define io38_config_pwm(freq) mcu_config_pwm(PWM13, freq)
-#define io38_set_pwm(value) mcu_set_pwm(PWM13, value)
-#define io38_get_pwm mcu_get_pwm(PWM13)
-#elif ASSERT_PIN_EXTENDED(PWM13)
-#define io38_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io38_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM13 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io38_get_pwm g_io_soft_pwm[PWM13 - PWM_PINS_OFFSET]
-#else
-#define io38_config_pwm(freq)
-#define io38_set_pwm(value)
-#define io38_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM14)
-#define io39_config_pwm(freq) mcu_config_pwm(PWM14, freq)
-#define io39_set_pwm(value) mcu_set_pwm(PWM14, value)
-#define io39_get_pwm mcu_get_pwm(PWM14)
-#elif ASSERT_PIN_EXTENDED(PWM14)
-#define io39_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io39_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM14 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io39_get_pwm g_io_soft_pwm[PWM14 - PWM_PINS_OFFSET]
-#else
-#define io39_config_pwm(freq)
-#define io39_set_pwm(value)
-#define io39_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(PWM15)
-#define io40_config_pwm(freq) mcu_config_pwm(PWM15, freq)
-#define io40_set_pwm(value) mcu_set_pwm(PWM15, value)
-#define io40_get_pwm mcu_get_pwm(PWM15)
-#elif ASSERT_PIN_EXTENDED(PWM15)
-#define io40_config_pwm(freq) \
- { \
- g_soft_pwm_res = mcu_softpwm_freq_config(freq); \
- }
-#define io40_set_pwm(value) \
- { \
- g_io_soft_pwm[PWM15 - PWM_PINS_OFFSET] = (0xFF & value); \
- }
-#define io40_get_pwm g_io_soft_pwm[PWM15 - PWM_PINS_OFFSET]
-#else
-#define io40_config_pwm(freq)
-#define io40_set_pwm(value)
-#define io40_get_pwm 0
-#endif
-
-/*SERVO*/
-#if ASSERT_PIN_IO(SERVO0)
-#define io41_set_pwm(value) mcu_set_servo(SERVO0, value)
-#define io41_get_pwm mcu_get_servo(SERVO0)
-#elif ASSERT_PIN_EXTENDED(SERVO0)
-#define io41_set_pwm(value)
-#define io41_get_pwm 0
-#else
-#define io41_set_pwm(value)
-#define io41_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(SERVO1)
-#define io42_set_pwm(value) mcu_set_servo(SERVO1, value)
-#define io42_get_pwm mcu_get_servo(SERVO1)
-#elif ASSERT_PIN_EXTENDED(SERVO1)
-#define io42_set_pwm(value)
-#define io42_get_pwm 0
-#else
-#define io42_set_pwm(value)
-#define io42_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(SERVO2)
-#define io43_set_pwm(value) mcu_set_servo(SERVO2, value)
-#define io43_get_pwm mcu_get_servo(SERVO2)
-#elif ASSERT_PIN_EXTENDED(SERVO2)
-#define io43_set_pwm(value)
-#define io43_get_pwm 0
-#else
-#define io43_set_pwm(value)
-#define io43_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(SERVO3)
-#define io44_set_pwm(value) mcu_set_servo(SERVO3, value)
-#define io44_get_pwm mcu_get_servo(SERVO3)
-#elif ASSERT_PIN_EXTENDED(SERVO3)
-#define io44_set_pwm(value)
-#define io44_get_pwm 0
-#else
-#define io44_set_pwm(value)
-#define io44_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(SERVO4)
-#define io45_set_pwm(value) mcu_set_servo(SERVO4, value)
-#define io45_get_pwm mcu_get_servo(SERVO4)
-#elif ASSERT_PIN_EXTENDED(SERVO4)
-#define io45_set_pwm(value)
-#define io45_get_pwm 0
-#else
-#define io45_set_pwm(value)
-#define io45_get_pwm 0
-#endif
-#if ASSERT_PIN_IO(SERVO5)
-#define io46_set_pwm(value) mcu_set_servo(SERVO5, value)
-#define io46_get_pwm mcu_get_servo(SERVO5)
-#elif ASSERT_PIN_EXTENDED(SERVO5)
-#define io46_set_pwm(value)
-#define io46_get_pwm 0
-#else
-#define io46_set_pwm(value)
-#define io46_get_pwm 0
-#endif
-
-/*ANALOG*/
-#if ASSERT_PIN_IO(ANALOG0)
-#define io114_config_analog mcu_config_analog(ANALOG0)
-#define io114_get_analog mcu_get_analog(ANALOG0)
-#elif ASSERT_PIN_EXTENDED(ANALOG0)
-#define io114_config_analog
-#define io114_get_analog 0
-#else
-#define io114_config_analog
-#define io114_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG1)
-#define io115_config_analog mcu_config_analog(ANALOG1)
-#define io115_get_analog mcu_get_analog(ANALOG1)
-#elif ASSERT_PIN_EXTENDED(ANALOG1)
-#define io115_config_analog
-#define io115_get_analog 0
-#else
-#define io115_config_analog
-#define io115_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG2)
-#define io116_config_analog mcu_config_analog(ANALOG2)
-#define io116_get_analog mcu_get_analog(ANALOG2)
-#elif ASSERT_PIN_EXTENDED(ANALOG2)
-#define io116_config_analog
-#define io116_get_analog 0
-#else
-#define io116_config_analog
-#define io116_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG3)
-#define io117_config_analog mcu_config_analog(ANALOG3)
-#define io117_get_analog mcu_get_analog(ANALOG3)
-#elif ASSERT_PIN_EXTENDED(ANALOG3)
-#define io117_config_analog
-#define io117_get_analog 0
-#else
-#define io117_config_analog
-#define io117_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG4)
-#define io118_config_analog mcu_config_analog(ANALOG4)
-#define io118_get_analog mcu_get_analog(ANALOG4)
-#elif ASSERT_PIN_EXTENDED(ANALOG4)
-#define io118_config_analog
-#define io118_get_analog 0
-#else
-#define io118_config_analog
-#define io118_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG5)
-#define io119_config_analog mcu_config_analog(ANALOG5)
-#define io119_get_analog mcu_get_analog(ANALOG5)
-#elif ASSERT_PIN_EXTENDED(ANALOG5)
-#define io119_config_analog
-#define io119_get_analog 0
-#else
-#define io119_config_analog
-#define io119_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG6)
-#define io120_config_analog mcu_config_analog(ANALOG6)
-#define io120_get_analog mcu_get_analog(ANALOG6)
-#elif ASSERT_PIN_EXTENDED(ANALOG6)
-#define io120_config_analog
-#define io120_get_analog 0
-#else
-#define io120_config_analog
-#define io120_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG7)
-#define io121_config_analog mcu_config_analog(ANALOG7)
-#define io121_get_analog mcu_get_analog(ANALOG7)
-#elif ASSERT_PIN_EXTENDED(ANALOG7)
-#define io121_config_analog
-#define io121_get_analog 0
-#else
-#define io121_config_analog
-#define io121_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG8)
-#define io122_config_analog mcu_config_analog(ANALOG8)
-#define io122_get_analog mcu_get_analog(ANALOG8)
-#elif ASSERT_PIN_EXTENDED(ANALOG8)
-#define io122_config_analog
-#define io122_get_analog 0
-#else
-#define io122_config_analog
-#define io122_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG9)
-#define io123_config_analog mcu_config_analog(ANALOG9)
-#define io123_get_analog mcu_get_analog(ANALOG9)
-#elif ASSERT_PIN_EXTENDED(ANALOG9)
-#define io123_config_analog
-#define io123_get_analog 0
-#else
-#define io123_config_analog
-#define io123_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG10)
-#define io124_config_analog mcu_config_analog(ANALOG10)
-#define io124_get_analog mcu_get_analog(ANALOG10)
-#elif ASSERT_PIN_EXTENDED(ANALOG10)
-#define io124_config_analog
-#define io124_get_analog 0
-#else
-#define io124_config_analog
-#define io124_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG11)
-#define io125_config_analog mcu_config_analog(ANALOG11)
-#define io125_get_analog mcu_get_analog(ANALOG11)
-#elif ASSERT_PIN_EXTENDED(ANALOG11)
-#define io125_config_analog
-#define io125_get_analog 0
-#else
-#define io125_config_analog
-#define io125_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG12)
-#define io126_config_analog mcu_config_analog(ANALOG12)
-#define io126_get_analog mcu_get_analog(ANALOG12)
-#elif ASSERT_PIN_EXTENDED(ANALOG12)
-#define io126_config_analog
-#define io126_get_analog 0
-#else
-#define io126_config_analog
-#define io126_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG13)
-#define io127_config_analog mcu_config_analog(ANALOG13)
-#define io127_get_analog mcu_get_analog(ANALOG13)
-#elif ASSERT_PIN_EXTENDED(ANALOG13)
-#define io127_config_analog
-#define io127_get_analog 0
-#else
-#define io127_config_analog
-#define io127_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG14)
-#define io128_config_analog mcu_config_analog(ANALOG14)
-#define io128_get_analog mcu_get_analog(ANALOG14)
-#elif ASSERT_PIN_EXTENDED(ANALOG14)
-#define io128_config_analog
-#define io128_get_analog 0
-#else
-#define io128_config_analog
-#define io128_get_analog 0
-#endif
-#if ASSERT_PIN_IO(ANALOG15)
-#define io129_config_analog mcu_config_analog(ANALOG15)
-#define io129_get_analog mcu_get_analog(ANALOG15)
-#elif ASSERT_PIN_EXTENDED(ANALOG15)
-#define io129_config_analog
-#define io129_get_analog 0
-#else
-#define io129_config_analog
-#define io129_get_analog 0
#endif
/*output HAL*/
diff --git a/uCNC/src/hal/mcus/esp32/mcu_esp32.c b/uCNC/src/hal/mcus/esp32/mcu_esp32.c
index 5c14e7cbf..3e2cf80dc 100644
--- a/uCNC/src/hal/mcus/esp32/mcu_esp32.c
+++ b/uCNC/src/hal/mcus/esp32/mcu_esp32.c
@@ -139,13 +139,16 @@ static FORCEINLINE void mcu_gen_oneshot(void)
uint8_t itp_set_step_mode(uint8_t mode)
{
uint8_t last_mode = I2S_MODE;
- itp_sync();
+ if (mode)
+ {
+ itp_sync();
#ifdef USE_I2S_REALTIME_MODE_ONLY
- __atomic_store_n((uint32_t *)&i2s_mode, (ITP_STEP_MODE_SYNC | ITP_STEP_MODE_REALTIME), __ATOMIC_RELAXED);
+ __atomic_store_n((uint32_t *)&i2s_mode, (ITP_STEP_MODE_SYNC | ITP_STEP_MODE_REALTIME), __ATOMIC_RELAXED);
#else
- __atomic_store_n((uint32_t *)&i2s_mode, (ITP_STEP_MODE_SYNC | mode), __ATOMIC_RELAXED);
+ __atomic_store_n((uint32_t *)&i2s_mode, (ITP_STEP_MODE_SYNC | mode), __ATOMIC_RELAXED);
#endif
- cnc_delay_ms(20);
+ cnc_delay_ms(20);
+ }
return last_mode;
}
@@ -1059,7 +1062,7 @@ uint8_t mcu_eeprom_getc(uint16_t address)
{
if (NVM_STORAGE_SIZE <= address)
{
- DBGMSG("EEPROM invalid address @ %u",address);
+ DBGMSG("EEPROM invalid address @ %u", address);
return 0;
}
#ifndef RAM_ONLY_SETTINGS
@@ -1080,7 +1083,7 @@ void mcu_eeprom_putc(uint16_t address, uint8_t value)
{
if (NVM_STORAGE_SIZE <= address)
{
- DBGMSG("EEPROM invalid address @ %u",address);
+ DBGMSG("EEPROM invalid address @ %u", address);
}
#ifndef RAM_ONLY_SETTINGS
// esp32_eeprom_write(address, value);
diff --git a/uCNC/src/hal/mcus/esp32/mcumap_esp32.h b/uCNC/src/hal/mcus/esp32/mcumap_esp32.h
index aa7250030..6abc0fcaa 100644
--- a/uCNC/src/hal/mcus/esp32/mcumap_esp32.h
+++ b/uCNC/src/hal/mcus/esp32/mcumap_esp32.h
@@ -3470,6 +3470,40 @@ extern "C"
; \
}
+#define __FREERTOS_MUTEX_TAKE__(mutex, timeout) ((xPortInIsrContext()) ? (xSemaphoreTakeFromISR(mutex, NULL)) : (xSemaphoreTake(mutex, timeout)))
+#define __FREERTOS_MUTEX_GIVE__(mutex) ((xPortInIsrContext()) ? (xSemaphoreGiveFromISR(mutex, NULL)) : (xSemaphoreGive(mutex)))
+
+#define MUTEX_CLEANUP(name) \
+ static void name##_mutex_cleanup(uint8_t *m) \
+ { \
+ if (*m /*can unlock*/) \
+ { \
+ __FREERTOS_MUTEX_GIVE__(name##_mutex_lock); \
+ } \
+ }
+#define DECL_MUTEX(name) \
+ static SemaphoreHandle_t name##_mutex_lock = NULL; \
+ MUTEX_CLEANUP(name)
+
+#define MUTEX_INIT(name) \
+ if (name##_mutex_lock == NULL) \
+ { \
+ name##_mutex_lock = xSemaphoreCreateMutex(); \
+ } \
+ uint8_t __attribute__((__cleanup__(name##_mutex_cleanup))) name##_mutex_temp = 0
+#define MUTEX_RELEASE(name) \
+ if (name##_mutex_temp) \
+ { \
+ name##_mutex_temp = 0; \
+ __FREERTOS_MUTEX_GIVE__(name##_mutex_lock); \
+ }
+#define MUTEX_TAKE(name) \
+ name##_mutex_temp = (__FREERTOS_MUTEX_TAKE__(name##_mutex_lock, portMAX_DELAY) == pdTRUE) ? 1 : 0; \
+ if (name##_mutex_temp)
+#define MUTEX_WAIT(name, timeout_ms) \
+ name##_mutex_temp = (__FREERTOS_MUTEX_TAKE__(name##_mutex_lock, (timeout_us / portTICK_PERIOD_MS)) == pdTRUE) ? 1 : 0; \
+ if (name##_mutex_temp)
+
#ifdef __cplusplus
}
#endif
diff --git a/uCNC/src/hal/mcus/esp8266/mcu_esp8266.c b/uCNC/src/hal/mcus/esp8266/mcu_esp8266.c
index 428c837c0..6bf5b927b 100644
--- a/uCNC/src/hal/mcus/esp8266/mcu_esp8266.c
+++ b/uCNC/src/hal/mcus/esp8266/mcu_esp8266.c
@@ -263,7 +263,7 @@ IRAM_ATTR void mcu_itp_isr(void)
mcu_gen_pwm_and_servo();
mcu_gen_oneshot();
#if defined(IC74HC595_HAS_STEPS) || defined(IC74HC595_HAS_DIRS) || defined(IC74HC595_HAS_PWMS) || defined(IC74HC595_HAS_SERVOS)
- ic74hc595_shift_io_pins();
+ shift_register_io_pins();
#endif
}
diff --git a/uCNC/src/hal/mcus/mcu.c b/uCNC/src/hal/mcus/mcu.c
index e80551f56..999989ad2 100644
--- a/uCNC/src/hal/mcus/mcu.c
+++ b/uCNC/src/hal/mcus/mcu.c
@@ -1117,3 +1117,13 @@ void __attribute__((weak)) mcu_spi2_stop(void)
spi_port_t __attribute__((used)) mcu_spi2_port = {.isbusy = false, .start = mcu_spi2_start, .xmit = mcu_spi2_xmit, .bulk_xmit = mcu_spi2_bulk_transfer, .stop = mcu_spi2_stop};
#endif
+
+uint8_t __attribute__((weak)) mcu_softpwm_freq_config(uint16_t freq)
+{
+ // keeps 8 bit resolution up to 500Hz
+ // reduces bit resolution for higher frequencies
+
+ // determines the bit resolution (7 - esp32_pwm_res);
+ uint8_t res = (uint8_t)MAX((int8_t)ceilf(log2(freq * 0.002f)), 0);
+ return res;
+}
diff --git a/uCNC/src/hal/mcus/rp2040/mcu_rp2040.c b/uCNC/src/hal/mcus/rp2040/mcu_rp2040.c
index 0c84bf2df..353f5478a 100644
--- a/uCNC/src/hal/mcus/rp2040/mcu_rp2040.c
+++ b/uCNC/src/hal/mcus/rp2040/mcu_rp2040.c
@@ -66,7 +66,7 @@ void ic74hc595_pio_init()
// disable this function
// IO will be updated at a fixed rate
-MCU_CALLBACK void ic74hc595_shift_io_pins(void)
+MCU_CALLBACK void shift_register_io_pins(void)
{
ic74hc595_program_write(pio_ic74hc595, sm_ic74hc595, *((volatile uint32_t *)&ic74hc595_io_pins[0]));
}
diff --git a/uCNC/src/hal/mcus/rp2350/mcu_rp2350.c b/uCNC/src/hal/mcus/rp2350/mcu_rp2350.c
index 93f4ab4ae..b60db41bd 100644
--- a/uCNC/src/hal/mcus/rp2350/mcu_rp2350.c
+++ b/uCNC/src/hal/mcus/rp2350/mcu_rp2350.c
@@ -66,7 +66,7 @@ void ic74hc595_pio_init()
// disable this function
// IO will be updated at a fixed rate
-MCU_CALLBACK void ic74hc595_shift_io_pins(void)
+MCU_CALLBACK void shift_register_io_pins(void)
{
ic74hc595_program_write(pio_ic74hc595, sm_ic74hc595, *((volatile uint32_t *)&ic74hc595_io_pins[0]));
}
diff --git a/uCNC/src/hal/mcus/virtual/mcumap_virtual.h b/uCNC/src/hal/mcus/virtual/mcumap_virtual.h
index 4614338e2..4fab754ac 100644
--- a/uCNC/src/hal/mcus/virtual/mcumap_virtual.h
+++ b/uCNC/src/hal/mcus/virtual/mcumap_virtual.h
@@ -36,6 +36,8 @@
#define rom_memcpy memcpy
#define rom_read_byte *
+#define MCU_WEAK __attribute__((weak,weakref))
+
/* 7.18.2.1 Limits of exact-width integer types */
#define INT8_MIN (-128)
#define INT16_MIN (-32768)
@@ -258,6 +260,8 @@
#define DIO77 77
#define DOUT31 78
#define DIO78 78
+
+#ifndef EMULATE_74HC165
#define LIMIT_X 100
#define DIO100 100
#define LIMIT_Y 101
@@ -286,38 +290,6 @@
#define DIO112 112
#define CS_RES 113
#define DIO113 113
-#define ANALOG0 114
-#define DIO114 114
-#define ANALOG1 115
-#define DIO115 115
-#define ANALOG2 116
-#define DIO116 116
-#define ANALOG3 117
-#define DIO117 117
-#define ANALOG4 118
-#define DIO118 118
-#define ANALOG5 119
-#define DIO119 119
-#define ANALOG6 120
-#define DIO120 120
-#define ANALOG7 121
-#define DIO121 121
-#define ANALOG8 122
-#define DIO122 122
-#define ANALOG9 123
-#define DIO123 123
-#define ANALOG10 124
-#define DIO124 124
-#define ANALOG11 125
-#define DIO125 125
-#define ANALOG12 126
-#define DIO126 126
-#define ANALOG13 127
-#define DIO127 127
-#define ANALOG14 128
-#define DIO128 128
-#define ANALOG15 129
-#define DIO129 129
#define DIN0 130
#define DIO130 130
#define DIN1 131
@@ -334,6 +306,30 @@
#define DIO136 136
#define DIN7 137
#define DIO137 137
+#else
+#define IC74HC165_COUNT 4
+#define LIMIT_X_IO_OFFSET 0
+#define LIMIT_Y_IO_OFFSET 1
+#define LIMIT_Z_IO_OFFSET 2
+#define LIMIT_A_IO_OFFSET 3
+#define LIMIT_B_IO_OFFSET 4
+#define LIMIT_C_IO_OFFSET 5
+#define PROBE_IO_OFFSET 6
+#define ESTOP_IO_OFFSET 7
+#define SAFETY_DOOR_IO_OFFSET 8
+#define FHOLD_IO_OFFSET 9
+#define CS_RES_IO_OFFSET 10
+#define DIN0_IO_OFFSET 11
+#define DIN1_IO_OFFSET 12
+#define DIN2_IO_OFFSET 13
+#define DIN3_IO_OFFSET 14
+#define DIN4_IO_OFFSET 15
+#define DIN5_IO_OFFSET 16
+#define DIN6_IO_OFFSET 17
+#define DIN7_IO_OFFSET 18
+// #define PWM0_IO_OFFSET 24
+#endif
+
#define DIN8 138
#define DIO138 138
#define DIN9 139
@@ -382,6 +378,38 @@
#define DIO160 160
#define DIN31 161
#define DIO161 161
+#define ANALOG0 114
+#define DIO114 114
+#define ANALOG1 115
+#define DIO115 115
+#define ANALOG2 116
+#define DIO116 116
+#define ANALOG3 117
+#define DIO117 117
+#define ANALOG4 118
+#define DIO118 118
+#define ANALOG5 119
+#define DIO119 119
+#define ANALOG6 120
+#define DIO120 120
+#define ANALOG7 121
+#define DIO121 121
+#define ANALOG8 122
+#define DIO122 122
+#define ANALOG9 123
+#define DIO123 123
+#define ANALOG10 124
+#define DIO124 124
+#define ANALOG11 125
+#define DIO125 125
+#define ANALOG12 126
+#define DIO126 126
+#define ANALOG13 127
+#define DIO127 127
+#define ANALOG14 128
+#define DIO128 128
+#define ANALOG15 129
+#define DIO129 129
#define TX 200
#define DIO200 200
#define RX 201
diff --git a/uCNC/src/module.c b/uCNC/src/module.c
index 95f5f2146..664013b05 100644
--- a/uCNC/src/module.c
+++ b/uCNC/src/module.c
@@ -22,7 +22,7 @@
#include "modules/digipot.h"
#include "modules/encoder.h"
#include "modules/pid.h"
-#include "modules/ic74hc595.h"
+#include "modules/shift_register.h"
#include "modules/modbus.h"
#include "modules/softi2c.h"
#include "modules/softspi.h"
@@ -48,6 +48,7 @@ static FORCEINLINE void load_modules(void)
void mod_init(void)
{
g_module_lockguard = 0;
+
#ifdef ENABLE_DIGITAL_MSTEP
LOAD_MODULE(digimstep);
#endif
diff --git a/uCNC/src/modules/ic74hc165.h b/uCNC/src/modules/ic74hc165.h
new file mode 100644
index 000000000..7cf046042
--- /dev/null
+++ b/uCNC/src/modules/ic74hc165.h
@@ -0,0 +1,1400 @@
+/*
+ Name: ic74hc165.h
+ Description: This module adds the ability to control the IC74HC165 shift register controller on µCNC.
+ Up to 56 input generic pins can be assigned.
+
+ Copyright: Copyright (c) João Martins
+ Author: João Martins
+ Date: 12-02-2025
+
+ µCNC is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version. Please see
+
+ µCNC is distributed WITHOUT ANY WARRANTY;
+ Also without the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+*/
+
+#ifndef IC74HC165_H
+#define IC74HC165_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include
+#include
+
+#ifndef LIMIT_X_IO_OFFSET
+#define LIMIT_X_IO_OFFSET -1
+#define DIO100_IO_OFFSET -1
+#else
+#define DIO100_IO_OFFSET LIMIT_X_IO_OFFSET
+#ifdef LIMIT_X
+#undef LIMIT_X
+#endif
+#ifdef DIO100
+#undef DIO100
+#endif
+#define LIMIT_X 100
+#define DIO100 -100
+#define LIMIT_X_IO_BYTEOFFSET (LIMIT_X_IO_OFFSET >> 3)
+#define LIMIT_X_IO_BITMASK (1 << (LIMIT_X_IO_OFFSET & 0x7))
+#define DIO100_IO_BYTEOFFSET LIMIT_X_IO_BYTEOFFSET
+#define DIO100_IO_BITMASK LIMIT_X_IO_BITMASK
+#ifndef IC74HC165_HAS_LIMITS
+#define IC74HC165_HAS_LIMITS
+#endif
+#endif
+#ifndef LIMIT_Y_IO_OFFSET
+#define LIMIT_Y_IO_OFFSET -1
+#define DIO101_IO_OFFSET -1
+#else
+#define DIO101_IO_OFFSET LIMIT_Y_IO_OFFSET
+#ifdef LIMIT_Y
+#undef LIMIT_Y
+#endif
+#ifdef DIO101
+#undef DIO101
+#endif
+#define LIMIT_Y 101
+#define DIO101 -101
+#define LIMIT_Y_IO_BYTEOFFSET (LIMIT_Y_IO_OFFSET >> 3)
+#define LIMIT_Y_IO_BITMASK (1 << (LIMIT_Y_IO_OFFSET & 0x7))
+#define DIO101_IO_BYTEOFFSET LIMIT_Y_IO_BYTEOFFSET
+#define DIO101_IO_BITMASK LIMIT_Y_IO_BITMASK
+#ifndef IC74HC165_HAS_LIMITS
+#define IC74HC165_HAS_LIMITS
+#endif
+#endif
+#ifndef LIMIT_Z_IO_OFFSET
+#define LIMIT_Z_IO_OFFSET -1
+#define DIO102_IO_OFFSET -1
+#else
+#define DIO102_IO_OFFSET LIMIT_Z_IO_OFFSET
+#ifdef LIMIT_Z
+#undef LIMIT_Z
+#endif
+#ifdef DIO102
+#undef DIO102
+#endif
+#define LIMIT_Z 102
+#define DIO102 -102
+#define LIMIT_Z_IO_BYTEOFFSET (LIMIT_Z_IO_OFFSET >> 3)
+#define LIMIT_Z_IO_BITMASK (1 << (LIMIT_Z_IO_OFFSET & 0x7))
+#define DIO102_IO_BYTEOFFSET LIMIT_Z_IO_BYTEOFFSET
+#define DIO102_IO_BITMASK LIMIT_Z_IO_BITMASK
+#ifndef IC74HC165_HAS_LIMITS
+#define IC74HC165_HAS_LIMITS
+#endif
+#endif
+#ifndef LIMIT_X2_IO_OFFSET
+#define LIMIT_X2_IO_OFFSET -1
+#define DIO103_IO_OFFSET -1
+#else
+#define DIO103_IO_OFFSET LIMIT_X2_IO_OFFSET
+#ifdef LIMIT_X2
+#undef LIMIT_X2
+#endif
+#ifdef DIO103
+#undef DIO103
+#endif
+#define LIMIT_X2 103
+#define DIO103 -103
+#define LIMIT_X2_IO_BYTEOFFSET (LIMIT_X2_IO_OFFSET >> 3)
+#define LIMIT_X2_IO_BITMASK (1 << (LIMIT_X2_IO_OFFSET & 0x7))
+#define DIO103_IO_BYTEOFFSET LIMIT_X2_IO_BYTEOFFSET
+#define DIO103_IO_BITMASK LIMIT_X2_IO_BITMASK
+#ifndef IC74HC165_HAS_LIMITS
+#define IC74HC165_HAS_LIMITS
+#endif
+#endif
+#ifndef LIMIT_Y2_IO_OFFSET
+#define LIMIT_Y2_IO_OFFSET -1
+#define DIO104_IO_OFFSET -1
+#else
+#define DIO104_IO_OFFSET LIMIT_Y2_IO_OFFSET
+#ifdef LIMIT_Y2
+#undef LIMIT_Y2
+#endif
+#ifdef DIO104
+#undef DIO104
+#endif
+#define LIMIT_Y2 104
+#define DIO104 -104
+#define LIMIT_Y2_IO_BYTEOFFSET (LIMIT_Y2_IO_OFFSET >> 3)
+#define LIMIT_Y2_IO_BITMASK (1 << (LIMIT_Y2_IO_OFFSET & 0x7))
+#define DIO104_IO_BYTEOFFSET LIMIT_Y2_IO_BYTEOFFSET
+#define DIO104_IO_BITMASK LIMIT_Y2_IO_BITMASK
+#ifndef IC74HC165_HAS_LIMITS
+#define IC74HC165_HAS_LIMITS
+#endif
+#endif
+#ifndef LIMIT_Z2_IO_OFFSET
+#define LIMIT_Z2_IO_OFFSET -1
+#define DIO105_IO_OFFSET -1
+#else
+#define DIO105_IO_OFFSET LIMIT_Z2_IO_OFFSET
+#ifdef LIMIT_Z2
+#undef LIMIT_Z2
+#endif
+#ifdef DIO105
+#undef DIO105
+#endif
+#define LIMIT_Z2 105
+#define DIO105 -105
+#define LIMIT_Z2_IO_BYTEOFFSET (LIMIT_Z2_IO_OFFSET >> 3)
+#define LIMIT_Z2_IO_BITMASK (1 << (LIMIT_Z2_IO_OFFSET & 0x7))
+#define DIO105_IO_BYTEOFFSET LIMIT_Z2_IO_BYTEOFFSET
+#define DIO105_IO_BITMASK LIMIT_Z2_IO_BITMASK
+#ifndef IC74HC165_HAS_LIMITS
+#define IC74HC165_HAS_LIMITS
+#endif
+#endif
+#ifndef LIMIT_A_IO_OFFSET
+#define LIMIT_A_IO_OFFSET -1
+#define DIO106_IO_OFFSET -1
+#else
+#define DIO106_IO_OFFSET LIMIT_A_IO_OFFSET
+#ifdef LIMIT_A
+#undef LIMIT_A
+#endif
+#ifdef DIO106
+#undef DIO106
+#endif
+#define LIMIT_A 106
+#define DIO106 -106
+#define LIMIT_A_IO_BYTEOFFSET (LIMIT_A_IO_OFFSET >> 3)
+#define LIMIT_A_IO_BITMASK (1 << (LIMIT_A_IO_OFFSET & 0x7))
+#define DIO106_IO_BYTEOFFSET LIMIT_A_IO_BYTEOFFSET
+#define DIO106_IO_BITMASK LIMIT_A_IO_BITMASK
+#ifndef IC74HC165_HAS_LIMITS
+#define IC74HC165_HAS_LIMITS
+#endif
+#endif
+#ifndef LIMIT_B_IO_OFFSET
+#define LIMIT_B_IO_OFFSET -1
+#define DIO107_IO_OFFSET -1
+#else
+#define DIO107_IO_OFFSET LIMIT_B_IO_OFFSET
+#ifdef LIMIT_B
+#undef LIMIT_B
+#endif
+#ifdef DIO107
+#undef DIO107
+#endif
+#define LIMIT_B 107
+#define DIO107 -107
+#define LIMIT_B_IO_BYTEOFFSET (LIMIT_B_IO_OFFSET >> 3)
+#define LIMIT_B_IO_BITMASK (1 << (LIMIT_B_IO_OFFSET & 0x7))
+#define DIO107_IO_BYTEOFFSET LIMIT_B_IO_BYTEOFFSET
+#define DIO107_IO_BITMASK LIMIT_B_IO_BITMASK
+#ifndef IC74HC165_HAS_LIMITS
+#define IC74HC165_HAS_LIMITS
+#endif
+#endif
+#ifndef LIMIT_C_IO_OFFSET
+#define LIMIT_C_IO_OFFSET -1
+#define DIO108_IO_OFFSET -1
+#else
+#define DIO108_IO_OFFSET LIMIT_C_IO_OFFSET
+#ifdef LIMIT_C
+#undef LIMIT_C
+#endif
+#ifdef DIO108
+#undef DIO108
+#endif
+#define LIMIT_C 108
+#define DIO108 -108
+#define LIMIT_C_IO_BYTEOFFSET (LIMIT_C_IO_OFFSET >> 3)
+#define LIMIT_C_IO_BITMASK (1 << (LIMIT_C_IO_OFFSET & 0x7))
+#define DIO108_IO_BYTEOFFSET LIMIT_C_IO_BYTEOFFSET
+#define DIO108_IO_BITMASK LIMIT_C_IO_BITMASK
+#ifndef IC74HC165_HAS_LIMITS
+#define IC74HC165_HAS_LIMITS
+#endif
+#endif
+#ifndef PROBE_IO_OFFSET
+#define PROBE_IO_OFFSET -1
+#define DIO109_IO_OFFSET -1
+#else
+#define DIO109_IO_OFFSET PROBE_IO_OFFSET
+#ifdef PROBE
+#undef PROBE
+#endif
+#ifdef DIO109
+#undef DIO109
+#endif
+#define PROBE 109
+#define DIO109 -109
+#define PROBE_IO_BYTEOFFSET (PROBE_IO_OFFSET >> 3)
+#define PROBE_IO_BITMASK (1 << (PROBE_IO_OFFSET & 0x7))
+#define DIO109_IO_BYTEOFFSET PROBE_IO_BYTEOFFSET
+#define DIO109_IO_BITMASK PROBE_IO_BITMASK
+#ifndef IC74HC165_HAS_PROBE
+#define IC74HC165_HAS_PROBE
+#endif
+#endif
+#ifndef ESTOP_IO_OFFSET
+#define ESTOP_IO_OFFSET -1
+#define DIO110_IO_OFFSET -1
+#else
+#define DIO110_IO_OFFSET ESTOP_IO_OFFSET
+#ifdef ESTOP
+#undef ESTOP
+#endif
+#ifdef DIO110
+#undef DIO110
+#endif
+#define ESTOP 110
+#define DIO110 -110
+#define ESTOP_IO_BYTEOFFSET (ESTOP_IO_OFFSET >> 3)
+#define ESTOP_IO_BITMASK (1 << (ESTOP_IO_OFFSET & 0x7))
+#define DIO110_IO_BYTEOFFSET ESTOP_IO_BYTEOFFSET
+#define DIO110_IO_BITMASK ESTOP_IO_BITMASK
+#ifndef IC74HC165_HAS_CONTROLS
+#define IC74HC165_HAS_CONTROLS
+#endif
+#endif
+#ifndef SAFETY_DOOR_IO_OFFSET
+#define SAFETY_DOOR_IO_OFFSET -1
+#define DIO111_IO_OFFSET -1
+#else
+#define DIO111_IO_OFFSET SAFETY_DOOR_IO_OFFSET
+#ifdef SAFETY_DOOR
+#undef SAFETY_DOOR
+#endif
+#ifdef DIO111
+#undef DIO111
+#endif
+#define SAFETY_DOOR 111
+#define DIO111 -111
+#define SAFETY_DOOR_IO_BYTEOFFSET (SAFETY_DOOR_IO_OFFSET >> 3)
+#define SAFETY_DOOR_IO_BITMASK (1 << (SAFETY_DOOR_IO_OFFSET & 0x7))
+#define DIO111_IO_BYTEOFFSET SAFETY_DOOR_IO_BYTEOFFSET
+#define DIO111_IO_BITMASK SAFETY_DOOR_IO_BITMASK
+#ifndef IC74HC165_HAS_CONTROLS
+#define IC74HC165_HAS_CONTROLS
+#endif
+#endif
+#ifndef FHOLD_IO_OFFSET
+#define FHOLD_IO_OFFSET -1
+#define DIO112_IO_OFFSET -1
+#else
+#define DIO112_IO_OFFSET FHOLD_IO_OFFSET
+#ifdef FHOLD
+#undef FHOLD
+#endif
+#ifdef DIO112
+#undef DIO112
+#endif
+#define FHOLD 112
+#define DIO112 -112
+#define FHOLD_IO_BYTEOFFSET (FHOLD_IO_OFFSET >> 3)
+#define FHOLD_IO_BITMASK (1 << (FHOLD_IO_OFFSET & 0x7))
+#define DIO112_IO_BYTEOFFSET FHOLD_IO_BYTEOFFSET
+#define DIO112_IO_BITMASK FHOLD_IO_BITMASK
+#ifndef IC74HC165_HAS_CONTROLS
+#define IC74HC165_HAS_CONTROLS
+#endif
+#endif
+#ifndef CS_RES_IO_OFFSET
+#define CS_RES_IO_OFFSET -1
+#define DIO113_IO_OFFSET -1
+#else
+#define DIO113_IO_OFFSET CS_RES_IO_OFFSET
+#ifdef CS_RES
+#undef CS_RES
+#endif
+#ifdef DIO113
+#undef DIO113
+#endif
+#define CS_RES 113
+#define DIO113 -113
+#define CS_RES_IO_BYTEOFFSET (CS_RES_IO_OFFSET >> 3)
+#define CS_RES_IO_BITMASK (1 << (CS_RES_IO_OFFSET & 0x7))
+#define DIO113_IO_BYTEOFFSET CS_RES_IO_BYTEOFFSET
+#define DIO113_IO_BITMASK CS_RES_IO_BITMASK
+#ifndef IC74HC165_HAS_CONTROLS
+#define IC74HC165_HAS_CONTROLS
+#endif
+#endif
+#ifndef DIN0_IO_OFFSET
+#define DIN0_IO_OFFSET -1
+#define DIO130_IO_OFFSET -1
+#else
+#define DIO130_IO_OFFSET DIN0_IO_OFFSET
+#ifdef DIN0
+#undef DIN0
+#endif
+#ifdef DIO130
+#undef DIO130
+#endif
+#define DIN0 130
+#define DIO130 -130
+#define DIN0_IO_BYTEOFFSET (DIN0_IO_OFFSET >> 3)
+#define DIN0_IO_BITMASK (1 << (DIN0_IO_OFFSET & 0x7))
+#define DIO130_IO_BYTEOFFSET DIN0_IO_BYTEOFFSET
+#define DIO130_IO_BITMASK DIN0_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN1_IO_OFFSET
+#define DIN1_IO_OFFSET -1
+#define DIO131_IO_OFFSET -1
+#else
+#define DIO131_IO_OFFSET DIN1_IO_OFFSET
+#ifdef DIN1
+#undef DIN1
+#endif
+#ifdef DIO131
+#undef DIO131
+#endif
+#define DIN1 131
+#define DIO131 -131
+#define DIN1_IO_BYTEOFFSET (DIN1_IO_OFFSET >> 3)
+#define DIN1_IO_BITMASK (1 << (DIN1_IO_OFFSET & 0x7))
+#define DIO131_IO_BYTEOFFSET DIN1_IO_BYTEOFFSET
+#define DIO131_IO_BITMASK DIN1_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN2_IO_OFFSET
+#define DIN2_IO_OFFSET -1
+#define DIO132_IO_OFFSET -1
+#else
+#define DIO132_IO_OFFSET DIN2_IO_OFFSET
+#ifdef DIN2
+#undef DIN2
+#endif
+#ifdef DIO132
+#undef DIO132
+#endif
+#define DIN2 132
+#define DIO132 -132
+#define DIN2_IO_BYTEOFFSET (DIN2_IO_OFFSET >> 3)
+#define DIN2_IO_BITMASK (1 << (DIN2_IO_OFFSET & 0x7))
+#define DIO132_IO_BYTEOFFSET DIN2_IO_BYTEOFFSET
+#define DIO132_IO_BITMASK DIN2_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN3_IO_OFFSET
+#define DIN3_IO_OFFSET -1
+#define DIO133_IO_OFFSET -1
+#else
+#define DIO133_IO_OFFSET DIN3_IO_OFFSET
+#ifdef DIN3
+#undef DIN3
+#endif
+#ifdef DIO133
+#undef DIO133
+#endif
+#define DIN3 133
+#define DIO133 -133
+#define DIN3_IO_BYTEOFFSET (DIN3_IO_OFFSET >> 3)
+#define DIN3_IO_BITMASK (1 << (DIN3_IO_OFFSET & 0x7))
+#define DIO133_IO_BYTEOFFSET DIN3_IO_BYTEOFFSET
+#define DIO133_IO_BITMASK DIN3_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN4_IO_OFFSET
+#define DIN4_IO_OFFSET -1
+#define DIO134_IO_OFFSET -1
+#else
+#define DIO134_IO_OFFSET DIN4_IO_OFFSET
+#ifdef DIN4
+#undef DIN4
+#endif
+#ifdef DIO134
+#undef DIO134
+#endif
+#define DIN4 134
+#define DIO134 -134
+#define DIN4_IO_BYTEOFFSET (DIN4_IO_OFFSET >> 3)
+#define DIN4_IO_BITMASK (1 << (DIN4_IO_OFFSET & 0x7))
+#define DIO134_IO_BYTEOFFSET DIN4_IO_BYTEOFFSET
+#define DIO134_IO_BITMASK DIN4_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN5_IO_OFFSET
+#define DIN5_IO_OFFSET -1
+#define DIO135_IO_OFFSET -1
+#else
+#define DIO135_IO_OFFSET DIN5_IO_OFFSET
+#ifdef DIN5
+#undef DIN5
+#endif
+#ifdef DIO135
+#undef DIO135
+#endif
+#define DIN5 135
+#define DIO135 -135
+#define DIN5_IO_BYTEOFFSET (DIN5_IO_OFFSET >> 3)
+#define DIN5_IO_BITMASK (1 << (DIN5_IO_OFFSET & 0x7))
+#define DIO135_IO_BYTEOFFSET DIN5_IO_BYTEOFFSET
+#define DIO135_IO_BITMASK DIN5_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN6_IO_OFFSET
+#define DIN6_IO_OFFSET -1
+#define DIO136_IO_OFFSET -1
+#else
+#define DIO136_IO_OFFSET DIN6_IO_OFFSET
+#ifdef DIN6
+#undef DIN6
+#endif
+#ifdef DIO136
+#undef DIO136
+#endif
+#define DIN6 136
+#define DIO136 -136
+#define DIN6_IO_BYTEOFFSET (DIN6_IO_OFFSET >> 3)
+#define DIN6_IO_BITMASK (1 << (DIN6_IO_OFFSET & 0x7))
+#define DIO136_IO_BYTEOFFSET DIN6_IO_BYTEOFFSET
+#define DIO136_IO_BITMASK DIN6_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN7_IO_OFFSET
+#define DIN7_IO_OFFSET -1
+#define DIO137_IO_OFFSET -1
+#else
+#define DIO137_IO_OFFSET DIN7_IO_OFFSET
+#ifdef DIN7
+#undef DIN7
+#endif
+#ifdef DIO137
+#undef DIO137
+#endif
+#define DIN7 137
+#define DIO137 -137
+#define DIN7_IO_BYTEOFFSET (DIN7_IO_OFFSET >> 3)
+#define DIN7_IO_BITMASK (1 << (DIN7_IO_OFFSET & 0x7))
+#define DIO137_IO_BYTEOFFSET DIN7_IO_BYTEOFFSET
+#define DIO137_IO_BITMASK DIN7_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN8_IO_OFFSET
+#define DIN8_IO_OFFSET -1
+#define DIO138_IO_OFFSET -1
+#else
+#define DIO138_IO_OFFSET DIN8_IO_OFFSET
+#ifdef DIN8
+#undef DIN8
+#endif
+#ifdef DIO138
+#undef DIO138
+#endif
+#define DIN8 138
+#define DIO138 -138
+#define DIN8_IO_BYTEOFFSET (DIN8_IO_OFFSET >> 3)
+#define DIN8_IO_BITMASK (1 << (DIN8_IO_OFFSET & 0x7))
+#define DIO138_IO_BYTEOFFSET DIN8_IO_BYTEOFFSET
+#define DIO138_IO_BITMASK DIN8_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN9_IO_OFFSET
+#define DIN9_IO_OFFSET -1
+#define DIO139_IO_OFFSET -1
+#else
+#define DIO139_IO_OFFSET DIN9_IO_OFFSET
+#ifdef DIN9
+#undef DIN9
+#endif
+#ifdef DIO139
+#undef DIO139
+#endif
+#define DIN9 139
+#define DIO139 -139
+#define DIN9_IO_BYTEOFFSET (DIN9_IO_OFFSET >> 3)
+#define DIN9_IO_BITMASK (1 << (DIN9_IO_OFFSET & 0x7))
+#define DIO139_IO_BYTEOFFSET DIN9_IO_BYTEOFFSET
+#define DIO139_IO_BITMASK DIN9_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN10_IO_OFFSET
+#define DIN10_IO_OFFSET -1
+#define DIO140_IO_OFFSET -1
+#else
+#define DIO140_IO_OFFSET DIN10_IO_OFFSET
+#ifdef DIN10
+#undef DIN10
+#endif
+#ifdef DIO140
+#undef DIO140
+#endif
+#define DIN10 140
+#define DIO140 -140
+#define DIN10_IO_BYTEOFFSET (DIN10_IO_OFFSET >> 3)
+#define DIN10_IO_BITMASK (1 << (DIN10_IO_OFFSET & 0x7))
+#define DIO140_IO_BYTEOFFSET DIN10_IO_BYTEOFFSET
+#define DIO140_IO_BITMASK DIN10_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN11_IO_OFFSET
+#define DIN11_IO_OFFSET -1
+#define DIO141_IO_OFFSET -1
+#else
+#define DIO141_IO_OFFSET DIN11_IO_OFFSET
+#ifdef DIN11
+#undef DIN11
+#endif
+#ifdef DIO141
+#undef DIO141
+#endif
+#define DIN11 141
+#define DIO141 -141
+#define DIN11_IO_BYTEOFFSET (DIN11_IO_OFFSET >> 3)
+#define DIN11_IO_BITMASK (1 << (DIN11_IO_OFFSET & 0x7))
+#define DIO141_IO_BYTEOFFSET DIN11_IO_BYTEOFFSET
+#define DIO141_IO_BITMASK DIN11_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN12_IO_OFFSET
+#define DIN12_IO_OFFSET -1
+#define DIO142_IO_OFFSET -1
+#else
+#define DIO142_IO_OFFSET DIN12_IO_OFFSET
+#ifdef DIN12
+#undef DIN12
+#endif
+#ifdef DIO142
+#undef DIO142
+#endif
+#define DIN12 142
+#define DIO142 -142
+#define DIN12_IO_BYTEOFFSET (DIN12_IO_OFFSET >> 3)
+#define DIN12_IO_BITMASK (1 << (DIN12_IO_OFFSET & 0x7))
+#define DIO142_IO_BYTEOFFSET DIN12_IO_BYTEOFFSET
+#define DIO142_IO_BITMASK DIN12_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN13_IO_OFFSET
+#define DIN13_IO_OFFSET -1
+#define DIO143_IO_OFFSET -1
+#else
+#define DIO143_IO_OFFSET DIN13_IO_OFFSET
+#ifdef DIN13
+#undef DIN13
+#endif
+#ifdef DIO143
+#undef DIO143
+#endif
+#define DIN13 143
+#define DIO143 -143
+#define DIN13_IO_BYTEOFFSET (DIN13_IO_OFFSET >> 3)
+#define DIN13_IO_BITMASK (1 << (DIN13_IO_OFFSET & 0x7))
+#define DIO143_IO_BYTEOFFSET DIN13_IO_BYTEOFFSET
+#define DIO143_IO_BITMASK DIN13_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN14_IO_OFFSET
+#define DIN14_IO_OFFSET -1
+#define DIO144_IO_OFFSET -1
+#else
+#define DIO144_IO_OFFSET DIN14_IO_OFFSET
+#ifdef DIN14
+#undef DIN14
+#endif
+#ifdef DIO144
+#undef DIO144
+#endif
+#define DIN14 144
+#define DIO144 -144
+#define DIN14_IO_BYTEOFFSET (DIN14_IO_OFFSET >> 3)
+#define DIN14_IO_BITMASK (1 << (DIN14_IO_OFFSET & 0x7))
+#define DIO144_IO_BYTEOFFSET DIN14_IO_BYTEOFFSET
+#define DIO144_IO_BITMASK DIN14_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN15_IO_OFFSET
+#define DIN15_IO_OFFSET -1
+#define DIO145_IO_OFFSET -1
+#else
+#define DIO145_IO_OFFSET DIN15_IO_OFFSET
+#ifdef DIN15
+#undef DIN15
+#endif
+#ifdef DIO145
+#undef DIO145
+#endif
+#define DIN15 145
+#define DIO145 -145
+#define DIN15_IO_BYTEOFFSET (DIN15_IO_OFFSET >> 3)
+#define DIN15_IO_BITMASK (1 << (DIN15_IO_OFFSET & 0x7))
+#define DIO145_IO_BYTEOFFSET DIN15_IO_BYTEOFFSET
+#define DIO145_IO_BITMASK DIN15_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN16_IO_OFFSET
+#define DIN16_IO_OFFSET -1
+#define DIO146_IO_OFFSET -1
+#else
+#define DIO146_IO_OFFSET DIN16_IO_OFFSET
+#ifdef DIN16
+#undef DIN16
+#endif
+#ifdef DIO146
+#undef DIO146
+#endif
+#define DIN16 146
+#define DIO146 -146
+#define DIN16_IO_BYTEOFFSET (DIN16_IO_OFFSET >> 3)
+#define DIN16_IO_BITMASK (1 << (DIN16_IO_OFFSET & 0x7))
+#define DIO146_IO_BYTEOFFSET DIN16_IO_BYTEOFFSET
+#define DIO146_IO_BITMASK DIN16_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN17_IO_OFFSET
+#define DIN17_IO_OFFSET -1
+#define DIO147_IO_OFFSET -1
+#else
+#define DIO147_IO_OFFSET DIN17_IO_OFFSET
+#ifdef DIN17
+#undef DIN17
+#endif
+#ifdef DIO147
+#undef DIO147
+#endif
+#define DIN17 147
+#define DIO147 -147
+#define DIN17_IO_BYTEOFFSET (DIN17_IO_OFFSET >> 3)
+#define DIN17_IO_BITMASK (1 << (DIN17_IO_OFFSET & 0x7))
+#define DIO147_IO_BYTEOFFSET DIN17_IO_BYTEOFFSET
+#define DIO147_IO_BITMASK DIN17_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN18_IO_OFFSET
+#define DIN18_IO_OFFSET -1
+#define DIO148_IO_OFFSET -1
+#else
+#define DIO148_IO_OFFSET DIN18_IO_OFFSET
+#ifdef DIN18
+#undef DIN18
+#endif
+#ifdef DIO148
+#undef DIO148
+#endif
+#define DIN18 148
+#define DIO148 -148
+#define DIN18_IO_BYTEOFFSET (DIN18_IO_OFFSET >> 3)
+#define DIN18_IO_BITMASK (1 << (DIN18_IO_OFFSET & 0x7))
+#define DIO148_IO_BYTEOFFSET DIN18_IO_BYTEOFFSET
+#define DIO148_IO_BITMASK DIN18_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN19_IO_OFFSET
+#define DIN19_IO_OFFSET -1
+#define DIO149_IO_OFFSET -1
+#else
+#define DIO149_IO_OFFSET DIN19_IO_OFFSET
+#ifdef DIN19
+#undef DIN19
+#endif
+#ifdef DIO149
+#undef DIO149
+#endif
+#define DIN19 149
+#define DIO149 -149
+#define DIN19_IO_BYTEOFFSET (DIN19_IO_OFFSET >> 3)
+#define DIN19_IO_BITMASK (1 << (DIN19_IO_OFFSET & 0x7))
+#define DIO149_IO_BYTEOFFSET DIN19_IO_BYTEOFFSET
+#define DIO149_IO_BITMASK DIN19_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN20_IO_OFFSET
+#define DIN20_IO_OFFSET -1
+#define DIO150_IO_OFFSET -1
+#else
+#define DIO150_IO_OFFSET DIN20_IO_OFFSET
+#ifdef DIN20
+#undef DIN20
+#endif
+#ifdef DIO150
+#undef DIO150
+#endif
+#define DIN20 150
+#define DIO150 -150
+#define DIN20_IO_BYTEOFFSET (DIN20_IO_OFFSET >> 3)
+#define DIN20_IO_BITMASK (1 << (DIN20_IO_OFFSET & 0x7))
+#define DIO150_IO_BYTEOFFSET DIN20_IO_BYTEOFFSET
+#define DIO150_IO_BITMASK DIN20_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN21_IO_OFFSET
+#define DIN21_IO_OFFSET -1
+#define DIO151_IO_OFFSET -1
+#else
+#define DIO151_IO_OFFSET DIN21_IO_OFFSET
+#ifdef DIN21
+#undef DIN21
+#endif
+#ifdef DIO151
+#undef DIO151
+#endif
+#define DIN21 151
+#define DIO151 -151
+#define DIN21_IO_BYTEOFFSET (DIN21_IO_OFFSET >> 3)
+#define DIN21_IO_BITMASK (1 << (DIN21_IO_OFFSET & 0x7))
+#define DIO151_IO_BYTEOFFSET DIN21_IO_BYTEOFFSET
+#define DIO151_IO_BITMASK DIN21_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN22_IO_OFFSET
+#define DIN22_IO_OFFSET -1
+#define DIO152_IO_OFFSET -1
+#else
+#define DIO152_IO_OFFSET DIN22_IO_OFFSET
+#ifdef DIN22
+#undef DIN22
+#endif
+#ifdef DIO152
+#undef DIO152
+#endif
+#define DIN22 152
+#define DIO152 -152
+#define DIN22_IO_BYTEOFFSET (DIN22_IO_OFFSET >> 3)
+#define DIN22_IO_BITMASK (1 << (DIN22_IO_OFFSET & 0x7))
+#define DIO152_IO_BYTEOFFSET DIN22_IO_BYTEOFFSET
+#define DIO152_IO_BITMASK DIN22_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN23_IO_OFFSET
+#define DIN23_IO_OFFSET -1
+#define DIO153_IO_OFFSET -1
+#else
+#define DIO153_IO_OFFSET DIN23_IO_OFFSET
+#ifdef DIN23
+#undef DIN23
+#endif
+#ifdef DIO153
+#undef DIO153
+#endif
+#define DIN23 153
+#define DIO153 -153
+#define DIN23_IO_BYTEOFFSET (DIN23_IO_OFFSET >> 3)
+#define DIN23_IO_BITMASK (1 << (DIN23_IO_OFFSET & 0x7))
+#define DIO153_IO_BYTEOFFSET DIN23_IO_BYTEOFFSET
+#define DIO153_IO_BITMASK DIN23_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN24_IO_OFFSET
+#define DIN24_IO_OFFSET -1
+#define DIO154_IO_OFFSET -1
+#else
+#define DIO154_IO_OFFSET DIN24_IO_OFFSET
+#ifdef DIN24
+#undef DIN24
+#endif
+#ifdef DIO154
+#undef DIO154
+#endif
+#define DIN24 154
+#define DIO154 -154
+#define DIN24_IO_BYTEOFFSET (DIN24_IO_OFFSET >> 3)
+#define DIN24_IO_BITMASK (1 << (DIN24_IO_OFFSET & 0x7))
+#define DIO154_IO_BYTEOFFSET DIN24_IO_BYTEOFFSET
+#define DIO154_IO_BITMASK DIN24_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN25_IO_OFFSET
+#define DIN25_IO_OFFSET -1
+#define DIO155_IO_OFFSET -1
+#else
+#define DIO155_IO_OFFSET DIN25_IO_OFFSET
+#ifdef DIN25
+#undef DIN25
+#endif
+#ifdef DIO155
+#undef DIO155
+#endif
+#define DIN25 155
+#define DIO155 -155
+#define DIN25_IO_BYTEOFFSET (DIN25_IO_OFFSET >> 3)
+#define DIN25_IO_BITMASK (1 << (DIN25_IO_OFFSET & 0x7))
+#define DIO155_IO_BYTEOFFSET DIN25_IO_BYTEOFFSET
+#define DIO155_IO_BITMASK DIN25_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN26_IO_OFFSET
+#define DIN26_IO_OFFSET -1
+#define DIO156_IO_OFFSET -1
+#else
+#define DIO156_IO_OFFSET DIN26_IO_OFFSET
+#ifdef DIN26
+#undef DIN26
+#endif
+#ifdef DIO156
+#undef DIO156
+#endif
+#define DIN26 156
+#define DIO156 -156
+#define DIN26_IO_BYTEOFFSET (DIN26_IO_OFFSET >> 3)
+#define DIN26_IO_BITMASK (1 << (DIN26_IO_OFFSET & 0x7))
+#define DIO156_IO_BYTEOFFSET DIN26_IO_BYTEOFFSET
+#define DIO156_IO_BITMASK DIN26_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN27_IO_OFFSET
+#define DIN27_IO_OFFSET -1
+#define DIO157_IO_OFFSET -1
+#else
+#define DIO157_IO_OFFSET DIN27_IO_OFFSET
+#ifdef DIN27
+#undef DIN27
+#endif
+#ifdef DIO157
+#undef DIO157
+#endif
+#define DIN27 157
+#define DIO157 -157
+#define DIN27_IO_BYTEOFFSET (DIN27_IO_OFFSET >> 3)
+#define DIN27_IO_BITMASK (1 << (DIN27_IO_OFFSET & 0x7))
+#define DIO157_IO_BYTEOFFSET DIN27_IO_BYTEOFFSET
+#define DIO157_IO_BITMASK DIN27_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN28_IO_OFFSET
+#define DIN28_IO_OFFSET -1
+#define DIO158_IO_OFFSET -1
+#else
+#define DIO158_IO_OFFSET DIN28_IO_OFFSET
+#ifdef DIN28
+#undef DIN28
+#endif
+#ifdef DIO158
+#undef DIO158
+#endif
+#define DIN28 158
+#define DIO158 -158
+#define DIN28_IO_BYTEOFFSET (DIN28_IO_OFFSET >> 3)
+#define DIN28_IO_BITMASK (1 << (DIN28_IO_OFFSET & 0x7))
+#define DIO158_IO_BYTEOFFSET DIN28_IO_BYTEOFFSET
+#define DIO158_IO_BITMASK DIN28_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN29_IO_OFFSET
+#define DIN29_IO_OFFSET -1
+#define DIO159_IO_OFFSET -1
+#else
+#define DIO159_IO_OFFSET DIN29_IO_OFFSET
+#ifdef DIN29
+#undef DIN29
+#endif
+#ifdef DIO159
+#undef DIO159
+#endif
+#define DIN29 159
+#define DIO159 -159
+#define DIN29_IO_BYTEOFFSET (DIN29_IO_OFFSET >> 3)
+#define DIN29_IO_BITMASK (1 << (DIN29_IO_OFFSET & 0x7))
+#define DIO159_IO_BYTEOFFSET DIN29_IO_BYTEOFFSET
+#define DIO159_IO_BITMASK DIN29_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN30_IO_OFFSET
+#define DIN30_IO_OFFSET -1
+#define DIO160_IO_OFFSET -1
+#else
+#define DIO160_IO_OFFSET DIN30_IO_OFFSET
+#ifdef DIN30
+#undef DIN30
+#endif
+#ifdef DIO160
+#undef DIO160
+#endif
+#define DIN30 160
+#define DIO160 -160
+#define DIN30_IO_BYTEOFFSET (DIN30_IO_OFFSET >> 3)
+#define DIN30_IO_BITMASK (1 << (DIN30_IO_OFFSET & 0x7))
+#define DIO160_IO_BYTEOFFSET DIN30_IO_BYTEOFFSET
+#define DIO160_IO_BITMASK DIN30_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN31_IO_OFFSET
+#define DIN31_IO_OFFSET -1
+#define DIO161_IO_OFFSET -1
+#else
+#define DIO161_IO_OFFSET DIN31_IO_OFFSET
+#ifdef DIN31
+#undef DIN31
+#endif
+#ifdef DIO161
+#undef DIO161
+#endif
+#define DIN31 161
+#define DIO161 -161
+#define DIN31_IO_BYTEOFFSET (DIN31_IO_OFFSET >> 3)
+#define DIN31_IO_BITMASK (1 << (DIN31_IO_OFFSET & 0x7))
+#define DIO161_IO_BYTEOFFSET DIN31_IO_BYTEOFFSET
+#define DIO161_IO_BITMASK DIN31_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN32_IO_OFFSET
+#define DIN32_IO_OFFSET -1
+#define DIO162_IO_OFFSET -1
+#else
+#define DIO162_IO_OFFSET DIN32_IO_OFFSET
+#ifdef DIN32
+#undef DIN32
+#endif
+#ifdef DIO162
+#undef DIO162
+#endif
+#define DIN32 162
+#define DIO162 -162
+#define DIN32_IO_BYTEOFFSET (DIN32_IO_OFFSET >> 3)
+#define DIN32_IO_BITMASK (1 << (DIN32_IO_OFFSET & 0x7))
+#define DIO162_IO_BYTEOFFSET DIN32_IO_BYTEOFFSET
+#define DIO162_IO_BITMASK DIN32_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN33_IO_OFFSET
+#define DIN33_IO_OFFSET -1
+#define DIO163_IO_OFFSET -1
+#else
+#define DIO163_IO_OFFSET DIN33_IO_OFFSET
+#ifdef DIN33
+#undef DIN33
+#endif
+#ifdef DIO163
+#undef DIO163
+#endif
+#define DIN33 163
+#define DIO163 -163
+#define DIN33_IO_BYTEOFFSET (DIN33_IO_OFFSET >> 3)
+#define DIN33_IO_BITMASK (1 << (DIN33_IO_OFFSET & 0x7))
+#define DIO163_IO_BYTEOFFSET DIN33_IO_BYTEOFFSET
+#define DIO163_IO_BITMASK DIN33_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN34_IO_OFFSET
+#define DIN34_IO_OFFSET -1
+#define DIO164_IO_OFFSET -1
+#else
+#define DIO164_IO_OFFSET DIN34_IO_OFFSET
+#ifdef DIN34
+#undef DIN34
+#endif
+#ifdef DIO164
+#undef DIO164
+#endif
+#define DIN34 164
+#define DIO164 -164
+#define DIN34_IO_BYTEOFFSET (DIN34_IO_OFFSET >> 3)
+#define DIN34_IO_BITMASK (1 << (DIN34_IO_OFFSET & 0x7))
+#define DIO164_IO_BYTEOFFSET DIN34_IO_BYTEOFFSET
+#define DIO164_IO_BITMASK DIN34_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN35_IO_OFFSET
+#define DIN35_IO_OFFSET -1
+#define DIO165_IO_OFFSET -1
+#else
+#define DIO165_IO_OFFSET DIN35_IO_OFFSET
+#ifdef DIN35
+#undef DIN35
+#endif
+#ifdef DIO165
+#undef DIO165
+#endif
+#define DIN35 165
+#define DIO165 -165
+#define DIN35_IO_BYTEOFFSET (DIN35_IO_OFFSET >> 3)
+#define DIN35_IO_BITMASK (1 << (DIN35_IO_OFFSET & 0x7))
+#define DIO165_IO_BYTEOFFSET DIN35_IO_BYTEOFFSET
+#define DIO165_IO_BITMASK DIN35_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN36_IO_OFFSET
+#define DIN36_IO_OFFSET -1
+#define DIO166_IO_OFFSET -1
+#else
+#define DIO166_IO_OFFSET DIN36_IO_OFFSET
+#ifdef DIN36
+#undef DIN36
+#endif
+#ifdef DIO166
+#undef DIO166
+#endif
+#define DIN36 166
+#define DIO166 -166
+#define DIN36_IO_BYTEOFFSET (DIN36_IO_OFFSET >> 3)
+#define DIN36_IO_BITMASK (1 << (DIN36_IO_OFFSET & 0x7))
+#define DIO166_IO_BYTEOFFSET DIN36_IO_BYTEOFFSET
+#define DIO166_IO_BITMASK DIN36_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN37_IO_OFFSET
+#define DIN37_IO_OFFSET -1
+#define DIO167_IO_OFFSET -1
+#else
+#define DIO167_IO_OFFSET DIN37_IO_OFFSET
+#ifdef DIN37
+#undef DIN37
+#endif
+#ifdef DIO167
+#undef DIO167
+#endif
+#define DIN37 167
+#define DIO167 -167
+#define DIN37_IO_BYTEOFFSET (DIN37_IO_OFFSET >> 3)
+#define DIN37_IO_BITMASK (1 << (DIN37_IO_OFFSET & 0x7))
+#define DIO167_IO_BYTEOFFSET DIN37_IO_BYTEOFFSET
+#define DIO167_IO_BITMASK DIN37_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN38_IO_OFFSET
+#define DIN38_IO_OFFSET -1
+#define DIO168_IO_OFFSET -1
+#else
+#define DIO168_IO_OFFSET DIN38_IO_OFFSET
+#ifdef DIN38
+#undef DIN38
+#endif
+#ifdef DIO168
+#undef DIO168
+#endif
+#define DIN38 168
+#define DIO168 -168
+#define DIN38_IO_BYTEOFFSET (DIN38_IO_OFFSET >> 3)
+#define DIN38_IO_BITMASK (1 << (DIN38_IO_OFFSET & 0x7))
+#define DIO168_IO_BYTEOFFSET DIN38_IO_BYTEOFFSET
+#define DIO168_IO_BITMASK DIN38_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN39_IO_OFFSET
+#define DIN39_IO_OFFSET -1
+#define DIO169_IO_OFFSET -1
+#else
+#define DIO169_IO_OFFSET DIN39_IO_OFFSET
+#ifdef DIN39
+#undef DIN39
+#endif
+#ifdef DIO169
+#undef DIO169
+#endif
+#define DIN39 169
+#define DIO169 -169
+#define DIN39_IO_BYTEOFFSET (DIN39_IO_OFFSET >> 3)
+#define DIN39_IO_BITMASK (1 << (DIN39_IO_OFFSET & 0x7))
+#define DIO169_IO_BYTEOFFSET DIN39_IO_BYTEOFFSET
+#define DIO169_IO_BITMASK DIN39_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN40_IO_OFFSET
+#define DIN40_IO_OFFSET -1
+#define DIO170_IO_OFFSET -1
+#else
+#define DIO170_IO_OFFSET DIN40_IO_OFFSET
+#ifdef DIN40
+#undef DIN40
+#endif
+#ifdef DIO170
+#undef DIO170
+#endif
+#define DIN40 170
+#define DIO170 -170
+#define DIN40_IO_BYTEOFFSET (DIN40_IO_OFFSET >> 3)
+#define DIN40_IO_BITMASK (1 << (DIN40_IO_OFFSET & 0x7))
+#define DIO170_IO_BYTEOFFSET DIN40_IO_BYTEOFFSET
+#define DIO170_IO_BITMASK DIN40_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN41_IO_OFFSET
+#define DIN41_IO_OFFSET -1
+#define DIO171_IO_OFFSET -1
+#else
+#define DIO171_IO_OFFSET DIN41_IO_OFFSET
+#ifdef DIN41
+#undef DIN41
+#endif
+#ifdef DIO171
+#undef DIO171
+#endif
+#define DIN41 171
+#define DIO171 -171
+#define DIN41_IO_BYTEOFFSET (DIN41_IO_OFFSET >> 3)
+#define DIN41_IO_BITMASK (1 << (DIN41_IO_OFFSET & 0x7))
+#define DIO171_IO_BYTEOFFSET DIN41_IO_BYTEOFFSET
+#define DIO171_IO_BITMASK DIN41_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN42_IO_OFFSET
+#define DIN42_IO_OFFSET -1
+#define DIO172_IO_OFFSET -1
+#else
+#define DIO172_IO_OFFSET DIN42_IO_OFFSET
+#ifdef DIN42
+#undef DIN42
+#endif
+#ifdef DIO172
+#undef DIO172
+#endif
+#define DIN42 172
+#define DIO172 -172
+#define DIN42_IO_BYTEOFFSET (DIN42_IO_OFFSET >> 3)
+#define DIN42_IO_BITMASK (1 << (DIN42_IO_OFFSET & 0x7))
+#define DIO172_IO_BYTEOFFSET DIN42_IO_BYTEOFFSET
+#define DIO172_IO_BITMASK DIN42_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN43_IO_OFFSET
+#define DIN43_IO_OFFSET -1
+#define DIO173_IO_OFFSET -1
+#else
+#define DIO173_IO_OFFSET DIN43_IO_OFFSET
+#ifdef DIN43
+#undef DIN43
+#endif
+#ifdef DIO173
+#undef DIO173
+#endif
+#define DIN43 173
+#define DIO173 -173
+#define DIN43_IO_BYTEOFFSET (DIN43_IO_OFFSET >> 3)
+#define DIN43_IO_BITMASK (1 << (DIN43_IO_OFFSET & 0x7))
+#define DIO173_IO_BYTEOFFSET DIN43_IO_BYTEOFFSET
+#define DIO173_IO_BITMASK DIN43_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN44_IO_OFFSET
+#define DIN44_IO_OFFSET -1
+#define DIO174_IO_OFFSET -1
+#else
+#define DIO174_IO_OFFSET DIN44_IO_OFFSET
+#ifdef DIN44
+#undef DIN44
+#endif
+#ifdef DIO174
+#undef DIO174
+#endif
+#define DIN44 174
+#define DIO174 -174
+#define DIN44_IO_BYTEOFFSET (DIN44_IO_OFFSET >> 3)
+#define DIN44_IO_BITMASK (1 << (DIN44_IO_OFFSET & 0x7))
+#define DIO174_IO_BYTEOFFSET DIN44_IO_BYTEOFFSET
+#define DIO174_IO_BITMASK DIN44_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN45_IO_OFFSET
+#define DIN45_IO_OFFSET -1
+#define DIO175_IO_OFFSET -1
+#else
+#define DIO175_IO_OFFSET DIN45_IO_OFFSET
+#ifdef DIN45
+#undef DIN45
+#endif
+#ifdef DIO175
+#undef DIO175
+#endif
+#define DIN45 175
+#define DIO175 -175
+#define DIN45_IO_BYTEOFFSET (DIN45_IO_OFFSET >> 3)
+#define DIN45_IO_BITMASK (1 << (DIN45_IO_OFFSET & 0x7))
+#define DIO175_IO_BYTEOFFSET DIN45_IO_BYTEOFFSET
+#define DIO175_IO_BITMASK DIN45_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN46_IO_OFFSET
+#define DIN46_IO_OFFSET -1
+#define DIO176_IO_OFFSET -1
+#else
+#define DIO176_IO_OFFSET DIN46_IO_OFFSET
+#ifdef DIN46
+#undef DIN46
+#endif
+#ifdef DIO176
+#undef DIO176
+#endif
+#define DIN46 176
+#define DIO176 -176
+#define DIN46_IO_BYTEOFFSET (DIN46_IO_OFFSET >> 3)
+#define DIN46_IO_BITMASK (1 << (DIN46_IO_OFFSET & 0x7))
+#define DIO176_IO_BYTEOFFSET DIN46_IO_BYTEOFFSET
+#define DIO176_IO_BITMASK DIN46_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN47_IO_OFFSET
+#define DIN47_IO_OFFSET -1
+#define DIO177_IO_OFFSET -1
+#else
+#define DIO177_IO_OFFSET DIN47_IO_OFFSET
+#ifdef DIN47
+#undef DIN47
+#endif
+#ifdef DIO177
+#undef DIO177
+#endif
+#define DIN47 177
+#define DIO177 -177
+#define DIN47_IO_BYTEOFFSET (DIN47_IO_OFFSET >> 3)
+#define DIN47_IO_BITMASK (1 << (DIN47_IO_OFFSET & 0x7))
+#define DIO177_IO_BYTEOFFSET DIN47_IO_BYTEOFFSET
+#define DIO177_IO_BITMASK DIN47_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN48_IO_OFFSET
+#define DIN48_IO_OFFSET -1
+#define DIO178_IO_OFFSET -1
+#else
+#define DIO178_IO_OFFSET DIN48_IO_OFFSET
+#ifdef DIN48
+#undef DIN48
+#endif
+#ifdef DIO178
+#undef DIO178
+#endif
+#define DIN48 178
+#define DIO178 -178
+#define DIN48_IO_BYTEOFFSET (DIN48_IO_OFFSET >> 3)
+#define DIN48_IO_BITMASK (1 << (DIN48_IO_OFFSET & 0x7))
+#define DIO178_IO_BYTEOFFSET DIN48_IO_BYTEOFFSET
+#define DIO178_IO_BITMASK DIN48_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+#ifndef DIN49_IO_OFFSET
+#define DIN49_IO_OFFSET -1
+#define DIO179_IO_OFFSET -1
+#else
+#define DIO179_IO_OFFSET DIN49_IO_OFFSET
+#ifdef DIN49
+#undef DIN49
+#endif
+#ifdef DIO179
+#undef DIO179
+#endif
+#define DIN49 179
+#define DIO179 -179
+#define DIN49_IO_BYTEOFFSET (DIN49_IO_OFFSET >> 3)
+#define DIN49_IO_BITMASK (1 << (DIN49_IO_OFFSET & 0x7))
+#define DIO179_IO_BYTEOFFSET DIN49_IO_BYTEOFFSET
+#define DIO179_IO_BITMASK DIN49_IO_BITMASK
+#ifndef IC74HC165_HAS_DINS
+#define IC74HC165_HAS_DINS
+#endif
+#endif
+
+#if (IC74HC165_COUNT < 0)
+#undef IC74HC165_COUNT
+#define IC74HC165_COUNT 0
+#elif (IC74HC165_COUNT > 4)
+#error "The maximum number of chained IC74HC165 is 4"
+#endif
+
+#if (IC74HC165_COUNT > 0)
+#ifndef __indirect__
+#define __indirect__ex__(X, Y) DIO##X##_##Y
+#define __indirect__(X, Y) __indirect__ex__(X, Y)
+#endif
+ extern volatile uint8_t ic74hc165_io_pins[IC74HC165_COUNT];
+#ifndef ic74hc165_get_pin
+#define ic74hc165_get_pin(pin) (ic74hc165_io_pins[(__indirect__(pin, IO_BYTEOFFSET))] & (__indirect__(pin, IO_BITMASK)))
+#endif
+#else
+#define ic74hc165_get_pin(pin) 0
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/uCNC/src/modules/ic74hc595.c b/uCNC/src/modules/ic74hc595.c
deleted file mode 100644
index 8c1f2bffa..000000000
--- a/uCNC/src/modules/ic74hc595.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- Name: ic74hc595.c
- Description: This module adds the ability to control the IC74HC595 shift register controller (used for example in the MKS-DLC32 board) to µCNC.
- Up to 56 output pins can be assigned.
-
- Copyright: Copyright (c) João Martins
- Author: João Martins
- Date: 01/09/2022
-
- µCNC is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version. Please see
-
- µCNC is distributed WITHOUT ANY WARRANTY;
- Also without the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- See the GNU General Public License for more details.
-*/
-
-#include "../cnc.h"
-#include
-#include
-
-#ifndef IC74HC595_COUNT
-#define IC74HC595_COUNT 0
-#endif
-
-#ifndef IC74HC595_DATA
-#define IC74HC595_DATA DOUT8
-#endif
-
-#ifndef IC74HC595_CLK
-#define IC74HC595_CLK DOUT9
-#endif
-
-#ifndef IC74HC595_LATCH
-#define IC74HC595_LATCH DOUT10
-#endif
-
-#ifndef IC74HC595_DELAY_CYCLES
-#define IC74HC595_DELAY_CYCLES 0
-#endif
-
-#define ic74hc595_delay() mcu_delay_cycles(IC74HC595_DELAY_CYCLES)
-#if (IC74HC595_COUNT != 0)
-volatile uint8_t ic74hc595_io_pins[IC74HC595_COUNT];
-#ifndef IC74HC595_CUSTOM_SHIFT_IO
-MCU_CALLBACK void __attribute__((weak)) ic74hc595_shift_io_pins(void)
-{
-
- uint8_t pins[IC74HC595_COUNT];
- __ATOMIC__
- {
- memcpy(pins, (const void *)ic74hc595_io_pins, IC74HC595_COUNT);
- mcu_clear_output(IC74HC595_LATCH);
- for (uint8_t i = IC74HC595_COUNT; i != 0;)
- {
- i--;
-#if (defined(IC74HC595_USE_HW_SPI) && defined(MCU_HAS_SPI))
- mcu_spi_xmit(pins[i]);
-#else
- uint8_t pinbyte = pins[i];
- for (uint8_t j = 0x80; j != 0; j >>= 1)
- {
-#if (IC74HC595_DELAY_CYCLES)
- ic74hc595_delay();
-#endif
- mcu_clear_output(IC74HC595_CLK);
- if (pinbyte & j)
- {
- mcu_set_output(IC74HC595_DATA);
- }
- else
- {
- mcu_clear_output(IC74HC595_DATA);
- }
- mcu_set_output(IC74HC595_CLK);
- }
-#endif
- }
-#if (IC74HC595_DELAY_CYCLES)
- ic74hc595_delay();
-#endif
- mcu_set_output(IC74HC595_LATCH);
- }
-}
-#else
-MCU_CALLBACK void __attribute__((weak)) ic74hc595_shift_io_pins(void)
-{
-}
-#endif
-#endif
diff --git a/uCNC/src/modules/ic74hc595.h b/uCNC/src/modules/ic74hc595.h
index 5368cdba8..76c7eb6cf 100644
--- a/uCNC/src/modules/ic74hc595.h
+++ b/uCNC/src/modules/ic74hc595.h
@@ -2045,7 +2045,6 @@ extern "C"
#endif
#endif
-
#if (IC74HC595_COUNT < 0)
#undef IC74HC595_COUNT
#define IC74HC595_COUNT 0
@@ -2078,7 +2077,28 @@ extern "C"
#define ic74hc595_get_pin(pin) 0
#endif
- void ic74hc595_shift_io_pins(void);
+/**
+ * Backward compatibility
+ */
+#ifdef IC74HC595_DATA
+#define SHIFT_REGISTER_SDO IC74HC595_DATA
+#endif
+
+#ifdef IC74HC595_CLK
+#define SHIFT_REGISTER_CLK IC74HC595_CLK
+#endif
+
+#ifdef IC74HC595_DELAY_CYCLES
+#define SHIFT_REGISTER_DELAY_CYCLES IC74HC595_DELAY_CYCLES
+#endif
+
+#ifdef IC74HC595_CUSTOM_SHIFT_IO
+#define SHIFT_REGISTER_CUSTOM_CALLBACK
+#endif
+
+#ifdef IC74HC595_USE_HW_SPI
+#define SHIFT_REGISTER_USE_HW_SPI
+#endif
#ifdef __cplusplus
}
diff --git a/uCNC/src/modules/shift_register.c b/uCNC/src/modules/shift_register.c
new file mode 100644
index 000000000..3cf2ed8f2
--- /dev/null
+++ b/uCNC/src/modules/shift_register.c
@@ -0,0 +1,161 @@
+/*
+ Name: ic74hc595.c
+ Description: This module adds the ability to control the IC74HC595 shift register controller (used for example in the MKS-DLC32 board) to µCNC.
+ Up to 56 output pins can be assigned.
+
+ Copyright: Copyright (c) João Martins
+ Author: João Martins
+ Date: 01/09/2022
+
+ µCNC is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version. Please see
+
+ µCNC is distributed WITHOUT ANY WARRANTY;
+ Also without the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+*/
+
+#include "../cnc.h"
+#include
+#include
+
+#ifndef IC74HC595_COUNT
+#define IC74HC595_COUNT 0
+#endif
+
+#ifndef IC74HC165_COUNT
+#define IC74HC165_COUNT 0
+#endif
+
+#ifndef SHIFT_REGISTER_SDO
+#define SHIFT_REGISTER_SDO DOUT8
+#endif
+
+#ifndef SHIFT_REGISTER_SDI
+#define SHIFT_REGISTER_SDI DIN8
+#endif
+
+#ifndef SHIFT_REGISTER_CLK
+#define SHIFT_REGISTER_CLK DOUT9
+#endif
+
+#ifndef IC74HC595_LATCH
+#define IC74HC595_LATCH DOUT10
+#endif
+
+#ifndef IC74HC165_LOAD
+#define IC74HC165_LOAD DOUT11
+#endif
+
+#ifndef SHIFT_REGISTER_DELAY_CYCLES
+#define SHIFT_REGISTER_DELAY_CYCLES 0
+#endif
+
+#if (IC74HC595_COUNT >= IC74HC165_COUNT)
+#define SHIFT_REGISTER_BYTES IC74HC595_COUNT
+#else
+#define SHIFT_REGISTER_BYTES IC74HC165_COUNT
+#endif
+
+#define shift_register_delay() mcu_delay_cycles(SHIFT_REGISTER_DELAY_CYCLES)
+#if (IC74HC595_COUNT != 0) || (IC74HC165_COUNT != 0)
+#if (IC74HC595_COUNT != 0)
+volatile uint8_t __attribute__((used)) ic74hc595_io_pins[IC74HC595_COUNT];
+#endif
+#if (IC74HC165_COUNT != 0)
+volatile uint8_t __attribute__((used)) ic74hc165_io_pins[IC74HC165_COUNT];
+#endif
+#ifndef SHIFT_REGISTER_CUSTOM_CALLBACK
+
+DECL_MUTEX(shifter_running);
+
+MCU_CALLBACK void __attribute__((weak)) shift_register_io_pins(void)
+{
+ MUTEX_INIT(shifter_running);
+
+ MUTEX_TAKE(shifter_running)
+ {
+ uint8_t pins[SHIFT_REGISTER_BYTES];
+
+#if (IC74HC165_COUNT > 0)
+ memset(pins, 0, IC74HC165_COUNT);
+ mcu_set_output(IC74HC165_LOAD);
+#endif
+#if (IC74HC595_COUNT > 0)
+ __ATOMIC__
+ {
+
+ memcpy(pins, (const void *)ic74hc595_io_pins, IC74HC595_COUNT);
+ }
+ mcu_clear_output(IC74HC595_LATCH);
+#endif
+ /**
+ * shift bytes
+ */
+ for (uint8_t i = SHIFT_REGISTER_BYTES; i != 0;)
+ {
+ i--;
+#if (defined(SHIFT_REGISTER_USE_HW_SPI) && defined(MCU_HAS_SPI))
+ pins[i] = mcu_spi_xmit(pins[i]);
+#else
+ uint8_t pinbyte = pins[i];
+ for (uint8_t j = 0x80; j != 0; j >>= 1)
+ {
+#if (SHIFT_REGISTER_DELAY_CYCLES)
+ shift_register_delay();
+#endif
+ mcu_clear_output(SHIFT_REGISTER_CLK);
+#if (IC74HC595_COUNT > 0)
+ // write
+ if (pinbyte & j)
+ {
+ mcu_set_output(SHIFT_REGISTER_SDO);
+ }
+ else
+ {
+ mcu_clear_output(SHIFT_REGISTER_SDO);
+ }
+#endif
+// read
+#if (IC74HC165_COUNT > 0)
+ if (mcu_get_input(SHIFT_REGISTER_SDI))
+ {
+ pinbyte |= j;
+ }
+ else
+ {
+ pinbyte &= ~j;
+ }
+#endif
+ mcu_set_output(SHIFT_REGISTER_CLK);
+ }
+
+#if (IC74HC165_COUNT > 0)
+ pins[i] = pinbyte;
+#endif
+
+#if (SHIFT_REGISTER_DELAY_CYCLES)
+ shift_register_delay();
+#endif
+ mcu_set_output(SHIFT_REGISTER_CLK);
+
+#endif
+ }
+
+#if (IC74HC165_COUNT > 0)
+ memcpy((void *)ic74hc165_io_pins, (const void *)pins, IC74HC165_COUNT);
+ mcu_clear_output(IC74HC165_LOAD); // allow a new load
+#endif
+#if (IC74HC595_COUNT > 0)
+ mcu_set_output(IC74HC595_LATCH);
+#endif
+ }
+}
+#else
+MCU_CALLBACK void __attribute__((weak)) shift_register_io_pins(void)
+{
+}
+#endif
+#endif
diff --git a/uCNC/src/modules/shift_register.h b/uCNC/src/modules/shift_register.h
new file mode 100644
index 000000000..f494a78e1
--- /dev/null
+++ b/uCNC/src/modules/shift_register.h
@@ -0,0 +1,41 @@
+/*
+ Name: shift_register.h
+ Description: This module adds the ability to control the IC74HC595(outputs) and IC74HC165(inputs) shift register controllers (used for example in the MKS-DLC32 board) to µCNC.
+
+ Copyright: Copyright (c) João Martins
+ Author: João Martins
+ Date: 12-02-2025
+
+ µCNC is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version. Please see
+
+ µCNC is distributed WITHOUT ANY WARRANTY;
+ Also without the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+*/
+
+#ifndef SHIFT_REGISTER_H
+#define SHIFT_REGISTER_H
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include "ic74hc595.h"
+#include "ic74hc165.h"
+#include "../module.h"
+
+void shift_register_io_pins(void);
+
+#ifndef io_extended_pins_update
+#define io_extended_pins_update() shift_register_io_pins()
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
\ No newline at end of file
diff --git a/uCNC/src/modules/softspi.h b/uCNC/src/modules/softspi.h
index ae3954ffb..71815cb54 100644
--- a/uCNC/src/modules/softspi.h
+++ b/uCNC/src/modules/softspi.h
@@ -102,6 +102,10 @@ extern "C"
{ \
io_clear_output(CLKPIN); \
} \
+ if (ASSERT_PIN_EXTENDED(CLKPIN)) \
+ { \
+ io_extended_pins_update(); \
+ } \
} \
void NAME##_mosi(bool state) \
{ \
@@ -113,8 +117,19 @@ extern "C"
{ \
io_clear_output(MOSIPIN); \
} \
+ if (ASSERT_PIN_EXTENDED(MOSIPIN)) \
+ { \
+ io_extended_pins_update(); \
+ } \
+ } \
+ bool NAME##_miso(void) \
+ { \
+ if (ASSERT_PIN_EXTENDED(MISOPIN)) \
+ { \
+ io_extended_pins_update(); \
+ } \
+ return io_get_input(MISOPIN); \
} \
- bool NAME##_miso(void) { return io_get_input(MISOPIN); } \
__attribute__((used)) softspi_port_t NAME = {.spiconfig = {.mode = MODE}, .spifreq = FREQ, .spiport = NULL, .clk = &NAME##_clk, .mosi = &NAME##_mosi, .miso = &NAME##_miso, .config = &NAME##_config};
#define HARDSPI(NAME, FREQ, MODE, PORT) __attribute__((used)) softspi_port_t NAME = {.spiconfig = {.mode = MODE}, .spifreq = FREQ, .spiport = &PORT, .clk = NULL, .mosi = NULL, .miso = NULL, .config = NULL};
diff --git a/uCNC/src/modules/softuart.h b/uCNC/src/modules/softuart.h
index bfcd9d5ac..c07475e7d 100644
--- a/uCNC/src/modules/softuart.h
+++ b/uCNC/src/modules/softuart.h
@@ -54,9 +54,17 @@ extern "C"
{ \
io_clear_output(TXPIN); \
} \
+ if (ASSERT_PIN_EXTENDED(TXPIN)) \
+ { \
+ io_extended_pins_update(); \
+ } \
} \
bool NAME##_rx(void) \
{ \
+ if (ASSERT_PIN_EXTENDED(RXPIN)) \
+ { \
+ io_extended_pins_update(); \
+ } \
return io_get_input(RXPIN); \
} \
void NAME##_wait(void) { mcu_delay_cycles(F_CPU / BAUD); } \
@@ -68,7 +76,7 @@ extern "C"
{ \
if (state) \
{ \
- io_set_output(TRXPIN); \
+ io_set_output(TRXPIN); \
} \
else \
{ \
diff --git a/uCNC/src/utils.h b/uCNC/src/utils.h
index a6312e460..f9c7fd55b 100644
--- a/uCNC/src/utils.h
+++ b/uCNC/src/utils.h
@@ -192,6 +192,12 @@ extern "C"
#define M_COS_TAYLOR_1 0.1666666666666666667f
#endif
+#define __TIMEOUT_US__(timeout) for (uint32_t elap_us_##timeout, curr_us_##timeout = mcu_free_micros(); timeout > 0; elap_us_##timeout = mcu_free_micros() - curr_us_##timeout, timeout -= MIN(timeout, ((elap_us_##timeout < 1000) ? elap_us_##timeout : 1000 + elap_us_##timeout)), curr_us_##timeout = mcu_free_micros())
+#define __TIMEOUT_MS__(timeout) \
+ timeout = (((uint32_t)timeout) < (UINT32_MAX / 1000)) ? (timeout * 1000) : UINT32_MAX; \
+ __TIMEOUT_US__(timeout)
+#define __TIMEOUT_ASSERT__(timeout) if (timeout == 0)
+
#ifndef FORCEINLINE
#define FORCEINLINE __attribute__((always_inline)) inline
#endif
@@ -222,6 +228,47 @@ extern "C"
#define __ATOMIC_FORCEON__ for (uint8_t __restore_atomic__ __attribute__((__cleanup__(__atomic_out_on))) = 1, __AtomLock = __atomic_in(); __AtomLock; __AtomLock = 0)
#endif
+#ifndef DECL_MUTEX
+#define MUTEX_CLEANUP(name) \
+ static void name##_mutex_cleanup(uint8_t *m) \
+ { \
+ if (!*m /*can unlock*/) \
+ { \
+ name##_mutex_lock = 0; \
+ } \
+ }
+#define DECL_MUTEX(name) \
+ static volatile uint8_t name##_mutex_lock; \
+ MUTEX_CLEANUP(name)
+#define MUTEX_INIT(name) uint8_t __attribute__((__cleanup__(name##_mutex_cleanup))) name##_mutex_temp = 0
+#define MUTEX_RELEASE(name) if(!name##_mutex_temp /*has the lock*/) name##_mutex_lock = 0
+#define MUTEX_TAKE(name) \
+ __ATOMIC__ \
+ { \
+ name##_mutex_temp = name##_mutex_lock; \
+ if (!name##_mutex_temp) \
+ { \
+ name##_mutex_lock = 1; \
+ } \
+ } \
+ if (!name##_mutex_temp /*the lock was aquired*/)
+
+#define MUTEX_WAIT(name, timeout_ms) \
+ __TIMEOUT_MS__(timeout_us) \
+ { \
+ __ATOMIC__ \
+ { \
+ name##_mutex_temp = name##_mutex_lock; \
+ if (!name##_mutex_temp) \
+ { \
+ name##_mutex_lock = 1; \
+ break; \
+ } \
+ } \
+ } \
+ if (!name##_mutex_temp && timeout_us != 0 /*the lock was aquired in time*/)
+#endif
+
#define __STRGIFY__(s) #s
#define STRGIFY(s) __STRGIFY__(s)
@@ -423,12 +470,6 @@ extern "C"
}
#endif
-#define __TIMEOUT_US__(timeout) for (uint32_t elap_us_##timeout, curr_us_##timeout = mcu_free_micros(); timeout > 0; elap_us_##timeout = mcu_free_micros() - curr_us_##timeout, timeout -= MIN(timeout, ((elap_us_##timeout<1000) ? elap_us_##timeout : 1000 + elap_us_##timeout)), curr_us_##timeout = mcu_free_micros())
-#define __TIMEOUT_MS__(timeout) \
- timeout = (((uint32_t)timeout) < (UINT32_MAX / 1000)) ? (timeout * 1000) : UINT32_MAX; \
- __TIMEOUT_US__(timeout)
-#define __TIMEOUT_ASSERT__(timeout) if (timeout == 0)
-
#if defined(__GNUC__) && __GNUC__ >= 7
#define __FALL_THROUGH__ __attribute__((fallthrough));
#else