Browse Source

配置网络相关指令玩成并测试通过

new_pcb
tianjialong 2 years ago
parent
commit
1c59b79b9f
  1. 6
      MDK-ARM/LWIP.uvguix.29643
  2. 11
      usersrc/protocol.h
  3. 52
      usersrc/udpclient.c

6
MDK-ARM/LWIP.uvguix.29643

@ -3651,9 +3651,9 @@
</Doc>
<Doc>
<Name>..\usersrc\udpclient.c</Name>
<ColumnNumber>72</ColumnNumber>
<TopLine>53</TopLine>
<CurrentLine>57</CurrentLine>
<ColumnNumber>0</ColumnNumber>
<TopLine>400</TopLine>
<CurrentLine>423</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>

11
usersrc/protocol.h

@ -25,6 +25,13 @@ typedef enum
PROTOCOL_STATUS_HARDWARE_ERROR = 0X02,
} protocol_status_code_type;
typedef enum
{
OPTION_IP = 0X01, /* ip */
OPTION_GW = 0X02, /* 网关 */
OPTION_NETMASK = 0X03, /* 子网掩码 */
} network_configuration_option_type;
#pragma pack(push, 1)
typedef struct
@ -164,8 +171,8 @@ typedef struct
uint16_t cmd_id; /* 指令id */
uint32_t placeholder_1; /* 占位符1 */
uint32_t placeholder_2; /* 占位符2 */
uint32_t encoder1; /* 编码器1的数据 */
uint32_t encoder2; /* 编码器2的数据 */
uint32_t encoder1; /* 编码器1的数据 */
uint32_t encoder2; /* 编码器2的数据 */
uint8_t checksum; /* 校验和 */
} protocol_active_and_trigger_report_t;

52
usersrc/udpclient.c

@ -8,6 +8,7 @@
#include "def.h"
#include "encoder.h"
#include "zport.h"
#include "config.h"
#define cmd_checksum(data) \
if (computesum8((char *)data, recv_datalen - 1) != data->checksum) \
@ -188,6 +189,21 @@ static void udp_client_trigger_cmd_receipt(protocol_trigger_order_t *order, prot
printf("send basic_response error\r\n");
}
}
/* 修改网络相关配置指令回执 */
static void udp_client_modify_network_configurations_cmd_receipt(protocol_modify_network_configurations_order_t *order, protocol_status_code_type state_code)
{
protocol_modify_network_configurations_receipt_t receipt;
receipt.index = order->index;
receipt.cmd_id = order->cmd_id + ORDER_RECEIPT_INTERCONVERSION;
receipt.status_code = state_code;
receipt.checksum = computesum8((char *)&receipt, sizeof(protocol_modify_network_configurations_receipt_t) - 1);
if (sendto(sock_Client, &receipt, sizeof(protocol_modify_network_configurations_receipt_t), 0, (struct sockaddr *)&addr_server, sizeof(struct sockaddr_in)) == SOCKET_ERROR)
{
printf("send basic_response error\r\n");
}
}
/* ===================================================================== */
void udp_client_recv_data_dump(int recv_datalen)
@ -300,7 +316,7 @@ void udp_client_parse(int recv_datalen)
protocol_read_encoder_order_t *protocol_read_encoder_cmd = (protocol_read_encoder_order_t *)s_receBuf;
protocol_active_order_t *protocol_active_cmd = (protocol_active_order_t *)s_receBuf;
protocol_trigger_order_t *protocol_trigger_cmd = (protocol_trigger_order_t *)s_receBuf;
// protocol_modify_network_configurations_order_t *protocol_modify_network_configurations_cmd = (protocol_modify_network_configurations_order_t *)s_receBuf;
protocol_modify_network_configurations_order_t *protocol_modify_network_configurations_cmd = (protocol_modify_network_configurations_order_t *)s_receBuf;
switch (protocol_basic_cmd->cmd_id)
{
case PROTOCOL_CMD_CLEAR_ENCODER: /* 清除编码器数据指令 */
@ -383,9 +399,39 @@ void udp_client_parse(int recv_datalen)
}
break;
case PROTOCOL_CMD_MODIFY_NETWORK_CONFIGURATIONS: /* 配置网络相关指令 */
cmd_checksum(protocol_modify_network_configurations_cmd);
if (checksum_flag)
{
switch (protocol_modify_network_configurations_cmd->configuration_option)
{
case OPTION_IP:
config_get()->ip = protocol_modify_network_configurations_cmd->data;
break;
case OPTION_GW:
config_get()->gw = protocol_modify_network_configurations_cmd->data;
break;
case OPTION_NETMASK:
config_get()->netmask = protocol_modify_network_configurations_cmd->data;
break;
default:
break;
}
break;
if (config_flash_write() == 0)
{
udp_client_modify_network_configurations_cmd_receipt(protocol_modify_network_configurations_cmd, PROTOCOL_STATUS_SUCCESS);
}
else
{ /* 存在修改了配置,但是写入到flash失败的问题,暂时不处理,处理的话就整一个temp,保存修改前的数据,
temp的数据赋值给修改的字段option来确定修改了啥字段 */
udp_client_modify_network_configurations_cmd_receipt(protocol_modify_network_configurations_cmd, PROTOCOL_STATUS_HARDWARE_ERROR);
}
}
else
{
udp_client_modify_network_configurations_cmd_receipt(protocol_modify_network_configurations_cmd, PROTOCOL_STATUS_PARAMETER_ERROR);
}
default:
break;
}

Loading…
Cancel
Save