更新信号矩阵

This commit is contained in:
sunbeam 2024-12-09 08:35:30 +08:00
parent adad6693a9
commit 6fea42e60f
27 changed files with 853 additions and 556 deletions

View File

@ -27,7 +27,9 @@
"scm_matrix-binutil.h": "c",
"matrix.h": "c",
"key.h": "c",
"dbccodeconf.h": "c"
"dbccodeconf.h": "c",
"canmatrix.h": "c",
"scm_canmatrix-binutil.h": "c"
},
"C_Cpp.default.compilerPath": "",
"MicroPython.executeButton": [

View File

@ -361,11 +361,11 @@
<state>$PROJ_DIR$\src\RTT</state>
<state>$PROJ_DIR$\SDK\platform\devices\CVM014x\drivers\clock</state>
<state>$PROJ_DIR$\SDK\platform\devices\CVM014x\drivers\cpu\irq</state>
<state>$PROJ_DIR$\src\Matrix\inc</state>
<state>$PROJ_DIR$\src\Matrix\butl</state>
<state>$PROJ_DIR$\src\Matrix\conf</state>
<state>$PROJ_DIR$\src\Matrix\lib</state>
<state>$PROJ_DIR$\src\Matrix\usr</state>
<state>$PROJ_DIR$\src\CANmatrix\inc</state>
<state>$PROJ_DIR$\src\CANmatrix\butl</state>
<state>$PROJ_DIR$\src\CANmatrix\conf</state>
<state>$PROJ_DIR$\src\CANmatrix\lib</state>
<state>$PROJ_DIR$\src\CANmatrix\usr</state>
</option>
<option>
<name>CCStdIncCheck</name>
@ -2211,6 +2211,39 @@
</configuration>
<group>
<name>src</name>
<group>
<name>CANmatrix</name>
<file>
<name>$PROJ_DIR$\src\CANmatrix\inc\can_message.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\conf\canmatrix-config.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\usr\canmatrix-fmon.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\lib\canmatrix-fmon.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\lib\canmatrix.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\lib\canmatrix.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\inc\canmonitorutil.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\conf\dbccodeconf.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\butl\scm_canmatrix-binutil.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\butl\scm_canmatrix-binutil.h</name>
</file>
</group>
<group>
<name>drivers</name>
<group>
@ -2645,39 +2678,6 @@
<name>$PROJ_DIR$\linker\app_m0146_flash.icf</name>
</file>
</group>
<group>
<name>matrix</name>
<file>
<name>$PROJ_DIR$\src\Matrix\inc\can_message.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\inc\canmonitorutil.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\conf\dbccodeconf.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\conf\matrix-config.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\usr\matrix-fmon.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\lib\matrix-fmon.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\lib\matrix.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\lib\matrix.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\butl\scm_matrix-binutil.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\butl\scm_matrix-binutil.h</name>
</file>
</group>
<group>
<name>middleware</name>
<group>
@ -3005,12 +3005,18 @@
<file>
<name>$PROJ_DIR$\src\canuser.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\event.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\extern.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\hwctrl.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\key.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\main.c</name>
</file>

View File

@ -2853,6 +2853,39 @@
</configuration>
<group>
<name>src</name>
<group>
<name>CANmatrix</name>
<file>
<name>$PROJ_DIR$\src\CANmatrix\inc\can_message.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\conf\canmatrix-config.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\usr\canmatrix-fmon.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\lib\canmatrix-fmon.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\lib\canmatrix.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\lib\canmatrix.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\inc\canmonitorutil.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\conf\dbccodeconf.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\butl\scm_canmatrix-binutil.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\CANmatrix\butl\scm_canmatrix-binutil.h</name>
</file>
</group>
<group>
<name>drivers</name>
<group>
@ -3279,39 +3312,6 @@
<name>$PROJ_DIR$\linker\app_m0146_flash.icf</name>
</file>
</group>
<group>
<name>matrix</name>
<file>
<name>$PROJ_DIR$\src\Matrix\inc\can_message.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\inc\canmonitorutil.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\conf\dbccodeconf.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\conf\matrix-config.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\usr\matrix-fmon.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\lib\matrix-fmon.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\lib\matrix.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\lib\matrix.h</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\butl\scm_matrix-binutil.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\Matrix\butl\scm_matrix-binutil.h</name>
</file>
</group>
<group>
<name>middleware</name>
<group>
@ -3639,12 +3639,18 @@
<file>
<name>$PROJ_DIR$\src\canuser.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\event.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\extern.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\hwctrl.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\key.c</name>
</file>
<file>
<name>$PROJ_DIR$\src\main.c</name>
</file>

View File

@ -25,8 +25,8 @@
<MemConfigValue>E:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\config\debugger\CVAChip\CVM0144.ddf</MemConfigValue>
</PlDriver>
<ArmDriver>
<EnforceMemoryConfiguration>1</EnforceMemoryConfiguration>
<EnableCache>0</EnableCache>
<EnforceMemoryConfiguration>1</EnforceMemoryConfiguration>
</ArmDriver>
<DebugChecksum>
<Checksum>3190234441</Checksum>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,28 @@
// Generator version : v3.1
// Generation time : 2024.12.07 08:59:44
// DBC filename : DMK-RP-01_CAN_V0.1_20241118.dbc
#include "scm_canmatrix-binutil.h"
// DBC file version
#if (VER_CANMATRIX_MAJ != (0U)) || (VER_CANMATRIX_MIN != (0U))
#error The SCM_CANMATRIX binutil source file has inconsistency with core dbc lib!
#endif
#ifdef __DEF_SCM_CANMATRIX__
scm_canmatrix_rx_t scm_canmatrix_rx;
scm_canmatrix_tx_t scm_canmatrix_tx;
#endif // __DEF_SCM_CANMATRIX__
uint32_t scm_canmatrix_Receive(scm_canmatrix_rx_t* _m, const uint8_t* _d, uint32_t _id, uint8_t dlc_)
{
uint32_t recid = 0;
if (_id == 0x201U) {
recid = Unpack_Panel_Key_CANmatrix(&(_m->Panel_Key), _d, dlc_);
}
return recid;
}

View File

@ -1,5 +1,5 @@
// Generator version : v3.1
// Generation time : 2024.11.18 11:42:14
// Generation time : 2024.12.07 08:59:44
// DBC filename : DMK-RP-01_CAN_V0.1_20241118.dbc
#pragma once
@ -9,12 +9,12 @@ extern "C" {
#include "dbccodeconf.h"
#include "matrix.h"
#include "canmatrix.h"
typedef struct
{
Panel_Key_t Panel_Key;
} scm_matrix_rx_t;
} scm_canmatrix_rx_t;
typedef struct
{
@ -25,17 +25,17 @@ typedef struct
SCM_DEBUG4_t SCM_DEBUG4;
SCM_DEBUG5_t SCM_DEBUG5;
SCM_DEBUG6_t SCM_DEBUG6;
} scm_matrix_tx_t;
} scm_canmatrix_tx_t;
uint32_t scm_matrix_Receive(scm_matrix_rx_t* m, const uint8_t* d, uint32_t msgid, uint8_t dlc);
uint32_t scm_canmatrix_Receive(scm_canmatrix_rx_t* m, const uint8_t* d, uint32_t msgid, uint8_t dlc);
#ifdef __DEF_SCM_MATRIX__
#ifdef __DEF_SCM_CANMATRIX__
extern scm_matrix_rx_t scm_matrix_rx;
extern scm_canmatrix_rx_t scm_canmatrix_rx;
extern scm_matrix_tx_t scm_matrix_tx;
extern scm_canmatrix_tx_t scm_canmatrix_tx;
#endif // __DEF_SCM_MATRIX__
#endif // __DEF_SCM_CANMATRIX__
#ifdef __cplusplus
}

View File

@ -1,5 +1,5 @@
// Generator version : v3.1
// Generation time : 2024.11.18 11:42:14
// Generation time : 2024.12.07 08:59:44
// DBC filename : DMK-RP-01_CAN_V0.1_20241118.dbc
#pragma once
@ -13,7 +13,7 @@
Note(!): bit-feild was not tested properly. */
#define MATRIX_USE_BITS_SIGNAL
#define CANMATRIX_USE_BITS_SIGNAL
/* ------------------------------------------------------------------------- *
@ -29,7 +29,7 @@
This struct definition have to be placed (or be included) in dbccodeconf.h */
#define MATRIX_USE_CANSTRUCT
#define CANMATRIX_USE_CANSTRUCT
/* ------------------------------------------------------------------------- *
@ -50,7 +50,7 @@
3. In unpack function '_phys' signal will be written by '_ro' signal.
User have to use '_phys' signal to read physical value. */
/* #define MATRIX_USE_SIGFLOAT */
/* #define CANMATRIX_USE_SIGFLOAT */
/* ------------------------------------------------------------------------- *
@ -69,20 +69,20 @@
which is empty by default and have to be filled by user if
tests for DLC, rolling, checksum are necessary */
/* #define MATRIX_USE_DIAG_MONITORS */
/* #define CANMATRIX_USE_DIAG_MONITORS */
/* ------------------------------------------------------------------------- *
When monitor using is enabled (MATRIX_USE_DIAG_MONITORS) and define below
When monitor using is enabled (CANMATRIX_USE_DIAG_MONITORS) and define below
uncommented, additional signal will be added to message struct. ***_expt:
expected rolling counter, to perform monitoring rolling counter sequence
automatically (result may be tested in dedicated Fmon_*** function) */
/* #define MATRIX_AUTO_ROLL */
/* #define CANMATRIX_AUTO_ROLL */
/* ------------------------------------------------------------------------- *
When monitor using is enabled (MATRIX_USE_DIAG_MONITORS) and define below
When monitor using is enabled (CANMATRIX_USE_DIAG_MONITORS) and define below
uncommented, frame checksum signal may be handled automatically.
The signal which may be marked as checksum signal must have substring
@ -108,7 +108,7 @@
In unpack function checksum signal is checked with calculated.
(result may be tested in dedicated Fmon_*** function). */
/* #define MATRIX_AUTO_CSM */
/* #define CANMATRIX_AUTO_CSM */
/* ------------------------------------------------------------------------- *
@ -128,4 +128,4 @@
no necessity to replace source code)
For using MONO way uncomment line below */
/* #define MATRIX_USE_MONO_FMON */
/* #define CANMATRIX_USE_MONO_FMON */

View File

@ -1,5 +1,5 @@
// Generator version : v3.1
// Generation time : 2024.11.18 11:42:14
// Generation time : 2024.12.07 08:59:44
#pragma once
#include <stdint.h>
@ -13,7 +13,7 @@ typedef CAN_DATATYPE __CoderDbcCanFrame_t__;
// if you need to allocate rx and tx messages structs put the allocation macro here
// #define __DEF_{your_driver_name}__
#define __DEF_SCM_MATRIX__
#define __DEF_SCM_CANMATRIX__
// defualt @__ext_sig__ help types definition

View File

@ -1,5 +1,5 @@
// Generator version : v3.1
// Generation time : 2024.11.18 11:42:14
// Generation time : 2024.12.07 08:59:44
#pragma once
#include <stdint.h>

View File

@ -0,0 +1,65 @@
// Generator version : v3.1
// Generation time : 2024.12.07 08:59:44
// DBC filename : DMK-RP-01_CAN_V0.1_20241118.dbc
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
// DBC file version
#define VER_CANMATRIX_MAJ_FMON (0U)
#define VER_CANMATRIX_MIN_FMON (0U)
#include "canmatrix-config.h"
#ifdef CANMATRIX_USE_DIAG_MONITORS
#include "canmonitorutil.h"
/*
This file contains the prototypes of all the functions that will be called
from each Unpack_*name* function to detect DBC related errors
It is the user responsibility to defined these functions in the
separated .c file. If it won't be done the linkage error will happen
*/
#ifdef CANMATRIX_USE_MONO_FMON
void _FMon_MONO_canmatrix(FrameMonitor_t* _mon, uint32_t msgid);
#define FMon_Panel_Key_canmatrix(x, y) _FMon_MONO_canmatrix((x), (y))
#define FMon_SCM_STATE_canmatrix(x, y) _FMon_MONO_canmatrix((x), (y))
#define FMon_SCM_DEBUG1_canmatrix(x, y) _FMon_MONO_canmatrix((x), (y))
#define FMon_SCM_DEBUG2_canmatrix(x, y) _FMon_MONO_canmatrix((x), (y))
#define FMon_SCM_DEBUG3_canmatrix(x, y) _FMon_MONO_canmatrix((x), (y))
#define FMon_SCM_DEBUG4_canmatrix(x, y) _FMon_MONO_canmatrix((x), (y))
#define FMon_SCM_DEBUG5_canmatrix(x, y) _FMon_MONO_canmatrix((x), (y))
#define FMon_SCM_DEBUG6_canmatrix(x, y) _FMon_MONO_canmatrix((x), (y))
#else
void _FMon_Panel_Key_canmatrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_STATE_canmatrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_DEBUG1_canmatrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_DEBUG2_canmatrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_DEBUG3_canmatrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_DEBUG4_canmatrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_DEBUG5_canmatrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_DEBUG6_canmatrix(FrameMonitor_t* _mon, uint32_t msgid);
#define FMon_Panel_Key_canmatrix(x, y) _FMon_Panel_Key_canmatrix((x), (y))
#define FMon_SCM_STATE_canmatrix(x, y) _FMon_SCM_STATE_canmatrix((x), (y))
#define FMon_SCM_DEBUG1_canmatrix(x, y) _FMon_SCM_DEBUG1_canmatrix((x), (y))
#define FMon_SCM_DEBUG2_canmatrix(x, y) _FMon_SCM_DEBUG2_canmatrix((x), (y))
#define FMon_SCM_DEBUG3_canmatrix(x, y) _FMon_SCM_DEBUG3_canmatrix((x), (y))
#define FMon_SCM_DEBUG4_canmatrix(x, y) _FMon_SCM_DEBUG4_canmatrix((x), (y))
#define FMon_SCM_DEBUG5_canmatrix(x, y) _FMon_SCM_DEBUG5_canmatrix((x), (y))
#define FMon_SCM_DEBUG6_canmatrix(x, y) _FMon_SCM_DEBUG6_canmatrix((x), (y))
#endif
#endif // CANMATRIX_USE_DIAG_MONITORS
#ifdef __cplusplus
}
#endif

View File

@ -1,20 +1,20 @@
// Generator version : v3.1
// Generation time : 2024.11.18 11:42:14
// DBC filename : DMK-RP-01_CAN_V0.1_20241118.dbc
#include "matrix.h"
// Generation time : 2024.12.07 13:45:35
// DBC filename : DMK-RP-01_CAN_V0.1_20241207.dbc
#include "canmatrix.h"
// DBC file version
#if (VER_MATRIX_MAJ != (0U)) || (VER_MATRIX_MIN != (0U))
#error The MATRIX dbc source files have different versions
#if (VER_CANMATRIX_MAJ != (0U)) || (VER_CANMATRIX_MIN != (0U))
#error The CANMATRIX dbc source files have different versions
#endif
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
// Function prototypes to be called each time CAN frame is unpacked
// FMon function may detect RC, CRC or DLC violation
#include "matrix-fmon.h"
#include "canmatrix-fmon.h"
#endif // MATRIX_USE_DIAG_MONITORS
#endif // CANMATRIX_USE_DIAG_MONITORS
// This macro guard for the case when you need to enable
// using diag monitors but there is no necessity in proper
@ -47,7 +47,7 @@ static bitext_t __ext_sig__(ubitext_t val, uint8_t bits)
return ((val ^ m) - m);
}
uint32_t Unpack_Panel_Key_Matrix(Panel_Key_t* _m, const uint8_t* _d, uint8_t dlc_)
uint32_t Unpack_Panel_Key_CANmatrix(Panel_Key_t* _m, const uint8_t* _d, uint8_t dlc_)
{
(void)dlc_;
_m->KEY_ZY_D = (uint8_t) ( (_d[0] & (0x01U)) );
@ -72,22 +72,22 @@ uint32_t Unpack_Panel_Key_Matrix(Panel_Key_t* _m, const uint8_t* _d, uint8_t dlc
_m->KEY_ZY_FLAT = (uint8_t) ( (_d[4] & (0x01U)) );
_m->KEY_RESET = (uint8_t) ( ((_d[4] >> 1U) & (0x01U)) );
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
_m->mon1.dlc_error = (dlc_ < Panel_Key_DLC);
_m->mon1.last_cycle = GetSystemTick();
_m->mon1.frame_cnt++;
FMon_Panel_Key_matrix(&_m->mon1, Panel_Key_CANID);
#endif // MATRIX_USE_DIAG_MONITORS
FMon_Panel_Key_canmatrix(&_m->mon1, Panel_Key_CANID);
#endif // CANMATRIX_USE_DIAG_MONITORS
return Panel_Key_CANID;
}
#ifdef MATRIX_USE_CANSTRUCT
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_Panel_Key_Matrix(Panel_Key_t* _m, __CoderDbcCanFrame_t__* cframe)
uint32_t Pack_Panel_Key_CANmatrix(Panel_Key_t* _m, __CoderDbcCanFrame_t__* cframe)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(Panel_Key_DLC); cframe->Data[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(Panel_Key_DLC); cframe->Data[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
cframe->Data[0] |= (uint8_t) ( (_m->KEY_ZY_D & (0x01U)) | ((_m->KEY_ZY_U & (0x01U)) << 1U) | ((_m->KEY_TT_R & (0x01U)) << 2U) | ((_m->KEY_TT_F & (0x01U)) << 3U) | ((_m->KEY_KB_R & (0x01U)) << 4U) | ((_m->KEY_KB_F & (0x01U)) << 5U) | ((_m->KEY_HG_R & (0x01U)) << 6U) | ((_m->KEY_HG_F & (0x01U)) << 7U) );
cframe->Data[1] |= (uint8_t) ( (_m->KEY_YT_D & (0x01U)) | ((_m->KEY_YT_U & (0x01U)) << 1U) | ((_m->KEY_TZ_D & (0x01U)) << 2U) | ((_m->KEY_TZ_U & (0x01U)) << 3U) );
@ -103,9 +103,9 @@ uint32_t Pack_Panel_Key_Matrix(Panel_Key_t* _m, __CoderDbcCanFrame_t__* cframe)
#else
uint32_t Pack_Panel_Key_Matrix(Panel_Key_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
uint32_t Pack_Panel_Key_CANmatrix(Panel_Key_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(Panel_Key_DLC); _d[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(Panel_Key_DLC); _d[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
_d[0] |= (uint8_t) ( (_m->KEY_ZY_D & (0x01U)) | ((_m->KEY_ZY_U & (0x01U)) << 1U) | ((_m->KEY_TT_R & (0x01U)) << 2U) | ((_m->KEY_TT_F & (0x01U)) << 3U) | ((_m->KEY_KB_R & (0x01U)) << 4U) | ((_m->KEY_KB_F & (0x01U)) << 5U) | ((_m->KEY_HG_R & (0x01U)) << 6U) | ((_m->KEY_HG_F & (0x01U)) << 7U) );
_d[1] |= (uint8_t) ( (_m->KEY_YT_D & (0x01U)) | ((_m->KEY_YT_U & (0x01U)) << 1U) | ((_m->KEY_TZ_D & (0x01U)) << 2U) | ((_m->KEY_TZ_U & (0x01U)) << 3U) );
@ -118,9 +118,9 @@ uint32_t Pack_Panel_Key_Matrix(Panel_Key_t* _m, uint8_t* _d, uint8_t* _len, uint
return Panel_Key_CANID;
}
#endif // MATRIX_USE_CANSTRUCT
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_STATE_Matrix(SCM_STATE_t* _m, const uint8_t* _d, uint8_t dlc_)
uint32_t Unpack_SCM_STATE_CANmatrix(SCM_STATE_t* _m, const uint8_t* _d, uint8_t dlc_)
{
(void)dlc_;
_m->MOTOR_HG_STATE = (uint8_t) ( (_d[0] & (0x03U)) );
@ -132,27 +132,37 @@ uint32_t Unpack_SCM_STATE_Matrix(SCM_STATE_t* _m, const uint8_t* _d, uint8_t dlc
_m->ZY_FAN_STATE = (uint8_t) ( (_d[2] & (0x03U)) );
_m->ZY_HEAT_STATE = (uint8_t) ( ((_d[2] >> 2U) & (0x03U)) );
_m->ZY_MSSG_STATE = (uint8_t) ( ((_d[2] >> 4U) & (0x03U)) );
_m->test1 = (uint8_t) ( (_d[3] & (0xFFU)) );
_m->test2 = (uint8_t) ( (_d[4] & (0xFFU)) );
_m->test3 = (uint8_t) ( (_d[5] & (0xFFU)) );
_m->test4 = (uint8_t) ( (_d[6] & (0xFFU)) );
_m->test5 = (uint8_t) ( (_d[7] & (0xFFU)) );
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
_m->mon1.dlc_error = (dlc_ < SCM_STATE_DLC);
_m->mon1.last_cycle = GetSystemTick();
_m->mon1.frame_cnt++;
FMon_SCM_STATE_matrix(&_m->mon1, SCM_STATE_CANID);
#endif // MATRIX_USE_DIAG_MONITORS
FMon_SCM_STATE_canmatrix(&_m->mon1, SCM_STATE_CANID);
#endif // CANMATRIX_USE_DIAG_MONITORS
return SCM_STATE_CANID;
}
#ifdef MATRIX_USE_CANSTRUCT
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_STATE_Matrix(SCM_STATE_t* _m, __CoderDbcCanFrame_t__* cframe)
uint32_t Pack_SCM_STATE_CANmatrix(SCM_STATE_t* _m, __CoderDbcCanFrame_t__* cframe)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_STATE_DLC); cframe->Data[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_STATE_DLC); cframe->Data[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
cframe->Data[0] |= (uint8_t) ( (_m->MOTOR_HG_STATE & (0x03U)) | ((_m->MOTOR_KB_STATE & (0x03U)) << 2U) | ((_m->MOTOR_TT_STATE & (0x03U)) << 4U) | ((_m->MOTOR_TZ_STATE & (0x03U)) << 6U) );
cframe->Data[1] |= (uint8_t) ( (_m->MOTOR_YT_STATE & (0x03U)) | ((_m->MOTOR_ZY_STATE & (0x03U)) << 2U) );
cframe->Data[2] |= (uint8_t) ( (_m->ZY_FAN_STATE & (0x03U)) | ((_m->ZY_HEAT_STATE & (0x03U)) << 2U) | ((_m->ZY_MSSG_STATE & (0x03U)) << 4U) );
cframe->Data[3] |= (uint8_t) ( (_m->test1 & (0xFFU)) );
cframe->Data[4] |= (uint8_t) ( (_m->test2 & (0xFFU)) );
cframe->Data[5] |= (uint8_t) ( (_m->test3 & (0xFFU)) );
cframe->Data[6] |= (uint8_t) ( (_m->test4 & (0xFFU)) );
cframe->Data[7] |= (uint8_t) ( (_m->test5 & (0xFFU)) );
cframe->MsgId = (uint32_t) SCM_STATE_CANID;
cframe->DLC = (uint8_t) SCM_STATE_DLC;
@ -162,22 +172,27 @@ uint32_t Pack_SCM_STATE_Matrix(SCM_STATE_t* _m, __CoderDbcCanFrame_t__* cframe)
#else
uint32_t Pack_SCM_STATE_Matrix(SCM_STATE_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
uint32_t Pack_SCM_STATE_CANmatrix(SCM_STATE_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_STATE_DLC); _d[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_STATE_DLC); _d[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
_d[0] |= (uint8_t) ( (_m->MOTOR_HG_STATE & (0x03U)) | ((_m->MOTOR_KB_STATE & (0x03U)) << 2U) | ((_m->MOTOR_TT_STATE & (0x03U)) << 4U) | ((_m->MOTOR_TZ_STATE & (0x03U)) << 6U) );
_d[1] |= (uint8_t) ( (_m->MOTOR_YT_STATE & (0x03U)) | ((_m->MOTOR_ZY_STATE & (0x03U)) << 2U) );
_d[2] |= (uint8_t) ( (_m->ZY_FAN_STATE & (0x03U)) | ((_m->ZY_HEAT_STATE & (0x03U)) << 2U) | ((_m->ZY_MSSG_STATE & (0x03U)) << 4U) );
_d[3] |= (uint8_t) ( (_m->test1 & (0xFFU)) );
_d[4] |= (uint8_t) ( (_m->test2 & (0xFFU)) );
_d[5] |= (uint8_t) ( (_m->test3 & (0xFFU)) );
_d[6] |= (uint8_t) ( (_m->test4 & (0xFFU)) );
_d[7] |= (uint8_t) ( (_m->test5 & (0xFFU)) );
*_len = (uint8_t) SCM_STATE_DLC;
*_ide = (uint8_t) SCM_STATE_IDE;
return SCM_STATE_CANID;
}
#endif // MATRIX_USE_CANSTRUCT
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_DEBUG1_Matrix(SCM_DEBUG1_t* _m, const uint8_t* _d, uint8_t dlc_)
uint32_t Unpack_SCM_DEBUG1_CANmatrix(SCM_DEBUG1_t* _m, const uint8_t* _d, uint8_t dlc_)
{
(void)dlc_;
_m->DEBUG_MOTOR_HG_CURRENT = (uint8_t) ( (_d[0] & (0xFFU)) );
@ -186,22 +201,22 @@ uint32_t Unpack_SCM_DEBUG1_Matrix(SCM_DEBUG1_t* _m, const uint8_t* _d, uint8_t d
_m->DEBUG_MOTOR_HG_STOP_1 = (uint16_t) ( ((_d[5] & (0xFFU)) << 8U) | (_d[4] & (0xFFU)) );
_m->DEBUG_MOTOR_HG_STOP_2 = (uint16_t) ( ((_d[7] & (0xFFU)) << 8U) | (_d[6] & (0xFFU)) );
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
_m->mon1.dlc_error = (dlc_ < SCM_DEBUG1_DLC);
_m->mon1.last_cycle = GetSystemTick();
_m->mon1.frame_cnt++;
FMon_SCM_DEBUG1_matrix(&_m->mon1, SCM_DEBUG1_CANID);
#endif // MATRIX_USE_DIAG_MONITORS
FMon_SCM_DEBUG1_canmatrix(&_m->mon1, SCM_DEBUG1_CANID);
#endif // CANMATRIX_USE_DIAG_MONITORS
return SCM_DEBUG1_CANID;
}
#ifdef MATRIX_USE_CANSTRUCT
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG1_Matrix(SCM_DEBUG1_t* _m, __CoderDbcCanFrame_t__* cframe)
uint32_t Pack_SCM_DEBUG1_CANmatrix(SCM_DEBUG1_t* _m, __CoderDbcCanFrame_t__* cframe)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_DEBUG1_DLC); cframe->Data[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_DEBUG1_DLC); cframe->Data[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
cframe->Data[0] |= (uint8_t) ( (_m->DEBUG_MOTOR_HG_CURRENT & (0xFFU)) );
cframe->Data[1] |= (uint8_t) ( (_m->DEBUG_MOTOR_HG_STATUS & (0xFFU)) );
@ -220,9 +235,9 @@ uint32_t Pack_SCM_DEBUG1_Matrix(SCM_DEBUG1_t* _m, __CoderDbcCanFrame_t__* cframe
#else
uint32_t Pack_SCM_DEBUG1_Matrix(SCM_DEBUG1_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
uint32_t Pack_SCM_DEBUG1_CANmatrix(SCM_DEBUG1_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_DEBUG1_DLC); _d[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_DEBUG1_DLC); _d[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
_d[0] |= (uint8_t) ( (_m->DEBUG_MOTOR_HG_CURRENT & (0xFFU)) );
_d[1] |= (uint8_t) ( (_m->DEBUG_MOTOR_HG_STATUS & (0xFFU)) );
@ -238,9 +253,9 @@ uint32_t Pack_SCM_DEBUG1_Matrix(SCM_DEBUG1_t* _m, uint8_t* _d, uint8_t* _len, ui
return SCM_DEBUG1_CANID;
}
#endif // MATRIX_USE_CANSTRUCT
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_DEBUG2_Matrix(SCM_DEBUG2_t* _m, const uint8_t* _d, uint8_t dlc_)
uint32_t Unpack_SCM_DEBUG2_CANmatrix(SCM_DEBUG2_t* _m, const uint8_t* _d, uint8_t dlc_)
{
(void)dlc_;
_m->DEBUG_MOTOR_KB_CURRENT = (uint8_t) ( (_d[0] & (0xFFU)) );
@ -249,22 +264,22 @@ uint32_t Unpack_SCM_DEBUG2_Matrix(SCM_DEBUG2_t* _m, const uint8_t* _d, uint8_t d
_m->DEBUG_MOTOR_KB_STOP_1 = (uint16_t) ( ((_d[5] & (0xFFU)) << 8U) | (_d[4] & (0xFFU)) );
_m->DEBUG_MOTOR_KB_STOP_2 = (uint16_t) ( ((_d[7] & (0xFFU)) << 8U) | (_d[6] & (0xFFU)) );
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
_m->mon1.dlc_error = (dlc_ < SCM_DEBUG2_DLC);
_m->mon1.last_cycle = GetSystemTick();
_m->mon1.frame_cnt++;
FMon_SCM_DEBUG2_matrix(&_m->mon1, SCM_DEBUG2_CANID);
#endif // MATRIX_USE_DIAG_MONITORS
FMon_SCM_DEBUG2_canmatrix(&_m->mon1, SCM_DEBUG2_CANID);
#endif // CANMATRIX_USE_DIAG_MONITORS
return SCM_DEBUG2_CANID;
}
#ifdef MATRIX_USE_CANSTRUCT
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG2_Matrix(SCM_DEBUG2_t* _m, __CoderDbcCanFrame_t__* cframe)
uint32_t Pack_SCM_DEBUG2_CANmatrix(SCM_DEBUG2_t* _m, __CoderDbcCanFrame_t__* cframe)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_DEBUG2_DLC); cframe->Data[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_DEBUG2_DLC); cframe->Data[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
cframe->Data[0] |= (uint8_t) ( (_m->DEBUG_MOTOR_KB_CURRENT & (0xFFU)) );
cframe->Data[1] |= (uint8_t) ( (_m->DEBUG_MOTOR_KB_STATUS & (0xFFU)) );
@ -283,9 +298,9 @@ uint32_t Pack_SCM_DEBUG2_Matrix(SCM_DEBUG2_t* _m, __CoderDbcCanFrame_t__* cframe
#else
uint32_t Pack_SCM_DEBUG2_Matrix(SCM_DEBUG2_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
uint32_t Pack_SCM_DEBUG2_CANmatrix(SCM_DEBUG2_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_DEBUG2_DLC); _d[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_DEBUG2_DLC); _d[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
_d[0] |= (uint8_t) ( (_m->DEBUG_MOTOR_KB_CURRENT & (0xFFU)) );
_d[1] |= (uint8_t) ( (_m->DEBUG_MOTOR_KB_STATUS & (0xFFU)) );
@ -301,9 +316,9 @@ uint32_t Pack_SCM_DEBUG2_Matrix(SCM_DEBUG2_t* _m, uint8_t* _d, uint8_t* _len, ui
return SCM_DEBUG2_CANID;
}
#endif // MATRIX_USE_CANSTRUCT
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_DEBUG3_Matrix(SCM_DEBUG3_t* _m, const uint8_t* _d, uint8_t dlc_)
uint32_t Unpack_SCM_DEBUG3_CANmatrix(SCM_DEBUG3_t* _m, const uint8_t* _d, uint8_t dlc_)
{
(void)dlc_;
_m->DEBUG_MOTOR_TT_CURRENT = (uint8_t) ( (_d[0] & (0xFFU)) );
@ -312,22 +327,22 @@ uint32_t Unpack_SCM_DEBUG3_Matrix(SCM_DEBUG3_t* _m, const uint8_t* _d, uint8_t d
_m->DEBUG_MOTOR_TT_STOP_1 = (uint16_t) ( ((_d[5] & (0xFFU)) << 8U) | (_d[4] & (0xFFU)) );
_m->DEBUG_MOTOR_TT_STOP_2 = (uint16_t) ( ((_d[7] & (0xFFU)) << 8U) | (_d[6] & (0xFFU)) );
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
_m->mon1.dlc_error = (dlc_ < SCM_DEBUG3_DLC);
_m->mon1.last_cycle = GetSystemTick();
_m->mon1.frame_cnt++;
FMon_SCM_DEBUG3_matrix(&_m->mon1, SCM_DEBUG3_CANID);
#endif // MATRIX_USE_DIAG_MONITORS
FMon_SCM_DEBUG3_canmatrix(&_m->mon1, SCM_DEBUG3_CANID);
#endif // CANMATRIX_USE_DIAG_MONITORS
return SCM_DEBUG3_CANID;
}
#ifdef MATRIX_USE_CANSTRUCT
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG3_Matrix(SCM_DEBUG3_t* _m, __CoderDbcCanFrame_t__* cframe)
uint32_t Pack_SCM_DEBUG3_CANmatrix(SCM_DEBUG3_t* _m, __CoderDbcCanFrame_t__* cframe)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_DEBUG3_DLC); cframe->Data[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_DEBUG3_DLC); cframe->Data[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
cframe->Data[0] |= (uint8_t) ( (_m->DEBUG_MOTOR_TT_CURRENT & (0xFFU)) );
cframe->Data[1] |= (uint8_t) ( (_m->DEBUG_MOTOR_TT_STATUS & (0xFFU)) );
@ -346,9 +361,9 @@ uint32_t Pack_SCM_DEBUG3_Matrix(SCM_DEBUG3_t* _m, __CoderDbcCanFrame_t__* cframe
#else
uint32_t Pack_SCM_DEBUG3_Matrix(SCM_DEBUG3_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
uint32_t Pack_SCM_DEBUG3_CANmatrix(SCM_DEBUG3_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_DEBUG3_DLC); _d[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_DEBUG3_DLC); _d[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
_d[0] |= (uint8_t) ( (_m->DEBUG_MOTOR_TT_CURRENT & (0xFFU)) );
_d[1] |= (uint8_t) ( (_m->DEBUG_MOTOR_TT_STATUS & (0xFFU)) );
@ -364,9 +379,9 @@ uint32_t Pack_SCM_DEBUG3_Matrix(SCM_DEBUG3_t* _m, uint8_t* _d, uint8_t* _len, ui
return SCM_DEBUG3_CANID;
}
#endif // MATRIX_USE_CANSTRUCT
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_DEBUG4_Matrix(SCM_DEBUG4_t* _m, const uint8_t* _d, uint8_t dlc_)
uint32_t Unpack_SCM_DEBUG4_CANmatrix(SCM_DEBUG4_t* _m, const uint8_t* _d, uint8_t dlc_)
{
(void)dlc_;
_m->DEBUG_MOTOR_ZY_CURRENT = (uint8_t) ( (_d[0] & (0xFFU)) );
@ -375,22 +390,22 @@ uint32_t Unpack_SCM_DEBUG4_Matrix(SCM_DEBUG4_t* _m, const uint8_t* _d, uint8_t d
_m->DEBUG_MOTOR_ZY_STOP_1 = (uint16_t) ( ((_d[5] & (0xFFU)) << 8U) | (_d[4] & (0xFFU)) );
_m->DEBUG_MOTOR_ZY_STOP_2 = (uint16_t) ( ((_d[7] & (0xFFU)) << 8U) | (_d[6] & (0xFFU)) );
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
_m->mon1.dlc_error = (dlc_ < SCM_DEBUG4_DLC);
_m->mon1.last_cycle = GetSystemTick();
_m->mon1.frame_cnt++;
FMon_SCM_DEBUG4_matrix(&_m->mon1, SCM_DEBUG4_CANID);
#endif // MATRIX_USE_DIAG_MONITORS
FMon_SCM_DEBUG4_canmatrix(&_m->mon1, SCM_DEBUG4_CANID);
#endif // CANMATRIX_USE_DIAG_MONITORS
return SCM_DEBUG4_CANID;
}
#ifdef MATRIX_USE_CANSTRUCT
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG4_Matrix(SCM_DEBUG4_t* _m, __CoderDbcCanFrame_t__* cframe)
uint32_t Pack_SCM_DEBUG4_CANmatrix(SCM_DEBUG4_t* _m, __CoderDbcCanFrame_t__* cframe)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_DEBUG4_DLC); cframe->Data[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_DEBUG4_DLC); cframe->Data[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
cframe->Data[0] |= (uint8_t) ( (_m->DEBUG_MOTOR_ZY_CURRENT & (0xFFU)) );
cframe->Data[1] |= (uint8_t) ( (_m->DEBUG_MOTOR_ZY_STATUS & (0xFFU)) );
@ -409,9 +424,9 @@ uint32_t Pack_SCM_DEBUG4_Matrix(SCM_DEBUG4_t* _m, __CoderDbcCanFrame_t__* cframe
#else
uint32_t Pack_SCM_DEBUG4_Matrix(SCM_DEBUG4_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
uint32_t Pack_SCM_DEBUG4_CANmatrix(SCM_DEBUG4_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_DEBUG4_DLC); _d[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_DEBUG4_DLC); _d[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
_d[0] |= (uint8_t) ( (_m->DEBUG_MOTOR_ZY_CURRENT & (0xFFU)) );
_d[1] |= (uint8_t) ( (_m->DEBUG_MOTOR_ZY_STATUS & (0xFFU)) );
@ -427,9 +442,9 @@ uint32_t Pack_SCM_DEBUG4_Matrix(SCM_DEBUG4_t* _m, uint8_t* _d, uint8_t* _len, ui
return SCM_DEBUG4_CANID;
}
#endif // MATRIX_USE_CANSTRUCT
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_DEBUG5_Matrix(SCM_DEBUG5_t* _m, const uint8_t* _d, uint8_t dlc_)
uint32_t Unpack_SCM_DEBUG5_CANmatrix(SCM_DEBUG5_t* _m, const uint8_t* _d, uint8_t dlc_)
{
(void)dlc_;
_m->DEBUG_MOTOR_TZ_CURRENT = (uint8_t) ( (_d[0] & (0xFFU)) );
@ -438,22 +453,22 @@ uint32_t Unpack_SCM_DEBUG5_Matrix(SCM_DEBUG5_t* _m, const uint8_t* _d, uint8_t d
_m->DEBUG_MOTOR_TZ_STOP_1 = (uint16_t) ( ((_d[5] & (0xFFU)) << 8U) | (_d[4] & (0xFFU)) );
_m->DEBUG_MOTOR_TZ_STOP_2 = (uint16_t) ( ((_d[7] & (0xFFU)) << 8U) | (_d[6] & (0xFFU)) );
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
_m->mon1.dlc_error = (dlc_ < SCM_DEBUG5_DLC);
_m->mon1.last_cycle = GetSystemTick();
_m->mon1.frame_cnt++;
FMon_SCM_DEBUG5_matrix(&_m->mon1, SCM_DEBUG5_CANID);
#endif // MATRIX_USE_DIAG_MONITORS
FMon_SCM_DEBUG5_canmatrix(&_m->mon1, SCM_DEBUG5_CANID);
#endif // CANMATRIX_USE_DIAG_MONITORS
return SCM_DEBUG5_CANID;
}
#ifdef MATRIX_USE_CANSTRUCT
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG5_Matrix(SCM_DEBUG5_t* _m, __CoderDbcCanFrame_t__* cframe)
uint32_t Pack_SCM_DEBUG5_CANmatrix(SCM_DEBUG5_t* _m, __CoderDbcCanFrame_t__* cframe)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_DEBUG5_DLC); cframe->Data[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_DEBUG5_DLC); cframe->Data[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
cframe->Data[0] |= (uint8_t) ( (_m->DEBUG_MOTOR_TZ_CURRENT & (0xFFU)) );
cframe->Data[1] |= (uint8_t) ( (_m->DEBUG_MOTOR_TZ_STATUS & (0xFFU)) );
@ -472,9 +487,9 @@ uint32_t Pack_SCM_DEBUG5_Matrix(SCM_DEBUG5_t* _m, __CoderDbcCanFrame_t__* cframe
#else
uint32_t Pack_SCM_DEBUG5_Matrix(SCM_DEBUG5_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
uint32_t Pack_SCM_DEBUG5_CANmatrix(SCM_DEBUG5_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_DEBUG5_DLC); _d[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_DEBUG5_DLC); _d[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
_d[0] |= (uint8_t) ( (_m->DEBUG_MOTOR_TZ_CURRENT & (0xFFU)) );
_d[1] |= (uint8_t) ( (_m->DEBUG_MOTOR_TZ_STATUS & (0xFFU)) );
@ -490,9 +505,9 @@ uint32_t Pack_SCM_DEBUG5_Matrix(SCM_DEBUG5_t* _m, uint8_t* _d, uint8_t* _len, ui
return SCM_DEBUG5_CANID;
}
#endif // MATRIX_USE_CANSTRUCT
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_DEBUG6_Matrix(SCM_DEBUG6_t* _m, const uint8_t* _d, uint8_t dlc_)
uint32_t Unpack_SCM_DEBUG6_CANmatrix(SCM_DEBUG6_t* _m, const uint8_t* _d, uint8_t dlc_)
{
(void)dlc_;
_m->DEBUG_MOTOR_YT_CURRENT = (uint8_t) ( (_d[0] & (0xFFU)) );
@ -501,22 +516,22 @@ uint32_t Unpack_SCM_DEBUG6_Matrix(SCM_DEBUG6_t* _m, const uint8_t* _d, uint8_t d
_m->DEBUG_MOTOR_YT_STOP_1 = (uint16_t) ( ((_d[5] & (0xFFU)) << 8U) | (_d[4] & (0xFFU)) );
_m->DEBUG_MOTOR_YT_STOP_2 = (uint16_t) ( ((_d[7] & (0xFFU)) << 8U) | (_d[6] & (0xFFU)) );
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
_m->mon1.dlc_error = (dlc_ < SCM_DEBUG6_DLC);
_m->mon1.last_cycle = GetSystemTick();
_m->mon1.frame_cnt++;
FMon_SCM_DEBUG6_matrix(&_m->mon1, SCM_DEBUG6_CANID);
#endif // MATRIX_USE_DIAG_MONITORS
FMon_SCM_DEBUG6_canmatrix(&_m->mon1, SCM_DEBUG6_CANID);
#endif // CANMATRIX_USE_DIAG_MONITORS
return SCM_DEBUG6_CANID;
}
#ifdef MATRIX_USE_CANSTRUCT
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG6_Matrix(SCM_DEBUG6_t* _m, __CoderDbcCanFrame_t__* cframe)
uint32_t Pack_SCM_DEBUG6_CANmatrix(SCM_DEBUG6_t* _m, __CoderDbcCanFrame_t__* cframe)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_DEBUG6_DLC); cframe->Data[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_DEBUG6_DLC); cframe->Data[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
cframe->Data[0] |= (uint8_t) ( (_m->DEBUG_MOTOR_YT_CURRENT & (0xFFU)) );
cframe->Data[1] |= (uint8_t) ( (_m->DEBUG_MOTOR_YT_STATUS & (0xFFU)) );
@ -535,9 +550,9 @@ uint32_t Pack_SCM_DEBUG6_Matrix(SCM_DEBUG6_t* _m, __CoderDbcCanFrame_t__* cframe
#else
uint32_t Pack_SCM_DEBUG6_Matrix(SCM_DEBUG6_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
uint32_t Pack_SCM_DEBUG6_CANmatrix(SCM_DEBUG6_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide)
{
uint8_t i; for (i = 0u; i < MATRIX_VALIDATE_DLC(SCM_DEBUG6_DLC); _d[i++] = MATRIX_INITIAL_BYTE_VALUE);
uint8_t i; for (i = 0u; i < CANMATRIX_VALIDATE_DLC(SCM_DEBUG6_DLC); _d[i++] = CANMATRIX_INITIAL_BYTE_VALUE);
_d[0] |= (uint8_t) ( (_m->DEBUG_MOTOR_YT_CURRENT & (0xFFU)) );
_d[1] |= (uint8_t) ( (_m->DEBUG_MOTOR_YT_STATUS & (0xFFU)) );
@ -553,5 +568,5 @@ uint32_t Pack_SCM_DEBUG6_Matrix(SCM_DEBUG6_t* _m, uint8_t* _d, uint8_t* _len, ui
return SCM_DEBUG6_CANID;
}
#endif // MATRIX_USE_CANSTRUCT
#endif // CANMATRIX_USE_CANSTRUCT

View File

@ -1,6 +1,6 @@
// Generator version : v3.1
// Generation time : 2024.11.18 11:42:14
// DBC filename : DMK-RP-01_CAN_V0.1_20241118.dbc
// Generation time : 2024.12.07 13:54:48
// DBC filename : DMK-RP-01_CAN_V0.1_20241207.dbc
#pragma once
#ifdef __cplusplus
@ -10,36 +10,36 @@ extern "C" {
#include <stdint.h>
// DBC file version
#define VER_MATRIX_MAJ (0U)
#define VER_MATRIX_MIN (0U)
#define VER_CANMATRIX_MAJ (0U)
#define VER_CANMATRIX_MIN (0U)
// include current dbc-driver compilation config
#include "matrix-config.h"
#include "canmatrix-config.h"
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
// This file must define:
// base monitor struct
#include "canmonitorutil.h"
#endif // MATRIX_USE_DIAG_MONITORS
#endif // CANMATRIX_USE_DIAG_MONITORS
// DLC maximum value which is used as the limit for frame's data buffer size.
// Client can set its own value (not sure why) in driver-config
// or can test it on some limit specified by application
// e.g.: static_assert(TESTDB_MAX_DLC_VALUE <= APPLICATION_FRAME_DATA_SIZE, "Max DLC value in the driver is too big")
#ifndef MATRIX_MAX_DLC_VALUE
#ifndef CANMATRIX_MAX_DLC_VALUE
// The value which was found out by generator (real max value)
#define MATRIX_MAX_DLC_VALUE 8U
#define CANMATRIX_MAX_DLC_VALUE 8U
#endif
// The limit is used for setting frame's data bytes
#define MATRIX_VALIDATE_DLC(msgDlc) (((msgDlc) <= (MATRIX_MAX_DLC_VALUE)) ? (msgDlc) : (MATRIX_MAX_DLC_VALUE))
#define CANMATRIX_VALIDATE_DLC(msgDlc) (((msgDlc) <= (CANMATRIX_MAX_DLC_VALUE)) ? (msgDlc) : (CANMATRIX_MAX_DLC_VALUE))
// Initial byte value to be filles in data bytes of the frame before pack signals
// User can define its own custom value in driver-config file
#ifndef MATRIX_INITIAL_BYTE_VALUE
#define MATRIX_INITIAL_BYTE_VALUE 0U
#ifndef CANMATRIX_INITIAL_BYTE_VALUE
#define CANMATRIX_INITIAL_BYTE_VALUE 0U
#endif
@ -283,7 +283,7 @@ extern "C" {
typedef struct
{
#ifdef MATRIX_USE_BITS_SIGNAL
#ifdef CANMATRIX_USE_BITS_SIGNAL
// 1 : "PRESSED"
// 0 : "NOT_PRESS"
@ -455,13 +455,13 @@ typedef struct
// 0 : "NOT_PRESS"
uint8_t KEY_RESET; // Bits= 1
#endif // MATRIX_USE_BITS_SIGNAL
#endif // CANMATRIX_USE_BITS_SIGNAL
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
FrameMonitor_t mon1;
#endif // MATRIX_USE_DIAG_MONITORS
#endif // CANMATRIX_USE_DIAG_MONITORS
} Panel_Key_t;
@ -643,7 +643,7 @@ typedef struct
typedef struct
{
#ifdef MATRIX_USE_BITS_SIGNAL
#ifdef CANMATRIX_USE_BITS_SIGNAL
// 3 : "FAULT"
// 2 : "ACT_CCW"
@ -699,6 +699,16 @@ typedef struct
// 0 : "OFF"
uint8_t ZY_MSSG_STATE : 2; // Bits= 2
uint8_t test1; // Bits= 8
uint8_t test2; // Bits= 8
uint8_t test3; // Bits= 8
uint8_t test4; // Bits= 8
uint8_t test5; // Bits= 8
#else
// 3 : "FAULT"
@ -755,13 +765,23 @@ typedef struct
// 0 : "OFF"
uint8_t ZY_MSSG_STATE; // Bits= 2
#endif // MATRIX_USE_BITS_SIGNAL
uint8_t test1; // Bits= 8
#ifdef MATRIX_USE_DIAG_MONITORS
uint8_t test2; // Bits= 8
uint8_t test3; // Bits= 8
uint8_t test4; // Bits= 8
uint8_t test5; // Bits= 8
#endif // CANMATRIX_USE_BITS_SIGNAL
#ifdef CANMATRIX_USE_DIAG_MONITORS
FrameMonitor_t mon1;
#endif // MATRIX_USE_DIAG_MONITORS
#endif // CANMATRIX_USE_DIAG_MONITORS
} SCM_STATE_t;
@ -773,7 +793,7 @@ typedef struct
typedef struct
{
#ifdef MATRIX_USE_BITS_SIGNAL
#ifdef CANMATRIX_USE_BITS_SIGNAL
uint8_t DEBUG_MOTOR_HG_CURRENT; // Bits= 8
@ -797,13 +817,13 @@ typedef struct
uint16_t DEBUG_MOTOR_HG_STOP_2; // Bits=16
#endif // MATRIX_USE_BITS_SIGNAL
#endif // CANMATRIX_USE_BITS_SIGNAL
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
FrameMonitor_t mon1;
#endif // MATRIX_USE_DIAG_MONITORS
#endif // CANMATRIX_USE_DIAG_MONITORS
} SCM_DEBUG1_t;
@ -815,7 +835,7 @@ typedef struct
typedef struct
{
#ifdef MATRIX_USE_BITS_SIGNAL
#ifdef CANMATRIX_USE_BITS_SIGNAL
uint8_t DEBUG_MOTOR_KB_CURRENT; // Bits= 8
@ -839,13 +859,13 @@ typedef struct
uint16_t DEBUG_MOTOR_KB_STOP_2; // Bits=16
#endif // MATRIX_USE_BITS_SIGNAL
#endif // CANMATRIX_USE_BITS_SIGNAL
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
FrameMonitor_t mon1;
#endif // MATRIX_USE_DIAG_MONITORS
#endif // CANMATRIX_USE_DIAG_MONITORS
} SCM_DEBUG2_t;
@ -857,7 +877,7 @@ typedef struct
typedef struct
{
#ifdef MATRIX_USE_BITS_SIGNAL
#ifdef CANMATRIX_USE_BITS_SIGNAL
uint8_t DEBUG_MOTOR_TT_CURRENT; // Bits= 8
@ -881,13 +901,13 @@ typedef struct
uint16_t DEBUG_MOTOR_TT_STOP_2; // Bits=16
#endif // MATRIX_USE_BITS_SIGNAL
#endif // CANMATRIX_USE_BITS_SIGNAL
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
FrameMonitor_t mon1;
#endif // MATRIX_USE_DIAG_MONITORS
#endif // CANMATRIX_USE_DIAG_MONITORS
} SCM_DEBUG3_t;
@ -899,7 +919,7 @@ typedef struct
typedef struct
{
#ifdef MATRIX_USE_BITS_SIGNAL
#ifdef CANMATRIX_USE_BITS_SIGNAL
uint8_t DEBUG_MOTOR_ZY_CURRENT; // Bits= 8
@ -923,13 +943,13 @@ typedef struct
uint16_t DEBUG_MOTOR_ZY_STOP_2; // Bits=16
#endif // MATRIX_USE_BITS_SIGNAL
#endif // CANMATRIX_USE_BITS_SIGNAL
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
FrameMonitor_t mon1;
#endif // MATRIX_USE_DIAG_MONITORS
#endif // CANMATRIX_USE_DIAG_MONITORS
} SCM_DEBUG4_t;
@ -941,7 +961,7 @@ typedef struct
typedef struct
{
#ifdef MATRIX_USE_BITS_SIGNAL
#ifdef CANMATRIX_USE_BITS_SIGNAL
uint8_t DEBUG_MOTOR_TZ_CURRENT; // Bits= 8
@ -965,13 +985,13 @@ typedef struct
uint16_t DEBUG_MOTOR_TZ_STOP_2; // Bits=16
#endif // MATRIX_USE_BITS_SIGNAL
#endif // CANMATRIX_USE_BITS_SIGNAL
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
FrameMonitor_t mon1;
#endif // MATRIX_USE_DIAG_MONITORS
#endif // CANMATRIX_USE_DIAG_MONITORS
} SCM_DEBUG5_t;
@ -983,7 +1003,7 @@ typedef struct
typedef struct
{
#ifdef MATRIX_USE_BITS_SIGNAL
#ifdef CANMATRIX_USE_BITS_SIGNAL
uint8_t DEBUG_MOTOR_YT_CURRENT; // Bits= 8
@ -1007,73 +1027,73 @@ typedef struct
uint16_t DEBUG_MOTOR_YT_STOP_2; // Bits=16
#endif // MATRIX_USE_BITS_SIGNAL
#endif // CANMATRIX_USE_BITS_SIGNAL
#ifdef MATRIX_USE_DIAG_MONITORS
#ifdef CANMATRIX_USE_DIAG_MONITORS
FrameMonitor_t mon1;
#endif // MATRIX_USE_DIAG_MONITORS
#endif // CANMATRIX_USE_DIAG_MONITORS
} SCM_DEBUG6_t;
// Function signatures
uint32_t Unpack_Panel_Key_Matrix(Panel_Key_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef MATRIX_USE_CANSTRUCT
uint32_t Pack_Panel_Key_Matrix(Panel_Key_t* _m, __CoderDbcCanFrame_t__* cframe);
uint32_t Unpack_Panel_Key_CANmatrix(Panel_Key_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_Panel_Key_CANmatrix(Panel_Key_t* _m, __CoderDbcCanFrame_t__* cframe);
#else
uint32_t Pack_Panel_Key_Matrix(Panel_Key_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // MATRIX_USE_CANSTRUCT
uint32_t Pack_Panel_Key_CANmatrix(Panel_Key_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_STATE_Matrix(SCM_STATE_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_STATE_Matrix(SCM_STATE_t* _m, __CoderDbcCanFrame_t__* cframe);
uint32_t Unpack_SCM_STATE_CANmatrix(SCM_STATE_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_STATE_CANmatrix(SCM_STATE_t* _m, __CoderDbcCanFrame_t__* cframe);
#else
uint32_t Pack_SCM_STATE_Matrix(SCM_STATE_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_STATE_CANmatrix(SCM_STATE_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_DEBUG1_Matrix(SCM_DEBUG1_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG1_Matrix(SCM_DEBUG1_t* _m, __CoderDbcCanFrame_t__* cframe);
uint32_t Unpack_SCM_DEBUG1_CANmatrix(SCM_DEBUG1_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG1_CANmatrix(SCM_DEBUG1_t* _m, __CoderDbcCanFrame_t__* cframe);
#else
uint32_t Pack_SCM_DEBUG1_Matrix(SCM_DEBUG1_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG1_CANmatrix(SCM_DEBUG1_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_DEBUG2_Matrix(SCM_DEBUG2_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG2_Matrix(SCM_DEBUG2_t* _m, __CoderDbcCanFrame_t__* cframe);
uint32_t Unpack_SCM_DEBUG2_CANmatrix(SCM_DEBUG2_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG2_CANmatrix(SCM_DEBUG2_t* _m, __CoderDbcCanFrame_t__* cframe);
#else
uint32_t Pack_SCM_DEBUG2_Matrix(SCM_DEBUG2_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG2_CANmatrix(SCM_DEBUG2_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_DEBUG3_Matrix(SCM_DEBUG3_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG3_Matrix(SCM_DEBUG3_t* _m, __CoderDbcCanFrame_t__* cframe);
uint32_t Unpack_SCM_DEBUG3_CANmatrix(SCM_DEBUG3_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG3_CANmatrix(SCM_DEBUG3_t* _m, __CoderDbcCanFrame_t__* cframe);
#else
uint32_t Pack_SCM_DEBUG3_Matrix(SCM_DEBUG3_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG3_CANmatrix(SCM_DEBUG3_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_DEBUG4_Matrix(SCM_DEBUG4_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG4_Matrix(SCM_DEBUG4_t* _m, __CoderDbcCanFrame_t__* cframe);
uint32_t Unpack_SCM_DEBUG4_CANmatrix(SCM_DEBUG4_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG4_CANmatrix(SCM_DEBUG4_t* _m, __CoderDbcCanFrame_t__* cframe);
#else
uint32_t Pack_SCM_DEBUG4_Matrix(SCM_DEBUG4_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG4_CANmatrix(SCM_DEBUG4_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_DEBUG5_Matrix(SCM_DEBUG5_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG5_Matrix(SCM_DEBUG5_t* _m, __CoderDbcCanFrame_t__* cframe);
uint32_t Unpack_SCM_DEBUG5_CANmatrix(SCM_DEBUG5_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG5_CANmatrix(SCM_DEBUG5_t* _m, __CoderDbcCanFrame_t__* cframe);
#else
uint32_t Pack_SCM_DEBUG5_Matrix(SCM_DEBUG5_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG5_CANmatrix(SCM_DEBUG5_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // CANMATRIX_USE_CANSTRUCT
uint32_t Unpack_SCM_DEBUG6_Matrix(SCM_DEBUG6_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG6_Matrix(SCM_DEBUG6_t* _m, __CoderDbcCanFrame_t__* cframe);
uint32_t Unpack_SCM_DEBUG6_CANmatrix(SCM_DEBUG6_t* _m, const uint8_t* _d, uint8_t dlc_);
#ifdef CANMATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG6_CANmatrix(SCM_DEBUG6_t* _m, __CoderDbcCanFrame_t__* cframe);
#else
uint32_t Pack_SCM_DEBUG6_Matrix(SCM_DEBUG6_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // MATRIX_USE_CANSTRUCT
uint32_t Pack_SCM_DEBUG6_CANmatrix(SCM_DEBUG6_t* _m, uint8_t* _d, uint8_t* _len, uint8_t* _ide);
#endif // CANMATRIX_USE_CANSTRUCT
#ifdef __cplusplus
}

View File

@ -0,0 +1,73 @@
// Generator version : v3.1
// Generation time : 2024.12.07 08:59:44
// DBC filename : DMK-RP-01_CAN_V0.1_20241118.dbc
#include "canmatrix-fmon.h"
#ifdef CANMATRIX_USE_DIAG_MONITORS
/*
Put the monitor function content here, keep in mind -
next generation will completely clear all manually added code (!)
*/
#ifdef CANMATRIX_USE_MONO_FMON
void _FMon_MONO_canmatrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
#else
void _FMon_Panel_Key_canmatrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_STATE_canmatrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_DEBUG1_canmatrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_DEBUG2_canmatrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_DEBUG3_canmatrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_DEBUG4_canmatrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_DEBUG5_canmatrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_DEBUG6_canmatrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
#endif // CANMATRIX_USE_MONO_FMON
#endif // CANMATRIX_USE_DIAG_MONITORS

View File

@ -1,28 +0,0 @@
// Generator version : v3.1
// Generation time : 2024.11.18 11:42:14
// DBC filename : DMK-RP-01_CAN_V0.1_20241118.dbc
#include "scm_matrix-binutil.h"
// DBC file version
#if (VER_MATRIX_MAJ != (0U)) || (VER_MATRIX_MIN != (0U))
#error The SCM_MATRIX binutil source file has inconsistency with core dbc lib!
#endif
#ifdef __DEF_SCM_MATRIX__
scm_matrix_rx_t scm_matrix_rx;
scm_matrix_tx_t scm_matrix_tx;
#endif // __DEF_SCM_MATRIX__
uint32_t scm_matrix_Receive(scm_matrix_rx_t* _m, const uint8_t* _d, uint32_t _id, uint8_t dlc_)
{
uint32_t recid = 0;
if (_id == 0x201U) {
recid = Unpack_Panel_Key_Matrix(&(_m->Panel_Key), _d, dlc_);
}
return recid;
}

View File

@ -1,65 +0,0 @@
// Generator version : v3.1
// Generation time : 2024.11.18 11:42:14
// DBC filename : DMK-RP-01_CAN_V0.1_20241118.dbc
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
// DBC file version
#define VER_MATRIX_MAJ_FMON (0U)
#define VER_MATRIX_MIN_FMON (0U)
#include "matrix-config.h"
#ifdef MATRIX_USE_DIAG_MONITORS
#include "canmonitorutil.h"
/*
This file contains the prototypes of all the functions that will be called
from each Unpack_*name* function to detect DBC related errors
It is the user responsibility to defined these functions in the
separated .c file. If it won't be done the linkage error will happen
*/
#ifdef MATRIX_USE_MONO_FMON
void _FMon_MONO_matrix(FrameMonitor_t* _mon, uint32_t msgid);
#define FMon_Panel_Key_matrix(x, y) _FMon_MONO_matrix((x), (y))
#define FMon_SCM_STATE_matrix(x, y) _FMon_MONO_matrix((x), (y))
#define FMon_SCM_DEBUG1_matrix(x, y) _FMon_MONO_matrix((x), (y))
#define FMon_SCM_DEBUG2_matrix(x, y) _FMon_MONO_matrix((x), (y))
#define FMon_SCM_DEBUG3_matrix(x, y) _FMon_MONO_matrix((x), (y))
#define FMon_SCM_DEBUG4_matrix(x, y) _FMon_MONO_matrix((x), (y))
#define FMon_SCM_DEBUG5_matrix(x, y) _FMon_MONO_matrix((x), (y))
#define FMon_SCM_DEBUG6_matrix(x, y) _FMon_MONO_matrix((x), (y))
#else
void _FMon_Panel_Key_matrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_STATE_matrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_DEBUG1_matrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_DEBUG2_matrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_DEBUG3_matrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_DEBUG4_matrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_DEBUG5_matrix(FrameMonitor_t* _mon, uint32_t msgid);
void _FMon_SCM_DEBUG6_matrix(FrameMonitor_t* _mon, uint32_t msgid);
#define FMon_Panel_Key_matrix(x, y) _FMon_Panel_Key_matrix((x), (y))
#define FMon_SCM_STATE_matrix(x, y) _FMon_SCM_STATE_matrix((x), (y))
#define FMon_SCM_DEBUG1_matrix(x, y) _FMon_SCM_DEBUG1_matrix((x), (y))
#define FMon_SCM_DEBUG2_matrix(x, y) _FMon_SCM_DEBUG2_matrix((x), (y))
#define FMon_SCM_DEBUG3_matrix(x, y) _FMon_SCM_DEBUG3_matrix((x), (y))
#define FMon_SCM_DEBUG4_matrix(x, y) _FMon_SCM_DEBUG4_matrix((x), (y))
#define FMon_SCM_DEBUG5_matrix(x, y) _FMon_SCM_DEBUG5_matrix((x), (y))
#define FMon_SCM_DEBUG6_matrix(x, y) _FMon_SCM_DEBUG6_matrix((x), (y))
#endif
#endif // MATRIX_USE_DIAG_MONITORS
#ifdef __cplusplus
}
#endif

View File

@ -1,73 +0,0 @@
// Generator version : v3.1
// Generation time : 2024.11.18 11:42:14
// DBC filename : DMK-RP-01_CAN_V0.1_20241118.dbc
#include "matrix-fmon.h"
#ifdef MATRIX_USE_DIAG_MONITORS
/*
Put the monitor function content here, keep in mind -
next generation will completely clear all manually added code (!)
*/
#ifdef MATRIX_USE_MONO_FMON
void _FMon_MONO_matrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
#else
void _FMon_Panel_Key_matrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_STATE_matrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_DEBUG1_matrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_DEBUG2_matrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_DEBUG3_matrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_DEBUG4_matrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_DEBUG5_matrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
void _FMon_SCM_DEBUG6_matrix(FrameMonitor_t* _mon, uint32_t msgid)
{
(void)_mon;
(void)msgid;
}
#endif // MATRIX_USE_MONO_FMON
#endif // MATRIX_USE_DIAG_MONITORS

View File

@ -1,6 +1,6 @@
#include "MotorCtrl.h"
#include "hwctrl.h"
#include "scm_canmatrix-binutil.h"
/*******************************************************************************
* the defines
******************************************************************************/
@ -69,7 +69,7 @@ uint16_t HallErrorCount[6];
static void MotorCtrl(void);
static void AutoCalCtrl(void);
static void MotorValueInit(void);
static void CurrentDetect(void);
/*******************************************************************************
* the local functions
@ -103,8 +103,8 @@ static void AutoCalCtrl(void)
MotorArr1state = 1;
MotorArr2state = 1;
MotorArr3state = 1;
setMotorState(Motor1,Motor_ACT_CW);
setMotorState(Motor3,Motor_ACT_CW);
setMotorState(MotorHG,Motor_ACT_CW);
setMotorState(MotorTT,Motor_ACT_CW);
setMotorState(Motor5,Motor_ACT_CW);
autocalcounter[0] = 0;
autocalcounter[1] = 0;
@ -144,17 +144,17 @@ static void AutoCalCtrl(void)
{
case 1://Motor1 xq
autocalcounter[0]++;
if (MotorHardStop1[Motor1] != 0)
if (MotorHardStop1[MotorHG] != 0)
{
MotorArr1state++;
wait1 = 0;
setMotorState(Motor1,Motor_ACT_NOACT);
setMotorState(MotorHG,Motor_ACT_NOACT);
}
if (autocalcounter[0] > 3000 || MotorErr[Motor1] != 0)
if (autocalcounter[0] > 3000 || MotorErr[MotorHG] != 0)
{
MotorArr1state = 4;
wait1 = 0;
setMotorState(Motor1,Motor_ACT_NOACT);
setMotorState(MotorHG,Motor_ACT_NOACT);
}
break;
case 2://wait
@ -162,23 +162,23 @@ static void AutoCalCtrl(void)
if (wait1 > 50)
{
MotorArr1state++;
setMotorState(Motor1,Motor_ACT_CCW);
setMotorState(MotorHG,Motor_ACT_CCW);
autocalcounter[0] = 0;
}
break;
case 3://Motor1 xh
autocalcounter[0]++;
if (MotorHardStop2[Motor1] != 0)
if (MotorHardStop2[MotorHG] != 0)
{
MotorArr1state++;
wait1 = 0;
setMotorState(Motor1,Motor_ACT_NOACT);
setMotorState(MotorHG,Motor_ACT_NOACT);
}
if (autocalcounter[0] > 3000 || MotorErr[Motor1] != 0)
if (autocalcounter[0] > 3000 || MotorErr[MotorHG] != 0)
{
MotorArr1state = 4;
wait1 = 0;
setMotorState(Motor1,Motor_ACT_NOACT);
setMotorState(MotorHG,Motor_ACT_NOACT);
}
break;
case 4://wait
@ -186,22 +186,22 @@ static void AutoCalCtrl(void)
if (wait1 > 50)
{
MotorArr1state++;
setMotorState(Motor2,Motor_ACT_CW);
setMotorState(MotorKB,Motor_ACT_CW);
autocalcounter[0] = 0;
}
break;
case 5://Motor2 xq
autocalcounter[0]++;
if (MotorHardStop1[Motor2] != 0)
if (MotorHardStop1[MotorKB] != 0)
{
MotorArr1state++;
wait1 = 0;
setMotorState(Motor2,Motor_ACT_NOACT);
setMotorState(MotorKB,Motor_ACT_NOACT);
}
if (autocalcounter[0] > 3000 || MotorErr[Motor2] != 0)
if (autocalcounter[0] > 3000 || MotorErr[MotorKB] != 0)
{
MotorArr1state = 0;
setMotorState(Motor2,Motor_ACT_NOACT);
setMotorState(MotorKB,Motor_ACT_NOACT);
}
break;
case 6://wait
@ -209,22 +209,22 @@ static void AutoCalCtrl(void)
if (wait1 > 50)
{
MotorArr1state++;
setMotorState(Motor2,Motor_ACT_CCW);
setMotorState(MotorKB,Motor_ACT_CCW);
autocalcounter[0] = 0;
}
break;
case 7:
autocalcounter[0]++;
if (MotorHardStop2[Motor2] != 0)
if (MotorHardStop2[MotorKB] != 0)
{
MotorArr1state=0;
wait1 = 0;
setMotorState(Motor2,Motor_ACT_NOACT);
setMotorState(MotorKB,Motor_ACT_NOACT);
}
if (autocalcounter[0] > 3000 || MotorErr[Motor2] != 0)
if (autocalcounter[0] > 3000 || MotorErr[MotorKB] != 0)
{
MotorArr1state = 0;
setMotorState(Motor2,Motor_ACT_NOACT);
setMotorState(MotorKB,Motor_ACT_NOACT);
}
break;
default:
@ -236,17 +236,17 @@ static void AutoCalCtrl(void)
{
case 1://Motor3 xq
autocalcounter[1]++;
if (MotorHardStop1[Motor3] != 0)
if (MotorHardStop1[MotorTT] != 0)
{
MotorArr2state++;
wait2 = 0;
setMotorState(Motor3,Motor_ACT_NOACT);
setMotorState(MotorTT,Motor_ACT_NOACT);
}
if (autocalcounter[1] > 3000 || MotorErr[Motor3] != 0)
if (autocalcounter[1] > 3000 || MotorErr[MotorTT] != 0)
{
MotorArr2state = 4;
wait2 = 0;
setMotorState(Motor3,Motor_ACT_NOACT);
setMotorState(MotorTT,Motor_ACT_NOACT);
}
break;
case 2://wait
@ -254,23 +254,23 @@ static void AutoCalCtrl(void)
if (wait2 > 50)
{
MotorArr2state++;
setMotorState(Motor3,Motor_ACT_CCW);
setMotorState(MotorTT,Motor_ACT_CCW);
autocalcounter[1] = 0;
}
break;
case 3://Motor3 xh
autocalcounter[1]++;
if (MotorHardStop2[Motor3] != 0)
if (MotorHardStop2[MotorTT] != 0)
{
MotorArr2state++;
wait2 = 0;
setMotorState(Motor3,Motor_ACT_NOACT);
setMotorState(MotorTT,Motor_ACT_NOACT);
}
if (autocalcounter[1] > 3000 || MotorErr[Motor3] != 0)
if (autocalcounter[1] > 3000 || MotorErr[MotorTT] != 0)
{
MotorArr2state = 4;
wait2 = 0;
setMotorState(Motor3,Motor_ACT_NOACT);
setMotorState(MotorTT,Motor_ACT_NOACT);
}
break;
case 4://wait
@ -278,22 +278,22 @@ static void AutoCalCtrl(void)
if (wait2 > 50)
{
MotorArr2state++;
setMotorState(Motor4,Motor_ACT_CW);
setMotorState(MotorZY,Motor_ACT_CW);
autocalcounter[1] = 0;
}
break;
case 5://Motor4 xq
autocalcounter[1]++;
if (MotorHardStop1[Motor4] != 0)
if (MotorHardStop1[MotorZY] != 0)
{
MotorArr2state++;
wait2 = 0;
setMotorState(Motor4,Motor_ACT_NOACT);
setMotorState(MotorZY,Motor_ACT_NOACT);
}
if (autocalcounter[1] > 3000 || MotorErr[Motor4] != 0)
if (autocalcounter[1] > 3000 || MotorErr[MotorZY] != 0)
{
MotorArr2state = 0;
setMotorState(Motor4,Motor_ACT_NOACT);
setMotorState(MotorZY,Motor_ACT_NOACT);
}
break;
case 6://wait
@ -301,22 +301,22 @@ static void AutoCalCtrl(void)
if (wait2 > 50)
{
MotorArr2state++;
setMotorState(Motor4,Motor_ACT_CCW);
setMotorState(MotorZY,Motor_ACT_CCW);
autocalcounter[1] = 0;
}
break;
case 7:
autocalcounter[1]++;
if (MotorHardStop2[Motor4] != 0)
if (MotorHardStop2[MotorZY] != 0)
{
MotorArr2state=0;
wait2 = 0;
setMotorState(Motor4,Motor_ACT_NOACT);
setMotorState(MotorZY,Motor_ACT_NOACT);
}
if (autocalcounter[1] > 3000 || MotorErr[Motor4] != 0)
if (autocalcounter[1] > 3000 || MotorErr[MotorZY] != 0)
{
MotorArr2state = 0;
setMotorState(Motor4,Motor_ACT_NOACT);
setMotorState(MotorZY,Motor_ACT_NOACT);
}
break;
default:
@ -440,10 +440,10 @@ static void MotorCtrl(void)//10ms
{
MotorHardStop2[1] = MotorHallLoc[1];
}
setMotorTarget(Motor1,0);
setMotorTarget(Motor2,0);
MotorState[Motor1] = Motor_ACT_NOACT;
MotorState[Motor2] = Motor_ACT_NOACT;
setMotorTarget(MotorHG,0);
setMotorTarget(MotorKB,0);
MotorState[MotorHG] = Motor_ACT_NOACT;
MotorState[MotorKB] = Motor_ACT_NOACT;
}
if (OC2flag == 1)
{
@ -464,10 +464,10 @@ static void MotorCtrl(void)//10ms
{
MotorHardStop2[3] = MotorHallLoc[3];
}
setMotorTarget(Motor3,0);
setMotorTarget(Motor4,0);
MotorState[Motor3] = Motor_ACT_NOACT;
MotorState[Motor4] = Motor_ACT_NOACT;
setMotorTarget(MotorTT,0);
setMotorTarget(MotorZY,0);
MotorState[MotorTT] = Motor_ACT_NOACT;
MotorState[MotorZY] = Motor_ACT_NOACT;
}
if (OC3flag == 1)
{
@ -538,7 +538,10 @@ static void MotorCtrl(void)//10ms
}
static void CurrentDetect(void)
{
}
/*******************************************************************************
* the global functions
******************************************************************************/
@ -551,6 +554,13 @@ void MotorCtrl_Init(McuType *obj)
MotorValueInit();
}
static void SetMotorMsg(void)
{
scm_canmatrix_tx.SCM_STATE.MOTOR_HG_STATE = MotorState[MotorHG];
scm_canmatrix_tx.SCM_STATE.MOTOR_KB_STATE = MotorState[MotorKB];
scm_canmatrix_tx.SCM_STATE.MOTOR_TT_STATE = MotorState[MotorTT];
scm_canmatrix_tx.SCM_STATE.MOTOR_ZY_STATE = MotorState[MotorZY];
}
void MotorCtrl_Maintask(McuType *obj)//10ms task
{
MotorCtrl();
@ -558,6 +568,7 @@ void MotorCtrl_Maintask(McuType *obj)//10ms task
{
hw_MotorCtrl(obj, i, MotorStateReal[i]);
}
SetMotorMsg();
}
void setMotorState(Motor_ID_Type motorid,Motor_ACT_Type act)
@ -591,10 +602,10 @@ void StopAutoCal(void)
if (AutoCalState != AUTOCAL_STOP)
{
AutoCalState = AUTOCAL_STOP;
setMotorState(Motor1,Motor_ACT_NOACT);
setMotorState(Motor2,Motor_ACT_NOACT);
setMotorState(Motor3,Motor_ACT_NOACT);
setMotorState(Motor4,Motor_ACT_NOACT);
setMotorState(MotorHG,Motor_ACT_NOACT);
setMotorState(MotorKB,Motor_ACT_NOACT);
setMotorState(MotorTT,Motor_ACT_NOACT);
setMotorState(MotorZY,Motor_ACT_NOACT);
setMotorState(Motor5,Motor_ACT_NOACT);
setMotorState(Motor6,Motor_ACT_NOACT);
}
@ -621,21 +632,21 @@ uint16_t getOverCurrentTh(uint8_t ch)
switch (ch)
{
case 0:
if (MotorStateReal[Motor1]!=Motor_ACT_NOACT)
if (MotorStateReal[MotorHG]!=Motor_ACT_NOACT)
{
th+=50;
}
if (MotorStateReal[Motor2]!=Motor_ACT_NOACT)
if (MotorStateReal[MotorKB]!=Motor_ACT_NOACT)
{
th+=50;
}
break;
case 1:
if (MotorStateReal[Motor3]!=Motor_ACT_NOACT)
if (MotorStateReal[MotorTT]!=Motor_ACT_NOACT)
{
th+=50;
}
if (MotorStateReal[Motor4]!=Motor_ACT_NOACT)
if (MotorStateReal[MotorZY]!=Motor_ACT_NOACT)
{
th+=50;
}

View File

@ -16,10 +16,10 @@ typedef enum
} Motor_ACT_Type;
typedef enum
{
Motor1,//
Motor2,//
Motor3,//
Motor4,//
MotorHG,//
MotorKB,//
MotorTT,//
MotorZY,//
Motor5,//
Motor6,//
MOTOR_NUM,

View File

@ -10,7 +10,8 @@
#include "SEGGER_RTT.h"
#include "MotorCtrl.h"
#include "canuser.h"
#include "key.h"
#include "scm_canmatrix-binutil.h"
/*******************************************************************************
* the defines
@ -86,6 +87,12 @@ void appTask(McuType *obj)
gSystick1msCnt++;
gSysTick1sCnt++;
MsgTask(&udsObj);
if (gSystick1msCnt % 5 == 0)
{
KeyScanTask();
KeyProTask();
}
if (gSystick1msCnt % 10 == 0)
{
MotorCtrl_Maintask(obj);
@ -94,12 +101,14 @@ void appTask(McuType *obj)
if (gSystick1msCnt % 50 == 0)
{
SBC_WD_Trigger();
}
if(gSystick1msCnt % 200 == 0)
if(gSystick1msCnt % 1000 == 0)
{
//TrgMuxDrv_GenSWTrigger(&obj->trgMuxDrv, 1);
//adcResult[0] = AdcDrv_GetRn(&obj->adc0Drv, 0);
//AdcDrv_SwTrg(&obj->adc0Drv);
}
if (gSystick1msCnt >= 10000)
{

View File

@ -1,8 +1,9 @@
#include "canuser.h"
#include "scm_matrix-binutil.h"
#include "scm_canmatrix-binutil.h"
#include "can_message.h"
#include "hwctrl.h"
/*******************************************************************************
* the typedefs
******************************************************************************/
@ -116,6 +117,8 @@ static uint8_t rxMsgBuf1[8] = {0};
static uint8_t rxMsgBuf2[8] = {0};
static uint8_t debugMode;
CAN_MESSAGE CAN_D_scm_state;
/*******************************************************************************
* the const
@ -154,6 +157,11 @@ static void RxMsgProcess(void)
//HOST_Req1_Type* prxMsgBuf1 = (HOST_Req1_Type*)rxMsgBuf1;
//debugMode = prxMsgBuf1->HOST_DebugMode;
}
static void TxMessage(CAN_MESSAGE* msg)
{
FlexCanBoot_TxMessage(msg->MsgId, msg->Data, msg->DLC);
}
void MsgTask(UdsType *obj)//1ms task
{
static uint16_t msg_counter=0;
@ -164,7 +172,13 @@ void MsgTask(UdsType *obj)//1ms task
if (msg_counter >= 50)
{
msg_counter = 0;
FlexCanBoot_TxMessage(APP_TX_ECU_STATUS_MSG_ID, txMsgBuf1, 8);
scm_canmatrix_tx.SCM_STATE.test1 = (uint8_t)adcResult[0];
scm_canmatrix_tx.SCM_STATE.test2 = (uint8_t)adcResult[1];
scm_canmatrix_tx.SCM_STATE.test3 = (uint8_t)adcResult[2];
scm_canmatrix_tx.SCM_STATE.test4 = (uint8_t)adcResult[3];
scm_canmatrix_tx.SCM_STATE.test5 = (uint8_t)adcResult[4];
Pack_SCM_STATE_CANmatrix(&scm_canmatrix_tx.SCM_STATE,&CAN_D_scm_state);
TxMessage(&CAN_D_scm_state);
if (debugMode!=0)
{
FlexCanBoot_TxMessage(APP_TX_ECU_DEBUG1_MSG_ID, txMsgBuf2, 8);
@ -184,7 +198,7 @@ void MsgTask(UdsType *obj)//1ms task
}
else
{
scm_matrix_Receive(&scm_matrix_rx,rxMsg.data,rxMsg.id,rxMsg.len);
scm_canmatrix_Receive(&scm_canmatrix_rx,rxMsg.data,rxMsg.id,rxMsg.len);
}
}
RxMsgProcess();

14
cva_asw_m0146/src/event.c Normal file
View File

@ -0,0 +1,14 @@
#include "mcu.h"
#include "hwctrl.h"
extern McuType mcu;
void ADC0_Handler()
{
for(uint8_t i=0;i<ADCH_NUM;i++){
adcResult[i] = AdcDrv_GetRn(&mcu.adc0Drv, i);
}
}

View File

@ -12,8 +12,8 @@
/*******************************************************************************
* the defines
******************************************************************************/
#define ADC_DEMO_LAST_CHANNLE ADCH_HEAT_C2
#define PDB_BB_SEL (0u) //000b : PDB0 and PDB1 operates independently.
/*******************************************************************************
* the typedefs
******************************************************************************/
@ -23,19 +23,25 @@
/*******************************************************************************
* the globals
******************************************************************************/
uint32_t adcResult[ADCH_NUM];
/*******************************************************************************
* the const
******************************************************************************/
/*! \brief The trgmux in out mappings table for trgmux configure
*/
const TrgMuxDrv_InOutMappingType c_trgmuxInOutMappings[] = {
{TRGMUXDRV_TRIGSOURCE_SIM_SW_TRIG, TRGMUXDRV_TARGETMODULE_PDB0_TRG_IN, false}, /* Use SIM_SW_TRIG trigger PDB0 */
};
const uint16_t c_numOfTrgmuxInOutMappings = sizeof(c_trgmuxInOutMappings) / sizeof(TrgMuxDrv_InOutMappingType);
/*******************************************************************************
* the function prototypes
******************************************************************************/
static void hw_IO_Init(McuType *obj);
static void ADC_Init(McuType *obj);
@ -77,7 +83,93 @@ static void hw_clock_init(McuType *obj)
tTcr = SpiReg_GetTcr((const SpiRegType *)&obj->spiDrv2.reg);
SpiDrv_SetPrescaler(&tTcr,0x03);
//adc功能
/* Enable the clock for PDB0 */
ClockDrv_ConfigureClock(&obj->clockDrv, CLOCKDRV_PDB0, &clockConfig);
/* TRGMUX */
TrgMuxDrv_ConfigType trgmuxConfig;
trgmuxConfig.numOfInOutMappings = c_numOfTrgmuxInOutMappings;
trgmuxConfig.inOutMapping = c_trgmuxInOutMappings;
TrgMuxDrv_Configure(&obj->trgMuxDrv, &trgmuxConfig);
/* Enable the clock for ADC */
clockConfig.gating = true;
clockConfig.source = CLOCKDRV_PLL;
clockConfig.div = 4;
ClockDrv_ConfigureClock(&obj->clockDrv, CLOCKDRV_ADC0, &clockConfig);
}
static void ADC_Init(McuType *obj)
{
for (uint8_t i = 0; i < ADCH_NUM; i++)
{
adcResult[i] = 0;
}
/* Configure ADC module */
AdcDrv_ConfigType adcCfg;
AdcDrv_GetDefaultConfig(&adcCfg);
adcCfg.conversionMode = ADCDRV_CONVERSION_12BIT; /* Selects the ADC resolution to 12-bit conversion */
adcCfg.avgEnable = true; /* Enable hardware average function */
adcCfg.avgSamplesSel = ADCDRV_AVERAGE_32; /* Select 32 samples average */
adcCfg.continuousMode = ADCDRV_ONESHOT; /* Select one-shot mode */
adcCfg.chnCfg[ADCH_Power].chnSel = ADCDRV_INCHN_EXT3;
adcCfg.chnCfg[ADCH_RLY1].chnSel = ADCDRV_INCHN_VBG;
adcCfg.chnCfg[ADCH_RLY3].chnSel = ADCDRV_INCHN_EXT0;
adcCfg.chnCfg[ADCH_RLY5].chnSel = ADCDRV_INCHN_EXT1;
adcCfg.chnCfg[ADCH_HEAT_SENSOR1].chnSel = ADCDRV_INCHN_LDO_VOLT;
adcCfg.chnCfg[ADCH_HEAT_SENSOR2].chnSel = ADCDRV_INCHN_EXT3;
adcCfg.chnCfg[ADCH_HEAT_C1].chnSel = ADCDRV_INCHN_EXT3;
adcCfg.chnCfg[ADCH_HEAT_C2].chnSel = ADCDRV_INCHN_EXT3;
adcCfg.chnCfg[ADC_DEMO_LAST_CHANNLE].intEnable = true; /* Last channel enable interrupt */
adcCfg.trgSrcCfg.trgSrc = ADCDRV_HW_TRIGGER;
adcCfg.trgSrcCfg.hwTrgSrc = ADCDRV_HW_TRGSRC_PDB;
adcCfg.trgSrcCfg.swPretrgSrc = ADCDRV_SWPRETRG_PRETRIGGER_0;
adcCfg.trgSrcCfg.pretrgSrc = ADCDRV_PRETRG_PDB_PRETRIGGER;
/* Enable ADC interrupts */
IrqDrv_EnableIrq(ADC0_IRQn);
AdcDrv_Configure(&obj->adc0Drv, &adcCfg);
AdcDrv_EnableAdc(&obj->adc0Drv);
/* Configure PDB module */
uint32_t pdbFreq;
ClockDrv_GetFreq(&obj->clockDrv, CLOCKDRV_PDB0, &pdbFreq);
PdbDrv_ConfigType pdbCfg;
PdbDrv_GetDefaultConfig(&pdbCfg);
pdbCfg.ldmode = PDBDRV_LDMOD_LOAD_VAL_IMMEDIATELY; /* The internal registers are loaded with the values from their buffers, immediately after 1 is written to LDOK */
pdbCfg.trgInSel = PDBDRV_TRGSEL_TRGGER_IN_0; /* Use hardware trigger source */
pdbCfg.cMode = PDBDRV_CONT_CONTINUOUS; /* PDB operation in Continuous mode */
pdbCfg.prescalerFactor = PDBDRV_PRESCALER_128MULT; /* Counting uses the peripheral clock divided by MULT (the multiplication factor) */
pdbCfg.mult = PDBDRV_MULT_FACTOR_40; /* Multiplication factor is 40 */
pdbCfg.preTrgCfg.mode[0][0] = PDBDRV_PRETRG_DELAY_MODE; /* The first channel start with other trigger source */
pdbCfg.preTrgCfg.mode[0][1] = PDBDRV_PRETRG_BB_MODE; /* PDB channel[0][1-7] & channel[1][0-7] with Back-to-Back operation*/
pdbCfg.preTrgCfg.mode[0][2] = PDBDRV_PRETRG_BB_MODE;
pdbCfg.preTrgCfg.mode[0][3] = PDBDRV_PRETRG_BB_MODE;
pdbCfg.preTrgCfg.mode[0][4] = PDBDRV_PRETRG_BB_MODE;
pdbCfg.preTrgCfg.mode[0][5] = PDBDRV_PRETRG_BB_MODE;
pdbCfg.preTrgCfg.mode[0][6] = PDBDRV_PRETRG_BB_MODE;
pdbCfg.preTrgCfg.mode[0][7] = PDBDRV_PRETRG_BB_MODE;
pdbCfg.dlyCfg.modCnt = 1*pdbFreq / 128 / 40; /* Periodic triggering PDB in 1s*/
pdbCfg.dlyCfg.dlyCnt[0][0] = 0; /* first channel don't need delay time*/
pdbCfg.bbSel = PDB_BB_SEL; /* Internal channel chaining of PDB0 CH0 and CH1.
* CH0 and CH1 of PDB0 back-to-back operation with COCO[7:0] and COCO[15:8] of ADC0.
*/
PdbDrv_Configure(&obj->pdb0Drv, &pdbCfg);
PdbDrv_EnablePdb(&obj->pdb0Drv); /* Enable PDB0 */
TrgMuxDrv_GenSWTrigger(&obj->trgMuxDrv, 100); /* Trigger PDB0 */
}
void hw_init(McuType *obj)
{
uint32_t gCpuClockFrequency = 0;
@ -97,6 +189,8 @@ void hw_init(McuType *obj)
IrqDrv_EnableIrq(SysTick_IRQn);
SBC_Init();
ADC_Init(obj);
}
@ -212,8 +306,10 @@ static void hw_IO_Init(McuType *obj)
PortReg_SetPcrSr(obj->ptc.port, 8, 1);
//37
PinsDrv_SetMuxModeSel(&obj->pta, 7, PINSDRV_PIN_DISABLED);
PortReg_SetPcrDrvStr(obj->pta.port, 7, 1);
PortReg_SetPcrAen(obj->pta.port, 7, 1);
PortReg_SetPcrSr(obj->pta.port, 7, 1);
PinsDrv_SetPinDirection(&obj->pta, 7,0);
PinsDrv_SetPortInputDisable(&obj->pta,0);
//38
PinsDrv_SetMuxModeSel(&obj->pta, 6, PINSDRV_MUX_AS_GPIO);
PortReg_SetPcrDrvStr(obj->pta.port, 6, 1);
@ -318,7 +414,7 @@ void hw_MotorCtrl(McuType *obj,Motor_ID_Type motorid,Motor_ACT_Type dir)
{
switch(motorid)
{
case Motor1:
case MotorHG:
switch(dir)
{
case Motor_ACT_NOACT:
@ -335,7 +431,7 @@ void hw_MotorCtrl(McuType *obj,Motor_ID_Type motorid,Motor_ACT_Type dir)
break;
}
break;
case Motor2:
case MotorKB:
switch(dir)
{
case Motor_ACT_NOACT:
@ -352,7 +448,7 @@ void hw_MotorCtrl(McuType *obj,Motor_ID_Type motorid,Motor_ACT_Type dir)
break;
}
break;
case Motor3:
case MotorTT:
switch(dir)
{
case Motor_ACT_NOACT:
@ -369,7 +465,7 @@ void hw_MotorCtrl(McuType *obj,Motor_ID_Type motorid,Motor_ACT_Type dir)
break;
}
break;
case Motor4:
case MotorZY:
switch(dir)
{
case Motor_ACT_NOACT:

View File

@ -8,11 +8,22 @@
* the defines
******************************************************************************/
extern uint32_t adcResult[];
/*******************************************************************************
* the typedefs
******************************************************************************/
typedef enum
{
ADCH_Power=0,
ADCH_RLY1,
ADCH_RLY3,
ADCH_RLY5,
ADCH_HEAT_SENSOR1,
ADCH_HEAT_SENSOR2,
ADCH_HEAT_C1,
ADCH_HEAT_C2,
ADCH_NUM,
}ADCH_ID_type;
/*******************************************************************************

View File

@ -1,8 +1,9 @@
#include "key.h"
#include "scm_matrix-binutil.h"
#include "scm_canmatrix-binutil.h"
#include "MotorCtrl.h"
uint8_t GetSigState(KEY_ID_t key_id);
static uint8_t GetSigState(KEY_ID_type key_id);
static uint8_t keystate[KEY_NUM];
static uint8_t keyPressFlag[KEY_NUM];
@ -18,21 +19,21 @@ void ClearAllKeyState(void)
keystate[i] = 0;
}
}
void setKeyPressFlag(KEY_ID_t id)
static void setKeyPressFlag(KEY_ID_type id)
{
if (id < KEY_NUM)
{
keyPressFlag[id] = KEY_PRESSED;
}
}
void setKeyReleaseFlag(KEY_ID_t id)
static void setKeyReleaseFlag(KEY_ID_type id)
{
if (id < KEY_NUM)
{
keyReleaseFlag[id] = KEY_PRESSED;
}
}
uint8_t getKeyPressFlag(uint8_t id)
uint8_t getKeyPressFlag(KEY_ID_type id)
{
uint8_t retVal = KEY_NOPRESSED;
if (id < KEY_NUM)
@ -42,7 +43,7 @@ uint8_t getKeyPressFlag(uint8_t id)
}
return retVal;
}
uint8_t getKeyReleaseFlag(uint8_t id)
uint8_t getKeyReleaseFlag(KEY_ID_type id)
{
uint8_t retVal = KEY_NOPRESSED;
if (id < KEY_NUM)
@ -53,10 +54,10 @@ uint8_t getKeyReleaseFlag(uint8_t id)
return retVal;
}
void KeyScan(void)//5ms
void KeyScanTask(void)//5ms
{
uint8_t i,key,key_nopress;
key_nopress = 0;
uint8_t i,key;
for (i = 0; i < KEY_NUM; i++)
{
key = GetSigState(i);
@ -82,7 +83,6 @@ void KeyScan(void)//5ms
setKeyReleaseFlag(i);
}
keystate[i] = KEY_NOPRESSED;
key_nopress++;
}
}
}
@ -91,23 +91,109 @@ void KeyScan(void)//5ms
uint8_t GetSigState(KEY_ID_t key_id)
static uint8_t GetSigState(KEY_ID_type key_id)
{
switch (key_id)
{
case KEY_HG_F:
return scm_matrix_rx.Panel_Key.
return scm_canmatrix_rx.Panel_Key.KEY_HG_F;
case KEY_HG_R:
return scm_canmatrix_rx.Panel_Key.KEY_HG_R;
case KEY_KB_F:
return scm_canmatrix_rx.Panel_Key.KEY_KB_F;
case KEY_KB_R:
return scm_canmatrix_rx.Panel_Key.KEY_KB_R;
case KEY_TT_F:
return scm_canmatrix_rx.Panel_Key.KEY_TT_F;
case KEY_TT_R:
return scm_canmatrix_rx.Panel_Key.KEY_TT_R;
case KEY_ZY_U:
return scm_canmatrix_rx.Panel_Key.KEY_ZY_U;
case KEY_ZY_D:
return scm_canmatrix_rx.Panel_Key.KEY_ZY_D;
default:
return 0;
}
}
void KeyProTask(void)
{
//HG
if (getKeyPressFlag(KEY_HG_F) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_CW);
}
if (getKeyReleaseFlag(KEY_HG_F) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_NOACT);
}
if (getKeyPressFlag(KEY_HG_R) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_CCW);
}
if (getKeyReleaseFlag(KEY_HG_R) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_NOACT);
}
//KB
if (getKeyPressFlag(KEY_KB_F) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_CW);
}
if (getKeyReleaseFlag(KEY_KB_F) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_NOACT);
}
if (getKeyPressFlag(KEY_KB_R) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_CCW);
}
if (getKeyReleaseFlag(KEY_KB_R) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_NOACT);
}
//TT
if (getKeyPressFlag(KEY_TT_F) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_CW);
}
if (getKeyReleaseFlag(KEY_TT_F) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_NOACT);
}
if (getKeyPressFlag(KEY_TT_R) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_CCW);
}
if (getKeyReleaseFlag(KEY_TT_R) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_NOACT);
}
//ZY
if (getKeyPressFlag(KEY_ZY_U) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_CW);
}
if (getKeyReleaseFlag(KEY_ZY_U) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_NOACT);
}
if (getKeyPressFlag(KEY_ZY_D) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_CCW);
}
if (getKeyReleaseFlag(KEY_ZY_D) == KEY_PRESSED)
{
setMotorState(MotorHG,Motor_ACT_NOACT);
}
}

View File

@ -22,4 +22,12 @@ typedef enum
KEY_NUM,
}KEY_ID_type;
void ClearAllKeyState(void);
uint8_t getKeyPressFlag(KEY_ID_type id);
uint8_t getKeyReleaseFlag(KEY_ID_type id);
void KeyScanTask(void);
void KeyProTask(void);
#endif // __KEY_H__