Обновление
This commit is contained in:
parent
d03d12d051
commit
30eda237ed
|
|
@ -3,7 +3,7 @@
|
|||
//
|
||||
|
||||
#ifndef CAN_MODULE_CAN_FRAME_XCP_H
|
||||
#define CAN_MODULE_CAN_FRAME_XCP_H
|
||||
#define CAN_MODULE_CAN_FRAME_XCP_H20
|
||||
|
||||
#include "SerialPortFrameIO.h"
|
||||
#include "CanSerialPortFrame.h"
|
||||
|
|
@ -11,6 +11,9 @@
|
|||
#include "CmsisRtosThreadUtils.h"
|
||||
#include "SystemMutexCmsis.h"
|
||||
|
||||
#define PROTOCOL_CAN_ADR_XCP 0x250
|
||||
#define PROTOCOL_CAN_TYPE_XCP 0x0
|
||||
|
||||
typedef enum {
|
||||
XCP_ERR_CMD_SYNCH = 0x00,
|
||||
XCP_ERR_CMD_BUSY = 0x10,
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
#include "CanPorts.h"
|
||||
|
||||
#define LOG_SIGN "CAN_XCP"
|
||||
#define LOGGER &env->logger
|
||||
#define LOGGER env->logger
|
||||
|
||||
static unsigned long SeedToKeyHVAC_NAMI(unsigned char rnd, unsigned long dwSeedInfo) {
|
||||
#define Mask 0x55F388A6UL
|
||||
|
|
@ -122,7 +122,7 @@ static uint8_t XCP_COMMAND_GET_STATUS_253(tCanSerialPortFrameXCP *env) {
|
|||
xcpCommand_GET_STATUS->reserve7 = 0;
|
||||
xcpCommand_GET_STATUS->reserve8 = 0;
|
||||
|
||||
xcpCommand_GET_STATUS->STATE_NUMBER = 0;
|
||||
xcpCommand_GET_STATUS->STATE_NUMBER = 2;
|
||||
|
||||
xcpCommand_GET_STATUS->SESSION_CONFIGURATION_ID = 0;
|
||||
|
||||
|
|
@ -215,13 +215,15 @@ static uint8_t XCP_COMMAND_UPLOAD_245(tCanSerialPortFrameXCP *env) {
|
|||
for (uint8_t i = 0; i < fullBlock; ++i) {
|
||||
memcpy(&env->response[1], (uint8_t *) (env->ADR_MTA), request->COUNT);
|
||||
env->ADR_MTA += 7;
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, 7, 1000);
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, 7 + 1, PROTOCOL_CAN_ADR_XCP, PROTOCOL_CAN_TYPE_XCP,
|
||||
1000);
|
||||
}
|
||||
|
||||
if (tailBlock > 0) {
|
||||
memcpy(&env->response[1], (uint8_t *) (env->ADR_MTA), tailBlock);
|
||||
env->ADR_MTA += tailBlock;
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, tailBlock, 1000);
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, tailBlock + 1, PROTOCOL_CAN_ADR_XCP,
|
||||
PROTOCOL_CAN_TYPE_XCP, 1000);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
@ -1083,16 +1085,19 @@ uint8_t vCanSerialPortFrameXcpReceive(tCanSerialPortFrameXCP *env, uint32 timeou
|
|||
|
||||
if (com > 0xBF) { // CMD
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "COMMAND (DLC=%d) = %d", env->canFrame.dlc, com)
|
||||
|
||||
if (fXcp_func_ptr[com] != NULL) {
|
||||
|
||||
response_size = fXcp_func_ptr[com](env);
|
||||
|
||||
if (response_size) {
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, response_size, timeout);
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, response_size, PROTOCOL_CAN_ADR_XCP,
|
||||
PROTOCOL_CAN_TYPE_XCP, timeout);
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
asm("nop");
|
||||
}
|
||||
|
||||
} else { // ODT
|
||||
|
|
@ -1245,14 +1250,15 @@ _Noreturn void CanXcpProcessing_Service_Dto_Daq_Task(tCanSerialPortFrameXCP *env
|
|||
|
||||
for (uint8_t k = 0; k < count_size; ++k) {
|
||||
memcpy(&env->response[2], &env->DATA[size], BODY_MAX_LEN);
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, MAX_DTO, 1000);
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, MAX_DTO,
|
||||
PROTOCOL_CAN_ADR_XCP, PROTOCOL_CAN_TYPE_XCP, 1000);
|
||||
size += BODY_MAX_LEN;
|
||||
}
|
||||
|
||||
if (count_size_tail) {
|
||||
memcpy(&env->response[2], &env->DATA[size], count_size_tail);
|
||||
env->ioCanFrame->transmit(env->ioCanFrame->env, env->response, count_size_tail,
|
||||
1000);
|
||||
PROTOCOL_CAN_ADR_XCP, PROTOCOL_CAN_TYPE_XCP, 1000);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue