From 0ddb274b2a374f853a0f73b6fc7e14e1955302d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Rodriguez?= <31577366+GrmanRodriguez@users.noreply.github.com> Date: Fri, 6 Aug 2021 12:29:15 +0200 Subject: [PATCH] Integrated code for AMC BLDC (Messaging & Supervisor) (#200) * Incorporating CAN_RX_raw2struct and CAN_Decoder generated code into the board's programming. * Integration of the entire pipeline of the MBD into the existing board code. * Integrated supervisor and messaging blocks into board's code * renamed some directories for better clarity * Cleanup of unnecessary files * removed another unneeded file * remove unnecessary files Co-authored-by: German David Rodriguez Arenas --- .../application03/bin/.placeholder.txt | 2 +- .../application03/proj/EventRecorderStub.scvd | 9 + .../RTE_Components.h | 21 + .../proj/amcbldc-application03.uvoptx | 524 ++++++++++++- .../proj/amcbldc-application03.uvprojx | 737 +++++++++++++++++- .../application03/src/amcbldc-main.cpp | 66 +- .../embot_app_application_theCANparserMBD.cpp | 12 +- .../src/embot_app_application_theMBDagent.cpp | 184 ++++- .../src/embot_app_application_theMBDagent.h | 2 +- .../can-decoder/can_decoder.cpp | 634 +++++++++++++++ .../can-decoder/can_decoder.h | 170 ++++ .../can-decoder/can_decoder_private.h | 46 ++ .../can-decoder/can_decoder_types.h | 251 ++++++ .../can-encoder/can_encoder.cpp | 185 +++++ .../can-encoder/can_encoder.h | 122 +++ .../can-encoder/can_encoder_private.h | 45 ++ .../can-encoder/can_encoder_types.h | 97 +++ .../can-raw2struct/can_rx_raw2struct.cpp | 171 ++++ .../can-raw2struct/can_rx_raw2struct.h | 97 +++ .../can_rx_raw2struct_private.h | 45 ++ .../can-raw2struct/can_rx_raw2struct_types.h | 146 ++++ .../sharedutils/Double2MultiWord.cpp | 67 ++ .../sharedutils/Double2MultiWord.h | 26 + .../sharedutils/MultiWordIor.cpp | 30 + .../sharedutils/MultiWordIor.h | 27 + .../sharedutils/div_s32.cpp | 41 + .../model-based-design/sharedutils/div_s32.h | 26 + .../sharedutils/multiword_types.h | 50 ++ .../sharedutils/rtGetInf.cpp | 97 +++ .../model-based-design/sharedutils/rtGetInf.h | 40 + .../sharedutils/rtGetNaN.cpp | 63 ++ .../model-based-design/sharedutils/rtGetNaN.h | 38 + .../sharedutils/rt_nonfinite.cpp | 99 +++ .../sharedutils/rt_nonfinite.h | 66 ++ .../model-based-design/sharedutils/rtwtypes.h | 154 ++++ .../sharedutils/uMultiWord2Double.cpp | 37 + .../sharedutils/uMultiWord2Double.h | 26 + .../sharedutils/uMultiWordShl.cpp | 73 ++ .../sharedutils/uMultiWordShl.h | 27 + .../supervisor-rx/SupervisorFSM_RX.cpp | 699 +++++++++++++++++ .../supervisor-rx/SupervisorFSM_RX.h | 158 ++++ .../supervisor-rx/SupervisorFSM_RX_private.h | 45 ++ .../supervisor-rx/SupervisorFSM_RX_types.h | 300 +++++++ .../supervisor-tx/SupervisorFSM_TX.cpp | 122 +++ .../supervisor-tx/SupervisorFSM_TX.h | 106 +++ .../supervisor-tx/SupervisorFSM_TX_private.h | 45 ++ .../supervisor-tx/SupervisorFSM_TX_types.h | 196 +++++ .../stm32hal/lib/stm32hal.g4.amcbldc.v120.lib | Bin 0 -> 1009872 bytes .../stm32hal/proj/stm32hal.g4.uvprojx | 10 +- 49 files changed, 6187 insertions(+), 47 deletions(-) create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/EventRecorderStub.scvd create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/RTE/_amcbldc-app03-osal-ulpro/RTE_Components.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder.cpp create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder_private.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder_types.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder.cpp create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder_private.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder_types.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct.cpp create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct_private.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct_types.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/Double2MultiWord.cpp create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/Double2MultiWord.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/MultiWordIor.cpp create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/MultiWordIor.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/div_s32.cpp create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/div_s32.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/multiword_types.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetInf.cpp create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetInf.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetNaN.cpp create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetNaN.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rt_nonfinite.cpp create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rt_nonfinite.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtwtypes.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWord2Double.cpp create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWord2Double.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWordShl.cpp create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWordShl.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX.cpp create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX_private.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX_types.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX.cpp create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX_private.h create mode 100644 emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX_types.h create mode 100644 emBODY/eBcode/arch-arm/libs/lowlevel/stm32hal/lib/stm32hal.g4.amcbldc.v120.lib diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/bin/.placeholder.txt b/emBODY/eBcode/arch-arm/board/amcbldc/application03/bin/.placeholder.txt index b0eb8200b..1b3a3363a 100644 --- a/emBODY/eBcode/arch-arm/board/amcbldc/application03/bin/.placeholder.txt +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/bin/.placeholder.txt @@ -1 +1 @@ -.placeholder +.placeholder \ No newline at end of file diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/EventRecorderStub.scvd b/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/EventRecorderStub.scvd new file mode 100644 index 000000000..2956b2968 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/EventRecorderStub.scvd @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/RTE/_amcbldc-app03-osal-ulpro/RTE_Components.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/RTE/_amcbldc-app03-osal-ulpro/RTE_Components.h new file mode 100644 index 000000000..7a6db3725 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/RTE/_amcbldc-app03-osal-ulpro/RTE_Components.h @@ -0,0 +1,21 @@ + +/* + * Auto generated Run-Time-Environment Configuration File + * *** Do not modify ! *** + * + * Project: 'amcbldc-application03' + * Target: 'amcbldc-app03-osal-ulpro' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "stm32g4xx.h" + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/amcbldc-application03.uvoptx b/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/amcbldc-application03.uvoptx index 85beaacef..cb6f6ae2f 100644 --- a/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/amcbldc-application03.uvoptx +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/amcbldc-application03.uvoptx @@ -130,7 +130,7 @@ 0 ULP2CM3 - -UAny -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65555 -TC160000000 -TT10000000 -TP18 -TDX0 -TDD0 -TDS8000 -TDT0 -TDC1F -TIE80000001 -TIP9 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32G4xx_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32G474QETx$CMSIS\Flash\STM32G4xx_512.FLM) + -UAny -O16623 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65555 -TC160000000 -TT10000000 -TP18 -TDX0 -TDD0 -TDS8000 -TDT0 -TDC1F -TIE80000001 -TIP9 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32G4xx_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32G474QETx$CMSIS\Flash\STM32G4xx_512.FLM) 0 @@ -170,6 +170,16 @@ 1 cantx + + 3 + 1 + rtb_control_mode + + + 4 + 1 + can_decoder_DW.is_active_SET_CONTROL_MODE + @@ -193,7 +203,7 @@ 0 1 - 0 + 1 0 0 0 @@ -1288,7 +1298,7 @@ embot::app-required - 0 + 1 0 0 0 @@ -1432,7 +1442,7 @@ others::foc - 1 + 0 0 0 0 @@ -1452,7 +1462,7 @@ others::motorhal - 1 + 0 0 0 0 @@ -1506,6 +1516,510 @@ + + mbd + 0 + 0 + 0 + 0 + + 15 + 59 + 8 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\div_s32.cpp + div_s32.cpp + 0 + 0 + + + 15 + 60 + 5 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\div_s32.h + div_s32.h + 0 + 0 + + + 15 + 61 + 8 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\Double2MultiWord.cpp + Double2MultiWord.cpp + 0 + 0 + + + 15 + 62 + 5 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\Double2MultiWord.h + Double2MultiWord.h + 0 + 0 + + + 15 + 63 + 5 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\multiword_types.h + multiword_types.h + 0 + 0 + + + 15 + 64 + 8 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\MultiWordIor.cpp + MultiWordIor.cpp + 0 + 0 + + + 15 + 65 + 5 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\MultiWordIor.h + MultiWordIor.h + 0 + 0 + + + 15 + 66 + 8 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\rt_nonfinite.cpp + rt_nonfinite.cpp + 0 + 0 + + + 15 + 67 + 5 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\rt_nonfinite.h + rt_nonfinite.h + 0 + 0 + + + 15 + 68 + 8 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\rtGetInf.cpp + rtGetInf.cpp + 0 + 0 + + + 15 + 69 + 5 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\rtGetInf.h + rtGetInf.h + 0 + 0 + + + 15 + 70 + 8 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\rtGetNaN.cpp + rtGetNaN.cpp + 0 + 0 + + + 15 + 71 + 5 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\rtGetNaN.h + rtGetNaN.h + 0 + 0 + + + 15 + 72 + 5 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\rtwtypes.h + rtwtypes.h + 0 + 0 + + + 15 + 73 + 8 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\uMultiWord2Double.cpp + uMultiWord2Double.cpp + 0 + 0 + + + 15 + 74 + 5 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\uMultiWord2Double.h + uMultiWord2Double.h + 0 + 0 + + + 15 + 75 + 8 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\uMultiWordShl.cpp + uMultiWordShl.cpp + 0 + 0 + + + 15 + 76 + 5 + 0 + 0 + 0 + ..\src\model-based-design\sharedutils\uMultiWordShl.h + uMultiWordShl.h + 0 + 0 + + + + + mbd::can-decoder + 0 + 0 + 0 + 0 + + 16 + 77 + 8 + 0 + 0 + 0 + ..\src\model-based-design\can-decoder\can_decoder.cpp + can_decoder.cpp + 0 + 0 + + + 16 + 78 + 5 + 0 + 0 + 0 + ..\src\model-based-design\can-decoder\can_decoder.h + can_decoder.h + 0 + 0 + + + 16 + 79 + 5 + 0 + 0 + 0 + ..\src\model-based-design\can-decoder\can_decoder_private.h + can_decoder_private.h + 0 + 0 + + + 16 + 80 + 5 + 0 + 0 + 0 + ..\src\model-based-design\can-decoder\can_decoder_types.h + can_decoder_types.h + 0 + 0 + + + + + mbd::can-raw2struct + 0 + 0 + 0 + 0 + + 17 + 81 + 8 + 0 + 0 + 0 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct.cpp + can_rx_raw2struct.cpp + 0 + 0 + + + 17 + 82 + 5 + 0 + 0 + 0 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct.h + can_rx_raw2struct.h + 0 + 0 + + + 17 + 83 + 5 + 0 + 0 + 0 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct_private.h + can_rx_raw2struct_private.h + 0 + 0 + + + 17 + 84 + 5 + 0 + 0 + 0 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct_types.h + can_rx_raw2struct_types.h + 0 + 0 + + + + + mbd::supervisor-rx + 0 + 0 + 0 + 0 + + 18 + 85 + 8 + 0 + 0 + 0 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX.cpp + SupervisorFSM_RX.cpp + 0 + 0 + + + 18 + 86 + 5 + 0 + 0 + 0 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX.h + SupervisorFSM_RX.h + 0 + 0 + + + 18 + 87 + 5 + 0 + 0 + 0 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX_private.h + SupervisorFSM_RX_private.h + 0 + 0 + + + 18 + 88 + 5 + 0 + 0 + 0 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX_types.h + SupervisorFSM_RX_types.h + 0 + 0 + + + + + mbd::supervisor-tx + 0 + 0 + 0 + 0 + + 19 + 89 + 8 + 0 + 0 + 0 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX.cpp + SupervisorFSM_TX.cpp + 0 + 0 + + + 19 + 90 + 5 + 0 + 0 + 0 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX.h + SupervisorFSM_TX.h + 0 + 0 + + + 19 + 91 + 5 + 0 + 0 + 0 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX_private.h + SupervisorFSM_TX_private.h + 0 + 0 + + + 19 + 92 + 5 + 0 + 0 + 0 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX_types.h + SupervisorFSM_TX_types.h + 0 + 0 + + + + + mbd::can-encoder + 0 + 0 + 0 + 0 + + 20 + 93 + 8 + 0 + 0 + 0 + ..\src\model-based-design\can-encoder\can_encoder.cpp + can_encoder.cpp + 0 + 0 + + + 20 + 94 + 5 + 0 + 0 + 0 + ..\src\model-based-design\can-encoder\can_encoder.h + can_encoder.h + 0 + 0 + + + 20 + 95 + 5 + 0 + 0 + 0 + ..\src\model-based-design\can-encoder\can_encoder_private.h + can_encoder_private.h + 0 + 0 + + + 20 + 96 + 5 + 0 + 0 + 0 + ..\src\model-based-design\can-encoder\can_encoder_types.h + can_encoder_types.h + 0 + 0 + + + ::CMSIS 0 diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/amcbldc-application03.uvprojx b/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/amcbldc-application03.uvprojx index f05655643..d10c45429 100644 --- a/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/amcbldc-application03.uvprojx +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/proj/amcbldc-application03.uvprojx @@ -16,7 +16,7 @@ STM32G474QETx STMicroelectronics - Keil.STM32G4xx_DFP.1.2.0 + Keil.STM32G4xx_DFP.1.3.0 http://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IROM(0x08000000,0x00080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE @@ -339,7 +339,7 @@ -Wno-pragma-pack -Wno-deprecated-register -DEMBOT_USE_rtos_osal USE_STM32HAL STM32HAL_BOARD_AMCBLDC STM32HAL_DRIVER_V120 - ..\..\..\..\..\..\eBcode\arch-arm\libs\highlevel\abslayer\osal\api;..\..\..\..\..\..\eBcode\arch-arm\libs\midware\eventviewer\api;..\..\..\..\..\..\eBcode\arch-arm\libs\lowlevel\stm32hal\api;..\..\..\..\..\..\..\..\icub-firmware-shared\embot\core;..\..\..\..\..\..\eBcode\arch-arm\embot\app;..\..\..\..\..\..\eBcode\arch-arm\embot\i2h;..\..\..\..\..\..\eBcode\arch-arm\embot\hw;..\..\..\..\..\..\eBcode\arch-arm\embot\os;..\..\..\..\..\..\eBcode\arch-arm\embot;..\..\..\..\..\..\..\..\icub-firmware-shared\embot\core;..\..\..\..\embot\app\dsp;..\..\..\..\..\..\..\..\icub-firmware-shared\can\canProtocolLib;..\..\..\..\embot\app\skeleton;..\..\..\..\embot\prot\can;..\..\bsp;..\src\FOCode\BLDC_FOC_Code\Current_FOC_ert_rtw;..\..\..\..\libs\lowlevel\cmsis\dsp\v160\Include;..\src\motorhal;..\src\control-foc\_sharedutils;..\..\..\..\..\..\eBcode\arch-arm\board\amcbldc\application02\src\control-foc\_sharedutils + ..\..\..\..\..\..\eBcode\arch-arm\libs\highlevel\abslayer\osal\api;..\..\..\..\..\..\eBcode\arch-arm\libs\midware\eventviewer\api;..\..\..\..\..\..\eBcode\arch-arm\libs\lowlevel\stm32hal\api;..\..\..\..\..\..\..\..\icub-firmware-shared\embot\core;..\..\..\..\..\..\eBcode\arch-arm\embot\app;..\..\..\..\..\..\eBcode\arch-arm\embot\i2h;..\..\..\..\..\..\eBcode\arch-arm\embot\hw;..\..\..\..\..\..\eBcode\arch-arm\embot\os;..\..\..\..\..\..\eBcode\arch-arm\embot;..\..\..\..\..\..\..\..\icub-firmware-shared\embot\core;..\..\..\..\embot\app\dsp;..\..\..\..\..\..\..\..\icub-firmware-shared\can\canProtocolLib;..\..\..\..\embot\app\skeleton;..\..\..\..\embot\prot\can;..\..\bsp;..\src\FOCode\BLDC_FOC_Code\Current_FOC_ert_rtw;..\..\..\..\libs\lowlevel\cmsis\dsp\v160\Include;..\src\motorhal;..\src\control-foc\_sharedutils;..\..\..\..\..\..\eBcode\arch-arm\board\amcbldc\application02\src\control-foc\_sharedutils;..\src\model-based-design\sharedutils;..\src\model-based-design\can-decoder;..\src\model-based-design\can-raw2struct;..\src\model-based-design\supervisor-rx;..\src\model-based-design\supervisor-tx;..\src\model-based-design\can-encoder @@ -762,6 +762,75 @@ others + + + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + ..\src\model-based-design\sharedutils;..\src\model-based-design\can-decoder;..\src\model-based-design\can-raw2struct;..\src\model-based-design\supervisor-rx;..\src\model-based-design\supervisor-tx;..\src\model-based-design\can-encoder + + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + + + + + + + + + embot_app_application_theCANparserMBD.cpp @@ -810,6 +879,226 @@ + + mbd + + + div_s32.cpp + 8 + ..\src\model-based-design\sharedutils\div_s32.cpp + + + div_s32.h + 5 + ..\src\model-based-design\sharedutils\div_s32.h + + + Double2MultiWord.cpp + 8 + ..\src\model-based-design\sharedutils\Double2MultiWord.cpp + + + Double2MultiWord.h + 5 + ..\src\model-based-design\sharedutils\Double2MultiWord.h + + + multiword_types.h + 5 + ..\src\model-based-design\sharedutils\multiword_types.h + + + MultiWordIor.cpp + 8 + ..\src\model-based-design\sharedutils\MultiWordIor.cpp + + + MultiWordIor.h + 5 + ..\src\model-based-design\sharedutils\MultiWordIor.h + + + rt_nonfinite.cpp + 8 + ..\src\model-based-design\sharedutils\rt_nonfinite.cpp + + + rt_nonfinite.h + 5 + ..\src\model-based-design\sharedutils\rt_nonfinite.h + + + rtGetInf.cpp + 8 + ..\src\model-based-design\sharedutils\rtGetInf.cpp + + + rtGetInf.h + 5 + ..\src\model-based-design\sharedutils\rtGetInf.h + + + rtGetNaN.cpp + 8 + ..\src\model-based-design\sharedutils\rtGetNaN.cpp + + + rtGetNaN.h + 5 + ..\src\model-based-design\sharedutils\rtGetNaN.h + + + rtwtypes.h + 5 + ..\src\model-based-design\sharedutils\rtwtypes.h + + + uMultiWord2Double.cpp + 8 + ..\src\model-based-design\sharedutils\uMultiWord2Double.cpp + + + uMultiWord2Double.h + 5 + ..\src\model-based-design\sharedutils\uMultiWord2Double.h + + + uMultiWordShl.cpp + 8 + ..\src\model-based-design\sharedutils\uMultiWordShl.cpp + + + uMultiWordShl.h + 5 + ..\src\model-based-design\sharedutils\uMultiWordShl.h + + + + + mbd::can-decoder + + + can_decoder.cpp + 8 + ..\src\model-based-design\can-decoder\can_decoder.cpp + + + can_decoder.h + 5 + ..\src\model-based-design\can-decoder\can_decoder.h + + + can_decoder_private.h + 5 + ..\src\model-based-design\can-decoder\can_decoder_private.h + + + can_decoder_types.h + 5 + ..\src\model-based-design\can-decoder\can_decoder_types.h + + + + + mbd::can-raw2struct + + + can_rx_raw2struct.cpp + 8 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct.cpp + + + can_rx_raw2struct.h + 5 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct.h + + + can_rx_raw2struct_private.h + 5 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct_private.h + + + can_rx_raw2struct_types.h + 5 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct_types.h + + + + + mbd::supervisor-rx + + + SupervisorFSM_RX.cpp + 8 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX.cpp + + + SupervisorFSM_RX.h + 5 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX.h + + + SupervisorFSM_RX_private.h + 5 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX_private.h + + + SupervisorFSM_RX_types.h + 5 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX_types.h + + + + + mbd::supervisor-tx + + + SupervisorFSM_TX.cpp + 8 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX.cpp + + + SupervisorFSM_TX.h + 5 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX.h + + + SupervisorFSM_TX_private.h + 5 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX_private.h + + + SupervisorFSM_TX_types.h + 5 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX_types.h + + + + + mbd::can-encoder + + + can_encoder.cpp + 8 + ..\src\model-based-design\can-encoder\can_encoder.cpp + + + can_encoder.h + 5 + ..\src\model-based-design\can-encoder\can_encoder.h + + + can_encoder_private.h + 5 + ..\src\model-based-design\can-encoder\can_encoder_private.h + + + can_encoder_types.h + 5 + ..\src\model-based-design\can-encoder\can_encoder_types.h + + + ::CMSIS @@ -894,7 +1183,7 @@ STM32G474QETx STMicroelectronics - Keil.STM32G4xx_DFP.1.2.0 + Keil.STM32G4xx_DFP.1.3.0 http://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IROM(0x08000000,0x00080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE @@ -1688,6 +1977,226 @@ + + mbd + + + div_s32.cpp + 8 + ..\src\model-based-design\sharedutils\div_s32.cpp + + + div_s32.h + 5 + ..\src\model-based-design\sharedutils\div_s32.h + + + Double2MultiWord.cpp + 8 + ..\src\model-based-design\sharedutils\Double2MultiWord.cpp + + + Double2MultiWord.h + 5 + ..\src\model-based-design\sharedutils\Double2MultiWord.h + + + multiword_types.h + 5 + ..\src\model-based-design\sharedutils\multiword_types.h + + + MultiWordIor.cpp + 8 + ..\src\model-based-design\sharedutils\MultiWordIor.cpp + + + MultiWordIor.h + 5 + ..\src\model-based-design\sharedutils\MultiWordIor.h + + + rt_nonfinite.cpp + 8 + ..\src\model-based-design\sharedutils\rt_nonfinite.cpp + + + rt_nonfinite.h + 5 + ..\src\model-based-design\sharedutils\rt_nonfinite.h + + + rtGetInf.cpp + 8 + ..\src\model-based-design\sharedutils\rtGetInf.cpp + + + rtGetInf.h + 5 + ..\src\model-based-design\sharedutils\rtGetInf.h + + + rtGetNaN.cpp + 8 + ..\src\model-based-design\sharedutils\rtGetNaN.cpp + + + rtGetNaN.h + 5 + ..\src\model-based-design\sharedutils\rtGetNaN.h + + + rtwtypes.h + 5 + ..\src\model-based-design\sharedutils\rtwtypes.h + + + uMultiWord2Double.cpp + 8 + ..\src\model-based-design\sharedutils\uMultiWord2Double.cpp + + + uMultiWord2Double.h + 5 + ..\src\model-based-design\sharedutils\uMultiWord2Double.h + + + uMultiWordShl.cpp + 8 + ..\src\model-based-design\sharedutils\uMultiWordShl.cpp + + + uMultiWordShl.h + 5 + ..\src\model-based-design\sharedutils\uMultiWordShl.h + + + + + mbd::can-decoder + + + can_decoder.cpp + 8 + ..\src\model-based-design\can-decoder\can_decoder.cpp + + + can_decoder.h + 5 + ..\src\model-based-design\can-decoder\can_decoder.h + + + can_decoder_private.h + 5 + ..\src\model-based-design\can-decoder\can_decoder_private.h + + + can_decoder_types.h + 5 + ..\src\model-based-design\can-decoder\can_decoder_types.h + + + + + mbd::can-raw2struct + + + can_rx_raw2struct.cpp + 8 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct.cpp + + + can_rx_raw2struct.h + 5 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct.h + + + can_rx_raw2struct_private.h + 5 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct_private.h + + + can_rx_raw2struct_types.h + 5 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct_types.h + + + + + mbd::supervisor-rx + + + SupervisorFSM_RX.cpp + 8 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX.cpp + + + SupervisorFSM_RX.h + 5 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX.h + + + SupervisorFSM_RX_private.h + 5 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX_private.h + + + SupervisorFSM_RX_types.h + 5 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX_types.h + + + + + mbd::supervisor-tx + + + SupervisorFSM_TX.cpp + 8 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX.cpp + + + SupervisorFSM_TX.h + 5 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX.h + + + SupervisorFSM_TX_private.h + 5 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX_private.h + + + SupervisorFSM_TX_types.h + 5 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX_types.h + + + + + mbd::can-encoder + + + can_encoder.cpp + 8 + ..\src\model-based-design\can-encoder\can_encoder.cpp + + + can_encoder.h + 5 + ..\src\model-based-design\can-encoder\can_encoder.h + + + can_encoder_private.h + 5 + ..\src\model-based-design\can-encoder\can_encoder_private.h + + + can_encoder_types.h + 5 + ..\src\model-based-design\can-encoder\can_encoder_types.h + + + ::CMSIS @@ -1772,7 +2281,7 @@ STM32G474QETx STMicroelectronics - Keil.STM32G4xx_DFP.1.2.0 + Keil.STM32G4xx_DFP.1.3.0 http://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IROM(0x08000000,0x00080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE @@ -2566,6 +3075,226 @@ + + mbd + + + div_s32.cpp + 8 + ..\src\model-based-design\sharedutils\div_s32.cpp + + + div_s32.h + 5 + ..\src\model-based-design\sharedutils\div_s32.h + + + Double2MultiWord.cpp + 8 + ..\src\model-based-design\sharedutils\Double2MultiWord.cpp + + + Double2MultiWord.h + 5 + ..\src\model-based-design\sharedutils\Double2MultiWord.h + + + multiword_types.h + 5 + ..\src\model-based-design\sharedutils\multiword_types.h + + + MultiWordIor.cpp + 8 + ..\src\model-based-design\sharedutils\MultiWordIor.cpp + + + MultiWordIor.h + 5 + ..\src\model-based-design\sharedutils\MultiWordIor.h + + + rt_nonfinite.cpp + 8 + ..\src\model-based-design\sharedutils\rt_nonfinite.cpp + + + rt_nonfinite.h + 5 + ..\src\model-based-design\sharedutils\rt_nonfinite.h + + + rtGetInf.cpp + 8 + ..\src\model-based-design\sharedutils\rtGetInf.cpp + + + rtGetInf.h + 5 + ..\src\model-based-design\sharedutils\rtGetInf.h + + + rtGetNaN.cpp + 8 + ..\src\model-based-design\sharedutils\rtGetNaN.cpp + + + rtGetNaN.h + 5 + ..\src\model-based-design\sharedutils\rtGetNaN.h + + + rtwtypes.h + 5 + ..\src\model-based-design\sharedutils\rtwtypes.h + + + uMultiWord2Double.cpp + 8 + ..\src\model-based-design\sharedutils\uMultiWord2Double.cpp + + + uMultiWord2Double.h + 5 + ..\src\model-based-design\sharedutils\uMultiWord2Double.h + + + uMultiWordShl.cpp + 8 + ..\src\model-based-design\sharedutils\uMultiWordShl.cpp + + + uMultiWordShl.h + 5 + ..\src\model-based-design\sharedutils\uMultiWordShl.h + + + + + mbd::can-decoder + + + can_decoder.cpp + 8 + ..\src\model-based-design\can-decoder\can_decoder.cpp + + + can_decoder.h + 5 + ..\src\model-based-design\can-decoder\can_decoder.h + + + can_decoder_private.h + 5 + ..\src\model-based-design\can-decoder\can_decoder_private.h + + + can_decoder_types.h + 5 + ..\src\model-based-design\can-decoder\can_decoder_types.h + + + + + mbd::can-raw2struct + + + can_rx_raw2struct.cpp + 8 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct.cpp + + + can_rx_raw2struct.h + 5 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct.h + + + can_rx_raw2struct_private.h + 5 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct_private.h + + + can_rx_raw2struct_types.h + 5 + ..\src\model-based-design\can-raw2struct\can_rx_raw2struct_types.h + + + + + mbd::supervisor-rx + + + SupervisorFSM_RX.cpp + 8 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX.cpp + + + SupervisorFSM_RX.h + 5 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX.h + + + SupervisorFSM_RX_private.h + 5 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX_private.h + + + SupervisorFSM_RX_types.h + 5 + ..\src\model-based-design\supervisor-rx\SupervisorFSM_RX_types.h + + + + + mbd::supervisor-tx + + + SupervisorFSM_TX.cpp + 8 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX.cpp + + + SupervisorFSM_TX.h + 5 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX.h + + + SupervisorFSM_TX_private.h + 5 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX_private.h + + + SupervisorFSM_TX_types.h + 5 + ..\src\model-based-design\supervisor-tx\SupervisorFSM_TX_types.h + + + + + mbd::can-encoder + + + can_encoder.cpp + 8 + ..\src\model-based-design\can-encoder\can_encoder.cpp + + + can_encoder.h + 5 + ..\src\model-based-design\can-encoder\can_encoder.h + + + can_encoder_private.h + 5 + ..\src\model-based-design\can-encoder\can_encoder_private.h + + + can_encoder_types.h + 5 + ..\src\model-based-design\can-encoder\can_encoder_types.h + + + ::CMSIS diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/amcbldc-main.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/amcbldc-main.cpp index 7ddf36063..c90aba55f 100644 --- a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/amcbldc-main.cpp +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/amcbldc-main.cpp @@ -357,7 +357,7 @@ void myEVT::userdefOnEventANYother(embot::os::Thread *t, embot::os::EventMask ev // so far, we need to measure the excution time of some test code, so, we need two functions: void mbd_mc_init(); void mbd_mc_canparse(const embot::prot::can::Frame &rxframe, std::vector &outframes); -void mbd_mc_tick(std::vector &outframes); +void mbd_mc_tick(std::vector &inpframes, std::vector &outframes); // finally, from here there is the preparation of the t_CTRL thread @@ -390,11 +390,14 @@ void s_start_CTRL_thread() } std::vector outctrlframes {}; +std::vector inputframes {}; + void tCTRL_startup(embot::os::Thread *t, void *param) { outctrlframes.reserve(5); + inputframes.reserve(5); // init agent of mc. it also init motor embot::app::application::theMBDagent &thembdagent = embot::app::application::theMBDagent::getInstance(); @@ -433,24 +436,24 @@ void tCTRL_onevent(embot::os::Thread *t, embot::os::EventMask eventmask, void *p if(true == embot::core::binary::mask::check(eventmask, evt_CTRL_canmcdecode)) { - size_t remaining {0}; - embot::prot::can::Frame frame {}; - if(true == shared->getrx(frame, remaining)) - { - mbd_mc_canparse(frame, outctrlframes); - //embot::app::application::theCANparserMC::getInstance().process(frame, outctrlframes); - } - - if(remaining > 0) + size_t num = shared->sizeofrx(); + + for(int i=0; isetEvent(evt_CTRL_canmcdecode); - } + size_t remaining {0}; + embot::prot::can::Frame frame {}; + if(true == shared->getrx(frame, remaining)) + { + inputframes.push_back(frame); + } + } } if(true == embot::core::binary::mask::check(eventmask, evt_CTRL_tick)) { // embot::core::print(std::string("tCTRL_onevent(evt_CTRL_tick): @ ") + embot::core::TimeFormatter(embot::core::now()).to_string()); - mbd_mc_tick(outctrlframes); + mbd_mc_tick(inputframes, outctrlframes); + } @@ -495,11 +498,42 @@ void mbd_mc_canparse(const embot::prot::can::Frame &rxframe, // called every 1 ms and always after mbd_mc_canparse(). // it may add can frames to be transmitted, e.g., those containing // the status of the control -void mbd_mc_tick(std::vector &outframes) +void mbd_mc_tick(std::vector &inpframes, std::vector &outframes) { // now we use the c++ agent to tick control and get an output - // vector of frames to transmit - embot::app::application::theMBDagent::getInstance().tick(outframes); + // vector of frames to transmit + +// size_t num = shared->sizeofrx(); +// +// for(int i=0; igetrx(frame, remaining)) +// { +// mbd_mc_canparse(frame, outctrlframes); +// //embot::app::application::theCANparserMC::getInstance().process(frame, outctrlframes); +// } +// } +// +// std::vector inpframes {}; + +// size_t num = shared->sizeofrx(); +// +// for(int i=0; igetrx(frame, remaining)) +// { +// inpframes.push_back(frame); +// } +// } + + + embot::app::application::theMBDagent::getInstance().tick(inpframes, outframes); + inputframes.clear(); + } diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/embot_app_application_theCANparserMBD.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/embot_app_application_theCANparserMBD.cpp index 58eccb6f6..13751f2dc 100644 --- a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/embot_app_application_theCANparserMBD.cpp +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/embot_app_application_theCANparserMBD.cpp @@ -47,8 +47,11 @@ struct embot::app::application::theCANparserMBD::Impl virtual bool get(const embot::prot::can::motor::polling::Message_SET_CONTROL_MODE::Info &info) { return true; } virtual bool get(const embot::prot::can::motor::polling::Message_GET_CONTROL_MODE::Info &info, embot::prot::can::motor::polling::Message_GET_CONTROL_MODE::ReplyInfo &replyinfo) { return true; } + }; + + dummyCANagentMBD dummyagent; Config config; @@ -88,9 +91,7 @@ bool embot::app::application::theCANparserMBD::Impl::initialise(const Config &cf } config = cfg; - - #warning VALENTINA VASCO: add in here initialization code for MBD CAN modem - + return true; } @@ -110,9 +111,8 @@ bool embot::app::application::theCANparserMBD::Impl::process(const embot::prot:: uint32_t tx_id {0}; frame.copyto(rx_id, rx_size, rx_data); - - #warning VALENTINA VASCO: add in here MBD CAN decoding. if any reply is required, push it back inside replies - + + // if the frame is recognised, the function must return true recognised = true; // and alert its agent diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/embot_app_application_theMBDagent.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/embot_app_application_theMBDagent.cpp index de3b3d730..9f81333c2 100644 --- a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/embot_app_application_theMBDagent.cpp +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/embot_app_application_theMBDagent.cpp @@ -21,6 +21,15 @@ #include "embot_hw_motor.h" #include "embot_app_theCANboardInfo.h" +#include "can_decoder.h" + +#include "can_rx_raw2struct.h" + +#include "SupervisorFSM_RX.h" +#include "SupervisorFSM_TX.h" + +#include "can_encoder.h" + // -------------------------------------------------------------------------------------------------------------------- // - pimpl: private implementation (see scott meyers: item 22 of effective modern c++, item 31 of effective c++ // -------------------------------------------------------------------------------------------------------------------- @@ -38,7 +47,86 @@ struct embot::app::application::theMBDagent::Impl Impl() = default; bool initialise(); - bool tick(std::vector &outframes); + bool tick(const std::vector &inpframes, std::vector &outframes); + + // Variables For CAN Decoder + MCControlModes rtb_mode; + CANErrorTypes rtb_type; + uint16_T rtb_peak; + uint16_T rtb_overload; + int16_T rtb_nominal; + int16_T rtb_current_o; + boolean_T rtb_motor; + boolean_T rtb_motor_e; + boolean_T rtb_control_mode; + boolean_T rtb_current_limit; + boolean_T rtb_desired_current; + boolean_T rtb_event; + + // Input Variables For Packet Formatter + uint8_T formatter_available; + uint8_T packet_length; + uint16_T packet_ID; + uint8_T packet_payload[8]; + + // Output Variables For Packet Formatter/Input Variables For Decoder + uint8_T decoder_available; + CANClassTypes packet_CLS; + uint8_T packet_SRC; + uint8_T packet_DST_TYP; + uint8_T packet_LEN; + boolean_T packet_M; + uint8_T packet_OPC; + uint8_T packet_ARG[7]; + + // Variables For Supervisor RX + const BoardState board_state_gnd = BoardState_HardwareConfigured; + const BoardCommand board_command_gnd = BoardCommand_ForceIdle; + ControlModes supervisor_control_mode; + boolean_T pid_reset; + real32_T position; + real32_T velocity; + real32_T current; + real32_T voltage; + + // JointPositions + real32_T joint_position {0}; + + // MotorSensors + real32_T iabc[3] {0,0,0}; + real32_T angle {0}; + real32_T omega {0}; + real32_T temperature {1}; + real32_T motor_sensors_voltage {0}; + real32_T current_threshold {0}; + real32_T cu_k_threshold {2}; + real32_T voltage_threshold {0}; + real32_T vo_k_threshold {2}; + real32_T temperature_threshold {0}; + real32_T te_c_threshold {2}; + real32_T motor_sensors_current {1}; + + + // Variables For Supervisor TX + boolean_T foc; + real32_T foc_current; + real32_T foc_position; + real32_T foc_velocity; + boolean_T event_foc; + + // Variables For CAN Encoder + uint8_T output_available; + uint16_T output_id; + uint8_T output_data[8]; + + can_messaging::CAN_RX_raw2struct can_packet_formatter; + can_messaging::CAN_Decoder can_decoder; + + SupervisorFSM_RXModelClass supervisor_rx; + SupervisorFSM_TXModelClass supervisor_tx; + + can_messaging::CAN_Encoder can_encoder; + }; @@ -49,17 +137,96 @@ bool embot::app::application::theMBDagent::Impl::initialise() return true; } - // something in here? - + can_decoder.init(&rtb_motor, &rtb_mode, &rtb_motor_e, &rtb_nominal, + &rtb_peak, &rtb_overload, &rtb_current_o, &rtb_control_mode, + &rtb_current_limit, &rtb_desired_current, &rtb_event, &rtb_type); + + + supervisor_rx.init(&supervisor_control_mode, &pid_reset, + &position, &velocity, ¤t, &voltage); + + supervisor_tx.init(¤t, &position, &velocity); + + can_encoder.initialize(); + initted = true; return initted; } -bool embot::app::application::theMBDagent::Impl::tick(std::vector &outframes) +bool embot::app::application::theMBDagent::Impl::tick(const std::vector &inpframes, std::vector &outframes) { + + uint8_t rx_data[8] {0}; + uint8_t rx_size {0}; + uint32_t rx_id {0}; + + + if (inpframes.size() == 0) { + formatter_available = 0; + } else { + formatter_available = 1; + embot::prot::can::Frame last_frame = inpframes.back(); + last_frame.copyto(rx_id, rx_size, rx_data); + } + + packet_length = (uint8_T)rx_size; + + packet_ID = (uint16_T)rx_id; + + for (int i=0;i 2000) { + joint_position = 0; + } + + supervisor_tx.step(&joint_position, &omega, &motor_sensors_current, &rtb_mode, + &foc_current, &foc_position, &foc_velocity, &event_foc); + + + can_encoder.step(&foc_current, &foc_position, &foc_velocity, &event_foc, + &output_available, &output_id, &output_data[0]); + + + std::string control_mode_string {"Not Configured"}; + + if (supervisor_control_mode == 1) { + control_mode_string = "Idle"; + } else if (supervisor_control_mode == 5) { + control_mode_string = "Velocity"; + } + + if (rtb_control_mode == 0) { + embot::core::print("Event Set Control Mode: False | Value of supervisor control mode variable: " + control_mode_string); + } else { + embot::core::print("Event Set Control Mode: True | Value of supervisor control mode variable: " + control_mode_string); + } + + if(output_available) + { + uint8_t data[8] = {0}; + embot::prot::can::Frame fr {output_id, 8, output_data}; - // something in here? - + outframes.push_back(fr); + } return true; } @@ -90,9 +257,9 @@ bool embot::app::application::theMBDagent::initialise(const Config &config) return pImpl->initialise(); } -bool embot::app::application::theMBDagent::tick(std::vector &outframes) +bool embot::app::application::theMBDagent::tick(const std::vector &inpframes, std::vector &outframes) { - return pImpl->tick(outframes); + return pImpl->tick(inpframes, outframes); } @@ -101,7 +268,6 @@ bool embot::app::application::theMBDagent::tick(std::vector &outframes); + bool tick(const std::vector &inpframes, std::vector &outframes); // interface to CANagentMBD virtual bool onrecognisedframe(void *p); diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder.cpp new file mode 100644 index 000000000..4cdfff122 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder.cpp @@ -0,0 +1,634 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: can_decoder.cpp +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#include "can_decoder.h" +#include "can_decoder_private.h" +#include "Double2MultiWord.h" +#include "MultiWordIor.h" +#include "uMultiWord2Double.h" +#include "uMultiWordShl.h" + +// Named constants for Chart: '/Decoding Logic' +const int32_T ca_event_ev_error_pck_malformed = 1; +const int32_T can_d_event_ev_error_pck_not4us = 2; +const int32_T can_decoder_CALL_EVENT = -1; +const uint8_T can_decoder_IN_Event_Error = 1U; +const uint8_T can_decoder_IN_Home = 1U; +const uint8_T can_decoder_IN_Home_o = 2U; +const int32_T event_ev_error_mode_unrecognize = 0; + +uint8_T rtP_CAN_ID_AMC = 1U; +real32_T rtP_CAN_ANGLE_DEG2ICUB = 182.044449F; +uint16_T rtP_CAN_ID_HOST = 0U; + +namespace can_messaging +{ + int32_T CAN_Decoder::can_de_safe_cast_to_MCStreaming(int32_T input) + { + int32_T y; + + // Initialize output value to default value for MCStreaming (Desired_Current) + y = 15; + if ((input == 0) || (input == 15)) { + // Set output value to input value if it is a member of MCStreaming + y = input; + } + + return y; + } + + // Function for Chart: '/Decoding Logic' + real_T CAN_Decoder::can_decoder_merge_2bytes(real_T bl, real_T bh) + { + uint64m_T tmp; + uint64m_T tmp_0; + uint64m_T tmp_1; + uint64m_T tmp_2; + Double2MultiWord(bh, &tmp_2.chunks[0U], 2); + uMultiWordShl(&tmp_2.chunks[0U], 2, 8U, &tmp_1.chunks[0U], 2); + Double2MultiWord(uMultiWord2Double(&tmp_1.chunks[0U], 2, 0), &tmp_0.chunks + [0U], 2); + Double2MultiWord(bl, &tmp_2.chunks[0U], 2); + MultiWordIor(&tmp_0.chunks[0U], &tmp_2.chunks[0U], &tmp.chunks[0U], 2); + return uMultiWord2Double(&tmp.chunks[0U], 2, 0); + } + + // Function for Chart: '/Decoding Logic' + void CAN_Decoder::can_decoder_ERROR_HANDLING(const uint8_T + *rtu_pck_rx_available) + { + switch (can_decoder_DW.is_ERROR_HANDLING) { + case can_decoder_IN_Event_Error: + can_decoder_DW.is_ERROR_HANDLING = can_decoder_IN_Home_o; + can_decoder_DW.cmd_processed = 0U; + break; + + case can_decoder_IN_Home_o: + switch (can_decoder_DW.sfEvent) { + case can_d_event_ev_error_pck_not4us: + can_decoder_B.error_type = CANErrorTypes_Packet_Not4Us; + can_decoder_DW.ev_errorEventCounter++; + can_decoder_DW.is_ERROR_HANDLING = can_decoder_IN_Event_Error; + break; + + case ca_event_ev_error_pck_malformed: + can_decoder_B.error_type = CANErrorTypes_Packet_Malformed; + can_decoder_DW.ev_errorEventCounter++; + can_decoder_DW.is_ERROR_HANDLING = can_decoder_IN_Event_Error; + break; + + case event_ev_error_mode_unrecognize: + can_decoder_B.error_type = CANErrorTypes_Mode_Unrecognized; + can_decoder_DW.ev_errorEventCounter++; + can_decoder_DW.is_ERROR_HANDLING = can_decoder_IN_Event_Error; + break; + + default: + // Outputs for Atomic SubSystem: '/CAN_Decoder' + // Chart: '/Decoding Logic' + if ((*rtu_pck_rx_available > 0) && (can_decoder_DW.cmd_processed == 0)) + { + can_decoder_B.error_type = CANErrorTypes_Packet_Unrecognized; + can_decoder_DW.ev_errorEventCounter++; + can_decoder_DW.is_ERROR_HANDLING = can_decoder_IN_Home_o; + can_decoder_DW.cmd_processed = 0U; + } else if (can_decoder_DW.cmd_processed > 1) { + can_decoder_B.error_type = CANErrorTypes_Packet_MultiFunctionsDetected; + can_decoder_DW.ev_errorEventCounter++; + can_decoder_DW.is_ERROR_HANDLING = can_decoder_IN_Home_o; + can_decoder_DW.cmd_processed = 0U; + } else { + can_decoder_B.error_type = CANErrorTypes_No_Error; + can_decoder_DW.is_ERROR_HANDLING = can_decoder_IN_Home_o; + can_decoder_DW.cmd_processed = 0U; + } + + // End of Chart: '/Decoding Logic' + // End of Outputs for SubSystem: '/CAN_Decoder' + break; + } + break; + } + } + + // Function for Chart: '/Decoding Logic' + real_T CAN_Decoder::can_d_is_controlmode_recognized(real_T mode) + { + real_T ok; + ok = 1.0; + if ((mode != 0.0) && (mode != 80.0) && (mode != 10.0) && (mode != 6.0)) { + ok = 0.0; + } + + return ok; + } + + int32_T CAN_Decoder::can_safe_cast_to_MCControlModes(int32_T input) + { + int32_T y; + + // Initialize output value to default value for MCControlModes (Idle) + y = 0; + if ((input == 0) || (input == 6) || (input == 10) || (input == 80)) { + // Set output value to input value if it is a member of MCControlModes + y = input; + } + + return y; + } +} + +namespace can_messaging +{ + // System initialize for referenced model: 'can_decoder' + void CAN_Decoder::init(boolean_T *rty_messages_rx_control_mode_mo, + MCControlModes *rty_messages_rx_control_mode__g, boolean_T + *rty_messages_rx_current_limit_m, int16_T *rty_messages_rx_current_limit_n, + uint16_T *rty_messages_rx_current_limit_p, uint16_T + *rty_messages_rx_current_limit_o, int16_T *rty_messages_rx_desired_current, + boolean_T *rty_events_rx_control_mode, boolean_T + *rty_events_rx_current_limit, boolean_T *rty_events_rx_desired_current, + boolean_T *rty_errors_rx_event, CANErrorTypes *rty_errors_rx_type) + { + // SystemInitialize for Atomic SubSystem: '/CAN_Decoder' + // SystemInitialize for Chart: '/Decoding Logic' + can_decoder_B.msg_set_control_mode.motor = false; + can_decoder_B.msg_set_control_mode.mode = MCControlModes_Idle; + can_decoder_B.msg_set_current_limit.motor = false; + can_decoder_B.msg_set_current_limit.nominal = 0; + can_decoder_B.msg_set_current_limit.peak = 0U; + can_decoder_B.msg_set_current_limit.overload = 0U; + can_decoder_B.msg_desired_current.current = 0; + can_decoder_DW.sfEvent = can_decoder_CALL_EVENT; + + // Chart: '/Decoding Logic' + can_decoder_DW.is_active_SET_CONTROL_MODE = 1U; + can_decoder_DW.is_SET_CONTROL_MODE = can_decoder_IN_Home; + can_decoder_DW.is_active_DESIRED_CURRENT = 1U; + can_decoder_DW.is_DESIRED_CURRENT = can_decoder_IN_Home; + can_decoder_DW.is_active_SET_CURRENT_LIMIT = 1U; + can_decoder_DW.is_SET_CURRENT_LIMIT = can_decoder_IN_Home; + can_decoder_DW.is_active_ERROR_HANDLING = 1U; + can_decoder_DW.is_ERROR_HANDLING = can_decoder_IN_Home_o; + + // SystemInitialize for BusCreator: '/Bus Creator1' + can_decoder_B.BusCreator1.control_mode = can_decoder_B.ev_set_control_mode; + can_decoder_B.BusCreator1.current_limit = can_decoder_B.ev_set_current_limit; + can_decoder_B.BusCreator1.desired_current = can_decoder_B.ev_desired_current; + + // SystemInitialize for BusCreator: '/Bus Creator2' + can_decoder_B.BusCreator2.control_mode = can_decoder_B.msg_set_control_mode; + can_decoder_B.BusCreator2.current_limit = + can_decoder_B.msg_set_current_limit; + can_decoder_B.BusCreator2.desired_current = + can_decoder_B.msg_desired_current; + + // SystemInitialize for BusCreator: '/Bus Creator3' + can_decoder_B.BusCreator3.event = can_decoder_B.ev_error; + can_decoder_B.BusCreator3.type = can_decoder_B.error_type; + + // End of SystemInitialize for SubSystem: '/CAN_Decoder' + + // SystemInitialize for SignalConversion generated from: '/errors_rx' + *rty_errors_rx_event = can_decoder_B.BusCreator3.event; + + // SystemInitialize for SignalConversion generated from: '/errors_rx' + *rty_errors_rx_type = can_decoder_B.BusCreator3.type; + + // SystemInitialize for SignalConversion generated from: '/events_rx' + *rty_events_rx_control_mode = can_decoder_B.BusCreator1.control_mode; + + // SystemInitialize for SignalConversion generated from: '/events_rx' + *rty_events_rx_current_limit = can_decoder_B.BusCreator1.current_limit; + + // SystemInitialize for SignalConversion generated from: '/events_rx' + *rty_events_rx_desired_current = can_decoder_B.BusCreator1.desired_current; + + // SystemInitialize for SignalConversion generated from: '/messages_rx' + *rty_messages_rx_control_mode_mo = + can_decoder_B.BusCreator2.control_mode.motor; + + // SystemInitialize for SignalConversion generated from: '/messages_rx' + *rty_messages_rx_control_mode__g = + can_decoder_B.BusCreator2.control_mode.mode; + + // SystemInitialize for SignalConversion generated from: '/messages_rx' + *rty_messages_rx_current_limit_m = + can_decoder_B.BusCreator2.current_limit.motor; + + // SystemInitialize for SignalConversion generated from: '/messages_rx' + *rty_messages_rx_current_limit_n = + can_decoder_B.BusCreator2.current_limit.nominal; + + // SystemInitialize for SignalConversion generated from: '/messages_rx' + *rty_messages_rx_current_limit_p = + can_decoder_B.BusCreator2.current_limit.peak; + + // SystemInitialize for SignalConversion generated from: '/messages_rx' + *rty_messages_rx_current_limit_o = + can_decoder_B.BusCreator2.current_limit.overload; + + // SystemInitialize for SignalConversion generated from: '/messages_rx' + *rty_messages_rx_desired_current = + can_decoder_B.BusCreator2.desired_current.current; + } + + // Output and update for referenced model: 'can_decoder' + void CAN_Decoder::step(const uint8_T *rtu_pck_rx_available, const + CANClassTypes *rtu_pck_rx_packets_ID_CLS, const uint8_T + *rtu_pck_rx_packets_ID_SRC, const uint8_T *rtu_pck_rx_packets_ID_DST_TYP, + const uint8_T *rtu_pck_rx_packets_PAYLOAD_LEN, const boolean_T + *rtu_pck_rx_packets_PAYLOAD_CMD_, const uint8_T + *rtu_pck_rx_packets_PAYLOAD_CM_k, const uint8_T + rtu_pck_rx_packets_PAYLOAD_ARG[7], boolean_T + *rty_messages_rx_control_mode_mo, MCControlModes + *rty_messages_rx_control_mode__g, boolean_T *rty_messages_rx_current_limit_m, + int16_T *rty_messages_rx_current_limit_n, uint16_T + *rty_messages_rx_current_limit_p, uint16_T *rty_messages_rx_current_limit_o, + int16_T *rty_messages_rx_desired_current, boolean_T + *rty_events_rx_control_mode, boolean_T *rty_events_rx_current_limit, + boolean_T *rty_events_rx_desired_current, boolean_T *rty_errors_rx_event, + CANErrorTypes *rty_errors_rx_type) + { + real_T tmp; + int32_T i; + + // Outputs for Atomic SubSystem: '/CAN_Decoder' + // BusCreator generated from: '/Decoding Logic' + can_decoder_B.BusConversion_InsertedFor_Decod.ID.CLS = + *rtu_pck_rx_packets_ID_CLS; + can_decoder_B.BusConversion_InsertedFor_Decod.ID.SRC = + *rtu_pck_rx_packets_ID_SRC; + can_decoder_B.BusConversion_InsertedFor_Decod.ID.DST_TYP = + *rtu_pck_rx_packets_ID_DST_TYP; + + // BusCreator generated from: '/Decoding Logic' + can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.CMD.M = + *rtu_pck_rx_packets_PAYLOAD_CMD_; + can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.CMD.OPC = + *rtu_pck_rx_packets_PAYLOAD_CM_k; + + // BusCreator generated from: '/Decoding Logic' + can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.LEN = + *rtu_pck_rx_packets_PAYLOAD_LEN; + for (i = 0; i < 7; i++) { + can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.ARG[i] = + rtu_pck_rx_packets_PAYLOAD_ARG[i]; + } + + // Chart: '/Decoding Logic' incorporates: + // Constant: '/Constant' + + can_decoder_DW.sfEvent = can_decoder_CALL_EVENT; + + // This state chart is responsible for decoding incoming CAN packets. + if ((can_decoder_DW.is_active_SET_CONTROL_MODE != 0U) && + (can_decoder_DW.is_SET_CONTROL_MODE == 1) && ((*rtu_pck_rx_available > 0) + && (can_decoder_B.BusConversion_InsertedFor_Decod.ID.CLS == + CANClassTypes_Motor_Control_Command))) { + if (can_decoder_B.BusConversion_InsertedFor_Decod.ID.DST_TYP == + rtP_CAN_ID_AMC) { + if (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.LEN >= 1) { + if (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.CMD.OPC == + static_cast(MCOPC_Set_Control_Mode)) { + if (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.LEN >= 2) + { + if (can_d_is_controlmode_recognized(static_cast + (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.ARG[0])) + != 0.0) { + can_decoder_B.msg_set_control_mode.motor = + can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.CMD.M; + can_decoder_B.msg_set_control_mode.mode = + static_cast(can_safe_cast_to_MCControlModes + (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.ARG[0])); + i = can_decoder_DW.cmd_processed + 1; + if (can_decoder_DW.cmd_processed + 1 > 65535) { + i = 65535; + } + + can_decoder_DW.cmd_processed = static_cast(i); + can_decoder_DW.ev_set_control_modeEventCounter++; + can_decoder_DW.is_SET_CONTROL_MODE = can_decoder_IN_Home; + } else { + i = can_decoder_DW.sfEvent; + can_decoder_DW.sfEvent = event_ev_error_mode_unrecognize; + if (can_decoder_DW.is_active_ERROR_HANDLING != 0U) { + can_decoder_ERROR_HANDLING(rtu_pck_rx_available); + } + + can_decoder_DW.sfEvent = i; + can_decoder_DW.is_SET_CONTROL_MODE = can_decoder_IN_Home; + } + } else { + i = can_decoder_DW.sfEvent; + can_decoder_DW.sfEvent = ca_event_ev_error_pck_malformed; + if (can_decoder_DW.is_active_ERROR_HANDLING != 0U) { + can_decoder_ERROR_HANDLING(rtu_pck_rx_available); + } + + can_decoder_DW.sfEvent = i; + can_decoder_DW.is_SET_CONTROL_MODE = can_decoder_IN_Home; + } + } else { + can_decoder_DW.is_SET_CONTROL_MODE = can_decoder_IN_Home; + } + } else { + i = can_decoder_DW.sfEvent; + can_decoder_DW.sfEvent = ca_event_ev_error_pck_malformed; + if (can_decoder_DW.is_active_ERROR_HANDLING != 0U) { + can_decoder_ERROR_HANDLING(rtu_pck_rx_available); + } + + can_decoder_DW.sfEvent = i; + can_decoder_DW.is_SET_CONTROL_MODE = can_decoder_IN_Home; + } + } else { + i = can_decoder_DW.sfEvent; + can_decoder_DW.sfEvent = can_d_event_ev_error_pck_not4us; + if (can_decoder_DW.is_active_ERROR_HANDLING != 0U) { + can_decoder_ERROR_HANDLING(rtu_pck_rx_available); + } + + can_decoder_DW.sfEvent = i; + can_decoder_DW.is_SET_CONTROL_MODE = can_decoder_IN_Home; + } + } + + if ((can_decoder_DW.is_active_DESIRED_CURRENT != 0U) && + (can_decoder_DW.is_DESIRED_CURRENT == 1) && ((*rtu_pck_rx_available > 0) + && (can_decoder_B.BusConversion_InsertedFor_Decod.ID.CLS == + CANClassTypes_Motor_Control_Streaming) && + (can_de_safe_cast_to_MCStreaming + (can_decoder_B.BusConversion_InsertedFor_Decod.ID.DST_TYP) == + static_cast(MCStreaming_Desired_Current)))) { + if (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.LEN == 8) { + tmp = can_decoder_merge_2bytes(static_cast + (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.ARG[5]), + static_cast + (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.ARG[6])); + if (tmp < 32768.0) { + if (tmp >= -32768.0) { + can_decoder_B.msg_desired_current.current = static_cast(tmp); + } else { + can_decoder_B.msg_desired_current.current = MIN_int16_T; + } + } else { + can_decoder_B.msg_desired_current.current = MAX_int16_T; + } + + i = can_decoder_DW.cmd_processed + 1; + if (can_decoder_DW.cmd_processed + 1 > 65535) { + i = 65535; + } + + can_decoder_DW.cmd_processed = static_cast(i); + can_decoder_DW.ev_desired_currentEventCounter++; + can_decoder_DW.is_DESIRED_CURRENT = can_decoder_IN_Home; + } else { + i = can_decoder_DW.sfEvent; + can_decoder_DW.sfEvent = ca_event_ev_error_pck_malformed; + if (can_decoder_DW.is_active_ERROR_HANDLING != 0U) { + can_decoder_ERROR_HANDLING(rtu_pck_rx_available); + } + + can_decoder_DW.sfEvent = i; + can_decoder_DW.is_DESIRED_CURRENT = can_decoder_IN_Home; + } + } + + if ((can_decoder_DW.is_active_SET_CURRENT_LIMIT != 0U) && + (can_decoder_DW.is_SET_CURRENT_LIMIT == 1) && ((*rtu_pck_rx_available > + 0) && (can_decoder_B.BusConversion_InsertedFor_Decod.ID.CLS == + CANClassTypes_Motor_Control_Command))) { + if (can_decoder_B.BusConversion_InsertedFor_Decod.ID.DST_TYP == + rtP_CAN_ID_AMC) { + if (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.LEN >= 1) { + if (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.CMD.OPC == + static_cast(MCOPC_Set_Current_Limit)) { + if (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.LEN == 8) + { + can_decoder_B.msg_set_current_limit.motor = + can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.CMD.M; + tmp = can_decoder_merge_2bytes(static_cast + (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.ARG[1]), + static_cast + (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.ARG[2])); + if (tmp < 32768.0) { + if (tmp >= -32768.0) { + can_decoder_B.msg_set_current_limit.nominal = + static_cast(tmp); + } else { + can_decoder_B.msg_set_current_limit.nominal = MIN_int16_T; + } + } else { + can_decoder_B.msg_set_current_limit.nominal = MAX_int16_T; + } + + tmp = can_decoder_merge_2bytes(static_cast + (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.ARG[3]), + static_cast + (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.ARG[4])); + if (tmp < 65536.0) { + if (tmp >= 0.0) { + can_decoder_B.msg_set_current_limit.peak = + static_cast(tmp); + } else { + can_decoder_B.msg_set_current_limit.peak = 0U; + } + } else { + can_decoder_B.msg_set_current_limit.peak = MAX_uint16_T; + } + + tmp = can_decoder_merge_2bytes(static_cast + (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.ARG[5]), + static_cast + (can_decoder_B.BusConversion_InsertedFor_Decod.PAYLOAD.ARG[6])); + if (tmp < 65536.0) { + if (tmp >= 0.0) { + can_decoder_B.msg_set_current_limit.overload = + static_cast(tmp); + } else { + can_decoder_B.msg_set_current_limit.overload = 0U; + } + } else { + can_decoder_B.msg_set_current_limit.overload = MAX_uint16_T; + } + + i = can_decoder_DW.cmd_processed + 1; + if (can_decoder_DW.cmd_processed + 1 > 65535) { + i = 65535; + } + + can_decoder_DW.cmd_processed = static_cast(i); + can_decoder_DW.ev_set_current_limitEventCounte++; + can_decoder_DW.is_SET_CURRENT_LIMIT = can_decoder_IN_Home; + } else { + i = can_decoder_DW.sfEvent; + can_decoder_DW.sfEvent = ca_event_ev_error_pck_malformed; + if (can_decoder_DW.is_active_ERROR_HANDLING != 0U) { + can_decoder_ERROR_HANDLING(rtu_pck_rx_available); + } + + can_decoder_DW.sfEvent = i; + can_decoder_DW.is_SET_CURRENT_LIMIT = can_decoder_IN_Home; + } + } else { + can_decoder_DW.is_SET_CURRENT_LIMIT = can_decoder_IN_Home; + } + } else { + i = can_decoder_DW.sfEvent; + can_decoder_DW.sfEvent = ca_event_ev_error_pck_malformed; + if (can_decoder_DW.is_active_ERROR_HANDLING != 0U) { + can_decoder_ERROR_HANDLING(rtu_pck_rx_available); + } + + can_decoder_DW.sfEvent = i; + can_decoder_DW.is_SET_CURRENT_LIMIT = can_decoder_IN_Home; + } + } else { + i = can_decoder_DW.sfEvent; + can_decoder_DW.sfEvent = can_d_event_ev_error_pck_not4us; + if (can_decoder_DW.is_active_ERROR_HANDLING != 0U) { + can_decoder_ERROR_HANDLING(rtu_pck_rx_available); + } + + can_decoder_DW.sfEvent = i; + can_decoder_DW.is_SET_CURRENT_LIMIT = can_decoder_IN_Home; + } + } + + if (can_decoder_DW.is_active_ERROR_HANDLING != 0U) { + can_decoder_ERROR_HANDLING(rtu_pck_rx_available); + } + + if (can_decoder_DW.ev_set_control_modeEventCounter > 0U) { + can_decoder_B.ev_set_control_mode = !can_decoder_B.ev_set_control_mode; + can_decoder_DW.ev_set_control_modeEventCounter--; + } + + if (can_decoder_DW.ev_set_current_limitEventCounte > 0U) { + can_decoder_B.ev_set_current_limit = !can_decoder_B.ev_set_current_limit; + can_decoder_DW.ev_set_current_limitEventCounte--; + } + + if (can_decoder_DW.ev_desired_currentEventCounter > 0U) { + can_decoder_B.ev_desired_current = !can_decoder_B.ev_desired_current; + can_decoder_DW.ev_desired_currentEventCounter--; + } + + if (can_decoder_DW.ev_errorEventCounter > 0U) { + can_decoder_B.ev_error = !can_decoder_B.ev_error; + can_decoder_DW.ev_errorEventCounter--; + } + + // End of Chart: '/Decoding Logic' + + // BusCreator: '/Bus Creator1' + can_decoder_B.BusCreator1.control_mode = can_decoder_B.ev_set_control_mode; + can_decoder_B.BusCreator1.current_limit = can_decoder_B.ev_set_current_limit; + can_decoder_B.BusCreator1.desired_current = can_decoder_B.ev_desired_current; + + // BusCreator: '/Bus Creator2' + can_decoder_B.BusCreator2.control_mode = can_decoder_B.msg_set_control_mode; + can_decoder_B.BusCreator2.current_limit = + can_decoder_B.msg_set_current_limit; + can_decoder_B.BusCreator2.desired_current = + can_decoder_B.msg_desired_current; + + // BusCreator: '/Bus Creator3' + can_decoder_B.BusCreator3.event = can_decoder_B.ev_error; + can_decoder_B.BusCreator3.type = can_decoder_B.error_type; + + // End of Outputs for SubSystem: '/CAN_Decoder' + + // SignalConversion generated from: '/errors_rx' + *rty_errors_rx_event = can_decoder_B.BusCreator3.event; + + // SignalConversion generated from: '/errors_rx' + *rty_errors_rx_type = can_decoder_B.BusCreator3.type; + + // SignalConversion generated from: '/events_rx' + *rty_events_rx_control_mode = can_decoder_B.BusCreator1.control_mode; + + // SignalConversion generated from: '/events_rx' + *rty_events_rx_current_limit = can_decoder_B.BusCreator1.current_limit; + + // SignalConversion generated from: '/events_rx' + *rty_events_rx_desired_current = can_decoder_B.BusCreator1.desired_current; + + // SignalConversion generated from: '/messages_rx' + *rty_messages_rx_control_mode_mo = + can_decoder_B.BusCreator2.control_mode.motor; + + // SignalConversion generated from: '/messages_rx' + *rty_messages_rx_control_mode__g = + can_decoder_B.BusCreator2.control_mode.mode; + + // SignalConversion generated from: '/messages_rx' + *rty_messages_rx_current_limit_m = + can_decoder_B.BusCreator2.current_limit.motor; + + // SignalConversion generated from: '/messages_rx' + *rty_messages_rx_current_limit_n = + can_decoder_B.BusCreator2.current_limit.nominal; + + // SignalConversion generated from: '/messages_rx' + *rty_messages_rx_current_limit_p = + can_decoder_B.BusCreator2.current_limit.peak; + + // SignalConversion generated from: '/messages_rx' + *rty_messages_rx_current_limit_o = + can_decoder_B.BusCreator2.current_limit.overload; + + // SignalConversion generated from: '/messages_rx' + *rty_messages_rx_desired_current = + can_decoder_B.BusCreator2.desired_current.current; + } + + // Constructor + CAN_Decoder::CAN_Decoder() : + can_decoder_B(), + can_decoder_DW() + { + // Currently there is no constructor body generated. + } + + // Destructor + CAN_Decoder::~CAN_Decoder() + { + // Currently there is no destructor body generated. + } + + // Real-Time Model get method + can_messaging::CAN_Decoder::RT_MODEL_can_decoder_T * CAN_Decoder::getRTM() + { + return (&can_decoder_M); + } + + // member function to setup error status pointer + void CAN_Decoder::setErrorStatusPointer(const char_T **rt_errorStatus) + { + rtmSetErrorStatusPointer((&can_decoder_M), rt_errorStatus); + } +} + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder.h new file mode 100644 index 000000000..9f4545b4f --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder.h @@ -0,0 +1,170 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: can_decoder.h +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_can_decoder_h_ +#define RTW_HEADER_can_decoder_h_ +#include +#include +#include "rtwtypes.h" +#include "can_decoder_types.h" + +// Shared type includes +#include "multiword_types.h" +#include + +// Model block global parameters (default storage) +extern uint8_T rtP_CAN_ID_AMC; // Variable: CAN_ID_AMC + // Referenced by: '/Constant' + + +// Class declaration for model can_decoder +namespace can_messaging +{ + class CAN_Decoder { + // public data and function members + public: + // Block signals for model 'can_decoder' + struct B_can_decoder_T { + BUS_CAN_PACKET_RX BusConversion_InsertedFor_Decod; + BUS_MESSAGES_RX BusCreator2; // '/Bus Creator2' + BUS_MSG_DESIRED_CURRENT msg_desired_current;// '/Decoding Logic' + BUS_MSG_CURRENT_LIMIT msg_set_current_limit;// '/Decoding Logic' + BUS_MSG_CONTROL_MODE msg_set_control_mode;// '/Decoding Logic' + BUS_EVENTS_RX BusCreator1; // '/Bus Creator1' + BUS_CAN_RX_ERRORS BusCreator3; // '/Bus Creator3' + CANErrorTypes error_type; // '/Decoding Logic' + boolean_T ev_set_control_mode; // '/Decoding Logic' + boolean_T ev_set_current_limit; // '/Decoding Logic' + boolean_T ev_desired_current; // '/Decoding Logic' + boolean_T ev_error; // '/Decoding Logic' + }; + + // Block states (default storage) for model 'can_decoder' + struct DW_can_decoder_T { + int32_T sfEvent; // '/Decoding Logic' + uint32_T ev_set_control_modeEventCounter;// '/Decoding Logic' + uint32_T ev_set_current_limitEventCounte;// '/Decoding Logic' + uint32_T ev_desired_currentEventCounter;// '/Decoding Logic' + uint32_T ev_errorEventCounter; // '/Decoding Logic' + uint16_T cmd_processed; // '/Decoding Logic' + uint8_T is_SET_CONTROL_MODE; // '/Decoding Logic' + uint8_T is_active_SET_CONTROL_MODE;// '/Decoding Logic' + uint8_T is_DESIRED_CURRENT; // '/Decoding Logic' + uint8_T is_active_DESIRED_CURRENT;// '/Decoding Logic' + uint8_T is_SET_CURRENT_LIMIT; // '/Decoding Logic' + uint8_T is_active_SET_CURRENT_LIMIT;// '/Decoding Logic' + uint8_T is_ERROR_HANDLING; // '/Decoding Logic' + uint8_T is_active_ERROR_HANDLING;// '/Decoding Logic' + }; + + // Real-time Model Data Structure + struct RT_MODEL_can_decoder_T { + const char_T **errorStatus; + }; + + // Block signals + B_can_decoder_T can_decoder_B; + + // Block states + DW_can_decoder_T can_decoder_DW; + + // model step function + void step(const uint8_T *rtu_pck_rx_available, const CANClassTypes + *rtu_pck_rx_packets_ID_CLS, const uint8_T + *rtu_pck_rx_packets_ID_SRC, const uint8_T + *rtu_pck_rx_packets_ID_DST_TYP, const uint8_T + *rtu_pck_rx_packets_PAYLOAD_LEN, const boolean_T + *rtu_pck_rx_packets_PAYLOAD_CMD_, const uint8_T + *rtu_pck_rx_packets_PAYLOAD_CM_k, const uint8_T + rtu_pck_rx_packets_PAYLOAD_ARG[7], boolean_T + *rty_messages_rx_control_mode_mo, MCControlModes + *rty_messages_rx_control_mode__g, boolean_T + *rty_messages_rx_current_limit_m, int16_T + *rty_messages_rx_current_limit_n, uint16_T + *rty_messages_rx_current_limit_p, uint16_T + *rty_messages_rx_current_limit_o, int16_T + *rty_messages_rx_desired_current, boolean_T + *rty_events_rx_control_mode, boolean_T + *rty_events_rx_current_limit, boolean_T + *rty_events_rx_desired_current, boolean_T *rty_errors_rx_event, + CANErrorTypes *rty_errors_rx_type); + + // Initial conditions function + void init(boolean_T *rty_messages_rx_control_mode_mo, MCControlModes + *rty_messages_rx_control_mode__g, boolean_T + *rty_messages_rx_current_limit_m, int16_T + *rty_messages_rx_current_limit_n, uint16_T + *rty_messages_rx_current_limit_p, uint16_T + *rty_messages_rx_current_limit_o, int16_T + *rty_messages_rx_desired_current, boolean_T + *rty_events_rx_control_mode, boolean_T + *rty_events_rx_current_limit, boolean_T + *rty_events_rx_desired_current, boolean_T *rty_errors_rx_event, + CANErrorTypes *rty_errors_rx_type); + + // Constructor + CAN_Decoder(); + + // Destructor + ~CAN_Decoder(); + + // Real-Time Model get method + can_messaging::CAN_Decoder::RT_MODEL_can_decoder_T * getRTM(); + + //member function to setup error status pointer + void setErrorStatusPointer(const char_T **rt_errorStatus); + + // private data and function members + private: + // Real-Time Model + RT_MODEL_can_decoder_T can_decoder_M; + + // private member function(s) for subsystem '/TmpModelReferenceSubsystem' + int32_T can_de_safe_cast_to_MCStreaming(int32_T input); + real_T can_decoder_merge_2bytes(real_T bl, real_T bh); + void can_decoder_ERROR_HANDLING(const uint8_T *rtu_pck_rx_available); + real_T can_d_is_controlmode_recognized(real_T mode); + int32_T can_safe_cast_to_MCControlModes(int32_T input); + }; +} + +//- +// The generated code includes comments that allow you to trace directly +// back to the appropriate location in the model. The basic format +// is /block_name, where system is the system number (uniquely +// assigned by Simulink) and block_name is the name of the block. +// +// Use the MATLAB hilite_system command to trace the generated code back +// to the model. For example, +// +// hilite_system('') - opens system 3 +// hilite_system('/Kp') - opens and selects block Kp which resides in S3 +// +// Here is the system hierarchy for this model +// +// '' : 'can_decoder' +// '' : 'can_decoder/CAN_Decoder' +// '' : 'can_decoder/CAN_Decoder/Decoding Logic' + +#endif // RTW_HEADER_can_decoder_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder_private.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder_private.h new file mode 100644 index 000000000..4e91971a3 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder_private.h @@ -0,0 +1,46 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: can_decoder_private.h +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_can_decoder_private_h_ +#define RTW_HEADER_can_decoder_private_h_ +#include "rtwtypes.h" +#include "multiword_types.h" + +// Macros for accessing real-time model data structure +#ifndef rtmGetErrorStatus +#define rtmGetErrorStatus(rtm) (*((rtm)->errorStatus)) +#endif + +#ifndef rtmSetErrorStatus +#define rtmSetErrorStatus(rtm, val) (*((rtm)->errorStatus) = (val)) +#endif + +#ifndef rtmGetErrorStatusPointer +#define rtmGetErrorStatusPointer(rtm) (rtm)->errorStatus +#endif + +#ifndef rtmSetErrorStatusPointer +#define rtmSetErrorStatusPointer(rtm, val) ((rtm)->errorStatus = (val)) +#endif +#endif // RTW_HEADER_can_decoder_private_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder_types.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder_types.h new file mode 100644 index 000000000..71cba7bf4 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-decoder/can_decoder_types.h @@ -0,0 +1,251 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: can_decoder_types.h +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_can_decoder_types_h_ +#define RTW_HEADER_can_decoder_types_h_ +#include "rtwtypes.h" + +// Model Code Variants +#ifndef DEFINED_TYPEDEF_FOR_CANClassTypes_ +#define DEFINED_TYPEDEF_FOR_CANClassTypes_ + +typedef enum { + CANClassTypes_Motor_Control_Command = 0,// Default value + CANClassTypes_Motor_Control_Streaming = 1, + CANClassTypes_Analog_Sensors_Command = 2, + CANClassTypes_Skin_Sensor_Streaming = 4, + CANClassTypes_Inertial_Sensor_Streaming = 5, + CANClassTypes_Future_Use = 6, + CANClassTypes_Management_Bootloader = 7 +} CANClassTypes; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_ID_RX_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_ID_RX_ + +struct BUS_CAN_ID_RX +{ + // 3 bits defining the message class type. + CANClassTypes CLS; + + // 4 bits defining the source ID. + uint8_T SRC; + + // 4 bits definint the destination ID or the message sub-type. + uint8_T DST_TYP; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_CMD_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_CMD_ + +struct BUS_CAN_CMD +{ + // 1 bits for motor selector. + boolean_T M; + + // 7 bits defining the operational code of the command. + uint8_T OPC; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_PAYLOAD_RX_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_PAYLOAD_RX_ + +struct BUS_CAN_PAYLOAD_RX +{ + // Actual length of the total PAYLOAD field. + uint8_T LEN; + BUS_CAN_CMD CMD; + + // 7 bytes for the command argument. + uint8_T ARG[7]; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_PACKET_RX_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_PACKET_RX_ + +// Fields of a received CAN packet. +struct BUS_CAN_PACKET_RX +{ + // ID of the CAN packet. + BUS_CAN_ID_RX ID; + + // PAYLOAD of the CAN packet. + BUS_CAN_PAYLOAD_RX PAYLOAD; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_RX_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_RX_ + +// Specifies the CAN input. +struct BUS_CAN_RX +{ + // Number of available input packets. + uint8_T available; + BUS_CAN_PACKET_RX packets; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_EVENTS_RX_ +#define DEFINED_TYPEDEF_FOR_BUS_EVENTS_RX_ + +// Aggregate of all events specifying types of received messages. +struct BUS_EVENTS_RX +{ + boolean_T control_mode; + boolean_T current_limit; + boolean_T desired_current; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_MCControlModes_ +#define DEFINED_TYPEDEF_FOR_MCControlModes_ + +typedef enum { + MCControlModes_Idle = 0, // Default value + MCControlModes_OpenLoop = 80, + MCControlModes_SpeedVoltage = 10, + MCControlModes_Current = 6 +} MCControlModes; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MSG_CONTROL_MODE_ +#define DEFINED_TYPEDEF_FOR_BUS_MSG_CONTROL_MODE_ + +// Fields of a CONTROL_MODE message. +struct BUS_MSG_CONTROL_MODE +{ + // Motor selector. + boolean_T motor; + + // Control mode. + MCControlModes mode; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MSG_CURRENT_LIMIT_ +#define DEFINED_TYPEDEF_FOR_BUS_MSG_CURRENT_LIMIT_ + +// Fields of a CURRENT_LIMIT message. +struct BUS_MSG_CURRENT_LIMIT +{ + // Motor selector. + boolean_T motor; + + // Nominal current in mA. + int16_T nominal; + + // Peak current in mA. + uint16_T peak; + + // Overload current in mA. + uint16_T overload; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MSG_DESIRED_CURRENT_ +#define DEFINED_TYPEDEF_FOR_BUS_MSG_DESIRED_CURRENT_ + +// Fields of a DESIRED_CURRENT message. +struct BUS_MSG_DESIRED_CURRENT +{ + // Nominal current in mA. + int16_T current; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MESSAGES_RX_ +#define DEFINED_TYPEDEF_FOR_BUS_MESSAGES_RX_ + +// Aggregate of all CAN received messages. +struct BUS_MESSAGES_RX +{ + BUS_MSG_CONTROL_MODE control_mode; + BUS_MSG_CURRENT_LIMIT current_limit; + BUS_MSG_DESIRED_CURRENT desired_current; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_CANErrorTypes_ +#define DEFINED_TYPEDEF_FOR_CANErrorTypes_ + +typedef enum { + CANErrorTypes_No_Error = 0, // Default value + CANErrorTypes_Packet_Not4Us, + CANErrorTypes_Packet_Unrecognized, + CANErrorTypes_Packet_Malformed, + CANErrorTypes_Packet_MultiFunctionsDetected, + CANErrorTypes_Mode_Unrecognized +} CANErrorTypes; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_RX_ERRORS_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_RX_ERRORS_ + +// Specifies the CAN error types. +struct BUS_CAN_RX_ERRORS +{ + // True if an error has been detected. + boolean_T event; + CANErrorTypes type; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_MCOPC_ +#define DEFINED_TYPEDEF_FOR_MCOPC_ + +typedef enum { + MCOPC_Set_Control_Mode = 9, // Default value + MCOPC_Set_Current_Limit = 72 +} MCOPC; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_MCStreaming_ +#define DEFINED_TYPEDEF_FOR_MCStreaming_ + +typedef enum { + MCStreaming_Desired_Current = 15, // Default value + MCStreaming_FOC = 0 +} MCStreaming; + +#endif +#endif // RTW_HEADER_can_decoder_types_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder.cpp new file mode 100644 index 000000000..fd77ceec3 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder.cpp @@ -0,0 +1,185 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: can_encoder.cpp +// +// Code generated for Simulink model 'can_encoder'. +// +// Model version : 1.315 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Wed Aug 4 14:13:17 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#include "can_encoder.h" +#include "can_encoder_private.h" + +namespace can_messaging +{ + // Output and update for referenced model: 'can_encoder' + void CAN_Encoder::step(const real32_T *rtu_messages_tx_foc_current, const + real32_T *rtu_messages_tx_foc_position, const real32_T + *rtu_messages_tx_foc_velocity, const boolean_T *rtu_events_tx_foc, uint8_T + *rty_pck_tx_available, uint16_T *rty_pck_tx_packets_ID, uint8_T + rty_pck_tx_packets_PAYLOAD[8]) + { + int32_T rtb_DataTypeConversion2; + real32_T rtb_Gain; + int16_T rtb_DataTypeConversion1; + int16_T rtb_DataTypeConversion3; + + // Outputs for Atomic SubSystem: '/CAN_Encoder' + // DataTypeConversion: '/Data Type Conversion1' + rtb_Gain = *rtu_messages_tx_foc_current; + if (rtb_Gain < 0.0F) { + rtb_Gain = std::ceil(rtb_Gain); + } else { + rtb_Gain = std::floor(rtb_Gain); + } + + if (rtIsNaNF(rtb_Gain) || rtIsInfF(rtb_Gain)) { + rtb_Gain = 0.0F; + } else { + rtb_Gain = std::fmod(rtb_Gain, 65536.0F); + } + + rtb_DataTypeConversion1 = static_cast(rtb_Gain < 0.0F ? + static_cast(static_cast(-static_cast( + static_cast(-rtb_Gain)))) : static_cast + (static_cast(static_cast(rtb_Gain)))); + + // End of DataTypeConversion: '/Data Type Conversion1' + + // Gain: '/Gain1' + rtb_Gain = rtP_CAN_ANGLE_DEG2ICUB * *rtu_messages_tx_foc_position; + + // DataTypeConversion: '/Data Type Conversion2' + if (rtb_Gain < 0.0F) { + rtb_Gain = std::ceil(rtb_Gain); + } else { + rtb_Gain = std::floor(rtb_Gain); + } + + if (rtIsNaNF(rtb_Gain) || rtIsInfF(rtb_Gain)) { + rtb_Gain = 0.0F; + } else { + rtb_Gain = std::fmod(rtb_Gain, 4.2949673E+9F); + } + + rtb_DataTypeConversion2 = rtb_Gain < 0.0F ? -static_cast( + static_cast(-rtb_Gain)) : static_cast + (static_cast(rtb_Gain)); + + // End of DataTypeConversion: '/Data Type Conversion2' + + // Gain: '/Gain' + rtb_Gain = rtP_CAN_ANGLE_DEG2ICUB * *rtu_messages_tx_foc_velocity; + + // DataTypeConversion: '/Data Type Conversion3' + if (rtb_Gain < 0.0F) { + rtb_Gain = std::ceil(rtb_Gain); + } else { + rtb_Gain = std::floor(rtb_Gain); + } + + if (rtIsNaNF(rtb_Gain) || rtIsInfF(rtb_Gain)) { + rtb_Gain = 0.0F; + } else { + rtb_Gain = std::fmod(rtb_Gain, 65536.0F); + } + + rtb_DataTypeConversion3 = static_cast(rtb_Gain < 0.0F ? + static_cast(static_cast(-static_cast( + static_cast(-rtb_Gain)))) : static_cast + (static_cast(static_cast(rtb_Gain)))); + + // End of DataTypeConversion: '/Data Type Conversion3' + + // MATLAB Function: '/MATLAB Function' + rty_pck_tx_packets_PAYLOAD[0] = static_cast(rtb_DataTypeConversion1 + & 255); + rty_pck_tx_packets_PAYLOAD[1] = static_cast + ((rtb_DataTypeConversion1 & 32767) >> 8); + rty_pck_tx_packets_PAYLOAD[2] = static_cast(rtb_DataTypeConversion3 + & 255); + rty_pck_tx_packets_PAYLOAD[3] = static_cast + ((rtb_DataTypeConversion3 & 32767) >> 8); + rty_pck_tx_packets_PAYLOAD[4] = static_cast(rtb_DataTypeConversion2 + & 255); + rty_pck_tx_packets_PAYLOAD[5] = static_cast + ((rtb_DataTypeConversion2 & 65280) >> 8); + rty_pck_tx_packets_PAYLOAD[6] = static_cast + ((rtb_DataTypeConversion2 & 16711680) >> 16); + rty_pck_tx_packets_PAYLOAD[7] = static_cast + ((rtb_DataTypeConversion2 & MAX_int32_T) >> 24); + + // Constant: '/Constant' + *rty_pck_tx_packets_ID = rtP_CAN_ID_HOST; + + // DataTypeConversion: '/Data Type Conversion' incorporates: + // RelationalOperator: '/FixPt Relational Operator' + // UnitDelay: '/Delay Input1' + // + // Block description for '/Delay Input1': + // + // Store in Global RAM + + *rty_pck_tx_available = (*rtu_events_tx_foc != + can_encoder_DW.DelayInput1_DSTATE); + + // Update for UnitDelay: '/Delay Input1' + // + // Block description for '/Delay Input1': + // + // Store in Global RAM + + can_encoder_DW.DelayInput1_DSTATE = *rtu_events_tx_foc; + + // End of Outputs for SubSystem: '/CAN_Encoder' + } + + // Model initialize function + void CAN_Encoder::initialize() + { + // Registration code + + // initialize non-finites + rt_InitInfAndNaN(sizeof(real_T)); + } + + // Constructor + CAN_Encoder::CAN_Encoder() : + can_encoder_DW() + { + // Currently there is no constructor body generated. + } + + // Destructor + CAN_Encoder::~CAN_Encoder() + { + // Currently there is no destructor body generated. + } + + // Real-Time Model get method + can_messaging::CAN_Encoder::RT_MODEL_can_encoder_T * CAN_Encoder::getRTM() + { + return (&can_encoder_M); + } + + // member function to setup error status pointer + void CAN_Encoder::setErrorStatusPointer(const char_T **rt_errorStatus) + { + rtmSetErrorStatusPointer((&can_encoder_M), rt_errorStatus); + } +} + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder.h new file mode 100644 index 000000000..14ea4d276 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder.h @@ -0,0 +1,122 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: can_encoder.h +// +// Code generated for Simulink model 'can_encoder'. +// +// Model version : 1.315 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Wed Aug 4 14:13:17 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_can_encoder_h_ +#define RTW_HEADER_can_encoder_h_ +#include +#include +#include +#include "rtwtypes.h" +#include "can_encoder_types.h" +#include +#include "rt_nonfinite.h" +#include "rtGetInf.h" + +// Model block global parameters (default storage) +extern real32_T rtP_CAN_ANGLE_DEG2ICUB;// Variable: CAN_ANGLE_DEG2ICUB + // Referenced by: + // '/Gain' + // '/Gain1' + +extern uint16_T rtP_CAN_ID_HOST; // Variable: CAN_ID_HOST + // Referenced by: '/Constant' + + +// Class declaration for model can_encoder +namespace can_messaging +{ + class CAN_Encoder { + // public data and function members + public: + // Block states (default storage) for model 'can_encoder' + struct DW_can_encoder_T { + boolean_T DelayInput1_DSTATE; // '/Delay Input1' + }; + + // Invariant block signals for model 'can_encoder' + struct ConstB_can_encoder_h_T { + uint8_T lengths; // '/lengths' + }; + + // Real-time Model Data Structure + struct RT_MODEL_can_encoder_T { + const char_T **errorStatus; + }; + + // Block states + DW_can_encoder_T can_encoder_DW; + + // model initialize function + void initialize(); + + // model step function + void step(const real32_T *rtu_messages_tx_foc_current, const real32_T + *rtu_messages_tx_foc_position, const real32_T + *rtu_messages_tx_foc_velocity, const boolean_T *rtu_events_tx_foc, + uint8_T *rty_pck_tx_available, uint16_T *rty_pck_tx_packets_ID, + uint8_T rty_pck_tx_packets_PAYLOAD[8]); + + // Constructor + CAN_Encoder(); + + // Destructor + ~CAN_Encoder(); + + // Real-Time Model get method + can_messaging::CAN_Encoder::RT_MODEL_can_encoder_T * getRTM(); + + //member function to setup error status pointer + void setErrorStatusPointer(const char_T **rt_errorStatus); + + // private data and function members + private: + // Real-Time Model + RT_MODEL_can_encoder_T can_encoder_M; + }; +} + +// Invariant block signals (default storage) +extern const can_messaging::CAN_Encoder::ConstB_can_encoder_h_T + can_encoder_ConstB; + +//- +// The generated code includes comments that allow you to trace directly +// back to the appropriate location in the model. The basic format +// is /block_name, where system is the system number (uniquely +// assigned by Simulink) and block_name is the name of the block. +// +// Use the MATLAB hilite_system command to trace the generated code back +// to the model. For example, +// +// hilite_system('') - opens system 3 +// hilite_system('/Kp') - opens and selects block Kp which resides in S3 +// +// Here is the system hierarchy for this model +// +// '' : 'can_encoder' +// '' : 'can_encoder/CAN_Encoder' +// '' : 'can_encoder/CAN_Encoder/Detect Change' +// '' : 'can_encoder/CAN_Encoder/MATLAB Function' + +#endif // RTW_HEADER_can_encoder_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder_private.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder_private.h new file mode 100644 index 000000000..f82ca5eb7 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder_private.h @@ -0,0 +1,45 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: can_encoder_private.h +// +// Code generated for Simulink model 'can_encoder'. +// +// Model version : 1.315 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Wed Aug 4 14:13:17 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_can_encoder_private_h_ +#define RTW_HEADER_can_encoder_private_h_ +#include "rtwtypes.h" + +// Macros for accessing real-time model data structure +#ifndef rtmGetErrorStatus +#define rtmGetErrorStatus(rtm) (*((rtm)->errorStatus)) +#endif + +#ifndef rtmSetErrorStatus +#define rtmSetErrorStatus(rtm, val) (*((rtm)->errorStatus) = (val)) +#endif + +#ifndef rtmGetErrorStatusPointer +#define rtmGetErrorStatusPointer(rtm) (rtm)->errorStatus +#endif + +#ifndef rtmSetErrorStatusPointer +#define rtmSetErrorStatusPointer(rtm, val) ((rtm)->errorStatus = (val)) +#endif +#endif // RTW_HEADER_can_encoder_private_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder_types.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder_types.h new file mode 100644 index 000000000..f5ef94795 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-encoder/can_encoder_types.h @@ -0,0 +1,97 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: can_encoder_types.h +// +// Code generated for Simulink model 'can_encoder'. +// +// Model version : 1.315 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Wed Aug 4 14:13:17 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_can_encoder_types_h_ +#define RTW_HEADER_can_encoder_types_h_ +#include "rtwtypes.h" + +// Model Code Variants +#ifndef DEFINED_TYPEDEF_FOR_BUS_MSG_FOC_ +#define DEFINED_TYPEDEF_FOR_BUS_MSG_FOC_ + +// Fields of a FOC message. +struct BUS_MSG_FOC +{ + // Current feedback in mA. + real32_T current; + + // Position feedback in deg. + real32_T position; + + // Velocity feedback in deg/s. + real32_T velocity; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MESSAGES_TX_ +#define DEFINED_TYPEDEF_FOR_BUS_MESSAGES_TX_ + +// Aggregate of all CAN transmitted messages. +struct BUS_MESSAGES_TX +{ + BUS_MSG_FOC foc; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_EVENTS_TX_ +#define DEFINED_TYPEDEF_FOR_BUS_EVENTS_TX_ + +// Aggregate of all events specifying types of transmitted messages. +struct BUS_EVENTS_TX +{ + boolean_T foc; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_PACKET_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_PACKET_ + +// Fields of a transmitted CAN packet. +struct BUS_CAN_PACKET +{ + // ID of the CAN packet. + uint16_T ID; + + // PAYLOAD of the CAN packet. + uint8_T PAYLOAD[8]; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_ + +struct BUS_CAN +{ + // Number of available output packets. + uint8_T available; + uint8_T lengths; + BUS_CAN_PACKET packets; +}; + +#endif +#endif // RTW_HEADER_can_encoder_types_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct.cpp new file mode 100644 index 000000000..f5f63d223 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct.cpp @@ -0,0 +1,171 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: can_rx_raw2struct.cpp +// +// Code generated for Simulink model 'can_rx_raw2struct'. +// +// Model version : 1.310 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:51 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#include "can_rx_raw2struct.h" +#include "can_rx_raw2struct_private.h" + +namespace can_messaging +{ + // Function for MATLAB Function: '/RAW2STRUCT Decoding Logic' + CANClassTypes CAN_RX_raw2struct::c_convert_to_enum_CANClassTypes(int32_T input) + { + int32_T output; + + // Initialize output value to default value for CANClassTypes (Motor_Control_Command) + output = 0; + if (((input >= 0) && (input <= 2)) || ((input >= 4) && (input <= 7))) { + // Set output value to input value if it is a member of CANClassTypes + output = input; + } + + return static_cast(output); + } +} + +namespace can_messaging +{ + // Output and update for referenced model: 'can_rx_raw2struct' + void CAN_RX_raw2struct::step(const uint8_T *rtu_pck_rx_raw_available, const + uint8_T *rtu_pck_rx_raw_lengths, const uint16_T *rtu_pck_rx_raw_packets_ID, + const uint8_T rtu_pck_rx_raw_packets_PAYLOAD[8], uint8_T + *rty_pck_rx_struct_available, CANClassTypes *rty_pck_rx_struct_packets_ID_CL, + uint8_T *rty_pck_rx_struct_packets_ID_SR, uint8_T + *rty_pck_rx_struct_packets_ID_DS, uint8_T *rty_pck_rx_struct_packets_PAYLO, + boolean_T *rty_pck_rx_struct_packets_PAY_f, uint8_T + *rty_pck_rx_struct_packets_PAY_k, uint8_T rty_pck_rx_struct_packets_PAY_h[7]) + { + int32_T i; + uint32_T qY; + uint8_T rtb_BusConversion_InsertedFor_0; + uint8_T varargin_1_idx_1; + + // Outputs for Atomic SubSystem: '/CAN_RX_RAW2STRUCT' + // SignalConversion generated from: '/pck_rx_struct' incorporates: + // BusCreator generated from: '/RAW2STRUCT Decoding Logic' + + *rty_pck_rx_struct_available = *rtu_pck_rx_raw_available; + + // MATLAB Function: '/RAW2STRUCT Decoding Logic' incorporates: + // BusCreator generated from: '/RAW2STRUCT Decoding Logic' + + varargin_1_idx_1 = *rtu_pck_rx_raw_lengths; + rtb_BusConversion_InsertedFor_0 = 8U; + if (8 > varargin_1_idx_1) { + rtb_BusConversion_InsertedFor_0 = varargin_1_idx_1; + } + + varargin_1_idx_1 = rtb_BusConversion_InsertedFor_0; + rtb_BusConversion_InsertedFor_0 = 0U; + if (0 < varargin_1_idx_1) { + rtb_BusConversion_InsertedFor_0 = varargin_1_idx_1; + } + + for (i = 0; i < 7; i++) { + // SignalConversion generated from: '/pck_rx_struct' incorporates: + // MATLAB Function: '/RAW2STRUCT Decoding Logic' + + rty_pck_rx_struct_packets_PAY_h[i] = 0U; + } + + // MATLAB Function: '/RAW2STRUCT Decoding Logic' incorporates: + // BusCreator generated from: '/RAW2STRUCT Decoding Logic' + // SignalConversion generated from: '/pck_rx_struct' + + qY = rtb_BusConversion_InsertedFor_0 - 1U; + if (rtb_BusConversion_InsertedFor_0 - 1U > rtb_BusConversion_InsertedFor_0) + { + qY = 0U; + } + + for (i = 1; i - 1 < static_cast(qY); i++) { + rty_pck_rx_struct_packets_PAY_h[static_cast(i) - 1] = + rtu_pck_rx_raw_packets_PAYLOAD[static_cast(i)]; + } + + // SignalConversion generated from: '/pck_rx_struct' incorporates: + // MATLAB Function: '/RAW2STRUCT Decoding Logic' + + *rty_pck_rx_struct_packets_ID_CL = c_convert_to_enum_CANClassTypes( + static_cast(static_cast(static_cast + (*rtu_pck_rx_raw_packets_ID & 1792) >> 8))); + + // SignalConversion generated from: '/pck_rx_struct' incorporates: + // MATLAB Function: '/RAW2STRUCT Decoding Logic' + + *rty_pck_rx_struct_packets_ID_SR = static_cast(static_cast + (*rtu_pck_rx_raw_packets_ID & 240) >> 4); + + // SignalConversion generated from: '/pck_rx_struct' incorporates: + // MATLAB Function: '/RAW2STRUCT Decoding Logic' + + *rty_pck_rx_struct_packets_ID_DS = static_cast + (*rtu_pck_rx_raw_packets_ID & 15); + + // SignalConversion generated from: '/pck_rx_struct' incorporates: + // MATLAB Function: '/RAW2STRUCT Decoding Logic' + + *rty_pck_rx_struct_packets_PAYLO = rtb_BusConversion_InsertedFor_0; + + // SignalConversion generated from: '/pck_rx_struct' incorporates: + // BusCreator generated from: '/RAW2STRUCT Decoding Logic' + // MATLAB Function: '/RAW2STRUCT Decoding Logic' + + *rty_pck_rx_struct_packets_PAY_f = ((rtu_pck_rx_raw_packets_PAYLOAD[0] & + 128U) != 0U); + + // SignalConversion generated from: '/pck_rx_struct' incorporates: + // BusCreator generated from: '/RAW2STRUCT Decoding Logic' + // MATLAB Function: '/RAW2STRUCT Decoding Logic' + + *rty_pck_rx_struct_packets_PAY_k = static_cast + (rtu_pck_rx_raw_packets_PAYLOAD[0] & 127); + + // End of Outputs for SubSystem: '/CAN_RX_RAW2STRUCT' + } + + // Constructor + CAN_RX_raw2struct::CAN_RX_raw2struct() + { + // Currently there is no constructor body generated. + } + + // Destructor + CAN_RX_raw2struct::~CAN_RX_raw2struct() + { + // Currently there is no destructor body generated. + } + + // Real-Time Model get method + can_messaging::CAN_RX_raw2struct::RT_MODEL_can_rx_raw2struct_T + * CAN_RX_raw2struct::getRTM() + { + return (&can_rx_raw2struct_M); + } + + // member function to setup error status pointer + void CAN_RX_raw2struct::setErrorStatusPointer(const char_T **rt_errorStatus) + { + rtmSetErrorStatusPointer((&can_rx_raw2struct_M), rt_errorStatus); + } +} + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct.h new file mode 100644 index 000000000..6a40fa9cf --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct.h @@ -0,0 +1,97 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: can_rx_raw2struct.h +// +// Code generated for Simulink model 'can_rx_raw2struct'. +// +// Model version : 1.310 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:51 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_can_rx_raw2struct_h_ +#define RTW_HEADER_can_rx_raw2struct_h_ +#include +#include +#include "rtwtypes.h" +#include "can_rx_raw2struct_types.h" +#include + +// Class declaration for model can_rx_raw2struct +namespace can_messaging +{ + class CAN_RX_raw2struct { + // public data and function members + public: + // Real-time Model Data Structure + struct RT_MODEL_can_rx_raw2struct_T { + const char_T **errorStatus; + }; + + // model step function + void step(const uint8_T *rtu_pck_rx_raw_available, const uint8_T + *rtu_pck_rx_raw_lengths, const uint16_T *rtu_pck_rx_raw_packets_ID, + const uint8_T rtu_pck_rx_raw_packets_PAYLOAD[8], uint8_T + *rty_pck_rx_struct_available, CANClassTypes + *rty_pck_rx_struct_packets_ID_CL, uint8_T + *rty_pck_rx_struct_packets_ID_SR, uint8_T + *rty_pck_rx_struct_packets_ID_DS, uint8_T + *rty_pck_rx_struct_packets_PAYLO, boolean_T + *rty_pck_rx_struct_packets_PAY_f, uint8_T + *rty_pck_rx_struct_packets_PAY_k, uint8_T + rty_pck_rx_struct_packets_PAY_h[7]); + + // Constructor + CAN_RX_raw2struct(); + + // Destructor + ~CAN_RX_raw2struct(); + + // Real-Time Model get method + can_messaging::CAN_RX_raw2struct::RT_MODEL_can_rx_raw2struct_T * getRTM(); + + //member function to setup error status pointer + void setErrorStatusPointer(const char_T **rt_errorStatus); + + // private data and function members + private: + // Real-Time Model + RT_MODEL_can_rx_raw2struct_T can_rx_raw2struct_M; + + // private member function(s) for subsystem '/TmpModelReferenceSubsystem' + CANClassTypes c_convert_to_enum_CANClassTypes(int32_T input); + }; +} + +//- +// The generated code includes comments that allow you to trace directly +// back to the appropriate location in the model. The basic format +// is /block_name, where system is the system number (uniquely +// assigned by Simulink) and block_name is the name of the block. +// +// Use the MATLAB hilite_system command to trace the generated code back +// to the model. For example, +// +// hilite_system('') - opens system 3 +// hilite_system('/Kp') - opens and selects block Kp which resides in S3 +// +// Here is the system hierarchy for this model +// +// '' : 'can_rx_raw2struct' +// '' : 'can_rx_raw2struct/CAN_RX_RAW2STRUCT' +// '' : 'can_rx_raw2struct/CAN_RX_RAW2STRUCT/RAW2STRUCT Decoding Logic' + +#endif // RTW_HEADER_can_rx_raw2struct_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct_private.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct_private.h new file mode 100644 index 000000000..8dff0cbb4 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct_private.h @@ -0,0 +1,45 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: can_rx_raw2struct_private.h +// +// Code generated for Simulink model 'can_rx_raw2struct'. +// +// Model version : 1.310 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:51 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_can_rx_raw2struct_private_h_ +#define RTW_HEADER_can_rx_raw2struct_private_h_ +#include "rtwtypes.h" + +// Macros for accessing real-time model data structure +#ifndef rtmGetErrorStatus +#define rtmGetErrorStatus(rtm) (*((rtm)->errorStatus)) +#endif + +#ifndef rtmSetErrorStatus +#define rtmSetErrorStatus(rtm, val) (*((rtm)->errorStatus) = (val)) +#endif + +#ifndef rtmGetErrorStatusPointer +#define rtmGetErrorStatusPointer(rtm) (rtm)->errorStatus +#endif + +#ifndef rtmSetErrorStatusPointer +#define rtmSetErrorStatusPointer(rtm, val) ((rtm)->errorStatus = (val)) +#endif +#endif // RTW_HEADER_can_rx_raw2struct_private_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct_types.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct_types.h new file mode 100644 index 000000000..7afc32e89 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/can-raw2struct/can_rx_raw2struct_types.h @@ -0,0 +1,146 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: can_rx_raw2struct_types.h +// +// Code generated for Simulink model 'can_rx_raw2struct'. +// +// Model version : 1.310 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:51 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_can_rx_raw2struct_types_h_ +#define RTW_HEADER_can_rx_raw2struct_types_h_ +#include "rtwtypes.h" + +// Model Code Variants +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_PACKET_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_PACKET_ + +// Fields of a transmitted CAN packet. +struct BUS_CAN_PACKET +{ + // ID of the CAN packet. + uint16_T ID; + + // PAYLOAD of the CAN packet. + uint8_T PAYLOAD[8]; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_ + +struct BUS_CAN +{ + // Number of available output packets. + uint8_T available; + uint8_T lengths; + BUS_CAN_PACKET packets; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_CANClassTypes_ +#define DEFINED_TYPEDEF_FOR_CANClassTypes_ + +typedef enum { + CANClassTypes_Motor_Control_Command = 0,// Default value + CANClassTypes_Motor_Control_Streaming = 1, + CANClassTypes_Analog_Sensors_Command = 2, + CANClassTypes_Skin_Sensor_Streaming = 4, + CANClassTypes_Inertial_Sensor_Streaming = 5, + CANClassTypes_Future_Use = 6, + CANClassTypes_Management_Bootloader = 7 +} CANClassTypes; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_ID_RX_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_ID_RX_ + +struct BUS_CAN_ID_RX +{ + // 3 bits defining the message class type. + CANClassTypes CLS; + + // 4 bits defining the source ID. + uint8_T SRC; + + // 4 bits definint the destination ID or the message sub-type. + uint8_T DST_TYP; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_CMD_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_CMD_ + +struct BUS_CAN_CMD +{ + // 1 bits for motor selector. + boolean_T M; + + // 7 bits defining the operational code of the command. + uint8_T OPC; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_PAYLOAD_RX_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_PAYLOAD_RX_ + +struct BUS_CAN_PAYLOAD_RX +{ + // Actual length of the total PAYLOAD field. + uint8_T LEN; + BUS_CAN_CMD CMD; + + // 7 bytes for the command argument. + uint8_T ARG[7]; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_PACKET_RX_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_PACKET_RX_ + +// Fields of a received CAN packet. +struct BUS_CAN_PACKET_RX +{ + // ID of the CAN packet. + BUS_CAN_ID_RX ID; + + // PAYLOAD of the CAN packet. + BUS_CAN_PAYLOAD_RX PAYLOAD; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_RX_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_RX_ + +// Specifies the CAN input. +struct BUS_CAN_RX +{ + // Number of available input packets. + uint8_T available; + BUS_CAN_PACKET_RX packets; +}; + +#endif +#endif // RTW_HEADER_can_rx_raw2struct_types_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/Double2MultiWord.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/Double2MultiWord.cpp new file mode 100644 index 000000000..8e2ca88ac --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/Double2MultiWord.cpp @@ -0,0 +1,67 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: Double2MultiWord.cpp +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +#include "rtwtypes.h" +#include "div_s32.h" +#include +#include +#include "Double2MultiWord.h" + +void Double2MultiWord(real_T u1, uint32_T y[], int32_T n) +{ + real_T yd; + real_T yn; + int32_T currExp; + int32_T i; + int32_T msl; + int32_T prevExp; + uint32_T cb; + uint32_T u1i; + boolean_T isNegative; + isNegative = (u1 < 0.0); + yn = frexp(u1, &currExp); + msl = currExp <= 0 ? -1 : div_s32(currExp - 1, 32); + cb = 1U; + for (i = msl + 1; i < n; i++) { + y[i] = 0U; + } + + yn = isNegative ? -yn : yn; + prevExp = 32 * msl; + for (i = msl; i >= 0; i--) { + yn = std::ldexp(yn, currExp - prevExp); + yd = std::floor(yn); + yn -= yd; + if (i < n) { + y[i] = static_cast(yd); + } + + currExp = prevExp; + prevExp -= 32; + } + + if (isNegative) { + for (i = 0; i < n; i++) { + u1i = ~y[i]; + cb += u1i; + y[i] = cb; + cb = (cb < u1i); + } + } +} + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/Double2MultiWord.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/Double2MultiWord.h new file mode 100644 index 000000000..c9a9d4658 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/Double2MultiWord.h @@ -0,0 +1,26 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: Double2MultiWord.h +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +#ifndef RTW_HEADER_Double2MultiWord_h_ +#define RTW_HEADER_Double2MultiWord_h_ +#include "rtwtypes.h" + +extern void Double2MultiWord(real_T u1, uint32_T y[], int32_T n); + +#endif // RTW_HEADER_Double2MultiWord_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/MultiWordIor.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/MultiWordIor.cpp new file mode 100644 index 000000000..39207b282 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/MultiWordIor.cpp @@ -0,0 +1,30 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: MultiWordIor.cpp +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +#include "rtwtypes.h" +#include "MultiWordIor.h" + +void MultiWordIor(const uint32_T u1[], const uint32_T u2[], uint32_T y[], + int32_T n) +{ + int32_T i; + for (i = 0; i < n; i++) { + y[i] = u1[i] | u2[i]; + } +} + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/MultiWordIor.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/MultiWordIor.h new file mode 100644 index 000000000..65925b307 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/MultiWordIor.h @@ -0,0 +1,27 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: MultiWordIor.h +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +#ifndef RTW_HEADER_MultiWordIor_h_ +#define RTW_HEADER_MultiWordIor_h_ +#include "rtwtypes.h" + +extern void MultiWordIor(const uint32_T u1[], const uint32_T u2[], uint32_T y[], + int32_T n); + +#endif // RTW_HEADER_MultiWordIor_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/div_s32.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/div_s32.cpp new file mode 100644 index 000000000..e0ff1f37f --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/div_s32.cpp @@ -0,0 +1,41 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: div_s32.cpp +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +#include "rtwtypes.h" +#include "div_s32.h" + +int32_T div_s32(int32_T numerator, int32_T denominator) +{ + int32_T quotient; + uint32_T tempAbsQuotient; + if (denominator == 0) { + quotient = numerator >= 0 ? MAX_int32_T : MIN_int32_T; + + // Divide by zero handler + } else { + tempAbsQuotient = (numerator < 0 ? ~static_cast(numerator) + 1U : + static_cast(numerator)) / (denominator < 0 ? ~ + static_cast(denominator) + 1U : static_cast + (denominator)); + quotient = (numerator < 0) != (denominator < 0) ? -static_cast + (tempAbsQuotient) : static_cast(tempAbsQuotient); + } + + return quotient; +} + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/div_s32.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/div_s32.h new file mode 100644 index 000000000..c409d6bf9 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/div_s32.h @@ -0,0 +1,26 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: div_s32.h +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +#ifndef RTW_HEADER_div_s32_h_ +#define RTW_HEADER_div_s32_h_ +#include "rtwtypes.h" + +extern int32_T div_s32(int32_T numerator, int32_T denominator); + +#endif // RTW_HEADER_div_s32_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/multiword_types.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/multiword_types.h new file mode 100644 index 000000000..c14d9ce04 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/multiword_types.h @@ -0,0 +1,50 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: multiword_types.h +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +#ifndef MULTIWORD_TYPES_H +#define MULTIWORD_TYPES_H +#include "rtwtypes.h" + +// +// MultiWord supporting definitions + +typedef long int long_T; + +// +// MultiWord types + +typedef struct { + uint32_T chunks[2]; +} int64m_T; + +typedef struct { + int64m_T re; + int64m_T im; +} cint64m_T; + +typedef struct { + uint32_T chunks[2]; +} uint64m_T; + +typedef struct { + uint64m_T re; + uint64m_T im; +} cuint64m_T; + +#endif // MULTIWORD_TYPES_H + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetInf.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetInf.cpp new file mode 100644 index 000000000..f13bc76c4 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetInf.cpp @@ -0,0 +1,97 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: rtGetInf.cpp +// +// Code generated for Simulink model 'can_encoder'. +// +// Model version : 1.314 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:44 2021 +// + +// +// Abstract: +// Function to initialize non-finite, Inf + +#include "rtGetInf.h" +#define NumBitsPerChar 8U + +extern "C" { + // + // Initialize rtInf needed by the generated code. + // Inf is initialized as non-signaling. Assumes IEEE. + // + real_T rtGetInf(void) + { + size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar); + real_T inf = 0.0; + if (bitsPerReal == 32U) { + inf = rtGetInfF(); + } else { + union { + LittleEndianIEEEDouble bitVal; + real_T fltVal; + } tmpVal; + + tmpVal.bitVal.words.wordH = 0x7FF00000U; + tmpVal.bitVal.words.wordL = 0x00000000U; + inf = tmpVal.fltVal; + } + + return inf; + } + + // + // Initialize rtInfF needed by the generated code. + // Inf is initialized as non-signaling. Assumes IEEE. + // + real32_T rtGetInfF(void) + { + IEEESingle infF; + infF.wordL.wordLuint = 0x7F800000U; + return infF.wordL.wordLreal; + } + + // + // Initialize rtMinusInf needed by the generated code. + // Inf is initialized as non-signaling. Assumes IEEE. + // + real_T rtGetMinusInf(void) + { + size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar); + real_T minf = 0.0; + if (bitsPerReal == 32U) { + minf = rtGetMinusInfF(); + } else { + union { + LittleEndianIEEEDouble bitVal; + real_T fltVal; + } tmpVal; + + tmpVal.bitVal.words.wordH = 0xFFF00000U; + tmpVal.bitVal.words.wordL = 0x00000000U; + minf = tmpVal.fltVal; + } + + return minf; + } + + // + // Initialize rtMinusInfF needed by the generated code. + // Inf is initialized as non-signaling. Assumes IEEE. + // + real32_T rtGetMinusInfF(void) + { + IEEESingle minfF; + minfF.wordL.wordLuint = 0xFF800000U; + return minfF.wordL.wordLreal; + } +} +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetInf.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetInf.h new file mode 100644 index 000000000..825415703 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetInf.h @@ -0,0 +1,40 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: rtGetInf.h +// +// Code generated for Simulink model 'can_encoder'. +// +// Model version : 1.314 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:44 2021 +// +#ifndef RTW_HEADER_rtGetInf_h_ +#define RTW_HEADER_rtGetInf_h_ +#include +#include "rtwtypes.h" +#include "rt_nonfinite.h" +#ifdef __cplusplus + +extern "C" { + +#endif + + extern real_T rtGetInf(void); + extern real32_T rtGetInfF(void); + extern real_T rtGetMinusInf(void); + extern real32_T rtGetMinusInfF(void); + +#ifdef __cplusplus + +} // extern "C" +#endif +#endif // RTW_HEADER_rtGetInf_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetNaN.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetNaN.cpp new file mode 100644 index 000000000..c10612eeb --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetNaN.cpp @@ -0,0 +1,63 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: rtGetNaN.cpp +// +// Code generated for Simulink model 'can_encoder'. +// +// Model version : 1.314 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:44 2021 +// + +// +// Abstract: +// Function to initialize non-finite, NaN + +#include "rtGetNaN.h" +#define NumBitsPerChar 8U + +extern "C" { + // + // Initialize rtNaN needed by the generated code. + // NaN is initialized as non-signaling. Assumes IEEE. + // + real_T rtGetNaN(void) + { + size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar); + real_T nan = 0.0; + if (bitsPerReal == 32U) { + nan = rtGetNaNF(); + } else { + union { + LittleEndianIEEEDouble bitVal; + real_T fltVal; + } tmpVal; + + tmpVal.bitVal.words.wordH = 0xFFF80000U; + tmpVal.bitVal.words.wordL = 0x00000000U; + nan = tmpVal.fltVal; + } + + return nan; + } + + // + // Initialize rtNaNF needed by the generated code. + // NaN is initialized as non-signaling. Assumes IEEE. + // + real32_T rtGetNaNF(void) + { + IEEESingle nanF = { { 0.0F } }; + + nanF.wordL.wordLuint = 0xFFC00000U; + return nanF.wordL.wordLreal; + } +} +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetNaN.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetNaN.h new file mode 100644 index 000000000..0bf1cd331 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtGetNaN.h @@ -0,0 +1,38 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: rtGetNaN.h +// +// Code generated for Simulink model 'can_encoder'. +// +// Model version : 1.314 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:44 2021 +// +#ifndef RTW_HEADER_rtGetNaN_h_ +#define RTW_HEADER_rtGetNaN_h_ +#include +#include "rtwtypes.h" +#include "rt_nonfinite.h" +#ifdef __cplusplus + +extern "C" { + +#endif + + extern real_T rtGetNaN(void); + extern real32_T rtGetNaNF(void); + +#ifdef __cplusplus + +} // extern "C" +#endif +#endif // RTW_HEADER_rtGetNaN_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rt_nonfinite.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rt_nonfinite.cpp new file mode 100644 index 000000000..1cc5f5d87 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rt_nonfinite.cpp @@ -0,0 +1,99 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: rt_nonfinite.cpp +// +// Code generated for Simulink model 'can_encoder'. +// +// Model version : 1.314 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:44 2021 +// + +// +// Abstract: +// Function to initialize non-finites, +// (Inf, NaN and -Inf). + +#include "rt_nonfinite.h" +#include "rtGetNaN.h" +#include "rtGetInf.h" +#define NumBitsPerChar 8U + +extern "C" { + real_T rtInf; + real_T rtMinusInf; + real_T rtNaN; + real32_T rtInfF; + real32_T rtMinusInfF; + real32_T rtNaNF; +} + extern "C" +{ + // + // Initialize the rtInf, rtMinusInf, and rtNaN needed by the + // generated code. NaN is initialized as non-signaling. Assumes IEEE. + // + void rt_InitInfAndNaN(size_t realSize) + { + (void) (realSize); + rtNaN = rtGetNaN(); + rtNaNF = rtGetNaNF(); + rtInf = rtGetInf(); + rtInfF = rtGetInfF(); + rtMinusInf = rtGetMinusInf(); + rtMinusInfF = rtGetMinusInfF(); + } + + // Test if value is infinite + boolean_T rtIsInf(real_T value) + { + return (boolean_T)((value==rtInf || value==rtMinusInf) ? 1U : 0U); + } + + // Test if single-precision value is infinite + boolean_T rtIsInfF(real32_T value) + { + return (boolean_T)(((value)==rtInfF || (value)==rtMinusInfF) ? 1U : 0U); + } + + // Test if value is not a number + boolean_T rtIsNaN(real_T value) + { + boolean_T result = (boolean_T) 0; + size_t bitsPerReal = sizeof(real_T) * (NumBitsPerChar); + if (bitsPerReal == 32U) { + result = rtIsNaNF((real32_T)value); + } else { + union { + LittleEndianIEEEDouble bitVal; + real_T fltVal; + } tmpVal; + + tmpVal.fltVal = value; + result = (boolean_T)((tmpVal.bitVal.words.wordH & 0x7FF00000) == + 0x7FF00000 && + ( (tmpVal.bitVal.words.wordH & 0x000FFFFF) != 0 || + (tmpVal.bitVal.words.wordL != 0) )); + } + + return result; + } + + // Test if single-precision value is not a number + boolean_T rtIsNaNF(real32_T value) + { + IEEESingle tmp; + tmp.wordL.wordLreal = value; + return (boolean_T)( (tmp.wordL.wordLuint & 0x7F800000) == 0x7F800000 && + (tmp.wordL.wordLuint & 0x007FFFFF) != 0 ); + } +} + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rt_nonfinite.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rt_nonfinite.h new file mode 100644 index 000000000..298100abb --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rt_nonfinite.h @@ -0,0 +1,66 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: rt_nonfinite.h +// +// Code generated for Simulink model 'can_encoder'. +// +// Model version : 1.314 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:44 2021 +// +#ifndef RTW_HEADER_rt_nonfinite_h_ +#define RTW_HEADER_rt_nonfinite_h_ +#include +#include "rtwtypes.h" +#ifdef __cplusplus + +extern "C" { + +#endif + + extern real_T rtInf; + extern real_T rtMinusInf; + extern real_T rtNaN; + extern real32_T rtInfF; + extern real32_T rtMinusInfF; + extern real32_T rtNaNF; + extern void rt_InitInfAndNaN(size_t realSize); + extern boolean_T rtIsInf(real_T value); + extern boolean_T rtIsInfF(real32_T value); + extern boolean_T rtIsNaN(real_T value); + extern boolean_T rtIsNaNF(real32_T value); + struct BigEndianIEEEDouble { + struct { + uint32_T wordH; + uint32_T wordL; + } words; + }; + + struct LittleEndianIEEEDouble { + struct { + uint32_T wordL; + uint32_T wordH; + } words; + }; + + struct IEEESingle { + union { + real32_T wordLreal; + uint32_T wordLuint; + } wordL; + }; + +#ifdef __cplusplus + +} // extern "C" +#endif +#endif // RTW_HEADER_rt_nonfinite_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtwtypes.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtwtypes.h new file mode 100644 index 000000000..3e56ae2b4 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/rtwtypes.h @@ -0,0 +1,154 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: rtwtypes.h +// +// Code generated for Simulink model 'SupervisorFSM_RX'. +// +// Model version : 2.33 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:15 2021 +// +#ifndef RTWTYPES_H +#define RTWTYPES_H + +// Logical type definitions +#if (!defined(__cplusplus)) +#ifndef false +#define false (0U) +#endif + +#ifndef true +#define true (1U) +#endif +#endif + +//=======================================================================* +// Target hardware information +// Device type: ARM Compatible->ARM Cortex-M +// Number of bits: char: 8 short: 16 int: 32 +// long: 32 +// native word size: 32 +// Byte ordering: LittleEndian +// Signed integer division rounds to: Zero +// Shift right on a signed integer as arithmetic shift: on +// ======================================================================= + +//=======================================================================* +// Fixed width word size data types: * +// int8_T, int16_T, int32_T - signed 8, 16, or 32 bit integers * +// uint8_T, uint16_T, uint32_T - unsigned 8, 16, or 32 bit integers * +// real32_T, real64_T - 32 and 64 bit floating point numbers * +// ======================================================================= +typedef signed char int8_T; +typedef unsigned char uint8_T; +typedef short int16_T; +typedef unsigned short uint16_T; +typedef int int32_T; +typedef unsigned int uint32_T; +typedef float real32_T; +typedef double real64_T; + +//===========================================================================* +// Generic type definitions: boolean_T, char_T, byte_T, int_T, uint_T, * +// real_T, time_T, ulong_T. * +// =========================================================================== +typedef double real_T; +typedef double time_T; +typedef unsigned char boolean_T; +typedef int int_T; +typedef unsigned int uint_T; +typedef unsigned long ulong_T; +typedef char char_T; +typedef unsigned char uchar_T; +typedef char_T byte_T; + +//===========================================================================* +// Complex number type definitions * +// =========================================================================== +#define CREAL_T + +typedef struct { + real32_T re; + real32_T im; +} creal32_T; + +typedef struct { + real64_T re; + real64_T im; +} creal64_T; + +typedef struct { + real_T re; + real_T im; +} creal_T; + +#define CINT8_T + +typedef struct { + int8_T re; + int8_T im; +} cint8_T; + +#define CUINT8_T + +typedef struct { + uint8_T re; + uint8_T im; +} cuint8_T; + +#define CINT16_T + +typedef struct { + int16_T re; + int16_T im; +} cint16_T; + +#define CUINT16_T + +typedef struct { + uint16_T re; + uint16_T im; +} cuint16_T; + +#define CINT32_T + +typedef struct { + int32_T re; + int32_T im; +} cint32_T; + +#define CUINT32_T + +typedef struct { + uint32_T re; + uint32_T im; +} cuint32_T; + +//=======================================================================* +// Min and Max: * +// int8_T, int16_T, int32_T - signed 8, 16, or 32 bit integers * +// uint8_T, uint16_T, uint32_T - unsigned 8, 16, or 32 bit integers * +// ======================================================================= +#define MAX_int8_T ((int8_T)(127)) +#define MIN_int8_T ((int8_T)(-128)) +#define MAX_uint8_T ((uint8_T)(255U)) +#define MAX_int16_T ((int16_T)(32767)) +#define MIN_int16_T ((int16_T)(-32768)) +#define MAX_uint16_T ((uint16_T)(65535U)) +#define MAX_int32_T ((int32_T)(2147483647)) +#define MIN_int32_T ((int32_T)(-2147483647-1)) +#define MAX_uint32_T ((uint32_T)(0xFFFFFFFFU)) + +// Block D-Work pointer type +typedef void * pointer_T; + +#endif // RTWTYPES_H + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWord2Double.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWord2Double.cpp new file mode 100644 index 000000000..2c713ceb2 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWord2Double.cpp @@ -0,0 +1,37 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: uMultiWord2Double.cpp +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +#include "rtwtypes.h" +#include +#include "uMultiWord2Double.h" + +real_T uMultiWord2Double(const uint32_T u1[], int32_T n1, int32_T e1) +{ + real_T y; + int32_T exp_0; + int32_T i; + y = 0.0; + exp_0 = e1; + for (i = 0; i < n1; i++) { + y += std::ldexp(static_cast(u1[i]), exp_0); + exp_0 += 32; + } + + return y; +} + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWord2Double.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWord2Double.h new file mode 100644 index 000000000..987d1eeb1 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWord2Double.h @@ -0,0 +1,26 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: uMultiWord2Double.h +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +#ifndef RTW_HEADER_uMultiWord2Double_h_ +#define RTW_HEADER_uMultiWord2Double_h_ +#include "rtwtypes.h" + +extern real_T uMultiWord2Double(const uint32_T u1[], int32_T n1, int32_T e1); + +#endif // RTW_HEADER_uMultiWord2Double_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWordShl.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWordShl.cpp new file mode 100644 index 000000000..476d7b1fe --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWordShl.cpp @@ -0,0 +1,73 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: uMultiWordShl.cpp +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +#include "rtwtypes.h" +#include "uMultiWordShl.h" + +void uMultiWordShl(const uint32_T u1[], int32_T n1, uint32_T n2, uint32_T y[], + int32_T n) +{ + int32_T i; + int32_T nb; + int32_T nc; + uint32_T nl; + uint32_T u1i; + uint32_T yi; + uint32_T ys; + nb = static_cast(n2 >> 5); + ys = (u1[n1 - 1] & 2147483648U) != 0U ? MAX_uint32_T : 0U; + nc = nb > n ? n : nb; + u1i = 0U; + for (i = 0; i < nc; i++) { + y[i] = 0U; + } + + if (nb < n) { + nl = n2 - (static_cast(nb) << 5); + nb += n1; + if (nb > n) { + nb = n; + } + + nb -= i; + if (nl > 0U) { + for (nc = 0; nc < nb; nc++) { + yi = u1i >> (32U - nl); + u1i = u1[nc]; + y[i] = u1i << nl | yi; + i++; + } + + if (i < n) { + y[i] = u1i >> (32U - nl) | ys << nl; + i++; + } + } else { + for (nc = 0; nc < nb; nc++) { + y[i] = u1[nc]; + i++; + } + } + } + + while (i < n) { + y[i] = ys; + i++; + } +} + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWordShl.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWordShl.h new file mode 100644 index 000000000..c5974604a --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/sharedutils/uMultiWordShl.h @@ -0,0 +1,27 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: uMultiWordShl.h +// +// Code generated for Simulink model 'can_decoder'. +// +// Model version : 1.267 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Tue Jul 20 13:35:37 2021 +// +#ifndef RTW_HEADER_uMultiWordShl_h_ +#define RTW_HEADER_uMultiWordShl_h_ +#include "rtwtypes.h" + +extern void uMultiWordShl(const uint32_T u1[], int32_T n1, uint32_T n2, uint32_T + y[], int32_T n); + +#endif // RTW_HEADER_uMultiWordShl_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX.cpp new file mode 100644 index 000000000..b97d97365 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX.cpp @@ -0,0 +1,699 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: SupervisorFSM_RX.cpp +// +// Code generated for Simulink model 'SupervisorFSM_RX'. +// +// Model version : 2.34 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Wed Aug 4 14:12:54 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#include "SupervisorFSM_RX.h" +#include "SupervisorFSM_RX_private.h" + +// Named constants for Chart: '/Chart' +const uint8_T Su_IN_Controller_Not_Configured = 1U; +const uint8_T Supe_IN_Hardware_Not_Configured = 2U; +const int32_T Superv_event_SetCurrentLimitEvt = 3; +const int32_T Superviso_event_FaultPressedEvt = 0; +const uint8_T SupervisorFSM_IN_Hardware_Fault = 1U; +const uint8_T SupervisorFSM_IN_Not_Configured = 3U; +const uint8_T SupervisorFSM_IN_SET_CURR_LIMIT = 3U; +const int32_T SupervisorFSM_RX_CALL_EVENT = -1; +const uint8_T SupervisorFSM_RX_IN_Command = 1U; +const uint8_T SupervisorFSM_RX_IN_Current = 2U; +const uint8_T SupervisorFSM_RX_IN_FAULT = 1U; +const uint8_T SupervisorFSM_RX_IN_Home = 1U; +const uint8_T SupervisorFSM_RX_IN_Idle = 2U; +const uint8_T SupervisorFSM_RX_IN_Motor_OFF = 1U; +const uint8_T SupervisorFSM_RX_IN_Motor_ON = 2U; +const uint8_T SupervisorFSM_RX_IN_NO_FAULT = 2U; +const uint8_T SupervisorFSM_RX_IN_Position = 3U; +const uint8_T SupervisorFSM_RX_IN_Torque = 4U; +const uint8_T SupervisorFSM_RX_IN_Velocity = 5U; +const uint8_T SupervisorFSM_RX_IN_Voltage = 6U; +const int32_T SupervisorFSM__event_HwFaultEvt = 2; +const uint8_T SupervisorFS_IN_NO_ACTIVE_CHILD = 0U; +const int32_T SupervisorFS_event_ForceIdleEvt = 1; + +// Function for Chart: '/Chart' +void SupervisorFSM_RXModelClass::Supervisor_CONTROL_MODE_HANDLER(void) +{ + int32_T b_previousEvent; + switch (SupervisorFSM_RX_DW.is_CONTROL_MODE_HANDLER) { + case SupervisorFSM_RX_IN_Motor_OFF: + if (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command == + BoardCommand_Reset) { + SupervisorFSM_RX_DW.is_Motor_OFF = SupervisorFS_IN_NO_ACTIVE_CHILD; + SupervisorFSM_RX_DW.is_CONTROL_MODE_HANDLER = + SupervisorFSM_IN_Not_Configured; + SupervisorFSM_RX_DW.is_Not_Configured = Supe_IN_Hardware_Not_Configured; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_NotConfigured; + } else { + switch (SupervisorFSM_RX_DW.is_Motor_OFF) { + case SupervisorFSM_IN_Hardware_Fault: + if (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command == + BoardCommand_ForceIdle) { + b_previousEvent = SupervisorFSM_RX_DW.sfEvent; + SupervisorFSM_RX_DW.sfEvent = SupervisorFS_event_ForceIdleEvt; + if (SupervisorFSM_RX_DW.is_active_FAULT_HANDLER != 0U) { + SupervisorFSM_RX_FAULT_HANDLER(); + } + + SupervisorFSM_RX_DW.sfEvent = b_previousEvent; + if (SupervisorFSM_RX_DW.is_Motor_OFF == 1) { + SupervisorFSM_RX_DW.is_Motor_OFF = SupervisorFSM_RX_IN_Idle; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Idle; + } + } + break; + + case SupervisorFSM_RX_IN_Idle: + if (SupervisorFSM_RX_DW.sfEvent == SupervisorFSM__event_HwFaultEvt) { + SupervisorFSM_RX_DW.is_Motor_OFF = SupervisorFSM_IN_Hardware_Fault; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_HwFaultCM; + } else if ((SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command == + BoardCommand_SetPosition) || + (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command == + BoardCommand_SetCurrent) || + (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command == + BoardCommand_SetVelocity) || + (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command == + BoardCommand_SetVoltage) || + (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command == + BoardCommand_SetTorque)) { + SupervisorFSM_RX_DW.is_Motor_OFF = SupervisorFS_IN_NO_ACTIVE_CHILD; + SupervisorFSM_RX_DW.is_CONTROL_MODE_HANDLER = + SupervisorFSM_RX_IN_Motor_ON; + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Command; + } + break; + } + } + break; + + case SupervisorFSM_RX_IN_Motor_ON: + if (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command == + BoardCommand_Reset) { + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFS_IN_NO_ACTIVE_CHILD; + SupervisorFSM_RX_DW.is_CONTROL_MODE_HANDLER = + SupervisorFSM_IN_Not_Configured; + SupervisorFSM_RX_DW.is_Not_Configured = Supe_IN_Hardware_Not_Configured; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_NotConfigured; + } else if (SupervisorFSM_RX_DW.sfEvent == SupervisorFSM__event_HwFaultEvt) { + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFS_IN_NO_ACTIVE_CHILD; + SupervisorFSM_RX_DW.is_CONTROL_MODE_HANDLER = + SupervisorFSM_RX_IN_Motor_OFF; + SupervisorFSM_RX_DW.is_Motor_OFF = SupervisorFSM_IN_Hardware_Fault; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_HwFaultCM; + } else if ((SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.State == + BoardState_FaultPressed) || + (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command == + BoardCommand_SetIdle) || + (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command == + BoardCommand_ForceIdle)) { + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFS_IN_NO_ACTIVE_CHILD; + SupervisorFSM_RX_DW.is_CONTROL_MODE_HANDLER = + SupervisorFSM_RX_IN_Motor_OFF; + SupervisorFSM_RX_DW.is_Motor_OFF = SupervisorFSM_RX_IN_Idle; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Idle; + } else if (SupervisorFSM_RX_DW.sfEvent == Superviso_event_FaultPressedEvt) { + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFS_IN_NO_ACTIVE_CHILD; + SupervisorFSM_RX_DW.is_CONTROL_MODE_HANDLER = + SupervisorFSM_RX_IN_Motor_OFF; + SupervisorFSM_RX_DW.is_Motor_OFF = SupervisorFSM_RX_IN_Idle; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Idle; + } else { + switch (SupervisorFSM_RX_DW.is_Motor_ON) { + case SupervisorFSM_RX_IN_Command: + switch (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command) { + case BoardCommand_SetPosition: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Position; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Position; + break; + + case BoardCommand_SetVelocity: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Current; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Current; + break; + + case BoardCommand_SetCurrent: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Velocity; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Velocity; + break; + + case BoardCommand_SetVoltage: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Voltage; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Voltage; + break; + + case BoardCommand_SetTorque: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Torque; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Torque; + break; + } + break; + + case SupervisorFSM_RX_IN_Current: + switch (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command) { + case BoardCommand_SetVelocity: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Velocity; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Velocity; + break; + + case BoardCommand_SetVoltage: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Voltage; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Voltage; + break; + + case BoardCommand_SetTorque: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Torque; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Torque; + break; + + case BoardCommand_SetPosition: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Position; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Position; + break; + } + break; + + case SupervisorFSM_RX_IN_Position: + switch (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command) { + case BoardCommand_SetCurrent: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Current; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Current; + break; + + case BoardCommand_SetVelocity: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Velocity; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Velocity; + break; + + case BoardCommand_SetVoltage: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Voltage; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Voltage; + break; + + case BoardCommand_SetTorque: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Torque; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Torque; + break; + } + break; + + case SupervisorFSM_RX_IN_Torque: + switch (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command) { + case BoardCommand_SetVoltage: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Voltage; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Voltage; + break; + + case BoardCommand_SetVelocity: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Velocity; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Velocity; + break; + + case BoardCommand_SetCurrent: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Current; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Current; + break; + + case BoardCommand_SetPosition: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Position; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Position; + break; + } + break; + + case SupervisorFSM_RX_IN_Velocity: + switch (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command) { + case BoardCommand_SetVoltage: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Voltage; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Voltage; + break; + + case BoardCommand_SetTorque: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Torque; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Torque; + break; + + case BoardCommand_SetCurrent: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Current; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Current; + break; + + case BoardCommand_SetPosition: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Position; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Position; + break; + } + break; + + case SupervisorFSM_RX_IN_Voltage: + switch (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command) { + case BoardCommand_SetTorque: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Torque; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Torque; + break; + + case BoardCommand_SetVelocity: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Velocity; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Velocity; + break; + + case BoardCommand_SetCurrent: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Current; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Current; + break; + + case BoardCommand_SetPosition: + SupervisorFSM_RX_DW.is_Motor_ON = SupervisorFSM_RX_IN_Position; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Position; + break; + } + break; + } + } + break; + + case SupervisorFSM_IN_Not_Configured: + switch (SupervisorFSM_RX_DW.is_Not_Configured) { + case Su_IN_Controller_Not_Configured: + if (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.State == + BoardState_ControllerConfigured) { + SupervisorFSM_RX_DW.is_Not_Configured = SupervisorFS_IN_NO_ACTIVE_CHILD; + SupervisorFSM_RX_DW.is_CONTROL_MODE_HANDLER = + SupervisorFSM_RX_IN_Motor_OFF; + SupervisorFSM_RX_DW.is_Motor_OFF = SupervisorFSM_RX_IN_Idle; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_Idle; + } + break; + + case Supe_IN_Hardware_Not_Configured: + if (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.State == + BoardState_HardwareConfigured) { + SupervisorFSM_RX_DW.is_Not_Configured = Su_IN_Controller_Not_Configured; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_NotConfigured; + } + break; + } + break; + } +} + +// Function for Chart: '/Chart' +void SupervisorFSM_RXModelClass::SupervisorFSM_RX_FAULT_HANDLER(void) +{ + int32_T f_previousEvent; + switch (SupervisorFSM_RX_DW.is_FAULT_HANDLER) { + case SupervisorFSM_RX_IN_FAULT: + if (SupervisorFSM_RX_DW.sfEvent == SupervisorFS_event_ForceIdleEvt) { + SupervisorFSM_RX_DW.is_FAULT_HANDLER = SupervisorFSM_RX_IN_NO_FAULT; + } + break; + + case SupervisorFSM_RX_IN_NO_FAULT: + if (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command == + BoardCommand_ForceIdle) { + SupervisorFSM_RX_DW.is_FAULT_HANDLER = SupervisorFSM_RX_IN_NO_FAULT; + } else if (SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.voltage < + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.threshold.voltage_low) + { + SupervisorFSM_RX_DW.is_FAULT_HANDLER = SupervisorFSM_RX_IN_FAULT; + f_previousEvent = SupervisorFSM_RX_DW.sfEvent; + SupervisorFSM_RX_DW.sfEvent = SupervisorFSM__event_HwFaultEvt; + if (SupervisorFSM_RX_DW.is_active_CONTROL_MODE_HANDLER != 0U) { + Supervisor_CONTROL_MODE_HANDLER(); + } + + SupervisorFSM_RX_DW.sfEvent = f_previousEvent; + } else if (SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.voltage > + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.threshold.voltage_high) + { + SupervisorFSM_RX_DW.is_FAULT_HANDLER = SupervisorFSM_RX_IN_FAULT; + f_previousEvent = SupervisorFSM_RX_DW.sfEvent; + SupervisorFSM_RX_DW.sfEvent = SupervisorFSM__event_HwFaultEvt; + if (SupervisorFSM_RX_DW.is_active_CONTROL_MODE_HANDLER != 0U) { + Supervisor_CONTROL_MODE_HANDLER(); + } + + SupervisorFSM_RX_DW.sfEvent = f_previousEvent; + } else if ((SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.current > + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.threshold.current_high) + || (SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.current > + SupervisorFSM_RX_DW.CurrLimit)) { + SupervisorFSM_RX_DW.is_FAULT_HANDLER = SupervisorFSM_RX_IN_FAULT; + f_previousEvent = SupervisorFSM_RX_DW.sfEvent; + SupervisorFSM_RX_DW.sfEvent = SupervisorFSM__event_HwFaultEvt; + if (SupervisorFSM_RX_DW.is_active_CONTROL_MODE_HANDLER != 0U) { + Supervisor_CONTROL_MODE_HANDLER(); + } + + SupervisorFSM_RX_DW.sfEvent = f_previousEvent; + } else if (SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.temperature > + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.threshold.temperature_high) + { + SupervisorFSM_RX_DW.is_FAULT_HANDLER = SupervisorFSM_RX_IN_FAULT; + f_previousEvent = SupervisorFSM_RX_DW.sfEvent; + SupervisorFSM_RX_DW.sfEvent = SupervisorFSM__event_HwFaultEvt; + if (SupervisorFSM_RX_DW.is_active_CONTROL_MODE_HANDLER != 0U) { + Supervisor_CONTROL_MODE_HANDLER(); + } + + SupervisorFSM_RX_DW.sfEvent = f_previousEvent; + } else if (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.State == + BoardState_FaultPressed) { + SupervisorFSM_RX_DW.is_FAULT_HANDLER = SupervisorFSM_RX_IN_FAULT; + f_previousEvent = SupervisorFSM_RX_DW.sfEvent; + SupervisorFSM_RX_DW.sfEvent = Superviso_event_FaultPressedEvt; + if (SupervisorFSM_RX_DW.is_active_CONTROL_MODE_HANDLER != 0U) { + Supervisor_CONTROL_MODE_HANDLER(); + } + + SupervisorFSM_RX_DW.sfEvent = f_previousEvent; + } else if (SupervisorFSM_RX_DW.sfEvent == Superv_event_SetCurrentLimitEvt) { + SupervisorFSM_RX_DW.is_FAULT_HANDLER = SupervisorFSM_IN_SET_CURR_LIMIT; + SupervisorFSM_RX_DW.CurrLimit = + SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_h.current_limit.overload; + } + break; + + case SupervisorFSM_IN_SET_CURR_LIMIT: + SupervisorFSM_RX_DW.is_FAULT_HANDLER = SupervisorFSM_RX_IN_NO_FAULT; + break; + } +} + +// Function for Chart: '/Chart' +ControlModes SupervisorFSM_RXModelClass::SupervisorFSM_RX_convert(MCControlModes + mccontrolmode) +{ + ControlModes controlmode; + switch (mccontrolmode) { + case MCControlModes_Idle: + controlmode = ControlModes_Idle; + break; + + case MCControlModes_Current: + controlmode = ControlModes_Current; + break; + + case MCControlModes_SpeedVoltage: + controlmode = ControlModes_Velocity; + break; + + case MCControlModes_OpenLoop: + controlmode = ControlModes_Voltage; + break; + + default: + controlmode = ControlModes_Idle; + break; + } + + return controlmode; +} + +// System initialize for referenced model: 'SupervisorFSM_RX' +void SupervisorFSM_RXModelClass::init(ControlModes *rty_Flags_control_mode, + boolean_T *rty_Flags_PID_reset, real32_T *rty_Targets_jointpositions_posi, + real32_T *rty_Targets_jointvelocities_vel, real32_T + *rty_Targets_motorcurrent_curren, real32_T *rty_Targets_motorvoltage_voltag) +{ + // SystemInitialize for Chart: '/Chart' + SupervisorFSM_RX_DW.sfEvent = SupervisorFSM_RX_CALL_EVENT; + SupervisorFSM_RX_DW.CurrLimit = MAX_uint16_T; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_NotConfigured; + SupervisorFSM_RX_B.Flags_o.PID_reset = false; + SupervisorFSM_RX_B.Targets_n.jointpositions.position = 0.0F; + SupervisorFSM_RX_B.Targets_n.jointvelocities.velocity = 0.0F; + SupervisorFSM_RX_B.Targets_n.motorcurrent.current = 0.0F; + SupervisorFSM_RX_B.Targets_n.motorvoltage.voltage = 0.0F; + + // SystemInitialize for SignalConversion generated from: '/Flags' + *rty_Flags_control_mode = SupervisorFSM_RX_B.Flags_o.control_mode; + + // SystemInitialize for SignalConversion generated from: '/Flags' + *rty_Flags_PID_reset = SupervisorFSM_RX_B.Flags_o.PID_reset; + + // SystemInitialize for SignalConversion generated from: '/Targets' + *rty_Targets_jointpositions_posi = + SupervisorFSM_RX_B.Targets_n.jointpositions.position; + + // SystemInitialize for SignalConversion generated from: '/Targets' + *rty_Targets_jointvelocities_vel = + SupervisorFSM_RX_B.Targets_n.jointvelocities.velocity; + + // SystemInitialize for SignalConversion generated from: '/Targets' + *rty_Targets_motorcurrent_curren = + SupervisorFSM_RX_B.Targets_n.motorcurrent.current; + + // SystemInitialize for SignalConversion generated from: '/Targets' + *rty_Targets_motorvoltage_voltag = + SupervisorFSM_RX_B.Targets_n.motorvoltage.voltage; +} + +// Output and update for referenced model: 'SupervisorFSM_RX' +void SupervisorFSM_RXModelClass::step(const BoardState + *rtu_InternalMessages_State, const BoardCommand *rtu_InternalMessages_Command, + const real32_T rtu_MotorSensors_Iabc[3], const real32_T + *rtu_MotorSensors_angle, const real32_T *rtu_MotorSensors_omega, const + real32_T *rtu_MotorSensors_temperature, const real32_T + *rtu_MotorSensors_voltage, const real32_T *rtu_MotorSensors_threshold_curr, + const real32_T *rtu_MotorSensors_threshold_cu_k, const real32_T + *rtu_MotorSensors_threshold_volt, const real32_T + *rtu_MotorSensors_threshold_vo_k, const real32_T + *rtu_MotorSensors_threshold_temp, const real32_T + *rtu_MotorSensors_threshold_te_c, const real32_T *rtu_MotorSensors_current, + const boolean_T *rtu_ErrorsRx_event, const boolean_T + *rtu_EventsRx_control_mode, const boolean_T *rtu_EventsRx_current_limit, const + boolean_T *rtu_EventsRx_desired_current, const boolean_T + *rtu_MessagesRx_control_mode_mot, const MCControlModes + *rtu_MessagesRx_control_mode_mod, const boolean_T + *rtu_MessagesRx_current_limit_mo, const int16_T + *rtu_MessagesRx_current_limit_no, const uint16_T + *rtu_MessagesRx_current_limit_pe, const uint16_T + *rtu_MessagesRx_current_limit_ov, const int16_T + *rtu_MessagesRx_desired_current_, ControlModes *rty_Flags_control_mode, + boolean_T *rty_Flags_PID_reset, real32_T *rty_Targets_jointpositions_posi, + real32_T *rty_Targets_jointvelocities_vel, real32_T + *rty_Targets_motorcurrent_curren, real32_T *rty_Targets_motorvoltage_voltag) +{ + int32_T b_previousEvent; + boolean_T BusConversion_InsertedFor_Cha_0; + boolean_T BusConversion_InsertedFor_Cha_1; + boolean_T BusConversion_InsertedFor_Cha_g; + boolean_T BusConversion_InsertedFor_Cha_p; + + // BusCreator generated from: '/Chart' + SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.State = + *rtu_InternalMessages_State; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_i.Command = + *rtu_InternalMessages_Command; + + // BusCreator generated from: '/Chart' + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.threshold.current_low = + *rtu_MotorSensors_threshold_curr; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.threshold.current_high = + *rtu_MotorSensors_threshold_cu_k; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.threshold.voltage_low = + *rtu_MotorSensors_threshold_volt; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.threshold.voltage_high = + *rtu_MotorSensors_threshold_vo_k; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.threshold.temperature_low = + *rtu_MotorSensors_threshold_temp; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.threshold.temperature_high = + *rtu_MotorSensors_threshold_te_c; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.Iabc[0] = + rtu_MotorSensors_Iabc[0]; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.Iabc[1] = + rtu_MotorSensors_Iabc[1]; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.Iabc[2] = + rtu_MotorSensors_Iabc[2]; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.angle = + *rtu_MotorSensors_angle; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.omega = + *rtu_MotorSensors_omega; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.temperature = + *rtu_MotorSensors_temperature; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.voltage = + *rtu_MotorSensors_voltage; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Chart.current = + *rtu_MotorSensors_current; + + // BusCreator generated from: '/Chart' + BusConversion_InsertedFor_Cha_g = *rtu_ErrorsRx_event; + + // BusCreator generated from: '/Chart' + BusConversion_InsertedFor_Cha_p = *rtu_EventsRx_control_mode; + BusConversion_InsertedFor_Cha_0 = *rtu_EventsRx_current_limit; + BusConversion_InsertedFor_Cha_1 = *rtu_EventsRx_desired_current; + + // BusCreator generated from: '/Chart' + SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_h.control_mode.motor = + *rtu_MessagesRx_control_mode_mot; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_h.current_limit.motor = + *rtu_MessagesRx_current_limit_mo; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_h.current_limit.nominal = + *rtu_MessagesRx_current_limit_no; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_h.current_limit.peak = + *rtu_MessagesRx_current_limit_pe; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_h.current_limit.overload = + *rtu_MessagesRx_current_limit_ov; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_h.desired_current.current = + *rtu_MessagesRx_desired_current_; + SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_h.control_mode.mode = + *rtu_MessagesRx_control_mode_mod; + + // Chart: '/Chart' + SupervisorFSM_RX_DW.sfEvent = SupervisorFSM_RX_CALL_EVENT; + SupervisorFSM_RX_DW.ErrorsRx_event_prev = + SupervisorFSM_RX_DW.ErrorsRx_event_start; + SupervisorFSM_RX_DW.ErrorsRx_event_start = BusConversion_InsertedFor_Cha_g; + SupervisorFSM_RX_DW.EventsRx_control_mode_prev = + SupervisorFSM_RX_DW.EventsRx_control_mode_start; + SupervisorFSM_RX_DW.EventsRx_control_mode_start = + BusConversion_InsertedFor_Cha_p; + SupervisorFSM_RX_DW.EventsRx_current_limit_prev = + SupervisorFSM_RX_DW.EventsRx_current_limit_start; + SupervisorFSM_RX_DW.EventsRx_current_limit_start = + BusConversion_InsertedFor_Cha_0; + SupervisorFSM_RX_DW.EventsRx_desired_current_prev = + SupervisorFSM_RX_DW.EventsRx_desired_current_start; + SupervisorFSM_RX_DW.EventsRx_desired_current_start = + BusConversion_InsertedFor_Cha_1; + if (SupervisorFSM_RX_DW.is_active_c3_SupervisorFSM_RX == 0U) { + SupervisorFSM_RX_DW.ErrorsRx_event_prev = BusConversion_InsertedFor_Cha_g; + SupervisorFSM_RX_DW.ErrorsRx_event_start = BusConversion_InsertedFor_Cha_g; + SupervisorFSM_RX_DW.EventsRx_control_mode_prev = + BusConversion_InsertedFor_Cha_p; + SupervisorFSM_RX_DW.EventsRx_control_mode_start = + BusConversion_InsertedFor_Cha_p; + SupervisorFSM_RX_DW.EventsRx_current_limit_prev = + BusConversion_InsertedFor_Cha_0; + SupervisorFSM_RX_DW.EventsRx_current_limit_start = + BusConversion_InsertedFor_Cha_0; + SupervisorFSM_RX_DW.EventsRx_desired_current_prev = + BusConversion_InsertedFor_Cha_1; + SupervisorFSM_RX_DW.EventsRx_desired_current_start = + BusConversion_InsertedFor_Cha_1; + SupervisorFSM_RX_DW.is_active_c3_SupervisorFSM_RX = 1U; + SupervisorFSM_RX_DW.is_active_FAULT_HANDLER = 1U; + SupervisorFSM_RX_DW.is_FAULT_HANDLER = SupervisorFSM_RX_IN_NO_FAULT; + SupervisorFSM_RX_DW.is_active_CONTROL_MODE_HANDLER = 1U; + SupervisorFSM_RX_DW.is_CONTROL_MODE_HANDLER = + SupervisorFSM_IN_Not_Configured; + SupervisorFSM_RX_DW.is_Not_Configured = Supe_IN_Hardware_Not_Configured; + SupervisorFSM_RX_B.Flags_o.control_mode = ControlModes_NotConfigured; + SupervisorFSM_RX_DW.is_active_CAN_RX_HANDLER = 1U; + SupervisorFSM_RX_DW.is_CAN_RX_HANDLER = SupervisorFSM_RX_IN_Home; + } else { + if (SupervisorFSM_RX_DW.is_active_FAULT_HANDLER != 0U) { + SupervisorFSM_RX_FAULT_HANDLER(); + } + + if (SupervisorFSM_RX_DW.is_active_CONTROL_MODE_HANDLER != 0U) { + Supervisor_CONTROL_MODE_HANDLER(); + } + + if ((SupervisorFSM_RX_DW.is_active_CAN_RX_HANDLER != 0U) && + (SupervisorFSM_RX_DW.is_CAN_RX_HANDLER == 1) && + (SupervisorFSM_RX_DW.ErrorsRx_event_prev == + SupervisorFSM_RX_DW.ErrorsRx_event_start)) { + if ((SupervisorFSM_RX_DW.EventsRx_control_mode_prev != + SupervisorFSM_RX_DW.EventsRx_control_mode_start) || + (SupervisorFSM_RX_DW.EventsRx_current_limit_prev != + SupervisorFSM_RX_DW.EventsRx_current_limit_start) || + (SupervisorFSM_RX_DW.EventsRx_desired_current_prev != + SupervisorFSM_RX_DW.EventsRx_desired_current_start)) { + if (SupervisorFSM_RX_DW.EventsRx_control_mode_prev != + SupervisorFSM_RX_DW.EventsRx_control_mode_start) { + SupervisorFSM_RX_B.Flags_o.control_mode = SupervisorFSM_RX_convert + (SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_h.control_mode.mode); + } else if (SupervisorFSM_RX_DW.EventsRx_desired_current_prev != + SupervisorFSM_RX_DW.EventsRx_desired_current_start) { + b_previousEvent = SupervisorFSM_RX_DW.sfEvent; + SupervisorFSM_RX_DW.sfEvent = Superv_event_SetCurrentLimitEvt; + if (SupervisorFSM_RX_DW.is_active_FAULT_HANDLER != 0U) { + SupervisorFSM_RX_FAULT_HANDLER(); + } + + SupervisorFSM_RX_DW.sfEvent = b_previousEvent; + } else if (SupervisorFSM_RX_DW.EventsRx_current_limit_prev != + SupervisorFSM_RX_DW.EventsRx_current_limit_start) { + SupervisorFSM_RX_B.Targets_n.motorcurrent.current = + SupervisorFSM_RX_B.BusConversion_InsertedFor_Cha_h.desired_current.current; + } + } + + SupervisorFSM_RX_DW.is_CAN_RX_HANDLER = SupervisorFSM_RX_IN_Home; + } + } + + // End of Chart: '/Chart' + + // SignalConversion generated from: '/Flags' + *rty_Flags_control_mode = SupervisorFSM_RX_B.Flags_o.control_mode; + + // SignalConversion generated from: '/Flags' + *rty_Flags_PID_reset = SupervisorFSM_RX_B.Flags_o.PID_reset; + + // SignalConversion generated from: '/Targets' + *rty_Targets_jointpositions_posi = + SupervisorFSM_RX_B.Targets_n.jointpositions.position; + + // SignalConversion generated from: '/Targets' + *rty_Targets_jointvelocities_vel = + SupervisorFSM_RX_B.Targets_n.jointvelocities.velocity; + + // SignalConversion generated from: '/Targets' + *rty_Targets_motorcurrent_curren = + SupervisorFSM_RX_B.Targets_n.motorcurrent.current; + + // SignalConversion generated from: '/Targets' + *rty_Targets_motorvoltage_voltag = + SupervisorFSM_RX_B.Targets_n.motorvoltage.voltage; +} + +// Constructor +SupervisorFSM_RXModelClass::SupervisorFSM_RXModelClass() : + SupervisorFSM_RX_B(), + SupervisorFSM_RX_DW() +{ + // Currently there is no constructor body generated. +} + +// Destructor +SupervisorFSM_RXModelClass::~SupervisorFSM_RXModelClass() +{ + // Currently there is no destructor body generated. +} + +// Real-Time Model get method +SupervisorFSM_RXModelClass::RT_MODEL_SupervisorFSM_RX_T + * SupervisorFSM_RXModelClass::getRTM() +{ + return (&SupervisorFSM_RX_M); +} + +// member function to setup error status pointer +void SupervisorFSM_RXModelClass::setErrorStatusPointer(const char_T + **rt_errorStatus) +{ + rtmSetErrorStatusPointer((&SupervisorFSM_RX_M), rt_errorStatus); +} + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX.h new file mode 100644 index 000000000..b7b183145 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX.h @@ -0,0 +1,158 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: SupervisorFSM_RX.h +// +// Code generated for Simulink model 'SupervisorFSM_RX'. +// +// Model version : 2.34 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Wed Aug 4 14:12:54 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_SupervisorFSM_RX_h_ +#define RTW_HEADER_SupervisorFSM_RX_h_ +#include +#include +#include "rtwtypes.h" +#include "SupervisorFSM_RX_types.h" +#include + +// Class declaration for model SupervisorFSM_RX +class SupervisorFSM_RXModelClass { + // public data and function members + public: + // Block signals for model 'SupervisorFSM_RX' + struct B_SupervisorFSM_RX_T { + MotorSensors BusConversion_InsertedFor_Chart; + Targets Targets_n; // '/Chart' + BUS_MESSAGES_RX BusConversion_InsertedFor_Cha_h; + InternalMessages BusConversion_InsertedFor_Cha_i; + Flags Flags_o; // '/Chart' + }; + + // Block states (default storage) for model 'SupervisorFSM_RX' + struct DW_SupervisorFSM_RX_T { + int32_T sfEvent; // '/Chart' + uint16_T CurrLimit; // '/Chart' + uint8_T is_active_c3_SupervisorFSM_RX;// '/Chart' + uint8_T is_CONTROL_MODE_HANDLER; // '/Chart' + uint8_T is_active_CONTROL_MODE_HANDLER;// '/Chart' + uint8_T is_Not_Configured; // '/Chart' + uint8_T is_Motor_ON; // '/Chart' + uint8_T is_Motor_OFF; // '/Chart' + uint8_T is_FAULT_HANDLER; // '/Chart' + uint8_T is_active_FAULT_HANDLER; // '/Chart' + uint8_T is_CAN_RX_HANDLER; // '/Chart' + uint8_T is_active_CAN_RX_HANDLER; // '/Chart' + boolean_T ErrorsRx_event_prev; // '/Chart' + boolean_T ErrorsRx_event_start; // '/Chart' + boolean_T EventsRx_control_mode_prev;// '/Chart' + boolean_T EventsRx_control_mode_start;// '/Chart' + boolean_T EventsRx_current_limit_prev;// '/Chart' + boolean_T EventsRx_current_limit_start;// '/Chart' + boolean_T EventsRx_desired_current_prev;// '/Chart' + boolean_T EventsRx_desired_current_start;// '/Chart' + }; + + // Real-time Model Data Structure + struct RT_MODEL_SupervisorFSM_RX_T { + const char_T **errorStatus; + }; + + // model step function + void step(const BoardState *rtu_InternalMessages_State, const BoardCommand + *rtu_InternalMessages_Command, const real32_T rtu_MotorSensors_Iabc + [3], const real32_T *rtu_MotorSensors_angle, const real32_T + *rtu_MotorSensors_omega, const real32_T + *rtu_MotorSensors_temperature, const real32_T + *rtu_MotorSensors_voltage, const real32_T + *rtu_MotorSensors_threshold_curr, const real32_T + *rtu_MotorSensors_threshold_cu_k, const real32_T + *rtu_MotorSensors_threshold_volt, const real32_T + *rtu_MotorSensors_threshold_vo_k, const real32_T + *rtu_MotorSensors_threshold_temp, const real32_T + *rtu_MotorSensors_threshold_te_c, const real32_T + *rtu_MotorSensors_current, const boolean_T *rtu_ErrorsRx_event, + const boolean_T *rtu_EventsRx_control_mode, const boolean_T + *rtu_EventsRx_current_limit, const boolean_T + *rtu_EventsRx_desired_current, const boolean_T + *rtu_MessagesRx_control_mode_mot, const MCControlModes + *rtu_MessagesRx_control_mode_mod, const boolean_T + *rtu_MessagesRx_current_limit_mo, const int16_T + *rtu_MessagesRx_current_limit_no, const uint16_T + *rtu_MessagesRx_current_limit_pe, const uint16_T + *rtu_MessagesRx_current_limit_ov, const int16_T + *rtu_MessagesRx_desired_current_, ControlModes + *rty_Flags_control_mode, boolean_T *rty_Flags_PID_reset, real32_T + *rty_Targets_jointpositions_posi, real32_T + *rty_Targets_jointvelocities_vel, real32_T + *rty_Targets_motorcurrent_curren, real32_T + *rty_Targets_motorvoltage_voltag); + + // Initial conditions function + void init(ControlModes *rty_Flags_control_mode, boolean_T *rty_Flags_PID_reset, + real32_T *rty_Targets_jointpositions_posi, real32_T + *rty_Targets_jointvelocities_vel, real32_T + *rty_Targets_motorcurrent_curren, real32_T + *rty_Targets_motorvoltage_voltag); + + // Constructor + SupervisorFSM_RXModelClass(); + + // Destructor + ~SupervisorFSM_RXModelClass(); + + // Real-Time Model get method + SupervisorFSM_RXModelClass::RT_MODEL_SupervisorFSM_RX_T * getRTM(); + + //member function to setup error status pointer + void setErrorStatusPointer(const char_T **rt_errorStatus); + + // private data and function members + private: + // Block signals + B_SupervisorFSM_RX_T SupervisorFSM_RX_B; + + // Block states + DW_SupervisorFSM_RX_T SupervisorFSM_RX_DW; + + // Real-Time Model + RT_MODEL_SupervisorFSM_RX_T SupervisorFSM_RX_M; + + // private member function(s) for subsystem '/TmpModelReferenceSubsystem' + void Supervisor_CONTROL_MODE_HANDLER(void); + void SupervisorFSM_RX_FAULT_HANDLER(void); + ControlModes SupervisorFSM_RX_convert(MCControlModes mccontrolmode); +}; + +//- +// The generated code includes comments that allow you to trace directly +// back to the appropriate location in the model. The basic format +// is /block_name, where system is the system number (uniquely +// assigned by Simulink) and block_name is the name of the block. +// +// Use the MATLAB hilite_system command to trace the generated code back +// to the model. For example, +// +// hilite_system('') - opens system 3 +// hilite_system('/Kp') - opens and selects block Kp which resides in S3 +// +// Here is the system hierarchy for this model +// +// '' : 'SupervisorFSM_RX' +// '' : 'SupervisorFSM_RX/Chart' + +#endif // RTW_HEADER_SupervisorFSM_RX_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX_private.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX_private.h new file mode 100644 index 000000000..7936ea572 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX_private.h @@ -0,0 +1,45 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: SupervisorFSM_RX_private.h +// +// Code generated for Simulink model 'SupervisorFSM_RX'. +// +// Model version : 2.34 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Wed Aug 4 14:12:54 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_SupervisorFSM_RX_private_h_ +#define RTW_HEADER_SupervisorFSM_RX_private_h_ +#include "rtwtypes.h" + +// Macros for accessing real-time model data structure +#ifndef rtmGetErrorStatus +#define rtmGetErrorStatus(rtm) (*((rtm)->errorStatus)) +#endif + +#ifndef rtmSetErrorStatus +#define rtmSetErrorStatus(rtm, val) (*((rtm)->errorStatus) = (val)) +#endif + +#ifndef rtmGetErrorStatusPointer +#define rtmGetErrorStatusPointer(rtm) (rtm)->errorStatus +#endif + +#ifndef rtmSetErrorStatusPointer +#define rtmSetErrorStatusPointer(rtm, val) ((rtm)->errorStatus = (val)) +#endif +#endif // RTW_HEADER_SupervisorFSM_RX_private_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX_types.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX_types.h new file mode 100644 index 000000000..cd43993fa --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-rx/SupervisorFSM_RX_types.h @@ -0,0 +1,300 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: SupervisorFSM_RX_types.h +// +// Code generated for Simulink model 'SupervisorFSM_RX'. +// +// Model version : 2.34 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Wed Aug 4 14:12:54 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_SupervisorFSM_RX_types_h_ +#define RTW_HEADER_SupervisorFSM_RX_types_h_ +#include "rtwtypes.h" + +// Model Code Variants +#ifndef DEFINED_TYPEDEF_FOR_BoardState_ +#define DEFINED_TYPEDEF_FOR_BoardState_ + +typedef enum { + BoardState_HardwareConfigured = 0, // Default value + BoardState_ControllerConfigured, + BoardState_FaultPressed, + BoardState_HwFault +} BoardState; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BoardCommand_ +#define DEFINED_TYPEDEF_FOR_BoardCommand_ + +typedef enum { + BoardCommand_ForceIdle = 0, // Default value + BoardCommand_SetIdle, + BoardCommand_SetPosition, + BoardCommand_SetCurrent, + BoardCommand_SetVelocity, + BoardCommand_SetVoltage, + BoardCommand_SetTorque, + BoardCommand_Reset +} BoardCommand; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_InternalMessages_ +#define DEFINED_TYPEDEF_FOR_InternalMessages_ + +struct InternalMessages +{ + BoardState State; + BoardCommand Command; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_Thresholds_ +#define DEFINED_TYPEDEF_FOR_Thresholds_ + +struct Thresholds +{ + real32_T current_low; + real32_T current_high; + real32_T voltage_low; + real32_T voltage_high; + real32_T temperature_low; + real32_T temperature_high; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_MotorSensors_ +#define DEFINED_TYPEDEF_FOR_MotorSensors_ + +struct MotorSensors +{ + real32_T Iabc[3]; + real32_T angle; + real32_T omega; + real32_T temperature; + real32_T voltage; + Thresholds threshold; + real32_T current; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_CANErrorTypes_ +#define DEFINED_TYPEDEF_FOR_CANErrorTypes_ + +typedef enum { + CANErrorTypes_No_Error = 0, // Default value + CANErrorTypes_Packet_Not4Us, + CANErrorTypes_Packet_Unrecognized, + CANErrorTypes_Packet_Malformed, + CANErrorTypes_Packet_MultiFunctionsDetected, + CANErrorTypes_Mode_Unrecognized +} CANErrorTypes; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_CAN_RX_ERRORS_ +#define DEFINED_TYPEDEF_FOR_BUS_CAN_RX_ERRORS_ + +// Specifies the CAN error types. +struct BUS_CAN_RX_ERRORS +{ + // True if an error has been detected. + boolean_T event; + CANErrorTypes type; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_EVENTS_RX_ +#define DEFINED_TYPEDEF_FOR_BUS_EVENTS_RX_ + +// Aggregate of all events specifying types of received messages. +struct BUS_EVENTS_RX +{ + boolean_T control_mode; + boolean_T current_limit; + boolean_T desired_current; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_MCControlModes_ +#define DEFINED_TYPEDEF_FOR_MCControlModes_ + +typedef enum { + MCControlModes_Idle = 0, // Default value + MCControlModes_OpenLoop = 80, + MCControlModes_SpeedVoltage = 10, + MCControlModes_Current = 6 +} MCControlModes; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MSG_CONTROL_MODE_ +#define DEFINED_TYPEDEF_FOR_BUS_MSG_CONTROL_MODE_ + +// Fields of a CONTROL_MODE message. +struct BUS_MSG_CONTROL_MODE +{ + // Motor selector. + boolean_T motor; + + // Control mode. + MCControlModes mode; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MSG_CURRENT_LIMIT_ +#define DEFINED_TYPEDEF_FOR_BUS_MSG_CURRENT_LIMIT_ + +// Fields of a CURRENT_LIMIT message. +struct BUS_MSG_CURRENT_LIMIT +{ + // Motor selector. + boolean_T motor; + + // Nominal current in mA. + int16_T nominal; + + // Peak current in mA. + uint16_T peak; + + // Overload current in mA. + uint16_T overload; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MSG_DESIRED_CURRENT_ +#define DEFINED_TYPEDEF_FOR_BUS_MSG_DESIRED_CURRENT_ + +// Fields of a DESIRED_CURRENT message. +struct BUS_MSG_DESIRED_CURRENT +{ + // Nominal current in mA. + int16_T current; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MESSAGES_RX_ +#define DEFINED_TYPEDEF_FOR_BUS_MESSAGES_RX_ + +// Aggregate of all CAN received messages. +struct BUS_MESSAGES_RX +{ + BUS_MSG_CONTROL_MODE control_mode; + BUS_MSG_CURRENT_LIMIT current_limit; + BUS_MSG_DESIRED_CURRENT desired_current; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_ControlModes_ +#define DEFINED_TYPEDEF_FOR_ControlModes_ + +typedef enum { + ControlModes_NotConfigured = 0, // Default value + ControlModes_Idle, + ControlModes_Position, + ControlModes_PositionDirect, + ControlModes_Current, + ControlModes_Velocity, + ControlModes_Voltage, + ControlModes_Torque, + ControlModes_HwFaultCM +} ControlModes; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_Flags_ +#define DEFINED_TYPEDEF_FOR_Flags_ + +struct Flags +{ + // control mode + ControlModes control_mode; + + // PID reset + boolean_T PID_reset; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_JointPositions_ +#define DEFINED_TYPEDEF_FOR_JointPositions_ + +struct JointPositions +{ + // joint positions + real32_T position; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_JointVelocities_ +#define DEFINED_TYPEDEF_FOR_JointVelocities_ + +struct JointVelocities +{ + // joint velocities + real32_T velocity; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_MotorCurrent_ +#define DEFINED_TYPEDEF_FOR_MotorCurrent_ + +struct MotorCurrent +{ + // motor current + real32_T current; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_MotorVoltage_ +#define DEFINED_TYPEDEF_FOR_MotorVoltage_ + +struct MotorVoltage +{ + // motor voltage + real32_T voltage; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_Targets_ +#define DEFINED_TYPEDEF_FOR_Targets_ + +struct Targets +{ + JointPositions jointpositions; + JointVelocities jointvelocities; + MotorCurrent motorcurrent; + MotorVoltage motorvoltage; +}; + +#endif +#endif // RTW_HEADER_SupervisorFSM_RX_types_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX.cpp b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX.cpp new file mode 100644 index 000000000..2e388cc17 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX.cpp @@ -0,0 +1,122 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: SupervisorFSM_TX.cpp +// +// Code generated for Simulink model 'SupervisorFSM_TX'. +// +// Model version : 2.43 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Wed Aug 4 14:13:07 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#include "SupervisorFSM_TX.h" +#include "SupervisorFSM_TX_private.h" + +// System initialize for referenced model: 'SupervisorFSM_TX' +void SupervisorFSM_TXModelClass::init(real32_T *rty_MessagesTx_foc_current, + real32_T *rty_MessagesTx_foc_position, real32_T *rty_MessagesTx_foc_velocity) +{ + // SystemInitialize for Chart: '/Chart' + SupervisorFSM_TX_B.MessagesTx.foc.current = 0.0F; + SupervisorFSM_TX_B.MessagesTx.foc.position = 0.0F; + SupervisorFSM_TX_B.MessagesTx.foc.velocity = 0.0F; + + // SystemInitialize for SignalConversion generated from: '/MessagesTx' + *rty_MessagesTx_foc_current = SupervisorFSM_TX_B.MessagesTx.foc.current; + + // SystemInitialize for SignalConversion generated from: '/MessagesTx' + *rty_MessagesTx_foc_position = SupervisorFSM_TX_B.MessagesTx.foc.position; + + // SystemInitialize for SignalConversion generated from: '/MessagesTx' + *rty_MessagesTx_foc_velocity = SupervisorFSM_TX_B.MessagesTx.foc.velocity; +} + +// Output and update for referenced model: 'SupervisorFSM_TX' +void SupervisorFSM_TXModelClass::step(const real32_T + *rtu_SensorsData_jointpositions_, const real32_T + *rtu_SensorsData_motorsensors_om, const real32_T + *rtu_SensorsData_motorsensors_cu, const MCControlModes + *rtu_MessagesRx_control_mode_mod, real32_T *rty_MessagesTx_foc_current, + real32_T *rty_MessagesTx_foc_position, real32_T *rty_MessagesTx_foc_velocity, + boolean_T *rty_EventsTx_foc) +{ + real32_T rtb_jointpositions_position; + real32_T rtb_motorsensors_current; + real32_T rtb_motorsensors_omega; + + // BusCreator generated from: '/Chart' + rtb_jointpositions_position = *rtu_SensorsData_jointpositions_; + + // BusCreator generated from: '/Chart' + rtb_motorsensors_omega = *rtu_SensorsData_motorsensors_om; + rtb_motorsensors_current = *rtu_SensorsData_motorsensors_cu; + + // Chart: '/Chart' incorporates: + // BusCreator generated from: '/Chart' + + if (SupervisorFSM_TX_DW.is_active_c3_SupervisorFSM_TX == 0U) { + SupervisorFSM_TX_DW.is_active_c3_SupervisorFSM_TX = 1U; + } else if (*rtu_MessagesRx_control_mode_mod != MCControlModes_Idle) { + SupervisorFSM_TX_B.MessagesTx.foc.current = rtb_motorsensors_current; + SupervisorFSM_TX_B.MessagesTx.foc.velocity = rtb_motorsensors_omega; + SupervisorFSM_TX_B.MessagesTx.foc.position = rtb_jointpositions_position; + SupervisorFSM_TX_DW.ev_focEventCounter++; + } + + if (SupervisorFSM_TX_DW.ev_focEventCounter > 0U) { + *rty_EventsTx_foc = !*rty_EventsTx_foc; + SupervisorFSM_TX_DW.ev_focEventCounter--; + } + + // End of Chart: '/Chart' + + // SignalConversion generated from: '/MessagesTx' + *rty_MessagesTx_foc_current = SupervisorFSM_TX_B.MessagesTx.foc.current; + + // SignalConversion generated from: '/MessagesTx' + *rty_MessagesTx_foc_position = SupervisorFSM_TX_B.MessagesTx.foc.position; + + // SignalConversion generated from: '/MessagesTx' + *rty_MessagesTx_foc_velocity = SupervisorFSM_TX_B.MessagesTx.foc.velocity; +} + +// Constructor +SupervisorFSM_TXModelClass::SupervisorFSM_TXModelClass() : + SupervisorFSM_TX_B(), + SupervisorFSM_TX_DW() +{ + // Currently there is no constructor body generated. +} + +// Destructor +SupervisorFSM_TXModelClass::~SupervisorFSM_TXModelClass() +{ + // Currently there is no destructor body generated. +} + +// Real-Time Model get method +SupervisorFSM_TXModelClass::RT_MODEL_SupervisorFSM_TX_T + * SupervisorFSM_TXModelClass::getRTM() +{ + return (&SupervisorFSM_TX_M); +} + +// member function to setup error status pointer +void SupervisorFSM_TXModelClass::setErrorStatusPointer(const char_T + **rt_errorStatus) +{ + rtmSetErrorStatusPointer((&SupervisorFSM_TX_M), rt_errorStatus); +} + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX.h new file mode 100644 index 000000000..7f09f624d --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX.h @@ -0,0 +1,106 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: SupervisorFSM_TX.h +// +// Code generated for Simulink model 'SupervisorFSM_TX'. +// +// Model version : 2.43 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Wed Aug 4 14:13:07 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_SupervisorFSM_TX_h_ +#define RTW_HEADER_SupervisorFSM_TX_h_ +#include +#include +#include "rtwtypes.h" +#include "SupervisorFSM_TX_types.h" +#include + +// Class declaration for model SupervisorFSM_TX +class SupervisorFSM_TXModelClass { + // public data and function members + public: + // Block signals for model 'SupervisorFSM_TX' + struct B_SupervisorFSM_TX_T { + BUS_MESSAGES_TX MessagesTx; // '/Chart' + }; + + // Block states (default storage) for model 'SupervisorFSM_TX' + struct DW_SupervisorFSM_TX_T { + uint32_T ev_focEventCounter; // '/Chart' + uint8_T is_active_c3_SupervisorFSM_TX;// '/Chart' + }; + + // Real-time Model Data Structure + struct RT_MODEL_SupervisorFSM_TX_T { + const char_T **errorStatus; + }; + + // model step function + void step(const real32_T *rtu_SensorsData_jointpositions_, const real32_T + *rtu_SensorsData_motorsensors_om, const real32_T + *rtu_SensorsData_motorsensors_cu, const MCControlModes + *rtu_MessagesRx_control_mode_mod, real32_T + *rty_MessagesTx_foc_current, real32_T *rty_MessagesTx_foc_position, + real32_T *rty_MessagesTx_foc_velocity, boolean_T *rty_EventsTx_foc); + + // Initial conditions function + void init(real32_T *rty_MessagesTx_foc_current, real32_T + *rty_MessagesTx_foc_position, real32_T *rty_MessagesTx_foc_velocity); + + // Constructor + SupervisorFSM_TXModelClass(); + + // Destructor + ~SupervisorFSM_TXModelClass(); + + // Real-Time Model get method + SupervisorFSM_TXModelClass::RT_MODEL_SupervisorFSM_TX_T * getRTM(); + + //member function to setup error status pointer + void setErrorStatusPointer(const char_T **rt_errorStatus); + + // private data and function members + private: + // Block signals + B_SupervisorFSM_TX_T SupervisorFSM_TX_B; + + // Block states + DW_SupervisorFSM_TX_T SupervisorFSM_TX_DW; + + // Real-Time Model + RT_MODEL_SupervisorFSM_TX_T SupervisorFSM_TX_M; +}; + +//- +// The generated code includes comments that allow you to trace directly +// back to the appropriate location in the model. The basic format +// is /block_name, where system is the system number (uniquely +// assigned by Simulink) and block_name is the name of the block. +// +// Use the MATLAB hilite_system command to trace the generated code back +// to the model. For example, +// +// hilite_system('') - opens system 3 +// hilite_system('/Kp') - opens and selects block Kp which resides in S3 +// +// Here is the system hierarchy for this model +// +// '' : 'SupervisorFSM_TX' +// '' : 'SupervisorFSM_TX/Chart' + +#endif // RTW_HEADER_SupervisorFSM_TX_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX_private.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX_private.h new file mode 100644 index 000000000..b110eab5d --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX_private.h @@ -0,0 +1,45 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: SupervisorFSM_TX_private.h +// +// Code generated for Simulink model 'SupervisorFSM_TX'. +// +// Model version : 2.43 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Wed Aug 4 14:13:07 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_SupervisorFSM_TX_private_h_ +#define RTW_HEADER_SupervisorFSM_TX_private_h_ +#include "rtwtypes.h" + +// Macros for accessing real-time model data structure +#ifndef rtmGetErrorStatus +#define rtmGetErrorStatus(rtm) (*((rtm)->errorStatus)) +#endif + +#ifndef rtmSetErrorStatus +#define rtmSetErrorStatus(rtm, val) (*((rtm)->errorStatus) = (val)) +#endif + +#ifndef rtmGetErrorStatusPointer +#define rtmGetErrorStatusPointer(rtm) (rtm)->errorStatus +#endif + +#ifndef rtmSetErrorStatusPointer +#define rtmSetErrorStatusPointer(rtm, val) ((rtm)->errorStatus = (val)) +#endif +#endif // RTW_HEADER_SupervisorFSM_TX_private_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX_types.h b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX_types.h new file mode 100644 index 000000000..50a951fb4 --- /dev/null +++ b/emBODY/eBcode/arch-arm/board/amcbldc/application03/src/model-based-design/supervisor-tx/SupervisorFSM_TX_types.h @@ -0,0 +1,196 @@ +// +// Non-Degree Granting Education License -- for use at non-degree +// granting, nonprofit, educational organizations only. Not for +// government, commercial, or other organizational use. +// +// File: SupervisorFSM_TX_types.h +// +// Code generated for Simulink model 'SupervisorFSM_TX'. +// +// Model version : 2.43 +// Simulink Coder version : 9.5 (R2021a) 14-Nov-2020 +// C/C++ source code generated on : Wed Aug 4 14:13:07 2021 +// +// Target selection: ert.tlc +// Embedded hardware selection: ARM Compatible->ARM Cortex-M +// Code generation objectives: Unspecified +// Validation result: Not run +// +#ifndef RTW_HEADER_SupervisorFSM_TX_types_h_ +#define RTW_HEADER_SupervisorFSM_TX_types_h_ +#include "rtwtypes.h" + +// Model Code Variants +#ifndef DEFINED_TYPEDEF_FOR_JointPositions_ +#define DEFINED_TYPEDEF_FOR_JointPositions_ + +struct JointPositions +{ + // joint positions + real32_T position; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_Thresholds_ +#define DEFINED_TYPEDEF_FOR_Thresholds_ + +struct Thresholds +{ + real32_T current_low; + real32_T current_high; + real32_T voltage_low; + real32_T voltage_high; + real32_T temperature_low; + real32_T temperature_high; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_MotorSensors_ +#define DEFINED_TYPEDEF_FOR_MotorSensors_ + +struct MotorSensors +{ + real32_T Iabc[3]; + real32_T angle; + real32_T omega; + real32_T temperature; + real32_T voltage; + Thresholds threshold; + real32_T current; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_SensorsData_ +#define DEFINED_TYPEDEF_FOR_SensorsData_ + +struct SensorsData +{ + // position encoders + JointPositions jointpositions; + MotorSensors motorsensors; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_MCControlModes_ +#define DEFINED_TYPEDEF_FOR_MCControlModes_ + +typedef enum { + MCControlModes_Idle = 0, // Default value + MCControlModes_OpenLoop = 80, + MCControlModes_SpeedVoltage = 10, + MCControlModes_Current = 6 +} MCControlModes; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MSG_CONTROL_MODE_ +#define DEFINED_TYPEDEF_FOR_BUS_MSG_CONTROL_MODE_ + +// Fields of a CONTROL_MODE message. +struct BUS_MSG_CONTROL_MODE +{ + // Motor selector. + boolean_T motor; + + // Control mode. + MCControlModes mode; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MSG_CURRENT_LIMIT_ +#define DEFINED_TYPEDEF_FOR_BUS_MSG_CURRENT_LIMIT_ + +// Fields of a CURRENT_LIMIT message. +struct BUS_MSG_CURRENT_LIMIT +{ + // Motor selector. + boolean_T motor; + + // Nominal current in mA. + int16_T nominal; + + // Peak current in mA. + uint16_T peak; + + // Overload current in mA. + uint16_T overload; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MSG_DESIRED_CURRENT_ +#define DEFINED_TYPEDEF_FOR_BUS_MSG_DESIRED_CURRENT_ + +// Fields of a DESIRED_CURRENT message. +struct BUS_MSG_DESIRED_CURRENT +{ + // Nominal current in mA. + int16_T current; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MESSAGES_RX_ +#define DEFINED_TYPEDEF_FOR_BUS_MESSAGES_RX_ + +// Aggregate of all CAN received messages. +struct BUS_MESSAGES_RX +{ + BUS_MSG_CONTROL_MODE control_mode; + BUS_MSG_CURRENT_LIMIT current_limit; + BUS_MSG_DESIRED_CURRENT desired_current; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_EVENTS_TX_ +#define DEFINED_TYPEDEF_FOR_BUS_EVENTS_TX_ + +// Aggregate of all events specifying types of transmitted messages. +struct BUS_EVENTS_TX +{ + boolean_T foc; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MSG_FOC_ +#define DEFINED_TYPEDEF_FOR_BUS_MSG_FOC_ + +// Fields of a FOC message. +struct BUS_MSG_FOC +{ + // Current feedback in mA. + real32_T current; + + // Position feedback in deg. + real32_T position; + + // Velocity feedback in deg/s. + real32_T velocity; +}; + +#endif + +#ifndef DEFINED_TYPEDEF_FOR_BUS_MESSAGES_TX_ +#define DEFINED_TYPEDEF_FOR_BUS_MESSAGES_TX_ + +// Aggregate of all CAN transmitted messages. +struct BUS_MESSAGES_TX +{ + BUS_MSG_FOC foc; +}; + +#endif +#endif // RTW_HEADER_SupervisorFSM_TX_types_h_ + +// +// File trailer for generated code. +// +// [EOF] +// diff --git a/emBODY/eBcode/arch-arm/libs/lowlevel/stm32hal/lib/stm32hal.g4.amcbldc.v120.lib b/emBODY/eBcode/arch-arm/libs/lowlevel/stm32hal/lib/stm32hal.g4.amcbldc.v120.lib new file mode 100644 index 0000000000000000000000000000000000000000..641995cc2d9724d7032fa0cedc3deaa460f8fe0c GIT binary patch literal 1009872 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�?#K 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

R`2vYG!Po)gif-+LH9d5n+gD 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

bPU3U`3M^kCO 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

mV<6^P%-NkFo0gFwKaRAc? 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%0AxmdBClGMvi<~XQwbpxm_)XPpd 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Ú%Diu%>epx(DM9O! zjnGF64N!xrogt0OGLneP!6gNKpI|LsQd{JJ#ugd$VM4DHJWKEr!K(%TBxr1lQSNb} zsb^-r9|#&-V$jBx7-(#Xfw_40Qf{cAu_Xp=Y>9!!mKaD)G3AUcG0@l&1J4%z1%kg7 zyi0*P_1z`-fZ(HoX8#l9a|2V#y)O8!;D>_Lf;0b1K|TOTM+CD3jpGjR zy9?b%Fi+4t!;qgZ^k~6xf~A6!1!oA>2p%Z7K#)ER*pDW`7D4LY$v;|fo#3g0baTM` zp9x+pc)1|8^~}FkkXxpb{(hh=jjo?9o3k4emR|u{VJX!Eu!OI1ICwPnC{en*mz9G0(@M}S? z$6`Oa3FZkF2#yz=DmYiLUa&>*7{Sv7FA)5d;0=Ns1vd*mFZhn&CxQ-MSlF)|!Cry` z1xE>%3RViv6QtDz%dZwZUU0qO<$_lU-Y9sN;A4Wc!eBk`3w|!B@s2`%XTjYChX~Rb zgZUML3y8QE4;Ffr&_@b=91&ygG@;KE`sYMkt1E?nEfIaVUg(X24-z5wjL>fg{gKdL z5pixKcxPh2vWcjNrWvGjiO8qF4AMn{69p>;4-#A|xKa?WKj!%Gb7T-*F~@^!gM8Iw z|L`hkkl(&+ueYF~bA-lu;`?FKZ!ecTGczO7K5g1hl}L3bt;x10 z%sZ}j&ZOFIArKF3M~i{lPE462@I=4g(x5;E&^3Dt8(=7~!?i+z2{4|4w3XFZKQuyl z`(%k3062vTQ30cTjI3`R9E?T0R{G%zd>kDBo(&kXCNv{v8pGKH-V4FNdyHW?{?q07 z9cY8CdM_||3)paRf86gN0H!~z54VcKD;VqZ*A}f8zU{MZmu&{?y9E`oJnLf}w!Q-( zNLhOv=ObN%e;aK7W`Bg zS0W8jzki<~eIovCu>Jc57{UI1fcgf4$Nu55>eqKH(x}hx-%%jgKguxJ{&78Vu)bto z>ipr+>(}=_(!u_%15pZ|4Yq&pfDx>(H|pc_l>Orji9Oyskq-8chSBUFWf*M#xGp(Z z-^f7!FeTvEw=X)t@-F@v9z}h;#x~gcXflmIKTyt?N(sm2ac`DjyW`LZp>N&K@u zwzmNPwhWTSS7lXzVUyP&VbhdrK}S#E50V6%$MwX)cBi4;KY_t^F}2~hdt6$5f5(X% zXe$HS`i@SkFO2)V82PM^Gf?(8)=Pc%A+kFTwgkU2rPa3;az_Q^cpMDRK`way$^ysB88v&nT!(Gz zX1OM0uCRj`w9UIet-f`rFBkbde|_<9>x-dmptyPwnHy0Se`efJ4yRNtSys0wu(WNb zJ}rwzjV{VHVdrbx?&Av#9(yAV41{k2N7kK{Y*Qs0x8VyJyLmYacC?P{SbD!SJAPqx z*r&}c>r11LMH`B@##MAdv_S#4-|s8E1o!-kHsqQzD<+wam~#+Z$Hiff$o~};0iCCBHwMMS)^rGaRpa>MN2yyB7rDjyZjig90(YX)oN%V&1GhY^ zhXZe7dU90nZ_`s_`bS9LOa6>3%?ZSpnXZcKi-B92u1*@mVk0xFyQbp=BQvMB<^-aV zIUrZ_2IYjIJ1%kcDY56jo*Ak7VU-NOqs*GHK2QHA;# zn?7cQru)rHSm$wY9g~MdMm{3C!3}-nL~}!LIkAUvxD*M!gMG^WYKeETPZ?)bP0kkV zQ}$0wyoY_tcz#XJ``D)}!xA4j$rwH7nw-Bn-D7b}eCYI6ndUrR3)Y*c3afRV0bmES zjo@(A6m}Qe2M~244*}d~5FJAH*bemo9dfq-eoD@S4*V_72t{57MCd2N)i@Wwz_|#Y zpLHf+LAb?S#<#%^w<`S=WD0O9!mGpnDGaa4GpBG9`A6)b`B3KkWB90nIs^DI(?<`{ z-EDepzUF+W;U70rPq68AMgD0HpEyp_*J+qtIk{LLgES92d}^6K4e3$jpEg>6DNmiPetCxL1p|Mk(p&a-HFCSCpj^$ zrZOk~6kNt3NbWLkg-iiAMs0ar^B!*L! z(FM^;@IpUzqS4Tqj@jMJoP)D)b~syY2&`{{@i+@`0{KD~xY&t?Ll*>2Csj}p&L?MZ zGI=v)E@!2eII+8JJsVIdSCyGcFJq+~gc%nh>W=@=m8|p%Czb$VWQ-4AIQpbMWvZGTdX2^VCL+d+gn93GT7?s3o|^-t)E$_t@hcwJF0r_Bc^( zj+A@sePVOC$DTi!vAiVqh0Wm}d)$27RKVpW)Cj6P{5$hGSsm$IN6E`;%SB+C83m>v86DemgR@%OG$~!LckDSopvW zFt8a0zAM@AgLr`DODv`_VB>*(=UP_ITiUW5MjlI7)gLjhZ26*9oM&1&ud%UpUgM%w z3x_UgY*}_#T}%DE`emh+We3cwFI@zS=y`Q5iyDT)wsBrlPwHakKh;e{w;&enXnX8@H zU|c5p2WFAfMCXp()n(AUVOi^TiF{Xr*eG zN$uK!vYj0$zxD2u=GvsR4!o9jUn!%85QgX}tW79>m%Qt#zVD*KlF9gy{vo`Za-J#O zCX}xkHt>DH+Hg|V2EIR}??1_R34Wr76+cJ+kJ)+hHK(nar)Sp*2l(x=eREHiTg1ti zl(lDD+s)3{m@*^UcSrV_gB;yCbA#>~!5)(|f~-nyMCqGfj-|{xD`PgH)Vh3!drwxF zmrCzS(^hh6faZq|9j&B7hMM1o<_uga?A$goT|O|8jA~pn6B?`!vtfbYdJBtvj%#MB zeG=t+!E-<=a139bB2DdcK=TkdeuH~Ya*Wef@m$I0z0eu9ip6rgoXc)+?@8W2+Y zAQwB z{nikT|5G4czL2IZFmblvLcwOiBLq(rJX_G%7NXp5g#Lq|nTG-YVWFQFgo`!P&ewvO zm>6NZ-30RlM+=q+P8Z}B^^~s{JXDZ729bY?pz%`*`d32VB={FWyXT~_F@)T!!Z)^t zpg#~g2Tv{5+e>hu-~_>Gf{O%K2>w{`9Kp*3|0H;~;NyZ@1V0!2r(hV99Be;R5F1Vz zx~t%BfU@9T1*xnB_JwL+gnL|bPGeLfM2QTpg% zJKP?K`Nk#=^hVP7e?amdBSQWuq4Bse^~BD$X`zc|9cwE1YZ`7u}7MbN;@x*?TOKrg;k}DU3^OxpY2!W z39+HN*4CEBg{!bKKIp}Edl$DqtW}Fxq~N8;XgBfZlWyPgJRXi7Kjx!5ZRE~Fr-J91GW_Se9?^zJ*!e)PdDnr5Yqr8>QI2EZ1}jIk zu}w2?Am+KNtPs#%-(C<39&Zx&Igg3Q8?;gBm{#8!)OSOm0h{cQR$m$F>n`;n>7PH^ zdfBlJHaxk(HU>P_W5-JzX|BNgPBt4OM~(irHXHBqAn_RRo>>F&yXL5&TeeO->AK3T zDoQ`To44qbVYi{226)Xaw|kPpGp|nVOR7IzySQX)E^IrT2G!4DO7<%)Haur5FtCFu z_cX<~yl^~!z?Gk5l~|9!xfQe#8CWrS+u{OmN7I27m7lCFar!v}m{a-5#$tL4-n6Zg z3SGN-i<^;KQDDkceuAw9t~&PJV;yoff1X@Rc{dlO8zC3fpKhokKf0d$$=mXjCp{3- z`aJT=wiV}lJh;VLPd>S(wk@IaHg5@^L>lcZ2(9mwYuon94$M{Jr+A?8OPqmSShpU} z6U=LxW-(%3)q=(vt~J&O?!Rhyu!Q@5HX^=737&i3rMcNlZ#@$6ZhAc8K6*0Z z-SsTQxq2buzIr+0e#YHrf8*yfPp=1O4}CG>J@u~<570Lv9;msbYmj~%@nHQL;=S}o zh==H}5D(S-xEiMUX*FE$fjD0eLtLP#bT8Cph(~BDxkqZ6LyXdk5s%i~`eBS-i?~St z6!BR7E5v*2n-TA$A3{7%)7oWU&5x?_no92pnjcgfVd#Y4p-oEn2Hc_a0KlC}b0OAU z@NEaUTWNkG-J|p}z`aTz4Y*I~GXeK2eJS7prLO}#sPxT%hm^h(uvzKH0S_zvD&P^N zKL$LCXA)k*9#c9K@VL_508c2L2Y6EHVSuNV9uIg%=^21$mHrXnIi;yHeqL#6i(gQB z9pFW!&jP%p^d*3omFB0hSq#Wg4Xp|00`19X=NxnKIPj zbMI9{TpcQo{mGW04*w3DLmfUpyo?xi_>WtHI{fEt8S3!47RiWFhyPbgP>27SC8)#y zr!7MrK7Fp5GSuOBwgh$fT$yBYsKehAggGAS@bhgBb@=;Of;xPzPBLYv!>_VssKckn zR+B>={sNmr9sa>KhdTV_mY@!Qr6s7tKim?=MI`&ufwu$|^louD7myK-aCKrvHKL~= z4d;+iI){v%W{bi(WbAB9z&T{>0!zR-Wb86az&T{>N=v{wWbA57z&T`$E2Yelz&T{> zMoYjsWb9@T&!cg8<=}Gsq2YC!EEzt3gvaMHX1sx= z>KN(OksIWVGCbAcLbN&x4LQY$q?4cI5-*;2r%)w(+4QJzGS{YyqQ-Hqk=Z9JxtHa` zuEJP!t@jo8_#rS6@ZD>MbHU5vl|8bTH{6TCXjC+Rvh%JQgmSs^xU5n?eq-x5H zS}Fl+QY4989?{^*XxGNM%?g_9T^`Y_PqSSf(W(k+3v0!p+r-N0RU>Oh)rvDMlHx>5 zJd?p*1CEir`zYnC3}!#Pu~LlEbcQ&COG%WaOO&@^?DB}_oenYX`Cs&i=KsL7F{;~T zfl~bgY@GX@eW{3jMAK<3&0QK3lp!S?d|RREw<*}$L+z)#U#i_{5%(|097oQ5;J63t9#gbCHR9d~ zZ(rRb?xSi6WOTPh+J!T)Yr%x%Qz^;e5%)@u`68G-PSEb~Q*^fq-F=#=`T{TSJvKHK zRhZg`Plv0p2I%J;oPzBFC!}nkEeq$FQvt^u2;bdSg&K-f*xs*KCv`|F+vpdrPouK} z{o(v^fHd+y5+27RZBN#L=AOjs1uqf&6A>Ri4-396_@!VR<(Z!=NLvij#YE^tY4ejQ zhr?+ue1iRt_B0;H@~C90;QoTNwIP4L;3C0B!R3Oh1dkLvR`4Xj(*=Jjc!A)hg1;2J zTJZORe-yk`@J_+|1s@T7O7I22*96}Y?_$H#(S2>wfu{?nLG{Q|L*U^l_t1p5mb z8yUzA7kZQ+^E69~!%;!Qd;-P}Zwg&W%h33>N^Rf2H;F*Hw z3SK05nc$Uz*9cOl!tyr@-Y$5z;Ddt3HV1Og2>p_vvC#p4i_jklatR;n{fD4~hY{)j z>w6i$E9c=O!OsMZ%@EEHr>l9Mx(N0Y94^RpYs}{sdBoX*iv(8)8k-^HpDOfuf>#J~ z9UjYb&po2C83H~l^jm_)FB$k;XGXa!{J0Q%2<|C3LaoG*AeVuXzC-X4!50OMO%d`x6WYZD6XlH!5zyEU0Y?gdA3@H8Q*N$cy&!kxBcDr1 ziKhu(Aowf68w9x!jB=X=-x1s<_=O-J#CYs0PLfkTDQIklz~4(~?!HA^l?g&mB_e;0 z(2Im#F7%N^$R97Xu^mGCQlYOF{G;HVf{zGNM@n0m-bA!xo`*nV5C3o3vpMw=YOG+a zkxPnABbOAlo$HnzxorvfSuu`U{A%X3G`7~$;qQ0e)mh$~(oI=d^Y(68@^O;BUHA%O zJf$|=g_E6!=b;TYnFj{bxHKks`e7je7~&>S@18El_X->EC^4Z1FF-M>*DqA?Vi!w&@?hgws&p2bKWZuKp^JX7(C% z{6%~4fxOF+4z_z58pwql+hzOqI8F(aK~mMAP!SUnY`f=yX4+ms`V5;MXn=YAADkxl z9A>`L>!aLVA_p*`6FU|Nlwmj=|2U^B41tJpyp}dtxp%>^Y34OSF4(TU9&aKq&~5cw zjH@_!Y@W&hdtRPJI#}No5cqk3VUtfnE?D0!sLx(snuXZ5yzSz0ni<7;Z!?&Tx#SzB2r*nAnHdVaew$JJNB8c%h>z{`3qF<~H-xS!hKVrwm0O`QLz?{J+|c@H zZsk@d<_?Ig4}ZFL!64X7WUbx&d3?QR>997JHWH4TTY;P{`Y`r3zftuywbdcj&)RZS z8%qc;o|$XyBWAW^9}&MP*#GW0zLIV8WZz~ULEo(*hrM?eut&vm?$#Q#_1kk}&r8tn z2geWGc@S>Fe_MARK|u~0*}r+(c7kbE96Q;+8J|C?{hLAj`#pbHpCZ{^u$A)w*em6D z?mc#}e=~1JyK}R(ElGO2KzFgbKzB{;0^Mx~mLc8SI0@;I?j)pVTPGpC+S-xywss`D zd3Gdyw%gSC=xp!SMQol3Dd!;vq5llI_z&HNXbk@SO`S_Y&^@O6LHKyUQSP7hU10GG z#Jxpnei3m8R`<5Bz8dLUnBJJDA3*vErtcW2-$(i_rtcc8`Nc4b>3fD4cMK+df4-*Y z;P=RXaHOsTj>4nV-CU%H;it!>9~r0L1phURB=@mm-3j@8yK(f5FV6w^O39CaT}S}7U+I9 z{rX}((x%^N(4{v0W|OW#`eu}O-(I2XEdSkBeW*=uS)(H7;6!9>KxDo#M^PC)FcjO2 zQ_C)g216PBjwSYjGWvZ>41qFwt0jg)8O_NPQ)U>H(O+9)IF!*5IoY9nD5EniQ2=E$ z4J1vOLMWpXmKXsOhVGUa85*cE_eNjbazth>t+>Nus2)B|=u?B=obJ@DTo*PkNE*pP zrTIy0(xbzgpTj0SHmdmwW76ZY^a7in5Z6sMU7FPV+%+=g-Hn}*Nl)&rA~gGPA40^f zm*Gf-ei*UMFD-yxCuc&3Cji(Al0z=SudZy`I_2auVl5_8Zb#7cD;6Hwk+nJD0r74? z74JhTJ`iyzUVs>WB1*xJ&@r@Ij)>+q`uuPdumGET^A_Mok%sdX-U5d*4d*L%h-x@r z;ShCL49-{hp;pK=oUg1ynu{DXoUfc~({R4>8=Hpnm0N5Y&R6J6n%7Fh`3gVW%2*c8 zSLhmq$EM+YMWg*y`O4Ku(@C<1^A$RKHZpX+ z!VQfx#vnQvHHWP86|Si&nZ=PL^=LFX&=mN3p&jzTR@f}=4=^l*JNlBO9r zU*Q@YlZNw^^)?OXD;L@{oUdGF({R3WlTE|<3h#DP7S2~5v}rnD`2g)XI49xJa&Zge zTad5f{Q8FTl?aa4g{LOf03kiw6Vg?2F5FS^y%0NbI=uOZ zco3!@JR@SImN3p&9$|qO5S_&W*7?e5R_0f%l*U^b|3b8xGS>MDzq3uHcvQ#kwS;lL zLW?eUIHEyJ9Oa!Iw<%8dDk{zc&yCMVoEKk#xNn>X)h~WA;(_tsBOVlg81djZm(eVU zv*is=ybJ1j6{r4K)_EEtdI)hZlFHAC({N11s}RTIixKC>X)ac*BG&^to7-1KZu8SQ zd=BLB9#sh*g4alAQ#Nk3tFB7P*NZBMv9%23aT0LL5n4j5s4fgP&;Pdc?5=Ep##y_aW|( zcmZ)%;zPvQ2?ssONhA?>ObkFAPwb7jQ-U8Kof8KjP9*5qIGH#UahJrgh`T0u9NiL^ zAnu;H9&wMv-H3Z8UP9a}@gCyd3A!!bE%8speG*YjEAO7@f;czP4{_hbaK!x*;}G{x zR3Oev(7)Oq2|6p@Gtq!}K%y1#zy#eC4@#VkcyQt}#Cs)vhj>Wh7Q{mn42MCEfwtsS;lT?otWv@qD*R^ak9c z65ONtUX|cBv-hb4{RQ8z619K_RAL3-L6tZh@Q_Lz57?{{X9FHqi4A~9RN@A}qbjip z@R&+G0C-#_o&h|e5^n;YREZA(PpiZ~0neyJ4qlg@Rf#@;=Tu@C;CYo819(9t$^b8_ z#QuPnRN_Z~msO$}@QO+t33yc{&H%io5|;s9SBV<|Z>Yq*fHzg*3BX$zJXc|a!j|#p zxU3mhA=(o!lD;kDOAs=5Ds36L6|W&^%lNh>Xv_G%C1}g|F$g{xjVvWoXNI zz0IL5<1Ln;E#p0wpe^I0whV0x+Q3|xW6T6v^dKWG+I2+5;R(@1wprt#%S>{n?s|;B#*HRw=@r_u8WWp&FF?_ zs#=17XZ~-%i1g`xG_n_y+v8*~GR7DQeknTh|44~_X|bq!VmcwR?@<`AyGI=V!>rj@CJxJyq^L;D;a)_Myvc_p!YN}t|xO~-0&jAf(crrMDy>qWKl=A%k*gnz~PwSd*?RrXl1F2nJr?zu2^>6k% zwaepF{gUl`TzO;nJ9?aIS!3=F-ksK+6pg8QF9dnk#Z-#tdzfm=s;!xuR@nHLs!r!l zn=-Sed`5esHFIlsoLRkt%#zZ|>hxX*Jy@kWnQ~xdctQVF_MmB|Ry(6|M!DZT!)SK2%UFMxvHq^@%bV52%IdNyvZTUu5yRyd_?X#cmj8Xt@^|DI@`o|WZ|i%9 z?^VWpD6rELjPvnUFw%4WV^*3|3Mzi&Hpd|LmvdalGYIHoVsZTOQir9t47 zhw)vxE~IkFkiaRB_H6ruWjQ@!%a&krChTpgu$|3+z+C_TyS>XfgY!+kE8Ff$j*os% z+MD=+3Ml2#vaRHI-@lwbFndO~=#0xFOW@-Y4l!p$o^G3PP6)y8i4*pnUheDYPMM7n z_ja>c_$F*Qemj;A=!knSwj4hTTaKTrcfVXieb{rM*?3%IV{xuX=n-+Bgy#i)i0(C6 z>uJ*q_Bvs&6P9}Wk#mtjs)a33!gk6;v2#olA9(wbcf)?;!0@@B8`fxt}6GY=!eHjbucnaHHg9p%OW zxp#Rf`7nf=Ecxs|^Q$C(Hu;^Q+yn;wg*K6oj;|HGnAqL(U&_79e=GF$M7cbJBWRN} zCW+Y(;&>u#AKAXYhdES4xJ8Xk@lYaFMntHKvWOTi=#oJcHG6AvN}c?EM5yit2t9%* z$IJYQ!k;QQM{tqga={}7PZIp8pjpF#daf4wkAfUOtp5?g7X;rC{8-Se!GK%`TwKbV zH5b7CLjS+^z6HFh;%a;EGiM)?K;RGpWJ7=i!bQXoLb#})xpOf<1f-~F5=bDC5MmM# zEh;fVTeq`h3sx zGs&5E*36nUvuEG;%vww9Sb#oOXsuHLdWO(ihXV9Mp|#Eg=nI6V4jAQfI-Iy!aEss$ z!8Zjz5Zo_l<3M7)&Vn>sLs~Bq0czi$z;ekyQE-l6yu1hp;!>RluB&jjxgd_?eR z!IuT!5&TH-3&9W$U_Fk4y#(_F#|ust{DB}%<*=UiZ4T7B1i;HB|9Zin3*IM4cT%iJ zuQ9||1>YC^T<|Nwj##QdJ}j`)m?bz!aG2m!!BYk61+^{#>T6vB;5x~tg&oTMwct*{ zcLfh+XO!zNSZ}N#*GP~q6`U-{RTIpgB{)ZLu3)_&?eLIqiQp>1s|9ZqH1?P$i%0j+Dg4!22=zO8a3Tj{A z$k)EWfySPx_5}`lmhfp`;GpLUt$l%m*1o`j+7~!b+dBoW5WZD{mkC}esO_GDPx}N1 zu9y5f1UCsjDEOG*6N1_|IO;tw^iDw<<>7Yk7JOgu6T!~}|0YO-Jme22d6*&?73?9X zeT9RsztBSja|H_oj}a^sq*WfuuMnIrI9u>^!CFCD*T1wNEtEx16iNpOkaa={A(FBQB}@MnVe3O*+ITfyH8{!wtB z;NJzQcglYB6wDDEA$XkN34*f)>jYZ_&lkK*@Or`91vd+B5!@m8rr-yH`vqiv_0%&Jk=7Tq<~h;A%nb%N*%Dgx)Inyx?1c9}0dh7{Y@T`_n~`3yw%1 zAvju4`zlBNX+qZ$aV>8Wn#+$!pD*+(BCd(6g}#=EWAR3zHwxZQ1m6~+w+sEc&|IFx z=eSRV{y#)q6BO4cpg$=@$mNP9(tU_1A0YH7!9u|b!P$bfg3W?>Jk$Nb?NK8{Yecge z`Har~@;#iGMZ|XJ2o90_VS;?lWqArj*YX{&V;|2EO}< zD5tYN%F!QE{@-=j59`L=n$Thr8jJg^6l*6w z`(LplEn8T&tg2*j)BJ`7r40)j+G-j-_gUscm0w!aRMWV4ffUAn1k;`QH@a2#K297` zQ!ntTjhm35y;oJGU9eOws#`R#v86!#t3zY~eX4&i@9JD+j>lO)l;-383CE!cDAs}J z0Mj^3b>J}_3_Pb86qpkE=6gjtHlq2Cgv+`g<_yB>Wl;U_V}B@*=jVI)L0)q^kb&=@ z%r|{D?Q#`=P~JAkBOm4A6!Ybsigd7l>p?$;p9!Xad}j>G+YWg=pDB;0sOjGrq=Wsd z2Elg8!(jTychsP~uLJ#KzL9q$(!u`KgQ!5B38sJ7A|og-JlL|bkjMVvQt8X19RrB) z$4~1Q2oJ#T-f%089!V;eR)Tq1Htis48oUFkOZ^6)VIgKAILY|r($J%R}Hp1 z4DIqd%|3262&_h)eYzQ*>luiW0= z!pGxeQ-Zvi{Vj`HHzt_2?n;n14A&vvPbrV9AI<*w2z-I+)=fEhzK}NfU5tDj&X%SH zK{MFjslz!sZ**Rk4&SZA`87XG;j-dg1B1TH3%{^zYGgk3Sp>S9TlQLM)ODm5<_fKa zxk77Ua+_Cfvg*lA&WnpXQU6l37mN0-sIjXt==)YwV>RV<_NL|ux;<~d1ZvTLd8}Tx zt{3Dzgqk8h7am%lk%J3;MneAs7{8A`qtQA1cWW~StzoAcYuKF+p@P^YP6aWVsDcRH znNUyFnGV;rw{xR&*ezZc(aOZ(#Ul(ccVfU#Iqxeb_^O6ZZ<@oviC2t>Ux(Eh;dC{_ zc@pGLm_N&M{tDc~^z5*cMWJLnCCNDzIGE`<$G3ROEKI^2fn zWBfv|siaP!msRq15M&SSR95nz4DqT8Cx2*&->W1mMT>bGS-bFqTW@~XgbLhW08zF) zIviFbov%S^&QZwXC(RS^3ylPk%LpiJo-{QBDPbzBMzlfiw&A<)bQ`H8c`d@)z>KS zx0f0PP%rd0o*D&thM-0PS550-p+*69<+xQ^qhNv|s8PVLotljr1=MHK1T_jyH3T&Z zs!bhg6i}s1vr(g<)ezJuSZ)Yv6kKHLP@~`{ri2;=v?Q9x_sdO)aA@US|a zyMY`-arec%kWTXJZ5nSmY4~*ut+A-7=!|5$cm-wDA3rDnF#DLUM}W{3k731thhuht zfz2?mmI?nOR()}+`wuO2M@zwV?y)uCam(DXa=R1@*r!g2U$$P-xOm<|{c=@W*Cy_L z$rM~&u3hu`i|6&qa=r$gG__({$q8ki57b~163seIZ|OL>DKv3WY%tF(ijC#@i(+G0 z!BwcS+}J8qoflk%>aEA5uifc2O|^>`OO~oFnR-fs%T%9Zs4Ux<0hg)jsCG3& zFAEvj9`l^)vmQg%^oS}U>v(WPR7b4uc-UJ>@+4P${7A1m!S0F+d>%7_Ydfj~G#{n- zco_>FtXXk1UW5bTyVrIk^6T5BFX7+eL-loEn)iNpO9IU`4BP}Bw?QAOJhr(u<4P&# zIl#3Re2`^G$M0Z1RQVvlwF{INToVD(;u;5y9e94=84~nSM9?hy-fI}};b9!>;{y&~ z`G_+Fs{|Jco+WsJpte5={@aD#EVxDRH9>wSqujlM`vo102lLYfdkJO>ju7N=MZR*u z3c=}ubgskl1%itNTLsS+)KCB5yGH1Bg8W{<`o9*WwH4CZZXgC(!>VquMxbJh!30_g}z^CvzB2iX&jWsr>b7lkOX~j z;iuytmj7AkFNr*^abUBZjzsWx5gLb!ZciWgXctAgKBhS|@*c$cJg&spKU|hlHgt*Cx1D+nd366hdq9Xo@ zt68lv!X3Zf`|kdtpD$A3r`f1mz{+VB$A@6HJmH7K8GZLmuxD9KYba!Bp^> zW1BL#mY@)Mlw*#UDAH{Wiw^#se`Hoxp8lTi#Ut|aMvoqym6cyGdQ|>D`JI2)57=_- zJO603-u%EVn^Nzx24$6JX7AXWIe*9AUif9;*8{)w`TX8rUtXZ?48jhfQ~ZThh#3KA z8$SPLWk0poia2n71rL*R%eM?Ee`>FzYk2k?hiLDSL+a_ha_ii^)kDf{EeCXEuhqRa zdgbx9AK9Ll)11|FwFMuO85Y{rb|HIijFs9bNw<2eHf8B|c(T2^)mf>lv-)J1UhCS~ z<+#w~#3Y!SsT;%nJFkt;w{ozJR_ey2xDxccxwGG5>c&p}qk(!TJu$onzA;aP@4_`n z7|lp@+CJ;d9WZURV=t~gt9R^8j_%mo(chj1Jw69+f8R~bzvhnOv9aQTRhU`9sKc_Q zjhU6qxS18a$6{v1-e~Q!Eqk?n-L(C?tL@b=0fLcJt5sHbbtKDKJ#F7=&er@RvMDxS z6Mf*yO;%2Qc}8~9TJ*G(9=>`l$-dS(3BapWQ!BWsfaW5fN3b1VDuzjeY`g!Kr7){rwe25Fl-tDfBM z=mVE+Vt?=}wzA0y%buYP1EziPkG76$(4Vdy5IbGrgA_lzEBZSC{Y$rNR@TJ&!y_%p z-(yLE+KqiLgcVV})friq_-oC`Vvk*)b~WA0r+aC-ch1qfO&_+_ z+jp_et<_uWLj!H3yna}Nis;+6+VgQ6-#46p`@FtIF`hgoLsw((&3CS5>s_<#jWt_M z|FX+*l+-c5Pfk|3>8IxzHzH?;cYbjEtolu#u9!B~KQp}E*?#ZPBkgV1^v zzuvdrIpXz)tcz=msV{|yf8zl_IMz@F=DJtMlZ zJ{$XOWwqH>>?wW3azt?c>a^J-Y*R)*D;=ZnNwDi_4c4w^ji|ZC>HXSOQ+=|`{49=W z1n)ZHjZ&~Dl*7G6ITJtYZ+lyKVBO%nD{lLc#}&=`_Il`f*8t;Py3S0(J@|Qbn0mx3 zAmpQy|CF$HUjh<31iQ!EyjZWj63IhL3^3*&!1%9C3*)gmX66<|Y+~3Mi>HQ27mIVS z9pEq6!GtUrl6-%`4(%2ukJ1d#D4EpFo3q7hDy`5S*Rdn&f1B&#m=EHpFH`#Dk?;Io%A;oUW?{;LW7hA*Q1fZQLfZIfLEf zAr4LeWLnzcko5Iuqcz#j%u-`re{l9X+cT8gKW@r7*_C)6x zur!ibVpllR46)R%bmkl4EPJMNwjq|;vz;ppakf3j`Kck!v8x@fcGuE=XxBRQJgbT2 zcD=LP5a-&B&i^sQd3Ljtj@C8X`F5K#%n&Q=We(S#>ynlBa;L@+?e+@iJVRVyU+Ang z#D(_74vjGCIv3fOIZqg3mA%?|(-1$h*E)YT#Krb?P7)rbb)8G>o182|Tx#Fu&_tsy z`LVs;nPZ5{>wSJ<1J8w~Li`+jGGAy(TDI}aIRjs2Lj-4IvWTbwU|)T*fSH&arl()IcTT{2%~IJmKTq8F%4C&>`?D$7YVM1z6>TSJ_ohB(~~ zu}}?jTthU%`mZ)%jKejwNEJAo2hr^`sj&`MW@uuu8s~7egC?3)p)#yhs!H;ouz8FGtCfZsX5L`hFGSmos$i5wyJeb zGsHQnUfUqn?oEEE8k6+*Gm2iWcB!Ox!*{OQjkO^iP>_;_h+l=V0OTb=hj1rmr_$&5 zF01nysFBnmg?4j4KvGq7$xy?i*C9zRHNuMi%%n$!qxYEf*rezKCVgC|=#wU06pg-W z(v#CIwHiX6;ZbtB-E|w%wmQj9OGAd8b|m6ZS}Edi+G&WB(v~8Qrg7awR@w%{{5r`3 zyVGl^s(akQiqOMK$_I$UcXf5!4 z*1fnedNI-*xA3K<(W`+yaWM&BHZl4L(#JA=MMab@(KXNN$|yCs8kv9P%qZ`KtC?Oq zJ9;kCnumss>B2?5f#?ei1`HdgM?*ido%cvUR0v<%o%am^!^X}hhJayX=Tk$_uyIOX z^s^dc5I&(xR(N!^SCBpuNkH;f(IC_r8;#wgjY=){Yp4d^eyxWiz7vpu@8~rf_B2I?ePDnbP!^ z?KJA>DXT~1O)&S&pr>^!@&PtK@-dR?uZU>0Idqkso)r3t?X;5MZw*H0EJJ9+#+evn zH3ZQ*X5VC|heOu~hVw=oI*~&1R3Q32d45Krx7g0}M$T;z`m!OkVPhIdSLY(i#(sif zV+dVuYftyO7q?UB)#TwViN=Uw*cd`L+77*XYo0qH^aqBZVdLbdS>a_w1GtUj%o#Mw zPWuh`thARA+iCB!P8$9BsI)F%#5$`8?jZVfiCD=UkybqsT}L71Mo5vJR)!2Ktp>53 zb}r&jpdwl?WkotjpmTavX)2yzr@g2vQk%|B3!^Y(Ma~3Y&x~b=tw;%?&?r1Pj3Jfj zEs+ZyYcl$H8FD}jPAfuzl{OKvoi-hDDD70l&=1!~Ooyw|7HEdWWU#tlizhM|Pj=fu zwz$_IZgqc-xXpbO@e=p9h?lx=ApW6CQ^3pJzal=*Rj7Bq8%1ony(q&Sj5y?uL#*7% zh{Ntlh#mKI#1WS|J009M#7XY?h?Ct*5vRCUBkt&KK-|fF6mhCcEuGHpyNJ8E`w>Uo z4)~VU)$N5i%^ifeo12d~-K7cO?(S5?J>1g~_jDH`&Ty%B&fJJ;Yh=Ul3=zUnB1CCgUk|fZGjmj!XTSf$kBA2f5Up8SEAz9^zIa zKEka+Jk+JJ-y>a`4;|)Sg7_%+M#Q=92E@bNUn0(PA4NRErOn@b_a($5-M0`IxbGt# z<$j8IwEGXlW874HsvGNOAwJq2iTD_|9PzO(ZRU=1X&-mIyA<(p?h3@myFW&}#d2=| zY_;5tfF~^Xe!!EK`wU>4<-QJh%5wJtp0-@tr+vn9JK`DqS;{nfE zZaHAPz4a5;0??D3h*XeiA8BV+3gD0Wx0I;Z(Ht>fOjnSSim1FcOqc7<(>+7*K(Tx z?^*6jz#lDlEntu3-Uj#+4xXhr9$`Fr9S#+BFQUEpLW-r1>9>Wh4>@;$NnZ`H)X}-y z5LoKyY&HazIyw&<0!tnB^8l~DT;aZKI%$T$Qb&iM&%LW#sL&Y* zLiY_z9i8E(1WO&AF^0fWN9TA$V5y@s!PLQ0N9ROSf~AhmDTcsOM`xZPHixR6g{BUc zIyy^C36?rK=Nke`9i2-Ifu)YlRi+M>IyyI-5-fFeHW&g+9i7dFz*0x&*QO4ZIy%po z5-fFec9;?@b#z`cC0ObhyN6(@qqEDDV5y_?o*}r@G38mDU*R-dr;hLVIfaE%csWdE z&T)}Hpit3(_GHkoteie9)Fb3{C&9gdIdZ4BAz)eA>2C;FR(6IO0+yAXJVU^;vQuCP zSXOq%8UmJ;o$-c%Wo4%rL@UlqT2^+-O$jY4cVhGU#uL)kkFmHN{XK0Vcp_Q7)tV3S zVF1bg$=D*0yR3O62TbzF7p*5q=A271w5A{#FR+n;_j#1nL~0PXQS0C7uPydz%P4x9 z&DjO(a?G_Loyj+8m{P7FIo*B{9Q|lng0m3JU&Z{BZFUtGTt?U7XP$=yo?w#Py(i?cU-oVhBbY1rzsT;nSb??>F zY`R^(J=mw+&bn`B9RWcvk>PD_07Q8kuv_;(ABA9Jwx#?3f$o04Qsi;F{Cs?q1=;UG zM3BYp_4qq@+uLtDGBJ>`f@H5C8+ozJ6d9dN=C`~V!Vah>rhA2M{$@{zDl z`-nBy+kKt|rF*tMR+Ai7N;(dq3Jj|HeV3@(9_@)FFGK2iD>}fWUkpb_nDom@(L$5n ziKph7sDB4C)K^_PssD9BL17qJ|h|4|Dn$ zBG=BdQr<$>mmnvluuFPMUUZHWrsP}x3rGsyQL9ZpUS8@<8ZR#kP1=|>PZ@^6?}(#S zJ<}ye-5I@A7}VWX^iGrB6plV*(wmc_+f4ewPSKZ4`d88DTPFQjdh`R6emo<(-=v?& zjM`{QZ|754R>}snU5||9)4OCOSH_Nm>6ZWUojfxf9V2y;XC+0CL;7=6OP<{+T4nN2 ziTZDD$#c@Jlr1is+>_` z6-~#IdoY*K{5&ESPanysz$z}CsS8Gt9F1rSN|2Xt(bD|PNi)hStfF#QkuQgNc!(*R zQ8s;6S!teCRRys{Cs)mwbV^y(%#$n2s;aC~_Gn6xwp$;+z#m53Tj$j@V$r)cm0Z`N z4ais4wKOcQwe;%$(uSoCtqqHttm$>lb!`o8ND8Y}w4`nE^t#5yHMI~!pk4f`;+odF zI0b={`kJPuy2hC1fv+P#_M(!RlV+7wl}s#}I<>5#YJ^twK1f0Sp$bMGs-WOd1)~mC zF#1phB^6~w)5|{fhPT=#POvb~IZz89cmB2UcKt3-kfv@rhQw|U)c?q1; zn(8W-G~&Xa*nY4ep-x%TJg8o^98e{YpHKrAh{hRpO|6R$tQ23AP|v%cl{MBhx7OAA zqZOBXz_n*)OT&T%@Oxs$R_FuxFu)}>&239s>U`E%)&blY=F+;xnzIk+3r1QGV0lAR zLu-Aomx(0@$n><>Oh56YwP*=WA>OACl6OGu;+DFag+8aI@_kZv#iXX%x@CT*?{kGG z$b!ITlPkV6Gh1q!TJx09t4-UIN_w(*knqF=c}8m~Go~<) zUGh^Sy_AtPM$6K9o;02G-`_ZFS1NT;N z`9~{!zIgp;IH?KpqzUPFSyRp2#yZRIIRwB+Um~|J#;ZK7#F|#(eQV-t0|>wVw34ZT zbUC`B`KFajs%@uPFeHY_q@J#GGcU3>bHCQqQylS(Vf zbOsGsRMaiSmnu`!(sH~ub<*#creuHUbWypMq0{++8u{^6@`H8qr4qlR!TVvuJa2b- zU(xtjZu$|wC-fP>&4tg$CG*;>%7!Kj?+%UDjOMz!TC1oL`>v^`tPFdq!ReI z32bGs)4@JV`|L7a>Vmz+7*@^2mrfZ-l6BtutmJ%O2dPC9@yT49jI`|IkSxj1%{$t1 zJpUI*Eh?}gsU4;yS;?W4NN207ofb+Db%(Y34BNGP*}d&dyRYhR=h%a6taHE@<|&qq z)jZlZl!a-x18hy`NjKy(@I!xb=javos?bI1!f6LmD0Ah=xxO0{_OKHkD z-zvUOiaTSbfOCT;>_);b!wf^PO->%fwK*idoRbQP<(LEU11B4deT-l}Cm&4y(O5?n z)|#%+1o#S;X#t$Gz|Z~<`C_q7sB37fS~_YD_6UC^6-84g%qebYnv3xBdeS*{Df`~eGveQ4J2IV?w z^>EK}iqm18lQqogP$7mlR7JzB5jCluOk*cI9ZoRLTPh-t(0NNl6-{;qM$}fgTN!i$ z>uH}Z5%mbnYh*^$v&ipT;dB@t`OIVAjC>g5cmesT!<~%bPKSk&q%6-5%oL~FugFSU z9`FwX@>QRVs9R98TSV=#(2YFDjd4cQbtoDTQU8UaK^HhVCpbr(>*QSG3?A+bMBCCQ z2TO+S$1r&x^#Afgh}J=-MAY5q(mcp3p?0LSEs-}u?Qk%2j??P|?OLYa3G_2#Uy@M& zAMhVDAmt*b_fgJ(1x{Lpla(~k>3IPh(l{BFXE>Q^*?gya!Bl@U;Pu8Cc$1Tj?UwDt z7Qxd@7PimMb%r!JSsX>DZ@JSUKXQv62zyFGqj%c2la?|K`>WaMy};>#hA(t_RXCYw zJ}CGZ2*!SU)W(PnH_mos$LWqd9N&?L!JiRPze7h{93AznrFR?0Fd=b3r`|@V(o-&E zZz7Rf)UD@DR`1&FKzjR8AK2|l{V|@)g5!DXlv@|zFQQhRH$S3&6nZ4-l%(;h<1K0l zI!wUW zUvkx}=juM(7iv#BMRj~c#P^%3JqMu$2mAjCPyCk9WT)R5Ea+Y9IC)cUb?k)+lK%|J zJ?JuMwLWC_;gDHK$_{^f&O5_c}FGCBNFJ57VV9gzA`*vz9$w(tq|XCRXZZln7BGD~olZL2Ga!(Hl^o}h#$k9N5#<*H zS^qL1>#t`1aMu&?HKKq%1)9z&=lPD|1v3G&3rlihGGTpMD|y&;=`(HTqby|aJ$mk?@`_}Z62_K`GaLY zpxs$gehQG~wJgW@ok2u7_Xq29f3W;g=4Z)%Ksm$EPJBiMA6DUX2Ic|B0lA-xiQr?q zEa!2{@>$Hsex4)c)j*cBeU{fVe;9m15K+HH%9lxbJM+;`9v>{fLCSBD^4pn@%hg>{ zzDdgOm-5G?{0S+4TFQSX<@)$Q{nw=&U=76zR}8ft*QG>^_X;AGd#)nl{a+X~?K1ID3!z_ZAFko7bwt$LP6S_s z*bQ0;#O^pB1bYy18^R{&eC#qSgo6@?pr&z%TA>25Lxy^#l0QZ86u||890$r@Dah?0 zeWM_+1Ee1iawuGoQwViKT)k3Z5>wP>|;@`7RQ? zQt(zm+9+Z9uLPeKd_{1#;GYG*6zmZ4>ZJ>23+4(QD>zZ`B*8|(a|C}RxK{9|g7*kM zD)_A6tAbj+3;q6!(7dm3JG2iqU=Q4fNDmOq6C5u%S&-^j67CcIDlHe(V)q?W{skP1Ry_7f#=G%q7kvJN* zQiZ-p@P5HZ1b-{|g5W!Xdjvlc)IPq@&KE*|El8V^Y@hnx#Lj~0g4)*?@~HyO@b z1oH*Q3LYn@eSU#|ve1=+vjnL)PI+?$>jky%FXXogeU9J?!Bv8n32Gl;;J;4jTLjk& z-XXY2@IgWCBMkMP5c*lc=LL5PzA3m{@O{Bg1V0n}o8UKsVLU)^`?PN{U{vTHf|-K- z1&0Xc3Kj?+BUmU{E?6O`H5VaY`y>ONF8Q^BX9zY6QVWdzS}sU^M$#7xULm+v@J7L( z32qeJB>0fvZv>wb+%EWvp!RWwcHR~GL&3iYej)gG!7!dh*e_b%Af^erf?0xEn-b-@ zLTjIBps8QUdL@F?v?P6^;B3Jv!TExV1gU{Z{vQgq3tl3qeW;=QI-#kVN&W`}pAdXO zaF-y=PHDa`1Qi~nST8ErN086j%pW6IDtMwG^*C8hO-|x6!HWc`)ye!@1@994mEhBY zuL$lI{IlSff*tTIOgZU-*@C%(#|lmqJV|h_;9@~)eo_u~KZ(}}t`poO_=MnZ1$PSW z5u_F<>whEI5znfmGXw_;<_jJ#SRqIaQS#3hq<$#AAz7CSeYN0v!OenO1z!++i->*r zC!zmL#KZ8XLi3Xi+v!9EUxv_wh#1>Ep^p)qC^$=SE)m<X^d6!23H`OuNqE+0zq=E`pDlDQ5zq6Zg)Swc&Qzgi5z+1`LN^F5 zA%c%Osg!#K5pu2(dOZ=pdxUcst{&+#! z4I+J#V2$7+!LtRas7AgufAe60|yB;x#; zDaiM8wlhbtnuuezR|Iey8I0>-R`(_cMGCL_6d7-UazD5g}K zxwM#Ex2&OdS#De1vbJ2aOeVO}CT4i~kfn!^VipL#A$SfU(KLNXaS03@N4@^z5UY*!7Mj7tCtHgT2?1R>mWn78%Og8J(w6(P~%w5t}*BUgajfLk6nB%zt zZEb6@zTIlKj2X_J;4-QiXE)8OZ&}>baE@M3A2)K|N)k~L@k_Y&U$0#;1-VU&+v;*B zOg-tS*0!2?3xj>sM!;hYd-e2LXcqnixjhr%G4|4iwtDF4H7$@eF=nqz^IR|{E41|J zc>{r5F8{$IfJC$6te&`(&d>9jzyf0WEFHsWG^0__Hq=X1eD9{nG%ilj%t$hg6ql!< zwYSs!7(IgJI?BUU?Vk>1xE|sX>4)$PSb9R93AnuKP=uIieAdu`_nTlaRcM1Lk&kmd zCZJe{&yc_?s2}zmhkFC~Mj?m&p*-FT`MnR>z8&-JAee9ZY}$P(LEg+lkB{>3smPai zH`45m*^ZqcDnXlI`nM4o!T!xDjLE|%6<^*(NC*3u0|D$Gc^FLpRw5mgS6dj9$9%KB zbZQpt-!RbEq1*)1zekV=%4;n2<|w$mxDER9ZuaE)QMFxEfZ zMtym!JbC{3Z3n#@^ZR!fb}aix9tP9Dngn@|6~+3; z+qfCOVhmnz{O*T5qf||KrhmtQDY(7cAg>zb>>nQCe0j8ohkw6+pP(W3k30;ff87)0 z9W&Ez z`u7a-g7PW?{lheiFYg@)3-*uSYp+DP38sHh-T0zU4yLHMCq_kScXC~p!jXtZc(f=N!qhMF|XzQM*9r5mnT8QmTR+uenB zH{iLP?H+-jX}3>;yyLO+m&L^SZMg~ZEON%J5uDCo8m)|_Zi+lOkm&n zV;e-nw-GnEv7k*be0L}G@7;tOA^8|M4~73`kHYsv@Xa;^(D3~wLEboQz~2IV+zy71 z!519A(&?790{PtD5%`(yrN0{^8`)ODXuJ#a1}MRl{W?M3HpnXk59M*+8+lWZ2!S@C z?O1G-w2^^K^6|VHKB8dsn5Q8&(E2~%5+q6`zt#}vhTXCWdtM^tmJPKFR>b;|F zaeHxS1Fcw_Usx>Odt;bj);SHQR48cqSQ#_N;h6Ph$JkDeh#6UCtas80~Ls;>~YDVmF2qWU3Ts)i%}p`tC<uPEj8t?x?;&+(~ssUs4qx zraG%Jh`XrCh@*;zP`j#T#A%AIWxJ`15vQxQh`X!xh#b68@Mfx>i2JB)#C;Vn5&hIy#968gakiR{xWB4GJU}%d&QWxuK2V*Hc#z_h@L+W< z;vwpG#7C$H5D!(`5Fe@NU}~891LC99r-*aaH;9L;Bd%0eE%hbf6-#x%nX=PTT>-y`NhQE* zmKp(g-BLw>H!O7`;7v=>EzDb%S^(H(sW!mdmRbpT$5Lwmf3VaofZdk55Ad#~wgKL= z)N6o0T8cI{_gLx+z@KoK@kSf5Ls1O49UAO(#y!h&x+AuoeuzU3&6+Bl3xFg$qRqGt z0rR!EY1vPPl5VrF4<#3%a5T2VhKa%CDTbgod>3=FHH%( zDL-ZidQ+yARNd&Ep~B=BOdWbte#4Z|oASGcpf}~chM+g)PfZ(HC>YC~ufgY19Dazv%rW>pv- z1AujC98>ywX`i+Z?BT-H(3+%snJT*)ym+L+l?&GCUSrk-incoQM(O8G)Ol9N+fei@ zn4B?PlAOFKC(7BP19M$Zn)E1~#_6cc2Nnt$f}aUY^U0TYMSg8H;eW(Dl&|BUH6|9d zHshD%t#zII&j$Nz+s~UhcY_gYs$~7uW8Y93Eyq&2AcPN zHK+}0t@@GqP_IAihF;7f{L6+6zRe9i=R(YEq^M0-&MLL=^K{0w?sVl3rdJ`yXd8>Z z_5U_iV1D~Z^f}KbH52$|ExNPCd=5MYuea1<#Jj=)`m?#Y!&_VC4XQ2!=cv7=PgTE<}R*jsU2RkXx`k$+Ihn@2Wqmkrnv!Xu-_`jD6EP;EV>f^bXTi2 zT#@}R>Dl5HJ6??UkchXd`0VDhTA{^3INyC3uMc~4`J-~_=bf-?k9 z7OWDi6I>{Grr=qE=L%jRc!}Uo1g{pnQShgNzYyfS9s9Rg@K=J53qB?IoZw4>uL-^_ z_(#FLf`1YGT#z5U*bdK7Vh2I(J_&R;p*b(aa()ye4ix16B(2>b0kxh6ko%SSC4!R# zdAu_JB*9Y!YXlbvE)r}NJX`R5L9O2bIX@N}eqFTOYXxr>Tqn3u@LoZF+h;!>72GQL zjNlHzR|MY>{Da`11V0h{Z$Ygu0=YJ>50sxI*hR31U>`w#@+04og4D+(eY9Yq-~_>` zf?B@>d~<}JCwPY7nS#p%&llu;Cgp2?_dtF~B#n=L zO@f>Upq$?cz9zUwke@JF&X1VHj<~iEGXw_;<_l7vndKFNCkxIO)Q*QxzC!5B1+^Xv z@_!-p{eoKswQnJmza_NRR{{OG&>?&}VY^)fGX;+jEEJp|IF*QPnl1EP!9_&;mI%F4 z=u3pYLGb5-_X+Zz5A|1X9USCpy)B@A06pmXGCbd4g-mHfD^32KR8m>Wg(}5Zfm7FV zwpnXaGk0!F-BL@h3j6LQW9E@6w!$a)prsd?1sC{ut5^cnyvn6L{wX(sYaFv&7x zFpa}U2XCH92mlT-9hM^`8)zM)Ezt#bCe<%;PVm%)SdH&q^YRNZ! zHto(teo$U11hGEl;qcS_BRvK`vrS0qbtBI*A;FYA1lpuoR1HFV%u3+f3_92@eME45 z0o!GJW;<>`Iw-F%&V%4yGG!Zt&y-CCAN7DtARm7x2pYa&(Sy&$J}G STM32G474QETx STMicroelectronics - Keil.STM32G4xx_DFP.1.2.0 + Keil.STM32G4xx_DFP.1.3.0 http://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IROM(0x08000000,0x00080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE @@ -2219,7 +2219,7 @@ STM32G474VEHx STMicroelectronics - Keil.STM32G4xx_DFP.1.2.0 + Keil.STM32G4xx_DFP.1.3.0 http://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IROM(0x08000000,0x00080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE @@ -4491,7 +4491,7 @@ STM32G474VEHx STMicroelectronics - Keil.STM32G4xx_DFP.1.2.0 + Keil.STM32G4xx_DFP.1.3.0 http://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IROM(0x08000000,0x00080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE @@ -6763,7 +6763,7 @@ STM32G474QETx STMicroelectronics - Keil.STM32G4xx_DFP.1.2.0 + Keil.STM32G4xx_DFP.1.3.0 http://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IROM(0x08000000,0x00080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE @@ -8966,7 +8966,7 @@ STM32G474VEHx STMicroelectronics - Keil.STM32G4xx_DFP.1.2.0 + Keil.STM32G4xx_DFP.1.3.0 http://www.keil.com/pack/ IRAM(0x20000000,0x00020000) IROM(0x08000000,0x00080000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE