129 lines
3.5 KiB
C
129 lines
3.5 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 "ChargerTask.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); /* 等待桩通讯协议层完成*/
|
||
osDelay(5000);
|
||
// send_server_address_to_air724();
|
||
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_udp_online)
|
||
{
|
||
uint8_t open_cmd[] = { 0x55, 0xAA, 0x3, 0x01, 0x01, 0xAA, 0x55};
|
||
Air724_Message_Send(open_cmd, sizeof(open_cmd));
|
||
osDelay(3000);
|
||
SETP = 1;
|
||
}
|
||
else
|
||
{
|
||
printf("网关:等待桩上电指令\r\n");
|
||
osDelay(1000);
|
||
SETP = 0;
|
||
}
|
||
|
||
}
|
||
break;
|
||
case 1:
|
||
{
|
||
if (!g_charger_manager.charger_piles[1 - 1].is_online)
|
||
{
|
||
charger_to_server_0X01(1);
|
||
|
||
}
|
||
else
|
||
{
|
||
SETP = 2;
|
||
}
|
||
osDelay(5000);
|
||
}
|
||
break;
|
||
case 2:
|
||
{
|
||
if (!g_charger_manager.charger_piles[1 - 1].get_model)
|
||
charger_to_server_0X09(1); // 桩1计费模型请求
|
||
else
|
||
SETP = 3;
|
||
osDelay(3000);
|
||
}
|
||
break;
|
||
case 3:
|
||
{
|
||
charger_to_server_0X13(1, 1); // 上传状态
|
||
local_on_cmd_send_start_charging(1,1);
|
||
osDelay(3000);
|
||
}
|
||
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;
|
||
}
|
||
}
|