diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..70e34ec
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "C_Cpp.errorSquiggles": "disabled"
+}
\ No newline at end of file
diff --git a/CH395Q/ch395.c b/CH395Q/ch395.c
index 63e74ed..daedcca 100644
--- a/CH395Q/ch395.c
+++ b/CH395Q/ch395.c
@@ -4,45 +4,45 @@
struct ch395q_t g_ch395q_sta;
/**
- * @brief ch395_gpioʼ
- * @param
- * @retval
+ * @brief ch395_gpio初始化
+ * @param 无
+ * @retval 无
*/
void ch395_gpio_init( void )
{
GPIO_InitTypeDef gpio_init_struct;
- CH395_SCS_GPIO_CLK_ENABLE(); /* ʹSCSʱ */
- CH395_INT_GPIO_CLK_ENABLE(); /* ʹINTʱ */
- CH395_RST_GPIO_CLK_ENABLE(); /* ʹRSTʱ */
+ CH395_SCS_GPIO_CLK_ENABLE(); /* 使能SCS时钟 */
+ CH395_INT_GPIO_CLK_ENABLE(); /* 使能INT时钟 */
+ CH395_RST_GPIO_CLK_ENABLE(); /* 使能RST时钟 */
/* SCS */
gpio_init_struct.Pin = CH395_SCS_GPIO_PIN;
gpio_init_struct.Speed = GPIO_SPEED_FREQ_MEDIUM;
- gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; /* */
+ gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; /* 推拉输出 */
HAL_GPIO_Init( CH395_SCS_GPIO_PORT, &gpio_init_struct );
ch395_scs_low;
- /* ʼж */
+ /* 初始化中断引脚 */
gpio_init_struct.Pin = CH395_INT_GPIO_PIN;
- gpio_init_struct.Mode = GPIO_MODE_INPUT; /* */
- gpio_init_struct.Pull = GPIO_PULLUP; /* */
- gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; /* */
+ gpio_init_struct.Mode = GPIO_MODE_INPUT; /* 输入 */
+ gpio_init_struct.Pull = GPIO_PULLUP; /* 上拉 */
+ gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; /* 高速 */
HAL_GPIO_Init( CH395_INT_GPIO_PORT, &gpio_init_struct );
gpio_init_struct.Pin = CH395_RST_GPIO_PIN;
- gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; /* */
- gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; /* */
- gpio_init_struct.Pull = GPIO_PULLUP; /* */
+ gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; /* 输出 */
+ gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH; /* 高速 */
+ gpio_init_struct.Pull = GPIO_PULLUP; /* 上拉 */
HAL_GPIO_Init( CH395_RST_GPIO_PORT, &gpio_init_struct );
HAL_GPIO_WritePin(CH395_RST_GPIO_PORT, CH395_RST_GPIO_PIN, GPIO_PIN_SET);
HAL_Delay(20);
}
/**
- * @brief ch395رspi
- * @param
- * @retval
+ * @brief ch395关闭spi
+ * @param 无
+ * @retval 无
*/
void ch395_spi_off( void )
{
@@ -53,76 +53,76 @@ void ch395_spi_off( void )
/* SCK\SDI\SDO */
gpio_init_struct.Pin = GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
gpio_init_struct.Speed = GPIO_SPEED_FREQ_MEDIUM;
- gpio_init_struct.Mode = GPIO_MODE_OUTPUT_OD; /* © */
+ gpio_init_struct.Mode = GPIO_MODE_OUTPUT_OD; /* 开漏输出 */
HAL_GPIO_Init( GPIOC, &gpio_init_struct );
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12, GPIO_PIN_SET);
}
/**
- * @brief SPI1дһֽ
- * @param txdata : Ҫ͵(1ֽ)
- * @retval յ(1ֽ)
+ * @brief SPI1读写一个字节数据
+ * @param txdata : 要发送的数据(1字节)
+ * @retval 接收到的数据(1字节)
*/
uint8_t spi2_read_write_byte(uint8_t txdata)
{
uint8_t rxdata;
HAL_SPI_TransmitReceive(&hspi2, &txdata, &rxdata, 1, 1000);
- return rxdata; /* յ */
+ return rxdata; /* 返回收到的数据 */
}
/**
- * @brief ӲSPI8λ
- * @param d:Ҫ뵽ch395
- * @retval
+ * @brief 硬件SPI输出且输入8个位数据
+ * @param d:将要送入到ch395的数据
+ * @retval 无
*/
uint8_t ch395_read_write_byte( uint8_t data )
{
uint8_t rxdata;
- rxdata = spi2_read_write_byte(data); /* SPIдһCH395Qݲһ */
- return rxdata; /* յ */
+ rxdata = spi2_read_write_byte(data); /* SPI写入一个CH395Q数据并返回一个数据 */
+ return rxdata; /* 返回收到的数据 */
}
/**
- * @brief ch395д
- * @param Ҫдch395
- * @retval
+ * @brief 向ch395写命令
+ * @param 将要写入ch395的命令码
+ * @retval 无
*/
void ch395_write_cmd( uint8_t mcmd )
{
- ch395_scs_hign; /* ֹCSԭΪͣȽCSø */
- ch395_scs_low; /* ʼCS */
+ ch395_scs_hign; /* 防止CS原来为低,先将CS置高 */
+ ch395_scs_low; /* 命令开始,CS拉低 */
delay_us(2);
- ch395_read_write_byte(mcmd); /* SPI */
- delay_us(2); /* Ҫʱ,ʱ1.5uSȷдڲС1.5uS */
+ ch395_read_write_byte(mcmd); /* SPI发送命令码 */
+ delay_us(2); /* 必要延时,延时1.5uS确保读写周期不小于1.5uS */
}
/**
- * @brief ch395д
- * @param Ҫдch395
- * @retval
+ * @brief 向ch395写数据
+ * @param 将要写入ch395的数据
+ * @retval 无
*/
void ch395_write_data( uint8_t mdata )
{
- ch395_read_write_byte(mdata); /* SPI */
+ ch395_read_write_byte(mdata); /* SPI发送数据 */
}
/**
- * @brief ch395
- * @param
- * @retval ضȡ
+ * @brief 从ch395读数据
+ * @param 无
+ * @retval 返回读取的数据
*/
uint8_t ch395_read_data( void )
{
uint8_t i;
- i = ch395_read_write_byte(0xff); /* SPI */
+ i = ch395_read_write_byte(0xff); /* SPI读数据 */
return i;
}
/**
- * @brief ch395_keeplive_set ʱ
- * @param
- * @retval
+ * @brief ch395_keeplive_set 保活定时器参数设置
+ * @param 无
+ * @retval 无
*/
void ch395_keeplive_set(void)
{
@@ -132,9 +132,9 @@ void ch395_keeplive_set(void)
}
/**
- * @brief ch395 socket
- * @param ch395_sokectSocketϢ
- * @retval
+ * @brief ch395 socket配置
+ * @param ch395_sokect:Socket配置信息
+ * @retval 无
*/
uint8_t ch395q_socket_config(ch395_socket * ch395_sokect)
{
@@ -143,7 +143,7 @@ uint8_t ch395q_socket_config(ch395_socket * ch395_sokect)
return 0;
}
-// if (g_ch395q_sta.dhcp_status == DHCP_UP) /* DHCPȡɹ״̬ */
+// if (g_ch395q_sta.dhcp_status == DHCP_UP) /* DHCP获取成功状态 */
// {
// ch395_sokect->net_info.ip[0] = g_ch395q_sta.ipinf_buf[0];
// ch395_sokect->net_info.ip[1] = g_ch395q_sta.ipinf_buf[1];
@@ -170,12 +170,12 @@ uint8_t ch395q_socket_config(ch395_socket * ch395_sokect)
// ch395_sokect->net_info.dns2[2] = g_ch395q_sta.ipinf_buf[18];
// ch395_sokect->net_info.dns2[3] = g_ch395q_sta.ipinf_buf[19];
// }
-// else /* DHCPȡʧ״̬þ̬IPַϢ */
+// else /* DHCP获取失败状态,设置静态IP地址信息 */
// {
-// ch395_cmd_set_ipaddr(ch395_sokect->net_config.ipaddr); /* CH395IPַ */
-// ch395_cmd_set_gw_ipaddr(ch395_sokect->net_config.gwipaddr); /* صַ */
-// ch395_cmd_set_maskaddr(ch395_sokect->net_config.maskaddr); /* 룬ĬΪ255.255.255.0*/
-// printf("̬IPϢ.....................................\r\n");
+// ch395_cmd_set_ipaddr(ch395_sokect->net_config.ipaddr); /* 设置CH395的IP地址 */
+// ch395_cmd_set_gw_ipaddr(ch395_sokect->net_config.gwipaddr); /* 设置网关地址 */
+// ch395_cmd_set_maskaddr(ch395_sokect->net_config.maskaddr); /* 设置子网掩码,默认为255.255.255.0*/
+// printf("静态IP信息.....................................\r\n");
// printf("IP:%02d.%02d.%02d.%02d\r\n", (uint16_t)ch395_sokect->net_config.ipaddr[0], (uint16_t)ch395_sokect->net_config.ipaddr[1], (uint16_t)ch395_sokect->net_config.ipaddr[2], (uint16_t)ch395_sokect->net_config.ipaddr[3]);
// printf("GWIP:%02d.%02d.%02d.%02d\r\n", (uint16_t)ch395_sokect->net_config.gwipaddr[0], (uint16_t)ch395_sokect->net_config.gwipaddr[1], (uint16_t)ch395_sokect->net_config.gwipaddr[2], (uint16_t)ch395_sokect->net_config.gwipaddr[3]);
// printf("Mask:%02d.%02d.%02d.%02d\r\n", (uint16_t)ch395_sokect->net_config.maskaddr[0], (uint16_t)ch395_sokect->net_config.maskaddr[1], (uint16_t)ch395_sokect->net_config.maskaddr[2], (uint16_t)ch395_sokect->net_config.maskaddr[3]);
@@ -183,51 +183,51 @@ uint8_t ch395q_socket_config(ch395_socket * ch395_sokect)
// HAL_Delay(10);
// }
- ch395_cmd_set_ipaddr(ch395_sokect->net_config.ipaddr); /* CH395IPַ */
- ch395_cmd_set_gw_ipaddr(ch395_sokect->net_config.gwipaddr); /* صַ */
- ch395_cmd_set_maskaddr(ch395_sokect->net_config.maskaddr); /* 룬ĬΪ255.255.255.0*/
- printf("̬IPϢ.....................................\r\n");
+ ch395_cmd_set_ipaddr(ch395_sokect->net_config.ipaddr); /* 设置CH395的IP地址 */
+ ch395_cmd_set_gw_ipaddr(ch395_sokect->net_config.gwipaddr); /* 设置网关地址 */
+ ch395_cmd_set_maskaddr(ch395_sokect->net_config.maskaddr); /* 设置子网掩码,默认为255.255.255.0*/
+ printf("静态IP信息.....................................\r\n");
printf("IP:%02d.%02d.%02d.%02d\r\n", (uint16_t)ch395_sokect->net_config.ipaddr[0], (uint16_t)ch395_sokect->net_config.ipaddr[1], (uint16_t)ch395_sokect->net_config.ipaddr[2], (uint16_t)ch395_sokect->net_config.ipaddr[3]);
printf("GWIP:%02d.%02d.%02d.%02d\r\n", (uint16_t)ch395_sokect->net_config.gwipaddr[0], (uint16_t)ch395_sokect->net_config.gwipaddr[1], (uint16_t)ch395_sokect->net_config.gwipaddr[2], (uint16_t)ch395_sokect->net_config.gwipaddr[3]);
printf("Mask:%02d.%02d.%02d.%02d\r\n", (uint16_t)ch395_sokect->net_config.maskaddr[0], (uint16_t)ch395_sokect->net_config.maskaddr[1], (uint16_t)ch395_sokect->net_config.maskaddr[2], (uint16_t)ch395_sokect->net_config.maskaddr[3]);
ch395_cmd_init();
HAL_Delay(10);
- //ch395_cmd_set_macaddr(ch395_sokect->net_config.macaddr); /* MACַ */
+ //ch395_cmd_set_macaddr(ch395_sokect->net_config.macaddr); /* 设置MAC地址 */
memcpy(&g_ch395q_sta.socket[ch395_sokect->socket_index].config, ch395_sokect, sizeof(ch395_socket));
switch(ch395_sokect->proto)
{
case CH395Q_SOCKET_UDP:
- /* socket ΪUDPģʽ */
- ch395_set_socket_desip(ch395_sokect->socket_index, ch395_sokect->des_ip); /* socket 0ĿIPַ */
- ch395_set_socket_prot_type(ch395_sokect->socket_index, PROTO_TYPE_UDP); /* socket 0Э */
- ch395_set_socket_desport(ch395_sokect->socket_index, ch395_sokect->des_port); /* socket 0ĿĶ˿ */
- ch395_set_socket_sourport(ch395_sokect->socket_index, ch395_sokect->sour_port); /* socket 0Դ˿ */
- g_ch395q_sta.ch395_error(ch395_open_socket(ch395_sokect->socket_index)); /* Ƿɹ */
+ /* socket 为UDP模式 */
+ ch395_set_socket_desip(ch395_sokect->socket_index, ch395_sokect->des_ip); /* 设置socket 0目标IP地址 */
+ ch395_set_socket_prot_type(ch395_sokect->socket_index, PROTO_TYPE_UDP); /* 设置socket 0协议类型 */
+ ch395_set_socket_desport(ch395_sokect->socket_index, ch395_sokect->des_port); /* 设置socket 0目的端口 */
+ ch395_set_socket_sourport(ch395_sokect->socket_index, ch395_sokect->sour_port); /* 设置socket 0源端口 */
+ g_ch395q_sta.ch395_error(ch395_open_socket(ch395_sokect->socket_index)); /* 检查是否成功 */
break;
case CH395Q_SOCKET_TCP_CLIENT:
- /* socket ΪTCPClientģʽ */
- ch395_keeplive_set(); /* */
- ch395_set_socket_desip(ch395_sokect->socket_index, ch395_sokect->des_ip); /* socket 0ĿIPַ */
- ch395_set_socket_prot_type(ch395_sokect->socket_index, PROTO_TYPE_TCP); /* socket 0Э */
- ch395_set_socket_desport(ch395_sokect->socket_index, ch395_sokect->des_port); /* socket 0ĿĶ˿ */
- ch395_set_socket_sourport(ch395_sokect->socket_index, ch395_sokect->sour_port); /* socket 0Դ˿ */
- g_ch395q_sta.ch395_error(ch395_open_socket(ch395_sokect->socket_index)); /* sokectǷɹ */
- g_ch395q_sta.ch395_error(ch395_tcp_connect(ch395_sokect->socket_index)); /* tcpǷɹ */
+ /* socket 为TCPClient模式 */
+ ch395_keeplive_set(); /* 保活设置 */
+ ch395_set_socket_desip(ch395_sokect->socket_index, ch395_sokect->des_ip); /* 设置socket 0目标IP地址 */
+ ch395_set_socket_prot_type(ch395_sokect->socket_index, PROTO_TYPE_TCP); /* 设置socket 0协议类型 */
+ ch395_set_socket_desport(ch395_sokect->socket_index, ch395_sokect->des_port); /* 设置socket 0目的端口 */
+ ch395_set_socket_sourport(ch395_sokect->socket_index, ch395_sokect->sour_port); /* 设置socket 0源端口 */
+ g_ch395q_sta.ch395_error(ch395_open_socket(ch395_sokect->socket_index)); /* 检查sokect是否打开成功 */
+ g_ch395q_sta.ch395_error(ch395_tcp_connect(ch395_sokect->socket_index)); /* 检查tcp连接是否成功 */
break;
case CH395Q_SOCKET_TCP_SERVER:
- /* socket ΪTCPServerģʽ */
- //ch395_set_socket_desip(ch395_sokect->socket_index, ch395_sokect->des_ip); /* socket 0ĿIPַ */
- ch395_set_socket_prot_type(ch395_sokect->socket_index, PROTO_TYPE_TCP); /* socket 0Э */
- ch395_set_socket_sourport(ch395_sokect->socket_index, ch395_sokect->sour_port); /* socket 0Դ˿ */
- g_ch395q_sta.ch395_error(ch395_open_socket(ch395_sokect->socket_index)); /* sokectǷɹ */
- g_ch395q_sta.ch395_error(ch395_tcp_listen(ch395_sokect->socket_index)); /* tcp */
+ /* socket 为TCPServer模式 */
+ //ch395_set_socket_desip(ch395_sokect->socket_index, ch395_sokect->des_ip); /* 设置socket 0目标IP地址 */
+ ch395_set_socket_prot_type(ch395_sokect->socket_index, PROTO_TYPE_TCP); /* 设置socket 0协议类型 */
+ ch395_set_socket_sourport(ch395_sokect->socket_index, ch395_sokect->sour_port); /* 设置socket 0源端口 */
+ g_ch395q_sta.ch395_error(ch395_open_socket(ch395_sokect->socket_index)); /* 检查sokect是否打开成功 */
+ g_ch395q_sta.ch395_error(ch395_tcp_listen(ch395_sokect->socket_index)); /* 监听tcp连接 */
break;
case CH395Q_SOCKET_MAC_RAW:
- ch395_set_socket_prot_type(ch395_sokect->socket_index, PROTO_TYPE_MAC_RAW); /* socket 0Э */
- g_ch395q_sta.ch395_error(ch395_open_socket(ch395_sokect->socket_index)); /* sokectǷɹ */
+ ch395_set_socket_prot_type(ch395_sokect->socket_index, PROTO_TYPE_MAC_RAW); /* 设置socket 0协议类型 */
+ g_ch395q_sta.ch395_error(ch395_open_socket(ch395_sokect->socket_index)); /* 检查sokect是否打开成功 */
break;
}
@@ -235,18 +235,18 @@ uint8_t ch395q_socket_config(ch395_socket * ch395_sokect)
}
/**
- * @brief ʹãʾ룬ͣ
- * @param ierror
- * @retval
+ * @brief 调试使用,显示错误代码,并停机
+ * @param ierror 检测命令
+ * @retval 无
*/
void ch395_error(uint8_t ierror)
{
if (ierror == CMD_ERR_SUCCESS)
{
- return; /* ɹ */
+ return; /* 操作成功 */
}
- printf("Error: %02X\r\n", (uint16_t)ierror); /* ʾ */
+ printf("Error: %02X\r\n", (uint16_t)ierror); /* 显示错误 */
// while ( 1 )
// {
@@ -256,9 +256,9 @@ void ch395_error(uint8_t ierror)
}
/**
- * @brief CH395 PHY״̬
- * @param phy_statusPHY״ֵ̬
- * @retval
+ * @brief CH395 PHY状态
+ * @param phy_status:PHY状态值
+ * @retval 无
*/
void ch395_phy_status(uint8_t phy_status)
{
@@ -287,13 +287,13 @@ void ch395_phy_status(uint8_t phy_status)
}
/**
- * @brief socketӿڵĽ뷢ͻ
- * @param
- * @retval
+ * @brief 设置socket接口的接收与发送缓冲区
+ * @param 无
+ * @retval 无
*/
void ch395_socket_r_s_buf_modify(void)
{
- ch395_set_socket_recv_buf(0,0,4); /* Socket 0 ջ4*512 = 2Kͻ2*512 = 1K*/
+ ch395_set_socket_recv_buf(0,0,4); /* Socket 0 ,接收缓冲区4*512 = 2K,发送缓冲区2*512 = 1K*/
ch395_set_socket_send_buf(0,4,2);
ch395_set_socket_recv_buf(1,6,4); /* Socket 1 */
@@ -320,9 +320,9 @@ void ch395_socket_r_s_buf_modify(void)
int re_cnt = 0;
/**
- * @brief ch395_tcpʼ
- * @param
- * @retval
+ * @brief ch395_tcp初始化
+ * @param 无
+ * @retval 无
*/
void ch395_hardware_init(void)
{
@@ -335,25 +335,25 @@ void ch395_hardware_init(void)
g_ch395q_sta.ch395_reconnection = ch395_reconnection;
g_ch395q_sta.dhcp_status = DHCP_STA;
- i = ch395_cmd_check_exist(0x65); /* ڲӲԼӿͨѶ */
+ i = ch395_cmd_check_exist(0x65); /* 测试命令,用于测试硬件以及接口通讯 */
if (i != 0x9a)
{
- g_ch395q_sta.ch395_error(i); /* ch395q */
+ g_ch395q_sta.ch395_error(i); /* ch395q检测错误 */
}
- ch395_cmd_reset(); /* ch395qλ */
- HAL_Delay(100); /* ȴ100ʱ */
+ ch395_cmd_reset(); /* 对ch395q复位 */
+ HAL_Delay(100); /* 这里必须等待100以上延时 */
- g_ch395q_sta.ch395_error(ch395_cmd_init()); /* ʼch395q */
+ g_ch395q_sta.ch395_error(ch395_cmd_init()); /* 初始化ch395q命令 */
ch395_socket_r_s_buf_modify();
// ch395_set_tcpmss(536);
// ch395_set_start_para(FUN_PARA_FLAG_TCP_SERVER | SOCK_CTRL_FLAG_SOCKET_CLOSE);
do
{
- g_ch395q_sta.phy_status = ch395_cmd_get_phy_status(); /* ȡPHY״̬ */
- g_ch395q_sta.ch395_phy_cb(g_ch395q_sta.phy_status); /* ж˫ģʽ */
+ g_ch395q_sta.phy_status = ch395_cmd_get_phy_status(); /* 获取PHY状态 */
+ g_ch395q_sta.ch395_phy_cb(g_ch395q_sta.phy_status); /* 判断双工和网速模式 */
re_cnt++;
if(re_cnt > 50)
@@ -362,58 +362,58 @@ void ch395_hardware_init(void)
}
while(g_ch395q_sta.phy_status == PHY_DISCONN);
- g_ch395q_sta.version = ch395_cmd_get_ver(); /* ȡ汾 */
+ g_ch395q_sta.version = ch395_cmd_get_ver(); /* 获取版本 */
printf("CH395VER : %2x\r\n", (uint16_t)g_ch395q_sta.version);
-// i = ch395_dhcp_enable(1); /* DHCP */
-// g_ch395q_sta.ch395_error(i); /* ch395q */
+// i = ch395_dhcp_enable(1); /* 开启DHCP */
+// g_ch395q_sta.ch395_error(i); /* ch395q检测错误 */
- HAL_Delay(1000); /* ch395qʼʱ */
+ HAL_Delay(1000); /* ch395q初始化延时 */
}
/**
- * @brief CH395 socket ж,ȫжб
- * @param sockindex 0~7
- * @retval
+ * @brief CH395 socket 中断,在全局中断中被调用
+ * @param sockindex (0~7)
+ * @retval 无
*/
void ch395_socket_interrupt(uint8_t sockindex)
{
uint8_t sock_int_socket;
uint16_t rx_len = 0;
- sock_int_socket = ch395_get_socket_int(sockindex); /* ȡsocket ж״̬ */
+ sock_int_socket = ch395_get_socket_int(sockindex); /* 获取socket 的中断状态 */
- if (sock_int_socket & SINT_STAT_SENBUF_FREE) /* ͻУԼдҪ͵ */
+ if (sock_int_socket & SINT_STAT_SENBUF_FREE) /* 发送缓冲区空闲,可以继续写入要发送的数据 */
{
}
- if (sock_int_socket & SINT_STAT_SEND_OK) /* ж */
+ if (sock_int_socket & SINT_STAT_SEND_OK) /* 发送完成中断 */
{
}
- if (sock_int_socket & SINT_STAT_RECV) /* ж */
+ if (sock_int_socket & SINT_STAT_RECV) /* 接收中断 */
{
- g_ch395q_sta.socket[sockindex].config.recv.size = ch395_get_recv_length(sockindex); /* ȡǰݳ */
+ g_ch395q_sta.socket[sockindex].config.recv.size = ch395_get_recv_length(sockindex); /* 获取当前缓冲区内数据长度 */
rx_len = g_ch395q_sta.socket[sockindex].config.recv.size;
- ch395_get_recv_data(sockindex, rx_len, g_ch395q_sta.socket[sockindex].config.recv.buf); /* ȡ */
+ ch395_get_recv_data(sockindex, rx_len, g_ch395q_sta.socket[sockindex].config.recv.buf); /* 读取数据 */
g_ch395q_sta.socket[sockindex].config.recv.buf[rx_len] = '\0';
modbus_process_tcp();
printf("%s", g_ch395q_sta.socket[sockindex].config.recv.buf);
g_ch395q_sta.socket[sockindex].config.recv.recv_flag |= 0x04;
}
- if (sock_int_socket & SINT_STAT_CONNECT) /* жϣTCPģʽЧ */
+ if (sock_int_socket & SINT_STAT_CONNECT) /* 连接中断,仅在TCP模式下有效 */
{
if (g_ch395q_sta.socket[sockindex].config.proto == CH395Q_SOCKET_TCP_CLIENT)
{
- ch395_set_keeplive(sockindex,1); /* KEEPALIVEʱ */
- ch395_setttl_num(sockindex,60); /* TTL */
+ ch395_set_keeplive(sockindex,1); /* 打开KEEPALIVE保活定时器 */
+ ch395_setttl_num(sockindex,60); /* 设置TTL */
}
}
- if (sock_int_socket & SINT_STAT_DISCONNECT) /* ϿжϣTCPģʽЧ */
+ if (sock_int_socket & SINT_STAT_DISCONNECT) /* 断开中断,仅在TCP模式下有效 */
{
g_ch395q_sta.ch395_error(ch395_open_socket(g_ch395q_sta.socket[sockindex].config.socket_index));
@@ -428,14 +428,14 @@ void ch395_socket_interrupt(uint8_t sockindex)
default:
break;
}
- HAL_Delay(200); /* ʱ200MSٴԣûбҪƵ */
+ HAL_Delay(200); /* 延时200MS后再次重试,没有必要过于频繁连接 */
}
- if (sock_int_socket & SINT_STAT_TIM_OUT) /* ʱжϣTCPģʽЧ */
+ if (sock_int_socket & SINT_STAT_TIM_OUT) /* 超时中断,仅在TCP模式下有效 */
{
if (g_ch395q_sta.socket[sockindex].config.proto == CH395Q_SOCKET_TCP_CLIENT)
{
- HAL_Delay(200); /* ʱ200MSٴԣûбҪƵ */
+ HAL_Delay(200); /* 延时200MS后再次重试,没有必要过于频繁连接 */
g_ch395q_sta.ch395_error(ch395_open_socket(g_ch395q_sta.socket[sockindex].config.socket_index));
g_ch395q_sta.ch395_error(ch395_tcp_connect(g_ch395q_sta.socket[sockindex].config.socket_index));
}
@@ -443,9 +443,9 @@ void ch395_socket_interrupt(uint8_t sockindex)
}
/**
- * @brief CH395ȫжϺ
- * @param
- * @retval
+ * @brief CH395全局中断函数
+ * @param 无
+ * @retval 无
*/
void ch395_interrupt_handler(void)
{
@@ -454,22 +454,22 @@ void ch395_interrupt_handler(void)
init_status = ch395_cmd_get_glob_int_status_all();
- if (init_status & GINT_STAT_UNREACH) /* ɴжϣȡɴϢ */
+ if (init_status & GINT_STAT_UNREACH) /* 不可达中断,读取不可达信息 */
{
ch395_cmd_get_unreachippt(g_ch395q_sta.ipinf_buf);
}
- if (init_status & GINT_STAT_IP_CONFLI) /* IPͻжϣCH395 IPʼCH395 */
+ if (init_status & GINT_STAT_IP_CONFLI) /* 产生IP冲突中断,建议重新修改CH395的 IP,并初始化CH395 */
{
}
- if (init_status & GINT_STAT_PHY_CHANGE) /* PHYıж */
+ if (init_status & GINT_STAT_PHY_CHANGE) /* 产生PHY改变中断 */
{
- g_ch395q_sta.phy_status = ch395_cmd_get_phy_status(); /* ȡPHY״̬ */
+ g_ch395q_sta.phy_status = ch395_cmd_get_phy_status(); /* 获取PHY状态 */
}
- if (init_status & GINT_STAT_DHCP) /* DHCPж */
+ if (init_status & GINT_STAT_DHCP) /* 处理DHCP中断 */
{
g_ch395q_sta.dhcp_status = DHCP_DOWN;
return;
@@ -488,72 +488,72 @@ void ch395_interrupt_handler(void)
// break;
// default:
// g_ch395q_sta.dhcp_status = DHCP_DOWN;
-// /* ĬIPַϢ */
-// printf("̬IPϢ.....................................\r\n");
+// /* 设置默认IP地址信息 */
+// printf("静态IP信息.....................................\r\n");
// break;
// }
}
if (init_status & GINT_STAT_SOCK0)
{
- ch395_socket_interrupt(CH395Q_SOCKET_0); /* socket 0ж */
+ ch395_socket_interrupt(CH395Q_SOCKET_0); /* 处理socket 0中断 */
}
if (init_status & GINT_STAT_SOCK1)
{
- ch395_socket_interrupt(CH395Q_SOCKET_1); /* socket 1ж */
+ ch395_socket_interrupt(CH395Q_SOCKET_1); /* 处理socket 1中断 */
}
if (init_status & GINT_STAT_SOCK2)
{
- ch395_socket_interrupt(CH395Q_SOCKET_2); /* socket 2ж */
+ ch395_socket_interrupt(CH395Q_SOCKET_2); /* 处理socket 2中断 */
}
if (init_status & GINT_STAT_SOCK3)
{
- ch395_socket_interrupt(CH395Q_SOCKET_3); /* socket 3ж */
+ ch395_socket_interrupt(CH395Q_SOCKET_3); /* 处理socket 3中断 */
}
if (init_status & GINT_STAT_SOCK4)
{
- ch395_socket_interrupt(CH395Q_SOCKET_4); /* socket 4ж */
+ ch395_socket_interrupt(CH395Q_SOCKET_4); /* 处理socket 4中断 */
}
if (init_status & GINT_STAT_SOCK5)
{
- ch395_socket_interrupt(CH395Q_SOCKET_5); /* socket 5ж */
+ ch395_socket_interrupt(CH395Q_SOCKET_5); /* 处理socket 5中断 */
}
if (init_status & GINT_STAT_SOCK6)
{
- ch395_socket_interrupt(CH395Q_SOCKET_6); /* socket 6ж */
+ ch395_socket_interrupt(CH395Q_SOCKET_6); /* 处理socket 6中断 */
}
if (init_status & GINT_STAT_SOCK7)
{
- ch395_socket_interrupt(CH395Q_SOCKET_7); /* socket 7ж */
+ ch395_socket_interrupt(CH395Q_SOCKET_7); /* 处理socket 7中断 */
}
}
/**
- * @brief CH395ȫֹ
- * @param
- * @retval
+ * @brief CH395全局管理函数
+ * @param 无
+ * @retval 无
*/
void ch395q_handler(void)
{
if (ch395_int_pin_wire == 0)
{
- ch395_interrupt_handler(); /* жϴ */
+ ch395_interrupt_handler(); /* 中断处理函数 */
}
- g_ch395q_sta.ch395_reconnection(); /* PHY״̬ */
+ g_ch395q_sta.ch395_reconnection(); /* 检测PHY状态,并重新连接 */
}
/**
- * @brief PHY״̬
- * @param
- * @retval
+ * @brief 检测PHY状态,并重新连接
+ * @param 无
+ * @retval 无
*/
void ch395_reconnection(void)
{
@@ -564,7 +564,7 @@ void ch395_reconnection(void)
if (g_ch395q_sta.socket[socket_index].config.socket_enable == CH395Q_ENABLE)
{
ch395_close_socket(g_ch395q_sta.socket[socket_index].config.socket_index);
- g_ch395q_sta.ch395_error(ch395_dhcp_enable(0)); /* ch395q */
+ g_ch395q_sta.ch395_error(ch395_dhcp_enable(0)); /* ch395q检测错误 */
g_ch395q_sta.socket[socket_index].config.socket_enable = CH395Q_DISABLE;
g_ch395q_sta.dhcp_status = DHCP_STA;
}
@@ -575,60 +575,60 @@ void ch395_reconnection(void)
{
if (g_ch395q_sta.dhcp_status == DHCP_STA)
{
- ch395_cmd_reset(); /* ch395qλ */
- HAL_Delay(100); /* ȴ100ʱ */
+ ch395_cmd_reset(); /* 对ch395q复位 */
+ HAL_Delay(100); /* 这里必须等待100以上延时 */
ch395_cmd_init();
- HAL_Delay(100); /* ȴ100ʱ */
+ HAL_Delay(100); /* 这里必须等待100以上延时 */
ch395_socket_r_s_buf_modify();
// ch395_set_tcpmss(536);
// ch395_set_start_para(FUN_PARA_FLAG_TCP_SERVER | SOCK_CTRL_FLAG_SOCKET_CLOSE);
- g_ch395q_sta.ch395_error(ch395_dhcp_enable(1)); /* DHCP */
+ g_ch395q_sta.ch395_error(ch395_dhcp_enable(1)); /* 开启DHCP */
}
do
{
if (ch395_int_pin_wire == 0)
{
- ch395_interrupt_handler(); /* жϴ */
+ ch395_interrupt_handler(); /* 中断处理函数 */
}
}
- while (g_ch395q_sta.dhcp_status == DHCP_STA); /* ȡDHCP */
+ while (g_ch395q_sta.dhcp_status == DHCP_STA); /* 获取DHCP */
switch(g_ch395q_sta.socket[socket_index].config.proto)
{
case CH395Q_SOCKET_UDP:
- /* socket ΪUDPģʽ */
- ch395_set_socket_desip(socket_index, g_ch395q_sta.socket[socket_index].config.des_ip); /* socket 0ĿIPַ */
- ch395_set_socket_prot_type(socket_index, PROTO_TYPE_UDP); /* socket 0Э */
- ch395_set_socket_desport(socket_index, g_ch395q_sta.socket[socket_index].config.des_port); /* socket 0ĿĶ˿ */
- ch395_set_socket_sourport(socket_index, g_ch395q_sta.socket[socket_index].config.sour_port); /* socket 0Դ˿ */
- g_ch395q_sta.ch395_error(ch395_open_socket(socket_index)); /* Ƿɹ */
+ /* socket 为UDP模式 */
+ ch395_set_socket_desip(socket_index, g_ch395q_sta.socket[socket_index].config.des_ip); /* 设置socket 0目标IP地址 */
+ ch395_set_socket_prot_type(socket_index, PROTO_TYPE_UDP); /* 设置socket 0协议类型 */
+ ch395_set_socket_desport(socket_index, g_ch395q_sta.socket[socket_index].config.des_port); /* 设置socket 0目的端口 */
+ ch395_set_socket_sourport(socket_index, g_ch395q_sta.socket[socket_index].config.sour_port); /* 设置socket 0源端口 */
+ g_ch395q_sta.ch395_error(ch395_open_socket(socket_index)); /* 检查是否成功 */
break;
case CH395Q_SOCKET_TCP_CLIENT:
- /* socket ΪTCPClientģʽ */
- ch395_keeplive_set(); /* */
- ch395_set_socket_desip(socket_index, g_ch395q_sta.socket[socket_index].config.des_ip); /* socket 0ĿIPַ */
- ch395_set_socket_prot_type(socket_index, PROTO_TYPE_TCP); /* socket 0Э */
- ch395_set_socket_desport(socket_index,g_ch395q_sta.socket[socket_index].config.des_port); /* socket 0ĿĶ˿ */
- ch395_set_socket_sourport(socket_index,g_ch395q_sta.socket[socket_index].config.sour_port); /* socket 0Դ˿ */
- g_ch395q_sta.ch395_error(ch395_open_socket(socket_index)); /* sokectǷɹ */
- g_ch395q_sta.ch395_error(ch395_tcp_connect(socket_index)); /* tcpǷɹ */
+ /* socket 为TCPClient模式 */
+ ch395_keeplive_set(); /* 保活设置 */
+ ch395_set_socket_desip(socket_index, g_ch395q_sta.socket[socket_index].config.des_ip); /* 设置socket 0目标IP地址 */
+ ch395_set_socket_prot_type(socket_index, PROTO_TYPE_TCP); /* 设置socket 0协议类型 */
+ ch395_set_socket_desport(socket_index,g_ch395q_sta.socket[socket_index].config.des_port); /* 设置socket 0目的端口 */
+ ch395_set_socket_sourport(socket_index,g_ch395q_sta.socket[socket_index].config.sour_port); /* 设置socket 0源端口 */
+ g_ch395q_sta.ch395_error(ch395_open_socket(socket_index)); /* 检查sokect是否打开成功 */
+ g_ch395q_sta.ch395_error(ch395_tcp_connect(socket_index)); /* 检查tcp连接是否成功 */
break;
case CH395Q_SOCKET_TCP_SERVER:
- /* socket ΪTCPServerģʽ */
- ch395_set_socket_desip(socket_index, g_ch395q_sta.socket[socket_index].config.des_ip); /* socket 0ĿIPַ */
- ch395_set_socket_prot_type(socket_index, PROTO_TYPE_TCP); /* socket 0Э */
- ch395_set_socket_sourport(socket_index, g_ch395q_sta.socket[socket_index].config.sour_port); /* socket 0Դ˿ */
- g_ch395q_sta.ch395_error(ch395_open_socket(socket_index)); /* sokectǷɹ */
- g_ch395q_sta.ch395_error(ch395_tcp_listen(socket_index)); /* tcp */
+ /* socket 为TCPServer模式 */
+ ch395_set_socket_desip(socket_index, g_ch395q_sta.socket[socket_index].config.des_ip); /* 设置socket 0目标IP地址 */
+ ch395_set_socket_prot_type(socket_index, PROTO_TYPE_TCP); /* 设置socket 0协议类型 */
+ ch395_set_socket_sourport(socket_index, g_ch395q_sta.socket[socket_index].config.sour_port); /* 设置socket 0源端口 */
+ g_ch395q_sta.ch395_error(ch395_open_socket(socket_index)); /* 检查sokect是否打开成功 */
+ g_ch395q_sta.ch395_error(ch395_tcp_listen(socket_index)); /* 监听tcp连接 */
break;
case CH395Q_SOCKET_MAC_RAW:
- ch395_set_socket_prot_type(socket_index, PROTO_TYPE_MAC_RAW); /* socket 0Э */
- g_ch395q_sta.ch395_error(ch395_open_socket(socket_index)); /* sokectǷɹ */
+ ch395_set_socket_prot_type(socket_index, PROTO_TYPE_MAC_RAW); /* 设置socket 0协议类型 */
+ g_ch395q_sta.ch395_error(ch395_open_socket(socket_index)); /* 检查sokect是否打开成功 */
break;
default:
ch395_set_socket_prot_type(socket_index, PROTO_TYPE_TCP);
- ch395_set_socket_sourport(socket_index, g_ch395q_sta.socket[socket_index].config.sour_port); /* socket 1~7Դ˿ */
+ ch395_set_socket_sourport(socket_index, g_ch395q_sta.socket[socket_index].config.sour_port); /* 设置socket 1~7源端口 */
break;
}
g_ch395q_sta.socket[socket_index].config.socket_enable = CH395Q_ENABLE;
@@ -638,21 +638,21 @@ void ch395_reconnection(void)
}
-/* ϢIPַصַMACַ */
+/* 本地网络信息:IP地址、网关地址、子网掩码和MAC地址 */
uint8_t ch395_ipaddr[4] = {192,168,114,194};
uint8_t ch395_gw_ipaddr[4] = {192,168,114,110};
uint8_t ch395_ipmask[4] = {255,255,255,0};
uint8_t ch395_macaddr[6] = {0x5C,0x53,0x10,0x6C,0x18,0x49};
-/* ԶIPַ */
+/* 远程IP地址设置 */
//uint8_t ch395_des_ipaddr[4] = {192,168,1,111};
static uint8_t socket0_send_buf[] = {"This is from CH395Q\r\n"};
static uint8_t socket0_recv_buf[1024];
ch395_socket cha95_sockct_sta[8];
/**
- * @brief ̲
- * @param
- * @retval
+ * @brief 例程测试
+ * @param 无
+ * @retval 无
*/
void ch395_init(void)
{
@@ -660,22 +660,22 @@ void ch395_init(void)
// {
// ch395q_handler();
// }
-// while (g_ch395q_sta.dhcp_status == DHCP_STA); /* ȡDHCP */
+// while (g_ch395q_sta.dhcp_status == DHCP_STA); /* 获取DHCP */
- cha95_sockct_sta[0].socket_enable = CH395Q_ENABLE; /* ʹsocket */
- cha95_sockct_sta[0].socket_index = CH395Q_SOCKET_0; /* socket */
- //memcpy(cha95_sockct_sta[0].des_ip, ch395_des_ipaddr, sizeof(cha95_sockct_sta[0].des_ip)); /* ĿIPַ */
- memcpy(cha95_sockct_sta[0].net_config.ipaddr, ch395_ipaddr, sizeof(cha95_sockct_sta[0].net_config.ipaddr)); /* þ̬IPַ */
- memcpy(cha95_sockct_sta[0].net_config.gwipaddr, ch395_gw_ipaddr, sizeof(cha95_sockct_sta[0].net_config.gwipaddr)); /* þ̬IPַ */
- memcpy(cha95_sockct_sta[0].net_config.maskaddr, ch395_ipmask, sizeof(cha95_sockct_sta[0].net_config.maskaddr)); /* þַ̬ */
- memcpy(cha95_sockct_sta[0].net_config.macaddr, ch395_macaddr, sizeof(cha95_sockct_sta[0].net_config.macaddr)); /* þ̬MACַ */
- cha95_sockct_sta[0].sour_port = 8080; /* Դ˿ */
- cha95_sockct_sta[0].proto = CH395Q_SOCKET_TCP_SERVER; /* Э */
- cha95_sockct_sta[0].send.buf = socket0_send_buf; /* */
- cha95_sockct_sta[0].send.size = sizeof(socket0_send_buf); /* ݴС */
- cha95_sockct_sta[0].recv.buf = socket0_recv_buf; /* ݻ */
- cha95_sockct_sta[0].recv.size = sizeof(socket0_recv_buf); /* ݴС */
- ch395q_socket_config(&cha95_sockct_sta[0]); /* socket */
+ cha95_sockct_sta[0].socket_enable = CH395Q_ENABLE; /* 使能socket对 */
+ cha95_sockct_sta[0].socket_index = CH395Q_SOCKET_0; /* 设置socket对 */
+ //memcpy(cha95_sockct_sta[0].des_ip, ch395_des_ipaddr, sizeof(cha95_sockct_sta[0].des_ip)); /* 设置目标IP地址 */
+ memcpy(cha95_sockct_sta[0].net_config.ipaddr, ch395_ipaddr, sizeof(cha95_sockct_sta[0].net_config.ipaddr)); /* 设置静态本地IP地址 */
+ memcpy(cha95_sockct_sta[0].net_config.gwipaddr, ch395_gw_ipaddr, sizeof(cha95_sockct_sta[0].net_config.gwipaddr)); /* 设置静态网关IP地址 */
+ memcpy(cha95_sockct_sta[0].net_config.maskaddr, ch395_ipmask, sizeof(cha95_sockct_sta[0].net_config.maskaddr)); /* 设置静态子网掩码地址 */
+ memcpy(cha95_sockct_sta[0].net_config.macaddr, ch395_macaddr, sizeof(cha95_sockct_sta[0].net_config.macaddr)); /* 设置静态MAC地址 */
+ cha95_sockct_sta[0].sour_port = 8080; /* 源端口 */
+ cha95_sockct_sta[0].proto = CH395Q_SOCKET_TCP_SERVER; /* 设置协议 */
+ cha95_sockct_sta[0].send.buf = socket0_send_buf; /* 发送数据 */
+ cha95_sockct_sta[0].send.size = sizeof(socket0_send_buf); /* 发送数据大小 */
+ cha95_sockct_sta[0].recv.buf = socket0_recv_buf; /* 接收数据缓冲区 */
+ cha95_sockct_sta[0].recv.size = sizeof(socket0_recv_buf); /* 接收数据大小 */
+ ch395q_socket_config(&cha95_sockct_sta[0]); /* 配置socket参数 */
}
diff --git a/CH395Q/ch395cmd.c b/CH395Q/ch395cmd.c
index 9c50a56..28a6dc1 100644
--- a/CH395Q/ch395cmd.c
+++ b/CH395Q/ch395cmd.c
@@ -3,9 +3,9 @@
#include "ch395.h"
/**
- * @brief λch395оƬ
- * @param
- * @retval
+ * @brief 复位ch395芯片
+ * @param 无
+ * @retval 无
*/
void ch395_cmd_reset(void)
{
@@ -14,9 +14,9 @@ void ch395_cmd_reset(void)
}
/**
- * @brief ʹch395˯״̬
- * @param
- * @retval
+ * @brief 使ch395进入睡眠状态
+ * @param 无
+ * @retval 无
*/
void ch395_cmd_sleep(void)
{
@@ -25,9 +25,9 @@ void ch395_cmd_sleep(void)
}
/**
- * @brief ȡоƬԼ̼汾ţ1ֽڣλʾоƬ汾
- * @param
- * @retval 1ֽоƬ̼汾
+ * @brief 获取芯片以及固件版本号,1字节,高四位表示芯片版本,
+ * @param 无
+ * @retval 1字节芯片及固件版本号
*/
uint8_t ch395_cmd_get_ver(void)
{
@@ -39,9 +39,9 @@ uint8_t ch395_cmd_get_ver(void)
}
/**
- * @brief ڲӲԼӿͨѶ
- * @param 1ֽڲ
- * @retval Ӳok testdataλȡ
+ * @brief 测试命令,用于测试硬件以及接口通讯,
+ * @param 1字节测试数据
+ * @retval 硬件ok,返回 testdata按位取反
*/
uint8_t ch395_cmd_check_exist(uint8_t testdata)
{
@@ -55,9 +55,9 @@ uint8_t ch395_cmd_check_exist(uint8_t testdata)
}
/**
- * @brief phyҪch395 phyΪ100/10m ȫ˫˫ch395ĬΪԶЭ̡
- * @param οphy /״̬
- * @retval
+ * @brief 设置phy,主要设置ch395 phy为100/10m 或者全双工半双工,ch395默为自动协商。
+ * @param 参考phy 命令参数/状态
+ * @retval 无
*/
void ch395_cmd_set_phy(uint8_t phystat)
{
@@ -67,9 +67,9 @@ void ch395_cmd_set_phy(uint8_t phystat)
}
/**
- * @brief ȡphy״̬
- * @param
- * @retval ǰch395phy״̬οphy/״̬
+ * @brief 获取phy的状态
+ * @param 无
+ * @retval 当前ch395phy状态,参考phy参数/状态定义
*/
uint8_t ch395_cmd_get_phy_status(void)
{
@@ -82,9 +82,9 @@ uint8_t ch395_cmd_get_phy_status(void)
}
/**
- * @brief ȡȫж״̬յch395Զȡжϣ0x43°汾ʹ
- * @param
- * @retval صǰȫж״̬
+ * @brief 获取全局中断状态,收到此命令ch395自动取消中断,0x43及以下版本使用
+ * @param 无
+ * @retval 返回当前的全局中断状态
*/
uint8_t ch395_cmd_get_glob_int_status(void)
{
@@ -97,9 +97,9 @@ uint8_t ch395_cmd_get_glob_int_status(void)
}
/**
- * @brief ʼch395оƬ
- * @param
- * @retval ִн
+ * @brief 初始化ch395芯片
+ * @param 无
+ * @retval 返回执行结果
*/
uint8_t ch395_cmd_init(void)
{
@@ -111,17 +111,17 @@ uint8_t ch395_cmd_init(void)
while (1)
{
- HAL_Delay(10); /* ʱѯ2MS */
- s = ch395_get_cmd_status(); /* ܹƵѯ */
+ HAL_Delay(10); /* 延时查询,建议2MS以上 */
+ s = ch395_get_cmd_status(); /* 不能过于频繁查询 */
if (s != CH395_ERR_BUSY)
{
- break; /* CH395оƬæ״̬ */
+ break; /* 如果CH395芯片返回忙状态 */
}
if (i++ > 200)
{
- return CH395_ERR_UNKNOW; /* ʱ˳,Ҫ500MSִ */
+ return CH395_ERR_UNKNOW; /* 超时退出,本函数需要500MS以上执行完毕 */
}
}
@@ -129,9 +129,9 @@ uint8_t ch395_cmd_init(void)
}
/**
- * @brief ch395ڲʣڴģʽЧ
- * @param baudrate ڲ
- * @retval
+ * @brief 设置ch395串口波特率,仅在串口模式下有效
+ * @param baudrate 串口波特率
+ * @retval 无
*/
void ch395_cmd_set_uart_baud_rate(uint32_t baudrate)
{
@@ -144,9 +144,9 @@ void ch395_cmd_set_uart_baud_rate(uint32_t baudrate)
}
/**
- * @brief ȡִ״̬ijЩҪȴִн
- * @param
- * @retval һִ״̬
+ * @brief 获取命令执行状态,某些命令需要等待命令执行结果
+ * @param 无
+ * @retval 返回上一条命令执行状态
*/
uint8_t ch395_get_cmd_status(void)
{
@@ -159,9 +159,9 @@ uint8_t ch395_get_cmd_status(void)
}
/**
- * @brief ch395ipַ
- * @param ipaddr ָipַ
- * @retval
+ * @brief 设置ch395的ip地址
+ * @param ipaddr 指ip地址
+ * @retval 无
*/
void ch395_cmd_set_ipaddr(uint8_t *ipaddr)
{
@@ -178,9 +178,9 @@ void ch395_cmd_set_ipaddr(uint8_t *ipaddr)
}
/**
- * @brief ch395ipַ
- * @param ipaddr ָipַ
- * @retval
+ * @brief 设置ch395的网关ip地址
+ * @param ipaddr 指向网关ip地址
+ * @retval 无
*/
void ch395_cmd_set_gw_ipaddr(uint8_t *gwipaddr)
{
@@ -197,9 +197,9 @@ void ch395_cmd_set_gw_ipaddr(uint8_t *gwipaddr)
}
/**
- * @brief ch395룬ĬΪ255.255.255.0
- * @param maskaddr ַָ
- * @retval
+ * @brief 设置ch395的子网掩码,默认为255.255.255.0
+ * @param maskaddr 指子网掩码地址
+ * @retval 无
*/
void ch395_cmd_set_maskaddr(uint8_t *maskaddr)
{
@@ -216,9 +216,9 @@ void ch395_cmd_set_maskaddr(uint8_t *maskaddr)
}
/**
- * @brief ch395macַ
- * @param mcaddr macַָ
- * @retval
+ * @brief 设置ch395的mac地址。
+ * @param mcaddr mac地址指针
+ * @retval 无
*/
void ch395_cmd_set_macaddr(uint8_t *amcaddr)
{
@@ -236,9 +236,9 @@ void ch395_cmd_set_macaddr(uint8_t *amcaddr)
}
/**
- * @brief ȡch395macַ
- * @param amcaddr macַָ
- * @retval
+ * @brief 获取ch395的mac地址。
+ * @param amcaddr mac地址指针
+ * @retval 无
*/
void ch395_cmd_get_macaddr(uint8_t *amcaddr)
{
@@ -255,11 +255,11 @@ void ch395_cmd_get_macaddr(uint8_t *amcaddr)
}
/**
- * @brief macˡ
- * @param filtype ο mac
+ * @brief 设置mac过滤。
+ * @param filtype 参考 mac过滤
* @param table0 hash0
* @param table1 hash1
- * @retval
+ * @retval 无
*/
void ch395_cmd_set_macfilt(uint8_t filtype, uint32_t table0, uint32_t table1)
{
@@ -278,13 +278,13 @@ void ch395_cmd_set_macfilt(uint8_t filtype, uint32_t table0, uint32_t table1)
}
/**
- * @brief ȡɴϢ (ip,port,protocol type)
- * @param list ȡIJɴ
- @arg 1ֽΪɴ룬ο ɴ(ch395inc.h)
- @arg 2ֽΪipЭ
- @arg 3-4ֽΪ˿ں
- @arg 4-8ֽΪipַ
- * @retval
+ * @brief 获取不可达信息 (ip,port,protocol type)
+ * @param list 保存获取到的不可达
+ @arg 第1个字节为不可达代码,请参考 不可达代码(ch395inc.h)
+ @arg 第2个字节为ip包协议类型
+ @arg 第3-4字节为端口号
+ @arg 第4-8字节为ip地址
+ * @retval 无
*/
void ch395_cmd_get_unreachippt(uint8_t *list)
{
@@ -301,10 +301,10 @@ void ch395_cmd_get_unreachippt(uint8_t *list)
}
/**
- * @brief ȡԶ˵ipͶ˿ڵַһtcp serverģʽʹ
- * @param sockindex socket
- * @param list ipͶ˿
- * @retval
+ * @brief 获取远端的ip和端口地址,一般在tcp server模式下使用
+ * @param sockindex socket索引
+ * @param list 保存ip和端口
+ * @retval 无
*/
void ch395_cmd_get_remoteipp(uint8_t sockindex, uint8_t *list)
{
@@ -322,10 +322,10 @@ void ch395_cmd_get_remoteipp(uint8_t sockindex, uint8_t *list)
}
/**
- * @brief socket nĿipַ
- * @param sockindex socket
- * @param ipaddr ָipַ
- * @retval
+ * @brief 设置socket n的目的ip地址
+ * @param sockindex socket索引
+ * @param ipaddr 指向ip地址
+ * @retval 无
*/
void ch395_set_socket_desip(uint8_t sockindex, uint8_t *ipaddr)
{
@@ -339,10 +339,10 @@ void ch395_set_socket_desip(uint8_t sockindex, uint8_t *ipaddr)
}
/**
- * @brief socket Э
- * @param sockindex socket,prottype Э
- * @param ο socketЭͶ(ch395inc.h)
- * @retval
+ * @brief 设置socket 的协议类型
+ * @param sockindex socket索引,prottype 协议类型
+ * @param 请参考 socket协议类型定义(ch395inc.h)
+ * @retval 无
*/
void ch395_set_socket_prot_type(uint8_t sockindex, uint8_t prottype)
{
@@ -353,10 +353,10 @@ void ch395_set_socket_prot_type(uint8_t sockindex, uint8_t prottype)
}
/**
- * @brief socket nЭ
- * @param sockindex socket
- * @param desprot 2ֽĿĶ˿
- * @retval
+ * @brief 设置socket n的协议类型
+ * @param sockindex socket索引
+ * @param desprot 2字节目的端口
+ * @retval 无
*/
void ch395_set_socket_desport(uint8_t sockindex, uint16_t desprot)
{
@@ -368,10 +368,10 @@ void ch395_set_socket_desport(uint8_t sockindex, uint16_t desprot)
}
/**
- * @brief socket nЭ
- * @param sockindex socket
- * @param desprot 2ֽԴ˿
- * @retval
+ * @brief 设置socket n的协议类型
+ * @param sockindex socket索引
+ * @param desprot 2字节源端口
+ * @retval 无
*/
void ch395_set_socket_sourport(uint8_t sockindex, uint16_t surprot)
{
@@ -383,10 +383,10 @@ void ch395_set_socket_sourport(uint8_t sockindex, uint16_t surprot)
}
/**
- * @brief ipģʽ£socket ipЭֶ
- * @param sockindex socket
- * @param prototype iprawģʽ1ֽЭֶ
- * @retval
+ * @brief ip模式下,socket ip包协议字段
+ * @param sockindex socket索引
+ * @param prototype ipraw模式1字节协议字段
+ * @retval 无
*/
void ch395_set_socket_ipraw_proto(uint8_t sockindex, uint8_t prototype)
{
@@ -397,11 +397,11 @@ void ch395_set_socket_ipraw_proto(uint8_t sockindex, uint8_t prototype)
}
/**
- * @brief /ر ping
- * @param senable :0 / 1, 庬:
- * @arg 1: ping
- * @arg 0: رping
- * @retval
+ * @brief 开启/关闭 ping
+ * @param senable :0 / 1, 具体含义如下:
+ * @arg 1: 开启ping
+ * @arg 0: 关闭ping
+ * @retval 无
*/
void ch395_enable_ping(uint8_t enable)
{
@@ -411,11 +411,11 @@ void ch395_enable_ping(uint8_t enable)
}
/**
- * @brief ͻд
- * @param sockindex socket
- * @param databuf ݻ
- * @param len
- * @retval
+ * @brief 向发送缓冲区写数据
+ * @param sockindex socket索引
+ * @param databuf 数据缓冲区
+ * @param len 长度
+ * @retval 无
*/
void ch395_send_data(uint8_t sockindex, uint8_t *databuf, uint16_t len)
{
@@ -435,9 +435,9 @@ void ch395_send_data(uint8_t sockindex, uint8_t *databuf, uint16_t len)
}
/**
- * @brief ȡջ
- * @param sockindex socket
- * @retval ؽջЧ
+ * @brief 获取接收缓冲区长度
+ * @param sockindex socket索引
+ * @retval 返回接收缓冲区有效长度
*/
uint16_t ch395_get_recv_length(uint8_t sockindex)
{
@@ -452,9 +452,9 @@ uint16_t ch395_get_recv_length(uint8_t sockindex)
}
/**
- * @brief ջ
- * @param sockindex socket
- * @retval
+ * @brief 清除接收缓冲区
+ * @param sockindex socket索引
+ * @retval 无
*/
void ch395_clear_recv_buf(uint8_t sockindex)
{
@@ -464,11 +464,11 @@ void ch395_clear_recv_buf(uint8_t sockindex)
}
/**
- * @brief ȡջ
- * @param sockindex socket
- * @param len
- * @param pbuf
- * @retval
+ * @brief 读取接收缓冲区数据
+ * @param sockindex socket索引
+ * @param len 长度
+ * @param pbuf 缓冲区
+ * @retval 无
*/
void ch395_get_recv_data(uint8_t sockindex, uint16_t len, uint8_t *pbuf)
{
@@ -492,9 +492,9 @@ void ch395_get_recv_data(uint8_t sockindex, uint16_t len, uint8_t *pbuf)
}
/**
- * @brief Դ
- * @param count ֵΪ20
- * @retval
+ * @brief 设置重试次数
+ * @param count 重试值,最大为20次
+ * @retval 无
*/
void ch395_cmd_set_retry_count(uint8_t count)
{
@@ -504,9 +504,9 @@ void ch395_cmd_set_retry_count(uint8_t count)
}
/**
- * @brief
- * @param period ڵλΪ룬1000ms
- * @retval
+ * @brief 设置重试周期
+ * @param period 重试周期单位为毫秒,最大1000ms
+ * @retval 无
*/
void ch395_cmd_set_retry_period(uint16_t period)
{
@@ -517,9 +517,9 @@ void ch395_cmd_set_retry_period(uint16_t period)
}
/**
- * @brief ȡsocket
- * @param sockindex socket
- * @retval socket n״̬Ϣ1ֽΪsocket ߹ر,2ֽΪtcp״̬
+ * @brief 获取socket
+ * @param sockindex socket索引
+ * @retval socket n的状态信息,第1字节为socket 打开或者关闭,第2字节为tcp状态
*/
void ch395_cmd_get_socket_status(uint8_t sockindex, uint8_t *status)
{
@@ -531,9 +531,9 @@ void ch395_cmd_get_socket_status(uint8_t sockindex, uint8_t *status)
}
/**
- * @brief socketҪȴִгɹ
- * @param sockindex socket
- * @retval ִн
+ * @brief 打开socket,此命令需要等待执行成功
+ * @param sockindex socket索引
+ * @retval 返回执行结果
*/
uint8_t ch395_open_socket(uint8_t sockindex)
{
@@ -545,17 +545,17 @@ uint8_t ch395_open_socket(uint8_t sockindex)
while (1)
{
- HAL_Delay(5); /* ʱѯ2MS */
- s = ch395_get_cmd_status(); /* ܹƵѯ */
+ HAL_Delay(5); /* 延时查询,建议2MS以上 */
+ s = ch395_get_cmd_status(); /* 不能过于频繁查询 */
if (s != CH395_ERR_BUSY)
{
- break; /* CH395оƬæ״̬ */
+ break; /* 如果CH395芯片返回忙状态 */
}
if (i++ > 200)
{
- return CH395_ERR_UNKNOW; /* ʱ˳ */
+ return CH395_ERR_UNKNOW; /* 超时退出 */
}
}
@@ -563,9 +563,9 @@ uint8_t ch395_open_socket(uint8_t sockindex)
}
/**
- * @brief رsocket
- * @param sockindex socket
- * @retval ִн
+ * @brief 关闭socket,
+ * @param sockindex socket索引
+ * @retval 返回执行结果
*/
uint8_t ch395_close_socket(uint8_t sockindex)
{
@@ -577,17 +577,17 @@ uint8_t ch395_close_socket(uint8_t sockindex)
while (1)
{
- HAL_Delay(5); /* ʱѯ2MS */
- s = ch395_get_cmd_status(); /* ܹƵѯ */
+ HAL_Delay(5); /* 延时查询,建议2MS以上 */
+ s = ch395_get_cmd_status(); /* 不能过于频繁查询 */
if (s != CH395_ERR_BUSY)
{
- break; /* CH395оƬæ״̬ */
+ break; /* 如果CH395芯片返回忙状态 */
}
if (i++ > 200)
{
- return CH395_ERR_UNKNOW; /* ʱ˳ */
+ return CH395_ERR_UNKNOW; /* 超时退出 */
}
}
@@ -595,9 +595,9 @@ uint8_t ch395_close_socket(uint8_t sockindex)
}
/**
- * @brief tcpӣtcpģʽЧҪȴִгɹ
- * @param sockindex socket
- * @retval ִн
+ * @brief tcp连接,仅在tcp模式下有效,此命令需要等待执行成功
+ * @param sockindex socket索引
+ * @retval 返回执行结果
*/
uint8_t ch395_tcp_connect(uint8_t sockindex)
{
@@ -609,17 +609,17 @@ uint8_t ch395_tcp_connect(uint8_t sockindex)
while (1)
{
- HAL_Delay(5); /* ʱѯ2MS */
- s = ch395_get_cmd_status(); /* ܹƵѯ */
+ HAL_Delay(5); /* 延时查询,建议2MS以上 */
+ s = ch395_get_cmd_status(); /* 不能过于频繁查询 */
if (s != CH395_ERR_BUSY)
{
- break; /* CH395оƬæ״̬ */
+ break; /* 如果CH395芯片返回忙状态 */
}
if (i++ > 200)
{
- return CH395_ERR_UNKNOW; /* ʱ˳ */
+ return CH395_ERR_UNKNOW; /* 超时退出 */
}
}
@@ -627,9 +627,9 @@ uint8_t ch395_tcp_connect(uint8_t sockindex)
}
/**
- * @brief tcptcpģʽЧҪȴִгɹ
- * @param sockindex socket
- * @retval ִн
+ * @brief tcp监听,仅在tcp模式下有效,此命令需要等待执行成功
+ * @param sockindex socket索引
+ * @retval 返回执行结果
*/
uint8_t ch395_tcp_listen(uint8_t sockindex)
{
@@ -641,17 +641,17 @@ uint8_t ch395_tcp_listen(uint8_t sockindex)
while (1)
{
- HAL_Delay(5); /* ʱѯ2MS */
- s = ch395_get_cmd_status(); /* ܹƵѯ */
+ HAL_Delay(5); /* 延时查询,建议2MS以上 */
+ s = ch395_get_cmd_status(); /* 不能过于频繁查询 */
if (s != CH395_ERR_BUSY)
{
- break; /* CH395оƬæ״̬ */
+ break; /* 如果CH395芯片返回忙状态 */
}
if (i++ > 200)
{
- return CH395_ERR_UNKNOW; /* ʱ˳ */
+ return CH395_ERR_UNKNOW; /* 超时退出 */
}
}
@@ -659,9 +659,9 @@ uint8_t ch395_tcp_listen(uint8_t sockindex)
}
/**
- * @brief tcpϿtcpģʽЧҪȴִгɹ
- * @param sockindex socket
- * @retval
+ * @brief tcp断开,仅在tcp模式下有效,此命令需要等待执行成功
+ * @param sockindex socket索引
+ * @retval 无
*/
uint8_t ch395_tcp_disconnect(uint8_t sockindex)
{
@@ -673,26 +673,26 @@ uint8_t ch395_tcp_disconnect(uint8_t sockindex)
while (1)
{
- HAL_Delay(5); /* ʱѯ2MS */
- s = ch395_get_cmd_status(); /* ܹƵѯ */
+ HAL_Delay(5); /* 延时查询,建议2MS以上 */
+ s = ch395_get_cmd_status(); /* 不能过于频繁查询 */
if (s != CH395_ERR_BUSY)
{
- break; /* CH395оƬæ״̬ */
+ break; /* 如果CH395芯片返回忙状态 */
}
if (i++ > 200)
{
- return CH395_ERR_UNKNOW; /* ʱ˳ */
+ return CH395_ERR_UNKNOW; /* 超时退出 */
}
}
return s;
}
/**
- * @brief ȡsocket nж״̬
- * @param sockindex socket
- * @retval ж״̬
+ * @brief 获取socket n的中断状态
+ * @param sockindex socket索引
+ * @retval 中断状态
*/
uint8_t ch395_get_socket_int(uint8_t sockindex)
{
@@ -706,9 +706,9 @@ uint8_t ch395_get_socket_int(uint8_t sockindex)
}
/**
- * @brief Զಥַcrc㣬ȡ6λ
- * @param mac_addr macַ
- * @retval crc32ĸ6λ
+ * @brief 对多播地址进行crc运算,并取高6位。
+ * @param mac_addr mac地址
+ * @retval 返回crc32的高6位
*/
uint8_t ch395_crcret_6bit(uint8_t *mac_addr)
{
@@ -734,11 +734,11 @@ uint8_t ch395_crcret_6bit(uint8_t *mac_addr)
}
/**
- * @brief /ֹͣdhcp
- * @param flag:0 / 1, 庬:
- * @arg 1:dhcp
- * @arg 0ֹͣdhcp
- * @retval ִ״̬
+ * @brief 启动/停止dhcp
+ * @param flag:0 / 1, 具体含义如下:
+ * @arg 1:启动dhcp
+ * @arg 0:停止dhcp
+ * @retval 执行状态
*/
uint8_t ch395_dhcp_enable(uint8_t flag)
{
@@ -751,16 +751,16 @@ uint8_t ch395_dhcp_enable(uint8_t flag)
while (1)
{
HAL_Delay(20);
- s = ch395_get_cmd_status(); /* ܹƵѯ */
+ s = ch395_get_cmd_status(); /* 不能过于频繁查询 */
if(s != CH395_ERR_BUSY)
{
- break; /* ch395оƬæ״̬ */
+ break; /* 如果ch395芯片返回忙状态 */
}
if(i++ > 200)
{
- return CH395_ERR_UNKNOW; /* ʱ˳ */
+ return CH395_ERR_UNKNOW; /* 超时退出 */
}
}
@@ -768,9 +768,9 @@ uint8_t ch395_dhcp_enable(uint8_t flag)
}
/**
- * @brief ȡdhcp״̬
- * @param
- * @retval dhcp״̬0Ϊɹֵʾ
+ * @brief 获取dhcp状态
+ * @param 无
+ * @retval dhcp状态,0为成功,其他值表示错误
*/
uint8_t ch395_get_dhcp_status(void)
{
@@ -782,9 +782,9 @@ uint8_t ch395_get_dhcp_status(void)
}
/**
- * @brief ȡipصַ
- * @param sockindex socket
- * @retval 12ֽڵip,صַ
+ * @brief 获取ip,子网掩码和网关地址
+ * @param sockindex socket索引
+ * @retval 12个字节的ip,子网掩码和网关地址
*/
void ch395_get_ipinf(uint8_t *addr)
{
@@ -800,10 +800,10 @@ void ch395_get_ipinf(uint8_t *addr)
}
/**
- * @brief дgpioĴ
- * @param regadd Ĵַ
- * @param regval Ĵֵ
- * @retval
+ * @brief 写gpio寄存器
+ * @param regadd 寄存器地址
+ * @param regval 寄存器值
+ * @retval 无
*/
void ch395_write_gpio_addr(uint8_t regadd, uint8_t regval)
{
@@ -813,9 +813,9 @@ void ch395_write_gpio_addr(uint8_t regadd, uint8_t regval)
}
/**
- * @brief gpioĴ
- * @param regadd Ĵַ
- * @retval Ĵֵ
+ * @brief 读gpio寄存器
+ * @param regadd 寄存器地址
+ * @retval 寄存器的值
*/
uint8_t ch395_read_gpio_addr(uint8_t regadd)
{
@@ -828,9 +828,9 @@ uint8_t ch395_read_gpio_addr(uint8_t regadd)
}
/**
- * @brief eeprom
- * @param
- * @retval ִ״̬
+ * @brief 擦除eeprom
+ * @param 无
+ * @retval 执行状态
*/
uint8_t ch395_eeprom_erase(void)
{
@@ -854,11 +854,11 @@ uint8_t ch395_eeprom_erase(void)
}
/**
- * @brief дeeprom
- * @param eepaddr eepromַ
- * @param buf ַ
- * @param len
- * @retval
+ * @brief 写eeprom
+ * @param eepaddr eeprom地址
+ * @param buf 缓冲区地址
+ * @param len 长度
+ * @retval 无
*/
uint8_t ch395_eeprom_write(uint16_t eepaddr, uint8_t *buf, uint8_t len)
{
@@ -887,11 +887,11 @@ uint8_t ch395_eeprom_write(uint16_t eepaddr, uint8_t *buf, uint8_t len)
}
/**
- * @brief дeeprom
- * @param eepaddr eepromַ
- * @param buf ַ
- * @param len
- * @retval
+ * @brief 写eeprom
+ * @param eepaddr eeprom地址
+ * @param buf 缓冲区地址
+ * @param len 长度
+ * @retval 无
*/
void ch395_eeprom_read(uint16_t eepaddr, uint8_t *buf, uint8_t len)
{
@@ -908,9 +908,9 @@ void ch395_eeprom_read(uint16_t eepaddr, uint8_t *buf, uint8_t len)
}
/**
- * @brief tcp mssֵ
+ * @brief 设置tcp mss值
* @param tcpmss
- * @retval
+ * @retval 无
*/
void ch395_set_tcpmss(uint16_t tcpmss)
{
@@ -920,11 +920,11 @@ void ch395_set_tcpmss(uint16_t tcpmss)
}
/**
- * @brief socketջ
- * @param sockindex socket,ַ,blknum
- * @param startblk ʼ
- * @param λ λΪ512ֽ
- * @retval
+ * @brief 设置socket接收缓冲区
+ * @param sockindex socket索引,址,blknum
+ * @param startblk 起始地
+ * @param 单位缓冲区个数 ,单位为512字节
+ * @retval 无
*/
void ch395_set_socket_recv_buf(uint8_t sockindex, uint8_t startblk, uint8_t blknum)
{
@@ -935,11 +935,11 @@ void ch395_set_socket_recv_buf(uint8_t sockindex, uint8_t startblk, uint8_t blkn
}
/**
- * @brief socketͻ
- * @param sockindex socket
- * @param startblk ʼַ
- * @param blknum λ
- * @retval
+ * @brief 设置socket发送缓冲区
+ * @param sockindex socket索引
+ * @param startblk 起始地址
+ * @param blknum 单位缓冲区个数
+ * @retval 无
*/
void ch395_set_socket_send_buf(uint8_t sockindex, uint8_t startblk, uint8_t blknum)
{
@@ -950,25 +950,25 @@ void ch395_set_socket_send_buf(uint8_t sockindex, uint8_t startblk, uint8_t blkn
}
/**
- * @brief udpָipͶ˿ڷ
- * @param buf : ݻ
- * @param len : ݳ
- * @param ip : Ŀip
- * @param port : Ŀ˿
- * @param sockeid : socketֵ
- * @retval
+ * @brief udp向指定的ip和端口发送数据
+ * @param buf : 发送数据缓冲区
+ * @param len : 发送数据长度
+ * @param ip : 目标ip
+ * @param port : 目标端口
+ * @param sockeid : socket索引值
+ * @retval 无
*/
void ch395_udp_send_data(uint8_t *buf, uint32_t len, uint8_t *ip, uint16_t port, uint8_t sockindex)
{
- ch395_set_socket_desip(sockindex, ip); /* socket 0ĿIPַ */
+ ch395_set_socket_desip(sockindex, ip); /* 设置socket 0目标IP地址 */
ch395_set_socket_desport(sockindex, port);
ch395_send_data(sockindex, buf, len);
}
/**
- * @brief ch395
- * @param mdata õIJ
- * @retval
+ * @brief 设置ch395启动参数
+ * @param mdata 设置的参数
+ * @retval 无
*/
void ch395_set_start_para(uint32_t mdata)
{
@@ -980,9 +980,9 @@ void ch395_set_start_para(uint32_t mdata)
}
/**
- * @brief ȡȫж״̬յch395Զȡж,0x44ϰ汾ʹ
- * @param
- * @retval صǰȫж״̬
+ * @brief 获取全局中断状态,收到此命令ch395自动取消中断,0x44及以上版本使用
+ * @param 无
+ * @retval 返回当前的全局中断状态
*/
uint16_t ch395_cmd_get_glob_int_status_all(void)
{
@@ -996,10 +996,10 @@ uint16_t ch395_cmd_get_glob_int_status_all(void)
}
/**
- * @brief keepalive
- * @param sockindex socket
- * @param cmd 0ر 1
- * @retval
+ * @brief 设置keepalive功能
+ * @param sockindex socket号
+ * @param cmd 0:关闭 1:开启
+ * @retval 无
*/
void ch395_set_keeplive(uint8_t sockindex, uint8_t cmd)
{
@@ -1009,9 +1009,9 @@ void ch395_set_keeplive(uint8_t sockindex, uint8_t cmd)
}
/**
- * @brief keepaliveԴ
- * @param cnt Դ
- * @retval
+ * @brief 设置keepalive重试次数
+ * @param cnt 重试次数()
+ * @retval 无
*/
void ch395_keeplive_cnt(uint8_t cnt)
{
@@ -1020,9 +1020,9 @@ void ch395_keeplive_cnt(uint8_t cnt)
}
/**
- * @brief keeplive
- * @param idle ʱ䣨λms
- * @retval
+ * @brief 设置keeplive空闲
+ * @param idle 空闲时间(单位:ms)
+ * @retval 无
*/
void ch395_keeplive_idle(uint32_t idle)
{
@@ -1034,9 +1034,9 @@ void ch395_keeplive_idle(uint32_t idle)
}
/**
- * @brief keepliveʱ
- * @param intvl ʱ䣨λms
- * @retval
+ * @brief 设置keeplive间隔时间
+ * @param intvl 间隔时间(单位:ms)
+ * @retval 无
*/
void ch395_keeplive_intvl(uint32_t intvl)
{
@@ -1048,10 +1048,10 @@ void ch395_keeplive_intvl(uint32_t intvl)
}
/**
- * @brief ttl
- * @param ssockindex socket
- * @param ttlnum:ttl
- * @retval
+ * @brief 设置ttl
+ * @param ssockindex socket号
+ * @param ttlnum:ttl数
+ * @retval 无
*/
void ch395_setttl_num(uint8_t sockindex, uint8_t ttlnum)
{
diff --git a/CH395Q/ch395inc.h b/CH395Q/ch395inc.h
index 222fb66..8031a53 100644
--- a/CH395Q/ch395inc.h
+++ b/CH395Q/ch395inc.h
@@ -7,7 +7,7 @@
#include "usart.h"
#include "spi.h"
/* ********************************************************************************************************************* */
-/* ͺͳ */
+/* 常用类型和常量定义 */
#ifdef __cplusplus
extern "C" {
#endif
@@ -20,225 +20,225 @@ extern "C" {
#define NULL 0
#endif
-/* :
- * һ˳:
- * һ(ڴڷʽ,֮ǰҪͬ)
- * ɸ(0)
- * ɸ(0)
- * : CMDxy_NAME
- * еxy, x˵ݸ(ֽ), y˵ݸ(ֽ), yWʾҪȴִгɹ
- * Щܹʵ0ֽڵݿд, ݿ鱾ֽδxy֮
+/* 命令代码:
+ * 一个命令操作顺序包含:
+ * 一个命令码(对于串口方式,命令码之前还需要两个同步码)
+ * 若干个输入数据(可以是0个)
+ * 若干个输出数据(可以是0个)
+ * 命令码起名规则: CMDxy_NAME
+ * 其中的x和y都是数字, x说明最少输入数据个数(字节数), y说明最少输出数据个数(字节数), y如果是W表示需要等待命令执行成功
+ * 有些命令能够实现0到多个字节的数据块读写, 数据块本身的字节数未包含在上述x或y之内
*/
-#define CMD01_GET_IC_VER 0x01 /* ȡоƬԼ̼汾 */
+#define CMD01_GET_IC_VER 0x01 /* 获取芯片以及固件版本号 */
-#define CMD31_SET_BAUDRATE 0x02 /* ڷʽ: ôͨѶ(ϵ߸λĬϲΪ9600bps */
+#define CMD31_SET_BAUDRATE 0x02 /* 串口方式: 设置串口通讯波特率(上电或者复位后的默认波特率为9600bps */
-#define CMD00_ENTER_SLEEP 0x03 /* ˯״̬ */
+#define CMD00_ENTER_SLEEP 0x03 /* 进入睡眠状态 */
-#define CMD00_RESET_ALL 0x05 /* ִӲλ */
+#define CMD00_RESET_ALL 0x05 /* 执行硬件复位 */
-#define CMD11_CHECK_EXIST 0x06 /* ͨѶӿԼ״̬ */
+#define CMD11_CHECK_EXIST 0x06 /* 测试通讯接口以及工作状态 */
-#define CMD02_GET_GLOB_INT_STATUS_ALL 0x19 /* ȡȫж״̬V44汾ԺijsocketҪôȡȫж */
+#define CMD02_GET_GLOB_INT_STATUS_ALL 0x19 /* 获取全局中断状态,V44版本以后的程序由于增加了socket数量需要用此命令获取全部的中断 */
-#define CMD10_SET_PHY 0x20 /* PHYĬΪAutoԶЭ */
+#define CMD10_SET_PHY 0x20 /* 设置PHY,默认为Auto,自动协商 */
-#define CMD60_SET_MAC_ADDR 0x21 /* MACַ CMD00H_INIT_CH395֮ǰ */
+#define CMD60_SET_MAC_ADDR 0x21 /* 设置MAC地址 必须在CMD00H_INIT_CH395之前设置完毕 */
-#define CMD40_SET_IP_ADDR 0x22 /* IPַ CMD00H_INIT_CH395֮ǰ */
+#define CMD40_SET_IP_ADDR 0x22 /* 设置IP地址 必须在CMD00H_INIT_CH395之前设置完毕 */
-#define CMD40_SET_GWIP_ADDR 0x23 /* IPַ CMD00H_INIT_CH395֮ǰ */
+#define CMD40_SET_GWIP_ADDR 0x23 /* 设置网关IP地址 必须在CMD00H_INIT_CH395之前设置完毕 */
-#define CMD40_SET_MASK_ADDR 0x24 /* 룬 CMD00H_INIT_CH395֮ǰ */
+#define CMD40_SET_MASK_ADDR 0x24 /* 设置子网掩码, 必须在CMD00H_INIT_CH395之前设置完毕 */
-#define CMD90_SET_MAC_FILT 0x25 /* MAC Խй㲥ಥȹ */
+#define CMD90_SET_MAC_FILT 0x25 /* 设置MAC过滤 可以进行广播,多播等过滤 */
-#define CMD01_GET_PHY_STATUS 0x26 /* ȡPHYǰ״̬Ͽӣ10/100M FULL/HALF */
+#define CMD01_GET_PHY_STATUS 0x26 /* 获取PHY当前状态,如断开连接,10/100M FULL/HALF */
-#define CMD0W_INIT_CH395 0x27 /* ʼCH395 */
+#define CMD0W_INIT_CH395 0x27 /* 初始化CH395 */
-#define CMD08_GET_UNREACH_IPPORT 0x28 /* ȡɴϢ */
+#define CMD08_GET_UNREACH_IPPORT 0x28 /* 获取不可达信息 */
-#define CMD01_GET_GLOB_INT_STATUS 0x29 /* ȡȫж״ֵ̬Ϊ1SΪ0 */
+#define CMD01_GET_GLOB_INT_STATUS 0x29 /* 获取全局中断状态,最大值为1S,不可以设置为0 */
-#define CMD10_SET_RETRAN_COUNT 0x2A /* ԴTCPģʽЧ */
+#define CMD10_SET_RETRAN_COUNT 0x2A /* 重试次数,仅在TCP模式下有效 */
-#define CMD20_SET_RETRAN_PERIOD 0x2B /* ڣֵΪ20TCPģʽЧΪ0 */
+#define CMD20_SET_RETRAN_PERIOD 0x2B /* 重试周期,最大值为20,仅在TCP模式下有效,不可以设置为0 */
-#define CMD01_GET_CMD_STATUS 0x2C /* ȡִ״̬ */
+#define CMD01_GET_CMD_STATUS 0x2C /* 获取命令执行状态 */
-#define CMD06_GET_REMOT_IPP_SN 0x2D /* ȡԶ˵Ķ˿ԼIPַTCPģʽʹ */
+#define CMD06_GET_REMOT_IPP_SN 0x2D /* 获取远端的端口以及IP地址,该命令在TCP服务器模式下使用 */
-#define CMD10_CLEAR_RECV_BUF_SN 0x2E /* ջ */
+#define CMD10_CLEAR_RECV_BUF_SN 0x2E /* 清除接收缓冲区 */
-#define CMD12_GET_SOCKET_STATUS_SN 0x2F /* ȡsocket n״̬ */
+#define CMD12_GET_SOCKET_STATUS_SN 0x2F /* 获取socket n状态 */
-#define CMD11_GET_INT_STATUS_SN 0x30 /* ȡsocket nж״̬ */
+#define CMD11_GET_INT_STATUS_SN 0x30 /* 获取socket n的中断状态 */
-#define CMD50_SET_IP_ADDR_SN 0x31 /* socket nĿIPַ */
+#define CMD50_SET_IP_ADDR_SN 0x31 /* 设置socket n的目的IP地址 */
-#define CMD30_SET_DES_PORT_SN 0x32 /* socket nĿĶ˿ */
+#define CMD30_SET_DES_PORT_SN 0x32 /* 设置socket n的目的端口 */
-#define CMD30_SET_SOUR_PORT_SN 0x33 /* socket nԴ˿ */
+#define CMD30_SET_SOUR_PORT_SN 0x33 /* 设置socket n的源端口 */
-#define CMD20_SET_PROTO_TYPE_SN 0x34 /* socket nЭ */
+#define CMD20_SET_PROTO_TYPE_SN 0x34 /* 设置socket n的协议类型 */
-#define CMD1W_OPEN_SOCKET_SN 0x35 /* socket n */
+#define CMD1W_OPEN_SOCKET_SN 0x35 /* 打开socket n */
-#define CMD1W_TCP_LISTEN_SN 0x36 /* socket nյsocket nģʽTCPģʽЧ */
+#define CMD1W_TCP_LISTEN_SN 0x36 /* socket n监听,收到此命令,socket n进入服务器模式,仅对TCP模式有效 */
-#define CMD1W_TCP_CONNECT_SN 0x37 /* socket nӣյsocket nͻģʽTCPģʽЧ */
+#define CMD1W_TCP_CONNECT_SN 0x37 /* socket n连接,收到此命令,socket n进入客户端模式,仅对TCP模式有效 */
-#define CMD1W_TCP_DISNCONNECT_SN 0x38 /* socket nϿӣյsocket nϿӣTCPģʽЧ */
+#define CMD1W_TCP_DISNCONNECT_SN 0x38 /* socket n断开连接,收到此命令,socket n断开已有连接,仅对TCP模式有效 */
-#define CMD30_WRITE_SEND_BUF_SN 0x39 /* socket nд */
+#define CMD30_WRITE_SEND_BUF_SN 0x39 /* 向socket n缓冲区写入数据 */
-#define CMD12_GET_RECV_LEN_SN 0x3B /* ȡsocket nݵij */
+#define CMD12_GET_RECV_LEN_SN 0x3B /* 获取socket n接收数据的长度 */
-#define CMD30_READ_RECV_BUF_SN 0x3C /* ȡsocket nջ */
+#define CMD30_READ_RECV_BUF_SN 0x3C /* 读取socket n接收缓冲区数据 */
-#define CMD1W_CLOSE_SOCKET_SN 0x3D /* رsocket n */
+#define CMD1W_CLOSE_SOCKET_SN 0x3D /* 关闭socket n */
-#define CMD20_SET_IPRAW_PRO_SN 0x3E /* IP RAW£socket nIPЭ */
+#define CMD20_SET_IPRAW_PRO_SN 0x3E /* 在IP RAW下,设置socket n的IP包协议类型 */
-#define CMD01_PING_ENABLE 0x3F /* /رPING */
+#define CMD01_PING_ENABLE 0x3F /* 开启/关闭PING */
-#define CMD06_GET_MAC_ADDR 0x40 /* ȡMACַ */
+#define CMD06_GET_MAC_ADDR 0x40 /* 获取MAC地址 */
-#define CMD10_DHCP_ENABLE 0x41 /* DHCPʹ */
+#define CMD10_DHCP_ENABLE 0x41 /* DHCP使能 */
-#define CMD01_GET_DHCP_STATUS 0x42 /* ȡDHCP״̬ */
+#define CMD01_GET_DHCP_STATUS 0x42 /* 获取DHCP状态 */
-#define CMD014_GET_IP_INF 0x43 /* IP,룬 */
+#define CMD014_GET_IP_INF 0x43 /* IP,子网掩码,网关 */
-#define CMD00_PPPOE_SET_USER_NAME 0x44 /* PPPOEû */
+#define CMD00_PPPOE_SET_USER_NAME 0x44 /* 设置PPPOE用户名 */
-#define CMD00_PPPOE_SET_PASSWORD 0x45 /* */
+#define CMD00_PPPOE_SET_PASSWORD 0x45 /* 设置密码 */
-#define CMD10_PPPOE_ENABLE 0x46 /* PPPOEʹ */
+#define CMD10_PPPOE_ENABLE 0x46 /* PPPOE使能 */
-#define CMD01_GET_PPPOE_STATUS 0x47 /* ȡpppoe״̬ */
+#define CMD01_GET_PPPOE_STATUS 0x47 /* 获取pppoe状态 */
-#define CMD20_SET_TCP_MSS 0x50 /* TCP MSS */
+#define CMD20_SET_TCP_MSS 0x50 /* 设置TCP MSS */
-#define CMD20_SET_TTL 0x51 /* TTLTTLֵΪ128 */
+#define CMD20_SET_TTL 0x51 /* 设置TTL,TTL最大值为128 */
-#define CMD30_SET_RECV_BUF 0x52 /* SOCKETջ */
+#define CMD30_SET_RECV_BUF 0x52 /* 设置SOCKET接收缓冲区 */
-#define CMD30_SET_SEND_BUF 0x53 /* SOCKETͻ */
+#define CMD30_SET_SEND_BUF 0x53 /* 设置SOCKET发送缓冲区 */
-#define CMD10_SET_MAC_RECV_BUF 0x54 /* MACջ */
+#define CMD10_SET_MAC_RECV_BUF 0x54 /* 设置MAC接收缓冲区 */
-#define CMD40_SET_FUN_PARA 0x55 /* ùܲ */
+#define CMD40_SET_FUN_PARA 0x55 /* 设置功能参数 */
-#define CMD40_SET_KEEP_LIVE_IDLE 0x56 /* KEEPLIVE */
+#define CMD40_SET_KEEP_LIVE_IDLE 0x56 /* 设置KEEPLIVE空闲 */
-#define CMD40_SET_KEEP_LIVE_INTVL 0x57 /* üʱ */
+#define CMD40_SET_KEEP_LIVE_INTVL 0x57 /* 设置间隔时间 */
-#define CMD10_SET_KEEP_LIVE_CNT 0x58 /* Դ */
+#define CMD10_SET_KEEP_LIVE_CNT 0x58 /* 重试次数 */
-#define CMD20_SET_KEEP_LIVE_SN 0X59 /* socket nkeeplive*/
+#define CMD20_SET_KEEP_LIVE_SN 0X59 /* 设置socket nkeeplive功能*/
-#define CMD00_EEPROM_ERASE 0xE9 /* EEPROM*/
+#define CMD00_EEPROM_ERASE 0xE9 /* 擦除EEPROM*/
-#define CMD30_EEPROM_WRITE 0xEA /* дEEPROM */
+#define CMD30_EEPROM_WRITE 0xEA /* 写EEPROM */
-#define CMD30_EEPROM_READ 0xEB /* EEPROM */
+#define CMD30_EEPROM_READ 0xEB /* 读EEPROM */
-#define CMD10_READ_GPIO_REG 0xEC /* GPIOĴ */
+#define CMD10_READ_GPIO_REG 0xEC /* 读GPIO寄存器 */
-#define CMD20_WRITE_GPIO_REG 0xED /* дGPIOĴ */
+#define CMD20_WRITE_GPIO_REG 0xED /* 写GPIO寄存器 */
-/* Э */
-#define PROTO_TYPE_IP_RAW 0 /* IPԭʼ */
-#define PROTO_TYPE_MAC_RAW 1 /* MACԭʼ */
-#define PROTO_TYPE_UDP 2 /* UDPЭ */
-#define PROTO_TYPE_TCP 3 /* TCPЭ */
+/* 协议类型 */
+#define PROTO_TYPE_IP_RAW 0 /* IP层原始数据 */
+#define PROTO_TYPE_MAC_RAW 1 /* MAC层原始数据 */
+#define PROTO_TYPE_UDP 2 /* UDP协议类型 */
+#define PROTO_TYPE_TCP 3 /* TCP协议类型 */
-/* PHY /״̬ */
-#define PHY_DISCONN (1<<0) /* PHYϿ */
-#define PHY_10M_FLL (1<<1) /* 10Mȫ˫ */
-#define PHY_10M_HALF (1<<2) /* 10M˫ */
-#define PHY_100M_FLL (1<<3) /* 100Mȫ˫ */
-#define PHY_100M_HALF (1<<4) /* 100M˫ */
-#define PHY_AUTO (1<<5) /* PHYԶģʽCMD10H_SET_PHY */
-#define PHY_ERROR (1<<6) /* PHY */
+/* PHY 命令参数/状态 */
+#define PHY_DISCONN (1<<0) /* PHY断开 */
+#define PHY_10M_FLL (1<<1) /* 10M全双工 */
+#define PHY_10M_HALF (1<<2) /* 10M半双工 */
+#define PHY_100M_FLL (1<<3) /* 100M全双工 */
+#define PHY_100M_HALF (1<<4) /* 100M半双工 */
+#define PHY_AUTO (1<<5) /* PHY自动模式,CMD10H_SET_PHY */
+#define PHY_ERROR (1<<6) /* PHY错误 */
-/* CH395 MAC */
-#define MAC_FILT_RECV_BORADPKT (1<<0) /* ʹܽչ㲥 */
-#define MAC_FILT_RECV_ALL (1<<1) /* ʹܽݰ */
-#define MAC_FILT_RECV_MULTIPKT (1<<2) /* ʹܽնಥ */
-#define MAC_FILT_RECV_ENABLE (1<<3) /* ʹܽ */
-#define MAC_FILT_SEND_ENABLE (1<<4) /* ʹܷ */
+/* CH395 MAC过滤 */
+#define MAC_FILT_RECV_BORADPKT (1<<0) /* 使能接收广播包 */
+#define MAC_FILT_RECV_ALL (1<<1) /* 使能接收所有数据包 */
+#define MAC_FILT_RECV_MULTIPKT (1<<2) /* 使能接收多播包 */
+#define MAC_FILT_RECV_ENABLE (1<<3) /* 使能接收 */
+#define MAC_FILT_SEND_ENABLE (1<<4) /* 使能发送 */
-/* ж״̬ */
-/* ΪGLOB_INT״̬ */
-#define GINT_STAT_UNREACH (1<<0) /* ɴж */
-#define GINT_STAT_IP_CONFLI (1<<1) /* IPͻ */
-#define GINT_STAT_PHY_CHANGE (1<<2) /* PHY״̬ı */
-#define GINT_STAT_DHCP (1<<3) /* PHY״̬ı */
-#define GINT_STAT_SOCK0 (1<<4) /* socket0 ж */
-#define GINT_STAT_SOCK1 (1<<5) /* socket1 ж */
-#define GINT_STAT_SOCK2 (1<<6) /* socket2 ж */
-#define GINT_STAT_SOCK3 (1<<7) /* socket3 ж */
-#define GINT_STAT_SOCK4 (1<<8) /* scoket4 ж */
-#define GINT_STAT_SOCK5 (1<<9) /* scoket5 ж */
-#define GINT_STAT_SOCK6 (1<<10) /* scoket6 ж */
-#define GINT_STAT_SOCK7 (1<<11) /* scoket7 ж */
+/* 中断状态 */
+/* 以下为GLOB_INT会产生的状态 */
+#define GINT_STAT_UNREACH (1<<0) /* 不可达中断 */
+#define GINT_STAT_IP_CONFLI (1<<1) /* IP冲突 */
+#define GINT_STAT_PHY_CHANGE (1<<2) /* PHY状态改变 */
+#define GINT_STAT_DHCP (1<<3) /* PHY状态改变 */
+#define GINT_STAT_SOCK0 (1<<4) /* socket0 产生中断 */
+#define GINT_STAT_SOCK1 (1<<5) /* socket1 产生中断 */
+#define GINT_STAT_SOCK2 (1<<6) /* socket2 产生中断 */
+#define GINT_STAT_SOCK3 (1<<7) /* socket3 产生中断 */
+#define GINT_STAT_SOCK4 (1<<8) /* scoket4 产生中断 */
+#define GINT_STAT_SOCK5 (1<<9) /* scoket5 产生中断 */
+#define GINT_STAT_SOCK6 (1<<10) /* scoket6 产生中断 */
+#define GINT_STAT_SOCK7 (1<<11) /* scoket7 产生中断 */
-/* ΪSn_INT״̬ */
-#define SINT_STAT_SENBUF_FREE (1<<0) /* ͻ */
-#define SINT_STAT_SEND_OK (1<<1) /* ͳɹ */
-#define SINT_STAT_RECV (1<<2) /* socket˿ڽյݻ߽ջΪ */
-#define SINT_STAT_CONNECT (1<<3) /* ӳɹ,TCPģʽ²ж */
-#define SINT_STAT_DISCONNECT (1<<4) /* ӶϿ,TCPģʽ²ж */
-#define SINT_STAT_TIM_OUT (1<<6) /* ARPTCPģʽ»ᷢж */
+/* 以下为Sn_INT会产生的状态 */
+#define SINT_STAT_SENBUF_FREE (1<<0) /* 发送缓冲区空闲 */
+#define SINT_STAT_SEND_OK (1<<1) /* 发送成功 */
+#define SINT_STAT_RECV (1<<2) /* socket端口接收到数据或者接收缓冲区不为空 */
+#define SINT_STAT_CONNECT (1<<3) /* 连接成功,TCP模式下产生此中断 */
+#define SINT_STAT_DISCONNECT (1<<4) /* 连接断开,TCP模式下产生此中断 */
+#define SINT_STAT_TIM_OUT (1<<6) /* ARP和TCP模式下会发生此中断 */
-/* ȡ״̬ */
-#define CMD_ERR_SUCCESS 0x00 /* ɹ */
-#define CMD_RET_ABORT 0x5F /* ʧ */
-#define CH395_ERR_BUSY 0x10 /* æ״̬ʾǰִ */
-#define CH395_ERR_MEM 0x11 /* ڴ */
-#define CH395_ERR_BUF 0x12 /* */
-#define CH395_ERR_TIMEOUT 0x13 /* ʱ */
-#define CH395_ERR_RTE 0x14 /* ·ɴ*/
-#define CH395_ERR_ABRT 0x15 /* ֹͣ*/
-#define CH395_ERR_RST 0x16 /* Ӹλ */
-#define CH395_ERR_CLSD 0x17 /* ӹر/socket ڹر״̬ */
-#define CH395_ERR_CONN 0x18 /* */
-#define CH395_ERR_VAL 0x19 /* ֵ */
-#define CH395_ERR_ARG 0x1a /* IJ */
-#define CH395_ERR_USE 0x1b /* Ѿʹ */
-#define CH395_ERR_IF 0x1c /* MAC */
-#define CH395_ERR_ISCONN 0x1d /* */
-#define CH395_ERR_OPEN 0X20 /* Ѿ */
-#define CH395_ERR_UNKNOW 0xFA /* δ֪ */
-
-/* PPP״̬ */
-#define CH395_PPP_SUCCESS 0 /* ɹ */
-#define CH395_PPPERR_PARM 1 /* Ч */
-#define CH395_PPPERR_OPEN 2 /* PPPỰ */
-#define CH395_PPPERR_DEVICE 3 /* ЧPPP豸 */
-#define CH395_PPPERR_ALLOC 4 /* Դʧ */
-#define CH395_PPPERR_USER 5 /* ûж */
-#define CH395_PPPERR_CONNECT 6 /* ӶϿ */
-#define CH395_PPPERR_AUTHFAIL 7 /* սʧ */
-#define CH395_PPPERR_PROTOCOL 8 /* Эʧ */
-#define CH395_PPPERR_TIME_OUT 9 /* ʱʧ */
-#define CH395_PPPERR_CLOSE 10 /* رʧ */
-
-/* ɴ */
-#define UNREACH_CODE_HOST 0 /* ɴ */
-#define UNREACH_CODE_NET 1 /* 粻ɴ */
-#define UNREACH_CODE_PROTOCOL 2 /* Э鲻ɴ */
-#define UNREACH_CODE_PROT 3 /* ˿ڲɴ */
-/* ֵοRFC792ĵ */
-
-/* ͷ */
-#define SER_SYNC_CODE1 0x57 /* ͬ1 */
-#define SER_SYNC_CODE2 0xAB /* ͬ2 */
-
-/* TCP״̬ */
+/* 获取命令状态 */
+#define CMD_ERR_SUCCESS 0x00 /* 命令操作成功 */
+#define CMD_RET_ABORT 0x5F /* 命令操作失败 */
+#define CH395_ERR_BUSY 0x10 /* 忙状态,表示当前正在执行命令 */
+#define CH395_ERR_MEM 0x11 /* 内存错误 */
+#define CH395_ERR_BUF 0x12 /* 缓冲区错误 */
+#define CH395_ERR_TIMEOUT 0x13 /* 超时 */
+#define CH395_ERR_RTE 0x14 /* 路由错误*/
+#define CH395_ERR_ABRT 0x15 /* 连接停止*/
+#define CH395_ERR_RST 0x16 /* 连接复位 */
+#define CH395_ERR_CLSD 0x17 /* 连接关闭/socket 在关闭状态 */
+#define CH395_ERR_CONN 0x18 /* 无连接 */
+#define CH395_ERR_VAL 0x19 /* 错误的值 */
+#define CH395_ERR_ARG 0x1a /* 错误的参数 */
+#define CH395_ERR_USE 0x1b /* 已经被使用 */
+#define CH395_ERR_IF 0x1c /* MAC错误 */
+#define CH395_ERR_ISCONN 0x1d /* 已连接 */
+#define CH395_ERR_OPEN 0X20 /* 已经打开 */
+#define CH395_ERR_UNKNOW 0xFA /* 未知错误 */
+
+/* PPP状态 */
+#define CH395_PPP_SUCCESS 0 /* 成功 */
+#define CH395_PPPERR_PARM 1 /* 无效参数 */
+#define CH395_PPPERR_OPEN 2 /* 无法打开PPP会话 */
+#define CH395_PPPERR_DEVICE 3 /* 无效的PPP设备 */
+#define CH395_PPPERR_ALLOC 4 /* 资源分配失败 */
+#define CH395_PPPERR_USER 5 /* 用户中断 */
+#define CH395_PPPERR_CONNECT 6 /* 连接断开 */
+#define CH395_PPPERR_AUTHFAIL 7 /* 挑战鉴别失败 */
+#define CH395_PPPERR_PROTOCOL 8 /* 握手协议失败 */
+#define CH395_PPPERR_TIME_OUT 9 /* 超时失败 */
+#define CH395_PPPERR_CLOSE 10 /* 关闭失败 */
+
+/* 不可达代码 */
+#define UNREACH_CODE_HOST 0 /* 主机不可达 */
+#define UNREACH_CODE_NET 1 /* 网络不可达 */
+#define UNREACH_CODE_PROTOCOL 2 /* 协议不可达 */
+#define UNREACH_CODE_PROT 3 /* 端口不可达 */
+/* 其他值请参考RFC792文档 */
+
+/* 命令包头 */
+#define SER_SYNC_CODE1 0x57 /* 串口命令同步码1 */
+#define SER_SYNC_CODE2 0xAB /* 串口命令同步码2 */
+
+/* TCP状态 */
#define TCP_CLOSED 0
#define TCP_LISTEN 1
#define TCP_SYN_SENT 2
@@ -251,19 +251,19 @@ extern "C" {
#define TCP_LAST_ACK 9
#define TCP_TIME_WAIT 10
-/* GPIOĴַ */
-#define GPIO_DIR_REG 0x80 /* ĴĴ1;0: */
-#define GPIO_IN_REG 0x81 /* GPIOĴ */
-#define GPIO_OUT_REG 0x82 /* GPIOĴ */
-#define GPIO_CLR_REG 0x83 /* GPIO: 0=keep, 1=clear */
-#define GPIO_PU_REG 0x84 /* GPIOʹܼĴ */
-#define GPIO_PD_REG 0x85 /* GPIOʹܼĴ */
+/* GPIO寄存器地址 */
+#define GPIO_DIR_REG 0x80 /* 寄存器方向寄存器,1:输出;0:输入 */
+#define GPIO_IN_REG 0x81 /* GPIO输入寄存器 */
+#define GPIO_OUT_REG 0x82 /* GPIO输出寄存器 */
+#define GPIO_CLR_REG 0x83 /* GPIO输出清除: 0=keep, 1=clear */
+#define GPIO_PU_REG 0x84 /* GPIO上拉使能寄存器 */
+#define GPIO_PD_REG 0x85 /* GPIO下拉使能寄存器 */
-/* ܲ */
-#define FUN_PARA_FLAG_TCP_SERVER (1<<1) /* tcp server ģʽ־0X44汾Ժ֧ */
-#define FUN_PARA_FLAG_LOW_PWR (1<<2) /* ͺģʽ */
-#define SOCK_CTRL_FLAG_SOCKET_CLOSE (1<<3) /* CH395رSocket */
-#define SOCK_DISABLE_SEND_OK_INT (1<<4) /* send okжϿλΪ1ʾرsend okж */
+/* 功能参数 */
+#define FUN_PARA_FLAG_TCP_SERVER (1<<1) /* tcp server 多连接模式标志,0X44版本及以后支持 */
+#define FUN_PARA_FLAG_LOW_PWR (1<<2) /* 低耗能模式 */
+#define SOCK_CTRL_FLAG_SOCKET_CLOSE (1<<3) /* CH395不主动关闭Socket */
+#define SOCK_DISABLE_SEND_OK_INT (1<<4) /* send ok中断控制位,为1表示关闭send ok中断 */
#ifdef __cplusplus
}
diff --git a/MDK-ARM/VOQC.uvguix.admin b/MDK-ARM/VOQC.uvguix.admin
index 1b8b21c..9abced7 100644
--- a/MDK-ARM/VOQC.uvguix.admin
+++ b/MDK-ARM/VOQC.uvguix.admin
@@ -20,7 +20,7 @@
346
Code Coverage
- 710 173
+ 710 181
204
@@ -93,8 +93,8 @@
2
3
- -1
- -1
+ -32000
+ -32000
-1
@@ -110,8 +110,8 @@
0
- 850
- 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000005000000010000000100000064433A5C55736572735C61646D696E5C4465736B746F705C77756A756E6368616F5C30305F50726F6A656374735C30325F4163747561746F722054657374696E675C30305F436F64655C30305F4E65775C564F51435C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF6B433A5C55736572735C61646D696E5C4465736B746F705C77756A756E6368616F5C30305F50726F6A656374735C30325F4163747561746F722054657374696E675C30305F436F64655C30305F4E65775C564F51435C75736572735C5372635C70726F76616C6374726C2E63000000000C70726F76616C6374726C2E6300000000FFDC7800FFFFFFFF6B433A5C55736572735C61646D696E5C4465736B746F705C77756A756E6368616F5C30305F50726F6A656374735C30325F4163747561746F722054657374696E675C30305F436F64655C30305F4E65775C564F51435C75736572735C496E635C70726F76616C6374726C2E68000000000C70726F76616C6374726C2E6800000000BECEA100FFFFFFFF72433A5C55736572735C61646D696E5C4465736B746F705C77756A756E6368616F5C30305F50726F6A656374735C30325F4163747561746F722054657374696E675C30305F436F64655C30305F4E65775C564F51435C4D444B2D41524D5C737461727475705F73746D33326634303778782E730000000015737461727475705F73746D33326634303778782E73000000009CC1B600FFFFFFFF66433A5C55736572735C61646D696E5C4465736B746F705C77756A756E6368616F5C30305F50726F6A656374735C30325F4163747561746F722054657374696E675C30305F436F64655C30305F4E65775C564F51435C75736572735C5372635C74696D65722E63000000000774696D65722E6300000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000FF00000066000000A0050000DD020000
+ 1096
+ 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000007000000040000000100000064433A5C55736572735C61646D696E5C4465736B746F705C77756A756E6368616F5C30305F50726F6A656374735C30325F4163747561746F722054657374696E675C30305F436F64655C30305F4E65775C564F51435C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF6B433A5C55736572735C61646D696E5C4465736B746F705C77756A756E6368616F5C30305F50726F6A656374735C30325F4163747561746F722054657374696E675C30305F436F64655C30305F4E65775C564F51435C75736572735C5372635C70726F76616C6374726C2E63000000000C70726F76616C6374726C2E6300000000FFDC7800FFFFFFFF6B433A5C55736572735C61646D696E5C4465736B746F705C77756A756E6368616F5C30305F50726F6A656374735C30325F4163747561746F722054657374696E675C30305F436F64655C30305F4E65775C564F51435C75736572735C496E635C70726F76616C6374726C2E68000000000C70726F76616C6374726C2E6800000000BECEA100FFFFFFFF66433A5C55736572735C61646D696E5C4465736B746F705C77756A756E6368616F5C30305F50726F6A656374735C30325F4163747561746F722054657374696E675C30305F436F64655C30305F4E65775C564F51435C75736572735C5372635C74696D65722E63000000000774696D65722E6300000000F0A0A100FFFFFFFF6C433A5C55736572735C61646D696E5C4465736B746F705C77756A756E6368616F5C30305F50726F6A656374735C30325F4163747561746F722054657374696E675C30305F436F64655C30305F4E65775C564F51435C6D6F646275735C5372635C6D6F646275735F7274752E63000000000C6D6F646275735F7274752E6300000000F7B88600FFFFFFFF68433A5C55736572735C61646D696E5C4465736B746F705C77756A756E6368616F5C30305F50726F6A656374735C30325F4163747561746F722054657374696E675C30305F436F64655C30305F4E65775C564F51435C6D6F646275735C5372635C6D6F646275732E6300000000086D6F646275732E6300000000D9ADC200FFFFFFFF68433A5C55736572735C61646D696E5C4465736B746F705C77756A756E6368616F5C30305F50726F6A656374735C30325F4163747561746F722054657374696E675C30305F436F64655C30305F4E65775C564F51435C75736572735C5372635C656E636F6465722E630000000009656E636F6465722E6300000000F7B88600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000FF00000066000000A0050000DD020000
@@ -1806,7 +1806,7 @@
File
2550
- 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000043936303096000000000000000100043936303000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000043936303096000000000000000100043936303000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
1423
@@ -1822,7 +1822,7 @@
Build
968
- 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000004564F51439600000000000000010004564F5143000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
+ 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000004564F51439600000000000000010004564F5143000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
583
@@ -1871,11 +1871,11 @@
0
16
- E30000004F00000060040000CA000000
+ E30000004F00000068040000CA000000
16
- E30000006600000060040000E1000000
+ E30000006600000068040000E1000000
@@ -1931,11 +1931,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -1951,11 +1951,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -1971,11 +1971,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -1991,11 +1991,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -2031,7 +2031,7 @@
0
16
- E6000000660000005D040000B1000000
+ E60000006600000065040000B1000000
16
@@ -2051,11 +2051,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -2071,11 +2071,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -2091,11 +2091,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -2111,11 +2111,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -2131,11 +2131,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -2151,11 +2151,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -2171,11 +2171,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -2251,7 +2251,7 @@
0
16
- 00000000AB0200006004000066030000
+ 00000000AB0200006804000066030000
16
@@ -2291,7 +2291,7 @@
0
16
- E30000006300000060040000CA000000
+ E30000006300000068040000CA000000
16
@@ -2311,7 +2311,7 @@
0
16
- E6000000660000005D040000B1000000
+ E60000006600000065040000B1000000
16
@@ -2371,11 +2371,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -2391,7 +2391,7 @@
0
16
- E6000000660000005D040000B1000000
+ E60000006600000065040000B1000000
16
@@ -2411,7 +2411,7 @@
0
16
- E6000000660000005D040000B1000000
+ E60000006600000065040000B1000000
16
@@ -2431,7 +2431,7 @@
0
16
- E6000000660000005D040000B1000000
+ E60000006600000065040000B1000000
16
@@ -2451,7 +2451,7 @@
0
16
- E6000000660000005D040000B1000000
+ E60000006600000065040000B1000000
16
@@ -2951,11 +2951,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -2971,11 +2971,11 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
@@ -3031,7 +3031,7 @@
0
16
- E6000000660000005D040000B1000000
+ E60000006600000065040000B1000000
16
@@ -3531,23 +3531,23 @@
0
16
- 67040000660000009D0500004D030000
+ 6F040000660000009D0500004D030000
16
- 49040000A5FFFFFF8D050000BC020000
+ 3A050000DA01000076060000F1040000
3415
- 000000000C000000000000000020000001000000FFFFFFFFFFFFFFFFE3000000CA00000060040000CE000000010000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000E30000006600000060040000E1000000E30000004F00000060040000CA0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF700300004F00000074030000D6010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000740300006600000028040000ED010000740300004F00000028040000D601000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFDF0000004F000000E3000000A7020000010000000200001004000000010000004EFFFFFF7B030000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000DF000000BE020000000000004F000000DF000000A70200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000A702000060040000AB0200000100000001000010040000000100000046FEFFFF7000000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFD0020000D7020000D40200006603000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000D601000028040000DA010000000000000100000004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000000000000000000F1010000280400006C02000000000000DA01000028040000550200000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFF600400004F000000640400006603000001000000020000100400000001000000000000000000000000000000000000000000000001000000FFFFFFFF0F0000009307000094070000950700009607000091070000B5010000B801000038030000BA050000BB050000BC050000CB0900008F07000090070000B9050000018000400000010000006404000066000000A00500007D030000640400004F000000A00500006603000000000000404100560F0000000755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF1343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF0D00000000000000000000000000000000000000000000000000000001000000FFFFFFFF9307000001000000FFFFFFFF93070000000000000000000000000000
+ 000000000C000000000000000020000001000000FFFFFFFFFFFFFFFFE3000000CA00000068040000CE000000010000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000E30000006600000068040000E1000000E30000004F00000068040000CA0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF700300004F00000074030000D6010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000740300006600000028040000ED010000740300004F00000028040000D601000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFDF0000004F000000E3000000A7020000010000000200001004000000010000004EFFFFFF7B030000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000DF000000BE020000000000004F000000DF000000A70200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000A702000068040000AB0200000100000001000010040000000100000046FEFFFF7000000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFD0020000D7020000D40200006603000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000D601000028040000DA010000000000000100000004000000010000000000000000000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000000000000000000F1010000280400006C02000000000000DA01000028040000550200000000000040820046060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFF680400004F0000006C0400006603000001000000020000100400000001000000000000000000000000000000000000000000000001000000FFFFFFFF0F0000009307000094070000950700009607000091070000B5010000B801000038030000BA050000BB050000BC050000CB0900008F07000090070000B9050000018000400000010000006C04000066000000A00500007D0300006C0400004F000000A00500006603000000000000404100560F0000000755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF1343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF0D00000000000000000000000000000000000000000000000000000001000000FFFFFFFF9307000001000000FFFFFFFF93070000000000000000000000000000
59392
File
2550
- 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000043936303096000000000000000100043936303000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000043936303096000000000000000100043936303000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
1423
@@ -3563,7 +3563,7 @@
Build
955
- 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
+ 00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
583
@@ -3579,7 +3579,7 @@
Debug
2362
- 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020000002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
+ 00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000004002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020000002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
898
@@ -3603,48 +3603,66 @@
0
100
- 1
+ 4
../Core/Src/main.c
- 0
- 208
- 84
+ 13
+ 113
+ 142
1
0
..\users\Src\provalctrl.c
- 1
- 153
- 166
+ 2
+ 1
+ 148
1
0
../users/Inc/provalctrl.h
- 42
+ 22
1
- 42
- 1
-
- 0
-
-
- startup_stm32f407xx.s
- 0
- 164
- 174
+ 14
1
0
..\users\Src\timer.c
- 18
- 10
- 42
+ 1
+ 42
+ 72
+ 1
+
+ 0
+
+
+ ..\modbus\Src\modbus_rtu.c
+ 40
+ 1
+ 16
+ 1
+
+ 0
+
+
+ ..\modbus\Src\modbus.c
+ 17
+ 1
+ 4
+ 1
+
+ 0
+
+
+ ..\users\Src\encoder.c
+ 22
+ 1
+ 16
1
0
diff --git a/MDK-ARM/VOQC.uvoptx b/MDK-ARM/VOQC.uvoptx
index 9f8c938..39ce3e5 100644
--- a/MDK-ARM/VOQC.uvoptx
+++ b/MDK-ARM/VOQC.uvoptx
@@ -185,6 +185,11 @@
1
p_flt_window,0x0A
+
+ 6
+ 1
+ DisState
+
0
diff --git a/MDK-ARM/VOQC/VOQC.axf b/MDK-ARM/VOQC/VOQC.axf
index 344ff99..71f1729 100644
Binary files a/MDK-ARM/VOQC/VOQC.axf and b/MDK-ARM/VOQC/VOQC.axf differ
diff --git a/MDK-ARM/VOQC/VOQC.build_log.htm b/MDK-ARM/VOQC/VOQC.build_log.htm
index 622b0ca..99c687b 100644
--- a/MDK-ARM/VOQC/VOQC.build_log.htm
+++ b/MDK-ARM/VOQC/VOQC.build_log.htm
@@ -27,9 +27,11 @@ Project File Date: 08/20/2024
Output:
*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'C:\Users\admin\Desktop\wujunchao\99_General softwares\Keil_v5\ARM\ARM Compiler_5_06\Bin'
Build target 'VOQC'
+compiling encoder.c...
compiling provalctrl.c...
+compiling main.c...
linking...
-Program Size: Code=29850 RO-data=458 RW-data=364 ZI-data=6316
+Program Size: Code=29854 RO-data=458 RW-data=364 ZI-data=6316
FromELF: creating hex file...
"VOQC\VOQC.axf" - 0 Error(s), 0 Warning(s).
@@ -54,7 +56,7 @@ Package Vendor: Keil
Collection of Component Files used:
* Component: ARM::CMSIS:CORE@5.6.0
-Build Time Elapsed: 00:00:05
+Build Time Elapsed: 00:00:11