Обновление
This commit is contained in:
commit
dee734d1da
|
|
@ -0,0 +1,470 @@
|
||||||
|
//
|
||||||
|
// Created by cfif on 20.01.2026.
|
||||||
|
//
|
||||||
|
#include "CanUds.h"
|
||||||
|
#include "CanPorts.h"
|
||||||
|
#include "StatusData.h"
|
||||||
|
#include "memory.h"
|
||||||
|
#include "TesterPresent_3e.h"
|
||||||
|
#include "DiagnosticSessionControl_10.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define LOG_SIGN "CAN_UDS"
|
||||||
|
#define LOGGER env->logger
|
||||||
|
|
||||||
|
bool ReceivedCan_func(void *arg, can_rx_message_type *canFrame) {
|
||||||
|
tCanUds *env = arg;
|
||||||
|
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ReceivedTP_func(void *arg, tCanTP_data *data) {
|
||||||
|
tCanUds *env = arg;
|
||||||
|
|
||||||
|
if (data->data[0] == UDS_TesterPresent) {
|
||||||
|
|
||||||
|
tTesterPresent testerPresent;
|
||||||
|
testerPresent.ServiceId = data->data[0] | 0b1000000;
|
||||||
|
testerPresent.zeroSubFunction = data->data[1] & 0b1111111;
|
||||||
|
|
||||||
|
CanSerialPortFrameTpTransmit(&env->canSerialPortFrameTp, (uint8_t *) &testerPresent,
|
||||||
|
sizeof(tTesterPresent), PROTOCOL_CAN_ADR_UDS, WAIT_FRAME_WRITE);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
osStatus_t status = osMessageQueuePut(env->queue, data, 0, 0U);
|
||||||
|
|
||||||
|
if (status != osOK) {
|
||||||
|
LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка добавления в очередь addCommandQueue")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// начало ----------------------------- Сессия -------------------------------------------------------------
|
||||||
|
// начало ----------------------------- Сессия -------------------------------------------------------------
|
||||||
|
// начало ----------------------------- Сессия -------------------------------------------------------------
|
||||||
|
static uint8_t DiagnosticSessionControl_10(tCanUds *env) {
|
||||||
|
|
||||||
|
tDiagnosticSessionsType *diagnosticSessionsType = (tDiagnosticSessionsType *) env->dataResponse;
|
||||||
|
diagnosticSessionsType->ServiceId = env->data.data[0] | 0b1000000;
|
||||||
|
diagnosticSessionsType->diagnosticSessionType = env->data.data[1] & 0b1111111;
|
||||||
|
|
||||||
|
diagnosticSessionsType->sessionParameterRecord[0] = 0;
|
||||||
|
diagnosticSessionsType->sessionParameterRecord[1] = 0x32;
|
||||||
|
diagnosticSessionsType->sessionParameterRecord[2] = 0x01;
|
||||||
|
diagnosticSessionsType->sessionParameterRecord[3] = 0xF4;
|
||||||
|
|
||||||
|
return sizeof(tDiagnosticSessionsType);
|
||||||
|
}
|
||||||
|
// конец ----------------------------- Сессия --------------------------------------------------------------
|
||||||
|
// конец ----------------------------- Сессия --------------------------------------------------------------
|
||||||
|
// конец ----------------------------- Сессия --------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
// начало --------------------------- Чтение ---------------------------------------------------------
|
||||||
|
// начало --------------------------- Чтение ---------------------------------------------------------
|
||||||
|
// начало --------------------------- Чтение ---------------------------------------------------------
|
||||||
|
static uint8_t ReadDataByIdentifier_22(tCanUds *env) {
|
||||||
|
|
||||||
|
uint8_t dataIdentifier_hi = env->data.data[1];
|
||||||
|
uint8_t dataIdentifier_lo = env->data.data[2];
|
||||||
|
uint16_t dataIdentifier = (dataIdentifier_hi << 8) | dataIdentifier_lo;
|
||||||
|
|
||||||
|
if (dataIdentifier_hi == 0xCF) {
|
||||||
|
|
||||||
|
if (uds_ReadDataByIdentifier_22_com[dataIdentifier_lo].data != NULL) {
|
||||||
|
uint8_t response_size = uds_ReadDataByIdentifier_22_com[dataIdentifier_lo].size;
|
||||||
|
|
||||||
|
env->dataResponse[0] = env->data.data[0] | 0b1000000;
|
||||||
|
env->dataResponse[1] = dataIdentifier_hi;
|
||||||
|
env->dataResponse[2] = dataIdentifier_lo;
|
||||||
|
memcpy(&env->dataResponse[3], uds_ReadDataByIdentifier_22_com[dataIdentifier_lo].data, response_size);
|
||||||
|
|
||||||
|
return response_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dataIdentifier_lo == 0xFF) {
|
||||||
|
env->dataResponse[0] = env->data.data[0] | 0b1000000;
|
||||||
|
env->dataResponse[1] = dataIdentifier_hi;
|
||||||
|
env->dataResponse[2] = dataIdentifier_lo;
|
||||||
|
memcpy(&env->dataResponse[3], uds_ReadDataByIdentifier_22_com[dataIdentifier_lo].data, response_size);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// конец --------------------------- Чтение ---------------------------------------------------------
|
||||||
|
// конец --------------------------- Чтение ---------------------------------------------------------
|
||||||
|
// конец --------------------------- Чтение ---------------------------------------------------------
|
||||||
|
|
||||||
|
// начало --------------------------- Запись ---------------------------------------------------------
|
||||||
|
// начало --------------------------- Запись ---------------------------------------------------------
|
||||||
|
// начало --------------------------- Запись ---------------------------------------------------------
|
||||||
|
|
||||||
|
static uint8_t WriteDataByIdentifier_2E(tCanUds *env) {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
// конец --------------------------- Запись ---------------------------------------------------------
|
||||||
|
// конец --------------------------- Запись ---------------------------------------------------------
|
||||||
|
// конец --------------------------- Запись ---------------------------------------------------------
|
||||||
|
|
||||||
|
const eUds_com uds_com[256] = {
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{DiagnosticSessionControl_10, "DiagnosticSessionControl_10"},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{ReadDataByIdentifier_22, "ReadDataByIdentifier_22"},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{WriteDataByIdentifier_2E, "WriteDataByIdentifier_2E"},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""},
|
||||||
|
{NULL, ""}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void CanUds(tCanUds *env) {
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
osStatus_t status = osMessageQueueGet(env->queue, &env->data, 0, 1000);
|
||||||
|
|
||||||
|
if (status == osOK) {
|
||||||
|
|
||||||
|
uint8_t com = env->data.data[0];
|
||||||
|
|
||||||
|
if (uds_com[com].func != NULL) {
|
||||||
|
|
||||||
|
uint8_t response_size = uds_com[com].func(env);
|
||||||
|
|
||||||
|
if (response_size) {
|
||||||
|
|
||||||
|
CanSerialPortFrameTpTransmit(&env->canSerialPortFrameTp, env->dataResponse,
|
||||||
|
response_size, PROTOCOL_CAN_ADR_UDS, WAIT_FRAME_WRITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
asm("nop");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CanSerialPortCanUds_Start(tCanUds *env) {
|
||||||
|
ThreadBlock_Start(env->T_can_Uds, env, CanUds);
|
||||||
|
CanSerialPortFrameTp_Start(&env->canSerialPortFrameTp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CanUds_Init(
|
||||||
|
tCanUds *env,
|
||||||
|
tSerialPortFrameIO *CanIO,
|
||||||
|
tLoggerInterface *logger) {
|
||||||
|
|
||||||
|
env->logger = logger;
|
||||||
|
env->CanIO = CanIO;
|
||||||
|
env->filterIdCount = 0;
|
||||||
|
|
||||||
|
env->queue = osMessageQueueNew(CAN_US_QUEUE_SIZE, sizeof(tCanTP_data), NULL);
|
||||||
|
|
||||||
|
env->filterReqId[0] = 0;
|
||||||
|
env->filterReqId[1] = 0;
|
||||||
|
env->filterReqId[2] = 0;
|
||||||
|
env->filterReqId[3] = 0;
|
||||||
|
env->filterReqId[4] = 0;
|
||||||
|
env->filterReqId[5] = 0;
|
||||||
|
env->filterReqId[6] = 0;
|
||||||
|
|
||||||
|
env->filterRespId[0] = 0;
|
||||||
|
env->filterRespId[1] = 0;
|
||||||
|
env->filterRespId[2] = 0;
|
||||||
|
env->filterRespId[3] = 0;
|
||||||
|
env->filterRespId[4] = 0;
|
||||||
|
env->filterRespId[5] = 0;
|
||||||
|
env->filterRespId[6] = 0;
|
||||||
|
|
||||||
|
|
||||||
|
env->filterDirReq[0] = 0;
|
||||||
|
env->filterDirReq[1] = 0;
|
||||||
|
env->filterDirReq[2] = 0;
|
||||||
|
env->filterDirReq[3] = 0;
|
||||||
|
env->filterDirReq[4] = 0;
|
||||||
|
env->filterDirReq[5] = 1;
|
||||||
|
env->filterDirReq[6] = 0;
|
||||||
|
|
||||||
|
|
||||||
|
CanSerialPortFrameTpInit(
|
||||||
|
&env->canSerialPortFrameTp,
|
||||||
|
|
||||||
|
ReceivedCan_func,
|
||||||
|
env,
|
||||||
|
|
||||||
|
ReceivedTP_func,
|
||||||
|
env,
|
||||||
|
|
||||||
|
env->CanIO,
|
||||||
|
(tCanTP_data *) &env->canTP_Ext_data,
|
||||||
|
sizeof(env->canTP_Ext_data.data),
|
||||||
|
env->logger,
|
||||||
|
|
||||||
|
env->filterIdCount,
|
||||||
|
env->filterReqId,
|
||||||
|
env->filterRespId,
|
||||||
|
env->filterDirReq
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
InitThreadBlock(env->T_can_Uds, "CanUds", osPriorityNormal);
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,58 @@
|
||||||
|
//
|
||||||
|
// Created by cfif on 20.01.2026.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef HVAC_M7_CANUDS_H
|
||||||
|
#define HVAC_M7_CANUDS_H
|
||||||
|
|
||||||
|
#include "CanSerialPortFrameTP.h"
|
||||||
|
|
||||||
|
#define CAN_US_QUEUE_SIZE 3
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
UDS_DiagnosticSessionControl = 0x10,
|
||||||
|
UDS_ReadDTCInformation = 0x19,
|
||||||
|
UDS_ClearDiagnosticInformation = 0x14,
|
||||||
|
UDS_TesterPresent = 0x3E,
|
||||||
|
UDS_ReadDataByIdentifier = 0x22,
|
||||||
|
UDS_WriteDataByIdentifier = 0x2E,
|
||||||
|
UDS_RoutineControl = 0x31,
|
||||||
|
UDS_ECUResetService = 0x11,
|
||||||
|
UDS_SecurityAccess = 0x27
|
||||||
|
} eUdsServices;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
tCanSerialPortFrameTp canSerialPortFrameTp;
|
||||||
|
tLoggerInterface *logger;
|
||||||
|
tSerialPortFrameIO *CanIO;
|
||||||
|
|
||||||
|
tCanTP_Ext_data canTP_Ext_data;
|
||||||
|
|
||||||
|
osMessageQueueId_t queue;
|
||||||
|
|
||||||
|
tCanTP_data data;
|
||||||
|
uint8_t dataResponse[256];
|
||||||
|
|
||||||
|
uint8_t filterIdCount;
|
||||||
|
uint32_t filterReqId[16];
|
||||||
|
uint32_t filterRespId[16];
|
||||||
|
uint8_t filterDirReq[16];
|
||||||
|
|
||||||
|
tStaticThreadBlock(512) T_can_Uds;
|
||||||
|
} tCanUds;
|
||||||
|
|
||||||
|
typedef uint8_t (*uds_func_ptr)(tCanUds *env);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uds_func_ptr func;
|
||||||
|
char *desc;
|
||||||
|
} eUds_com;
|
||||||
|
|
||||||
|
void CanUds_Init(
|
||||||
|
tCanUds *env,
|
||||||
|
tSerialPortFrameIO *CanIO,
|
||||||
|
tLoggerInterface *logger);
|
||||||
|
|
||||||
|
void CanSerialPortCanUds_Start(tCanUds *env);
|
||||||
|
|
||||||
|
#endif //HVAC_M7_CANUDS_H
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
//
|
||||||
|
// Created by cfif on 06.08.2024.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef SMART_COMPONENTS_UPDATE_DIAGNOSTICSESSIONCONTROL_10_H
|
||||||
|
#define SMART_COMPONENTS_UPDATE_DIAGNOSTICSESSIONCONTROL_10_H
|
||||||
|
|
||||||
|
#include "stdint.h"
|
||||||
|
|
||||||
|
// Для готовности загрузки модема
|
||||||
|
typedef struct __attribute__ ((packed)) {
|
||||||
|
uint8_t ServiceId;
|
||||||
|
uint8_t diagnosticSessionType;
|
||||||
|
uint8_t sessionParameterRecord[4];
|
||||||
|
|
||||||
|
} tDiagnosticSessionsType;
|
||||||
|
|
||||||
|
|
||||||
|
// Для запроса сессии
|
||||||
|
typedef struct __attribute__ ((packed)) {
|
||||||
|
uint8_t ServiceId;
|
||||||
|
uint8_t diagnosticSessionType;
|
||||||
|
} tDiagnosticSessionControlRequest;
|
||||||
|
|
||||||
|
#endif //SMART_COMPONENTS_UPDATE_DIAGNOSTICSESSIONCONTROL_10_H
|
||||||
|
|
@ -0,0 +1,17 @@
|
||||||
|
//
|
||||||
|
// Created by cfif on 06.08.2024.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef SMART_COMPONENTS_UPDATE_TESTERPRESENT_3E_H
|
||||||
|
#define SMART_COMPONENTS_UPDATE_TESTERPRESENT_3E_H
|
||||||
|
|
||||||
|
#include "stdint.h"
|
||||||
|
|
||||||
|
// Для готовности загрузки модема
|
||||||
|
typedef struct __attribute__ ((packed)) {
|
||||||
|
uint8_t ServiceId;
|
||||||
|
uint8_t zeroSubFunction;
|
||||||
|
|
||||||
|
} tTesterPresent;
|
||||||
|
|
||||||
|
#endif //SMART_COMPONENTS_UPDATE_TESTERPRESENT_3E_H
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"cmake": {
|
||||||
|
"inc_dirs": [
|
||||||
|
"./"
|
||||||
|
],
|
||||||
|
"srcs": [
|
||||||
|
"./**.c"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue