修复评审问题

This commit is contained in:
sunbeam 2024-12-02 16:26:09 +08:00
parent 98ac302bc0
commit 5345f7e294
10 changed files with 162 additions and 106 deletions

View File

@ -1,5 +1,5 @@
# #
#Fri Nov 15 15:26:57 CST 2024 #Mon Dec 02 16:25:50 CST 2024
mcal.com-microchip-mplab-nbide-toolchain-xc32-XC32LanguageToolchain.md5=1eaf555a844840d91945cb14109201c3 mcal.com-microchip-mplab-nbide-toolchain-xc32-XC32LanguageToolchain.md5=1eaf555a844840d91945cb14109201c3
conf.ids=mcal conf.ids=mcal
mcal.languagetoolchain.version=4.10 mcal.languagetoolchain.version=4.10

View File

@ -3,9 +3,8 @@
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group> <group>
<file>file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTR/firmware/src/main.c</file>
<file>file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTR/firmware/src/TouchPanel/TouchPanel.c</file> <file>file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTR/firmware/src/TouchPanel/TouchPanel.c</file>
<file>file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTR/firmware/src/DiagnosticR/Sys_Diag_Detect/SysDiagDetect.c</file> <file>file:/F:/FCB_project/P417/CODE/20240727HW06/P417_SWTR/firmware/src/main.c</file>
</group> </group>
</open-files> </open-files>
</project-private> </project-private>

View File

@ -78,8 +78,8 @@ typedef struct{
* Private variables * Private variables
*/ */
const UI_8 NVM_DID_CD_VIN[DLC_DID_CD_VIN] = GAC_VIN_DEFAULT_VALUE; const UI_8 NVM_DID_CD_VIN[DLC_DID_CD_VIN] = GAC_VIN_DEFAULT_VALUE;
const UI_8 NVM_Reprogramming_Date_App[DLC_DID_REPROGRAMMING_DATE] = {0x20,0x24,0x10,0x19}; const UI_8 NVM_Reprogramming_Date_App[DLC_DID_REPROGRAMMING_DATE] = {0x20,0x24,0x12,0x02};
const UI_8 NVM_DID_CD_SUPPLIER_ID[DLC_SYSTEM_SUPPLIER_ID] = {'2','4','1','0','1','9'}; const UI_8 NVM_DID_CD_SUPPLIER_ID[DLC_SYSTEM_SUPPLIER_ID] = {'2','4','1','2','0','2'};
const UI_8 NVM_Repair_Shop_Code[DLC_REPAIR_SHOP_CODE] = GAC_ECU_REPAIR_SHOP_CODE; const UI_8 NVM_Repair_Shop_Code[DLC_REPAIR_SHOP_CODE] = GAC_ECU_REPAIR_SHOP_CODE;
const UI_8 NVM_DID_CD_HW_VERSION[DLC_GAC_HW_VERSION] = {'H','W','0','6',0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20}; const UI_8 NVM_DID_CD_HW_VERSION[DLC_GAC_HW_VERSION] = {'H','W','0','6',0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
static uint8 RAM_DID_CD_VIN[DLC_DID_CD_VIN]; static uint8 RAM_DID_CD_VIN[DLC_DID_CD_VIN];

View File

@ -577,6 +577,54 @@ uint8_t RTE_Get_TouchBoard_XY_Sts(void) // Not active,Touch,Touch and Press,inva
return XY_Sts; return XY_Sts;
} }
//统计所有触发的通道数量
uint8_t GetActiveChNum (uint16_t chdata[],uint16_t thdata[],uint8_t num)
{
uint8_t i,count;
count = 0;
for (i = 0; i < num; i++)
{
if (chdata[i] > thdata[i])
{
count++;
}
}
return count;
}
//统计连续触发的通道数量
uint8_t GetContinuousChNum(uint16_t chdata[],uint16_t thdata[],uint8_t num)
{
uint8_t i,count,index;
count = 0;
index = 0;
for (i = 0; i < num; i++)
{
if (chdata[i] > thdata[i])
{
//找到第一个触发的通道
index = i;
break;
}
}
if (i == num)
{
//没有触发的通道
return count;
}
for (i = index; i < num; i++)
{
if (chdata[i] <= thdata[i])
{
//找到第一个触发的通道之后第一个不触发的通道
break;
}
}
count = i - index;
return count;
}
#if 1 #if 1
uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true
{ {
@ -611,8 +659,9 @@ uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true
th_y[3] = qtlib_key_configs_set1[11].channel_threshold; th_y[3] = qtlib_key_configs_set1[11].channel_threshold;
th_y[4] = qtlib_key_configs_set1[10].channel_threshold; th_y[4] = qtlib_key_configs_set1[10].channel_threshold;
Two_Finger_Y_count = GetActiveChNum(Two_Finger_Y_data,th_y,5U);
Y_count = GetContinuousChNum(Two_Finger_Y_data,th_y,5U);
/*
Two_Finger_Y_count = 0; Two_Finger_Y_count = 0;
for (i = 0; i < 5; i++) for (i = 0; i < 5; i++)
{ {
@ -634,7 +683,11 @@ uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true
else else
Y_count++; Y_count++;
} }
*/
Two_Finger_X_count = GetActiveChNum(Two_Finger_X_data,th_x,5U);
X_count = GetContinuousChNum(Two_Finger_X_data,th_x,5U);
/*
Two_Finger_X_count = 0; Two_Finger_X_count = 0;
for (m = 0; m < 5; m++) for (m = 0; m < 5; m++)
{ {
@ -655,6 +708,8 @@ uint8_t RTE_Get_TouchBoard_XY_Touch_And_Below_1N(void) // 0 false 1 true
else else
X_count++; X_count++;
} }
*/
// 触发的通道数量 //连续触发的通道数量 // 触发的通道数量 //连续触发的通道数量
if ((Two_Finger_Y_count > 4 && Two_Finger_X_data[0]>th_x[0]) || Y_count != Two_Finger_Y_count || Two_Finger_X_count > 4 || X_count != Two_Finger_X_count) if ((Two_Finger_Y_count > 4 && Two_Finger_X_data[0]>th_x[0]) || Y_count != Two_Finger_Y_count || Two_Finger_X_count > 4 || X_count != Two_Finger_X_count)

View File

@ -36,15 +36,15 @@
#define CW_BUS_CTRL_2 (0x0) /*decimal 0*/ #define CW_BUS_CTRL_2 (0x0) /*decimal 0*/
#define CW_GPIO_CTRL (0x0) /*decimal 0*/ #define CW_GPIO_CTRL (0x24) /*decimal 36*/
#define CW_HS_CTRL1 (0x0) /*decimal 0*/ #define CW_HS_CTRL1 (0x0) /*decimal 0*/
#define CW_HS_CTRL2 (0x0) /*decimal 0*/ #define CW_HS_CTRL2 (0x0) /*decimal 0*/
#define CW_HW_CTRL (0x80) /*decimal 128*/ #define CW_HW_CTRL (0x9) /*decimal 9*/
#define CW_M_S_CTRL (0x18) /*decimal 8*/ #define CW_M_S_CTRL (0x1C) /*decimal 28*/
#define CW_PWM1_CTRL (0x0) /*decimal 0*/ #define CW_PWM1_CTRL (0x0) /*decimal 0*/
@ -92,15 +92,15 @@
#define CW_TIMER2_CTRL (0x0) /*decimal 0*/ #define CW_TIMER2_CTRL (0x0) /*decimal 0*/
#define CW_WD_CTRL (0x4) /*decimal 4*/ #define CW_WD_CTRL (0x84) /*decimal 132*/
#define CW_WK_CTRL_1 (0x0) /*decimal 0*/ #define CW_WK_CTRL_1 (0x0) /*decimal 0*/
#define CW_WK_CTRL_2 (0x7) /*decimal 7*/ #define CW_WK_CTRL_2 (0x0) /*decimal 0*/
#define CW_WK_FLT_CTRL (0x0) /*decimal 0*/ #define CW_WK_FLT_CTRL (0x0) /*decimal 0*/
#define CW_WK_PUPD_CTRL (0x3F) /*decimal 63*/ #define CW_WK_PUPD_CTRL (0x0) /*decimal 0*/
#define LED_EXTENDED_ID (0x1) /*decimal 1*/ #define LED_EXTENDED_ID (0x1) /*decimal 1*/
@ -120,6 +120,6 @@
#define UI_SWK_MASK_IDx_CTRL 0x00000000 #define UI_SWK_MASK_IDx_CTRL 0x00000000
#define UI_VARIANT (0x3) /*decimal 3*/ #define UI_VARIANT (0x5) /*decimal 5*/
#endif /* SBC_TLE926X_H */ #endif /* SBC_TLE926X_H */

View File

@ -206,11 +206,14 @@ SBC_ErrorCode sbc_init(void) {
/* Describes initialization sequence. /* Describes initialization sequence.
init Sequence containing {reg_address, reg_value}*/ init Sequence containing {reg_address, reg_value}*/
uint8_t initSequence[4][2] = { uint8_t initSequence[8][2] = {
{SBC_WD_CTRL, WD_CTRL},//0x04 TimeOut; 200ms period {SBC_WD_CTRL, WD_CTRL},//0x04 TimeOut; 200ms period
{SBC_M_S_CTRL, CW_M_S_CTRL},//0x18 SBC normal;vcc3off;vcc2 on in normal; {SBC_M_S_CTRL, CW_M_S_CTRL},//0x18 SBC normal;vcc3off;vcc2 on in normal;
{SBC_BUS_CTRL_1, CW_BUS_CTRL_1},//0x03 lin off; can normal {SBC_BUS_CTRL_1, CW_BUS_CTRL_1},//0x03 lin off; can normal
{SBC_WK_CTRL_2, CW_WK_CTRL_2},
{SBC_HW_CTRL, CW_HW_CTRL},
{SBC_GPIO_CTRL, CW_GPIO_CTRL},
{SBC_WK_PUPD_CTRL, CW_WK_PUPD_CTRL},
/* End Configuration */ /* End Configuration */
{0x00U, 0x00U} {0x00U, 0x00U}
}; };

View File

@ -39,7 +39,6 @@ void Tle9263_MainTask(void) {
{ {
return; return;
} }
if (timeref ++ > 5) { if (timeref ++ > 5) {
sbc_wd_trigger(); sbc_wd_trigger();
timeref = 0; timeref = 0;

View File

@ -1,24 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<icwpxml version="2.6.4"> <icwpxml version="2.6.4">
<checksum>938a5187cdcc759f78b6bae262f689a50c384e539a95618defe57f554fa7fafd</checksum> <checksum>b31f5011f3959a9e7cc2c9ca70f9a9d697b17587a54185c423e628478807656e</checksum>
<XmlFile>TLE926x_Lib.xml</XmlFile> <XmlFile>TLE926x_Lib.xml</XmlFile>
<XmlVersion>V0.0.1</XmlVersion> <XmlVersion>V0.0.1</XmlVersion>
<ActiveElements> <ActiveElements>
<CheckBox>
<define>CW.M_S_CTRL[2]</define>
<value>0</value>
<dispValue>0</dispValue>
</CheckBox>
<ComboBox> <ComboBox>
<define>CW.M_S_CTRL[1:0]</define> <define>CW.M_S_CTRL[1:0]</define>
<value>0</value> <value>0</value>
<dispValue>0</dispValue> <dispValue>0</dispValue>
</ComboBox> </ComboBox>
<CheckBox>
<define>CW.HW_CTRL[3]</define>
<value>0</value>
<dispValue>0</dispValue>
</CheckBox>
<CheckBox> <CheckBox>
<define>CW.HW_CTRL[1]</define> <define>CW.HW_CTRL[1]</define>
<value>0</value> <value>0</value>
@ -34,21 +24,11 @@
<value>0</value> <value>0</value>
<dispValue>0</dispValue> <dispValue>0</dispValue>
</ComboBox> </ComboBox>
<CheckBox>
<define>CW.BUS_CTRL_1[5]</define>
<value>1</value>
<dispValue>1</dispValue>
</CheckBox>
<CheckBox> <CheckBox>
<define>CW.BUS_CTRL_1[6]</define> <define>CW.BUS_CTRL_1[6]</define>
<value>0</value> <value>0</value>
<dispValue>0</dispValue> <dispValue>0</dispValue>
</CheckBox> </CheckBox>
<CheckBox>
<define>CW.BUS_CTRL_1[7]</define>
<value>0</value>
<dispValue>0</dispValue>
</CheckBox>
<CheckBox> <CheckBox>
<define>MATH.EN_PN</define> <define>MATH.EN_PN</define>
<value>0</value> <value>0</value>
@ -79,11 +59,6 @@
<value>0</value> <value>0</value>
<dispValue>0</dispValue> <dispValue>0</dispValue>
</CheckBox> </CheckBox>
<Slider>
<define>CW.SWK_BTL2_CTRL[5:0]</define>
<value>0</value>
<dispValue>0</dispValue>
</Slider>
<CheckBox> <CheckBox>
<define>CW.SWK_ID0_CTRL[0]</define> <define>CW.SWK_ID0_CTRL[0]</define>
<value>0</value> <value>0</value>
@ -114,16 +89,6 @@
<value>0x00000000</value> <value>0x00000000</value>
<dispValue>0x00000000</dispValue> <dispValue>0x00000000</dispValue>
</LineEdit> </LineEdit>
<ComboBox>
<define>CW.GPIO_CTRL[2:0]</define>
<value>0</value>
<dispValue>0</dispValue>
</ComboBox>
<ComboBox>
<define>CW.GPIO_CTRL[5:3]</define>
<value>0</value>
<dispValue>0</dispValue>
</ComboBox>
<ComboBox> <ComboBox>
<define>CW.GPIO_CTRL[7:6]</define> <define>CW.GPIO_CTRL[7:6]</define>
<value>0</value> <value>0</value>
@ -134,11 +99,6 @@
<value>0</value> <value>0</value>
<dispValue>0</dispValue> <dispValue>0</dispValue>
</CheckBox> </CheckBox>
<CheckBox>
<define>CW.HW_CTRL[0]</define>
<value>0</value>
<dispValue>0</dispValue>
</CheckBox>
<CheckBox> <CheckBox>
<define>CW.HW_CTRL[5]</define> <define>CW.HW_CTRL[5]</define>
<value>0</value> <value>0</value>
@ -164,21 +124,6 @@
<value>0</value> <value>0</value>
<dispValue>0</dispValue> <dispValue>0</dispValue>
</CheckBox> </CheckBox>
<CheckBox>
<define>CW.WK_CTRL_2[0]</define>
<value>1</value>
<dispValue>1</dispValue>
</CheckBox>
<CheckBox>
<define>CW.WK_CTRL_2[1]</define>
<value>1</value>
<dispValue>1</dispValue>
</CheckBox>
<CheckBox>
<define>CW.WK_CTRL_2[2]</define>
<value>1</value>
<dispValue>1</dispValue>
</CheckBox>
<ComboBox> <ComboBox>
<define>CW.WK_FLT_CTRL[1:0]</define> <define>CW.WK_FLT_CTRL[1:0]</define>
<value>0</value> <value>0</value>
@ -279,50 +224,105 @@
<value>0</value> <value>0</value>
<dispValue>0</dispValue> <dispValue>0</dispValue>
</ComboBox> </ComboBox>
<ButtonGroup>
<define>UI.VARIANT</define>
<value>3</value>
<dispValue>3</dispValue>
</ButtonGroup>
<ButtonGroup>
<define>CW.M_S_CTRL[4:3]</define>
<value>1</value>
<dispValue>1</dispValue>
</ButtonGroup>
<ComboBox> <ComboBox>
<define>CW.BUS_CTRL_1[2:0]</define> <define>CW.BUS_CTRL_1[2:0]</define>
<value>3</value> <value>3</value>
<dispValue>3</dispValue> <dispValue>3</dispValue>
</ComboBox> </ComboBox>
<ComboBox>
<define>CW.BUS_CTRL_1[4:3]</define>
<value>3</value>
<dispValue>3</dispValue>
</ComboBox>
<ComboBox>
<define>CW.WD_CTRL[2:0]</define>
<value>6</value>
<dispValue>6</dispValue>
</ComboBox>
<CheckBox> <CheckBox>
<define>CW.HW_CTRL[7]</define> <define>CW.HW_CTRL[7]</define>
<value>1</value> <value>1</value>
<dispValue>0</dispValue>
</CheckBox>
<ComboBox>
<define>CW.BUS_CTRL_1[4:3]</define>
<value>0</value>
<dispValue>0</dispValue>
</ComboBox>
<ButtonGroup>
<define>UI.VARIANT</define>
<value>5</value>
<dispValue>5</dispValue>
</ButtonGroup>
<ComboBox>
<define>CW.GPIO_CTRL[2:0]</define>
<value>4</value>
<dispValue>4</dispValue>
</ComboBox>
<ComboBox>
<define>CW.GPIO_CTRL[5:3]</define>
<value>4</value>
<dispValue>4</dispValue>
</ComboBox>
<CheckBox>
<define>CW.M_S_CTRL[2]</define>
<value>1</value>
<dispValue>1</dispValue>
</CheckBox>
<ButtonGroup>
<define>CW.M_S_CTRL[4:3]</define>
<value>3</value>
<dispValue>3</dispValue>
</ButtonGroup>
<CheckBox>
<define>CW.HW_CTRL[3]</define>
<value>1</value>
<dispValue>1</dispValue>
</CheckBox>
<CheckBox>
<define>CW.BUS_CTRL_1[5]</define>
<value>0</value>
<dispValue>0</dispValue>
</CheckBox>
<CheckBox>
<define>CW.BUS_CTRL_1[7]</define>
<value>1</value>
<dispValue>1</dispValue>
</CheckBox>
<Slider>
<define>CW.SWK_BTL2_CTRL[5:0]</define>
<value>52</value>
<dispValue>52</dispValue>
</Slider>
<CheckBox>
<define>CW.HW_CTRL[0]</define>
<value>1</value>
<dispValue>1</dispValue> <dispValue>1</dispValue>
</CheckBox> </CheckBox>
<ComboBox>
<define>CW.WD_CTRL[2:0]</define>
<value>4</value>
<dispValue>4</dispValue>
</ComboBox>
<CheckBox>
<define>CW.WK_CTRL_2[0]</define>
<value>0</value>
<dispValue>0</dispValue>
</CheckBox>
<CheckBox>
<define>CW.WK_CTRL_2[1]</define>
<value>0</value>
<dispValue>0</dispValue>
</CheckBox>
<CheckBox>
<define>CW.WK_CTRL_2[2]</define>
<value>0</value>
<dispValue>0</dispValue>
</CheckBox>
<ComboBox> <ComboBox>
<define>CW.WK_PUPD_CTRL[1:0]</define> <define>CW.WK_PUPD_CTRL[1:0]</define>
<value>3</value> <value>0</value>
<dispValue>3</dispValue> <dispValue>0</dispValue>
</ComboBox> </ComboBox>
<ComboBox> <ComboBox>
<define>CW.WK_PUPD_CTRL[3:2]</define> <define>CW.WK_PUPD_CTRL[3:2]</define>
<value>3</value> <value>0</value>
<dispValue>3</dispValue> <dispValue>0</dispValue>
</ComboBox> </ComboBox>
<ComboBox> <ComboBox>
<define>CW.WK_PUPD_CTRL[5:4]</define> <define>CW.WK_PUPD_CTRL[5:4]</define>
<value>3</value> <value>0</value>
<dispValue>3</dispValue> <dispValue>0</dispValue>
</ComboBox> </ComboBox>
</ActiveElements> </ActiveElements>
</icwpxml> </icwpxml>

View File

@ -534,7 +534,7 @@ PanelPress_LevelType TouchPanel_PressLevelRead(void)
boolean TouchSurface_is_TouchActive(void) boolean TouchSurface_is_TouchActive(void)
{ {
boolean ret = FALSE; boolean ret = FALSE;
if (TouchPanel_SurfaceStatus & TOUCH_ACTIVE && CurrentPosition>0 && CurrentPosition<9) if ((TouchPanel_SurfaceStatus & TOUCH_ACTIVE) && (CurrentPosition>0 && CurrentPosition<9))
{ {
ret = TRUE; ret = TRUE;
} }
@ -557,7 +557,7 @@ boolean TouchButton_is_TouchActive(Buttons_ChType BtId)
Buttons_SignalType TouchSurface_XY_StsRead(void) Buttons_SignalType TouchSurface_XY_StsRead(void)
{ {
Buttons_SignalType XY_Sts = BUTTON_RELEASE; Buttons_SignalType XY_Sts = BUTTON_RELEASE;
if (TouchPanel_SurfaceStatus & TOUCH_ACTIVE && CurrentPosition>0 && CurrentPosition<9) if ((TouchPanel_SurfaceStatus & TOUCH_ACTIVE) && (CurrentPosition>0 && CurrentPosition<9))
{ {
switch (TouchPanel_PressLevel) switch (TouchPanel_PressLevel)
@ -589,8 +589,8 @@ static PanelPress_LevelType TouchPanel_PressCheck(void)
// static uint16 ForceMcount = 0; // static uint16 ForceMcount = 0;
// static uint16 ForceLcount = 0; // static uint16 ForceLcount = 0;
static uint16 tempForcePress = 0xffff; uint16 tempForcePress = 0xffff;
static uint16 tempForceRelease = 0xffff; uint16 tempForceRelease = 0xffff;
uint16 RawData = 0; uint16 RawData = 0;
uint16 temp_RawData = 0; uint16 temp_RawData = 0;

View File

@ -154,8 +154,8 @@ uint8_t CanBufQueryDataByte(uint8_t hdl, uint8_t index)
void CAN_Rx_FIFO0_CALLBACK(uint8_t numberOfMessage, uintptr_t context) void CAN_Rx_FIFO0_CALLBACK(uint8_t numberOfMessage, uintptr_t context)
{ {
uint8_t MessageNumer = 0; uint8_t MessageNumer = 0;
CAN1_MessageReceiveFifo(CAN_RX_FIFO_0, numberOfMessage, (CAN_RX_BUFFER *)canRxBuffer); CAN1_MessageReceiveFifo(CAN_RX_FIFO_0, numberOfMessage, (CAN_RX_BUFFER *)(uintptr_t)canRxBuffer);
CanRxBuf_t = (CAN_RX_BUFFER *)canRxBuffer; CanRxBuf_t = (CAN_RX_BUFFER *)(uintptr_t)canRxBuffer;
for (; MessageNumer < numberOfMessage; MessageNumer++) for (; MessageNumer < numberOfMessage; MessageNumer++)
{ {
Received_buf[MessageNumer].id = READ_ID(CanRxBuf_t[MessageNumer].id); Received_buf[MessageNumer].id = READ_ID(CanRxBuf_t[MessageNumer].id);
@ -175,7 +175,7 @@ void CanTx(t_can_handler can_handler, bool notif, uint32_t idtp, uint16_t len, t
uint8_t loop_count = 0; uint8_t loop_count = 0;
memset(canTxBuffer, 0x00, CAN1_TX_FIFO_BUFFER_ELEMENT_SIZE); memset(canTxBuffer, 0x00, CAN1_TX_FIFO_BUFFER_ELEMENT_SIZE);
CanTxBuffer = (CAN_TX_BUFFER *)canTxBuffer; CanTxBuffer = (CAN_TX_BUFFER *)(uintptr_t)canTxBuffer;
CanTxBuffer->id = WRITE_ID(idtp); CanTxBuffer->id = WRITE_ID(idtp);
CanTxBuffer->dlc = len; CanTxBuffer->dlc = len;
for (loop_count = 0; loop_count < len; loop_count++) for (loop_count = 0; loop_count < len; loop_count++)