102 lines
2.7 KiB
C
102 lines
2.7 KiB
C
/**
|
||
******************************************************************************
|
||
* @file user\task\HeartBeatTask.c
|
||
* @author luhuaishuai
|
||
* @version v0.1
|
||
* @date 2026-1-12
|
||
* @brief Briefly describe the function of your function
|
||
******************************************************************************
|
||
*/
|
||
|
||
/* Includes ------------------------------------------------------------------*/
|
||
|
||
#include "YkcTask.h"
|
||
#include "lwip/opt.h"
|
||
#include "lwip/api.h"
|
||
#include "lwip/sys.h"
|
||
|
||
/**
|
||
* @funNm : YkcTask_Function
|
||
* @brief : 云快充平台交互任务
|
||
* @param : argument
|
||
* @retval: void
|
||
*/
|
||
|
||
uint8_t SETP = 0;
|
||
|
||
void YkcTask_Function(void const *argument)
|
||
{
|
||
init_chargers(); /* 初始化桩结构体*/
|
||
ulTaskNotifyTake(pdTRUE, portMAX_DELAY); /* 等待桩通讯协议层完成*/
|
||
while (1)
|
||
{
|
||
TaskRunTimeStat.YkcTask.threads_runtime = GetTask_RunTime(YkcTaskID);
|
||
TaskRunTimeStat.YkcTask.threads_counter = GetTask_Beatcnt(YkcTaskID);
|
||
TaskRunTimeStat.YkcTask.threads_freestack = Get_Free_Stack(YkcTaskID);
|
||
|
||
switch (SETP)
|
||
{
|
||
case 0:
|
||
{
|
||
if (!g_charger_manager.charger_piles[1 - 1].is_online)
|
||
{
|
||
charger_to_server_0X01(1);
|
||
}
|
||
else
|
||
{
|
||
SETP = 1;
|
||
}
|
||
}
|
||
break;
|
||
case 1:
|
||
{
|
||
if (!g_charger_manager.charger_piles[1 - 1].get_model)
|
||
charger_to_server_0X09(1); // 桩1计费模型请求
|
||
else
|
||
SETP = 2;
|
||
}
|
||
break;
|
||
case 2:
|
||
{
|
||
charger_to_server_0X13(1, 1); // 上传状态
|
||
}
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
|
||
osDelay(2000);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* @brief 解析云快充平台下行数据
|
||
* @note 解析云快充平台下行数据,根据不同的帧类型调用相应的处理函数
|
||
* @param stake_mark 桩编号
|
||
* @param pack 指向SERVER_PACK结构体的指针,包含下行数据
|
||
*/
|
||
void handle_ykc_downlink(uint8_t stake_mark, SERVER_PACK *pack)
|
||
{
|
||
switch (pack->frame_type)
|
||
{
|
||
case FRAME_TYPE_0X02:
|
||
on_cmd_frame_type_0X02(stake_mark, pack);
|
||
break;
|
||
case FRAME_TYPE_0X04:
|
||
on_cmd_frame_type_0X04(stake_mark, pack);
|
||
break;
|
||
case FRAME_TYPE_0X06:
|
||
on_cmd_frame_type_0X06(stake_mark, pack);
|
||
break;
|
||
case FRAME_TYPE_0X0A:
|
||
on_cmd_frame_type_0X0A(stake_mark, pack);
|
||
break;
|
||
case FRAME_TYPE_0X58:
|
||
on_cmd_frame_type_0X58(stake_mark, pack);
|
||
break;
|
||
case FRAME_TYPE_0X34:
|
||
on_cmd_frame_type_0X34(stake_mark, pack);
|
||
break;
|
||
}
|
||
}
|