Release:5.20灰测

This commit is contained in:
2026-05-21 10:01:28 +08:00
parent 8a5a32b139
commit fd65e9c6a2
68 changed files with 4329 additions and 1489 deletions

197
Core/User/App/task_ykc.c Normal file
View File

@@ -0,0 +1,197 @@
/**
******************************************************************************
* @file user\task\HeartBeatTask.c
* @author luhuaishuai
* @version v0.1
* @date 2026-1-12
* @brief Briefly describe the function of your function
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "task_ykc.h"
#include "lwip/opt.h"
#include "lwip/api.h"
#include "lwip/sys.h"
#include "usbd_cdc_if.h"
/**
* @funNm : ykc_task_function
* @brief : 云快充平台交互主任务
* @param : argument
* @retval: void
*/
void ykc_task_function(void const *argument)
{
uint32_t now;
init_chargers();
ulTaskNotifyTake(pdTRUE, portMAX_DELAY);
osDelay(5000);
while (1)
{
TaskRunTimeStat.YkcTask.threads_runtime = GetTask_RunTime(YkcTaskID);
TaskRunTimeStat.YkcTask.threads_counter = GetTask_Beatcnt(YkcTaskID);
TaskRunTimeStat.YkcTask.threads_freestack = Get_Free_Stack(YkcTaskID);
now = HAL_GetTick();
for (int i = 0; i < g_charger_manager.charger_count; i++)
{
ChargerPile *pile = &g_charger_manager.charger_piles[i];
/* ========== 桩层初始化桩0~2通用只做一次 ========== */
if (pile->step < 3)
{
if (now < pile->step_tick)
continue;
switch (pile->step)
{
case 0: // 等待桩上电 + 连接本桩4G通道
{
// if (pile->is_udp_online)
if(1)
{
if (!g_air724_info.socket_connected[i])
{
drv_air724_connect_channel(i + 1);
pile->step_tick = now + 3000;
}
else
{
pile->step = 1;
pile->step_tick = now;
}
}
else
{
USB_Printf("网关:等待桩%d上电指令\r\n", i + 1);
drv_air724_query_iccid();
pile->step_tick = now + 1000;
}
}
break;
case 1: // 云快充登录认证
{
if (!pile->is_online)
{
charger_to_server_0X01(i + 1);
pile->step_tick = now + 5000;
}
else
{
pile->step = 2;
charger_to_server_0X05(1, i + 1);
pile->step_tick = now;
}
}
break;
case 2: // 云快充计费模型请求
{
if (!pile->get_model)
{
charger_to_server_0X09(i + 1);
pile->step_tick = now + 5000;
}
else
{
pile->step = 3;
pile->step_tick = now;
}
}
break;
}
continue;
}
/* ========== 枪层独立运行(每把枪独立状态机) ========== */
for (int g = 0; g < MAX_GUN_PER_CHARGER; g++)
{
ChargerGun *gun = &pile->guns[g];
if (now < gun->gun_step_tick)
continue;
switch (gun->gun_step)
{
case 0: // 运行时:周期上传实时数据 + 账单处理
{
charger_to_server_0X13(i + 1, g + 1);
host_computer_report_data(i + 1, g + 1);
if (gun->is_get_bill)
{
charger_to_server_0X3B(i + 1, g + 1);
charger_to_server_0X3B(i + 1, g + 1);
gun->is_get_bill = 0;
memset(gun->real_time_data.trade_serial, 0,
sizeof(gun->real_time_data.trade_serial));
}
gun->gun_step_tick = now + 5000;
}
break;
default:
break;
}
}
}
osDelay(10);
}
}
/**
* @brief 云快充平台状态检查回调
* @note 每 500ms 触发一次,遍历 1-6 号桩检查状态
* @param xTimer 定时器句柄
* @retval none
*/
void ykc_timer_callback_function(TimerHandle_t xTimer)
{
for (int i = 0; i < MAX_CHARGER_COUNT; i++)
{
for (int g = 0; g < MAX_GUN_PER_CHARGER; g++)
{
ChargerGun *gun = &g_charger_manager.charger_piles[i].guns[g];
if (gun->charger_state == REDAY_CHARGER_START_STATE)
{
USB_Printf("状态机:[info] 桩%d 枪%d 查询中,等待启动回复.... \r\n", i + 1, g + 1);
}
else if (gun->charger_state == SUCCESS_CHARGER_STATE)
{
USB_Printf("状态机:[success] 桩%d 枪%d 启动成功.... \r\n", i + 1, g + 1);
gun->charger_state = CHARGER_STATE_CHARGING;
}
else if (gun->charger_state == FAIL_CHARGER_STATE)
{
USB_Printf("状态机:[error] 桩%d 枪%d 启动失败.... \r\n", i + 1, g + 1);
}
else if (gun->charger_state == CHARGER_STATE_CHARGING)
{
USB_Printf("状态机:[info] 桩%d 枪%d 充电中.... \r\n", i + 1, g + 1);
}
else if (gun->charger_state == REDAY_CHARGER_STOP_STATE)
{
USB_Printf("状态机:[info] 桩%d 枪%d 查询中,等待停止回复.... \r\n", i + 1, g + 1);
}
else if (gun->charger_state == SUCCESS_CHARGER_STOP_STATE)
{
USB_Printf("状态机:[success] 桩%d 枪%d 停止成功.... \r\n", i + 1, g + 1);
}
else if (gun->charger_state == FAIL_CHARGER_STOP_STATE)
{
USB_Printf("状态机:[error] 桩%d 枪%d 停止失败.... \r\n", i + 1, g + 1);
}
else if (gun->charger_state == CHARGER_STATE_CHARGE_DONE)
{
printf("状态机:[success] 桩%d 枪%d 计费数据已发送,充电完成.... \r\n", i + 1, g + 1);
}
}
}
}