You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			219 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C
		
	
		
		
			
		
	
	
			219 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			C
		
	
| 
											1 year ago
										 | /*****************************************************************************
 | ||
|  |  * file    Inc/wireless.h  | ||
|  |  * author  YuLiang | ||
|  |  * version 1.0.0 | ||
|  |  * date    14-Jun-2022 | ||
|  |  * brief   This file provides all the headers of wireless function. | ||
|  |  ****************************************************************************** | ||
|  |  * Attention | ||
|  |  * | ||
|  |  * <h2><center>© COPYRIGHT(c) 2022 LandPower</center></h2> | ||
|  |  * | ||
|  |  * Redistribution and use in source and binary forms, with or without modification, | ||
|  |  * are permitted provided that the following conditions are met: | ||
|  |  *   1. Redistributions of source code must retain the above copyright notice, | ||
|  |  *      this list of conditions and the following disclaimer. | ||
|  |  *   2. Redistributions in binary form must reproduce the above copyright notice, | ||
|  |  *      this list of conditions and the following disclaimer in the documentation | ||
|  |  *      and/or other materials provided with the distribution. | ||
|  |  *   3. Neither the name of WTOE nor the names of its contributors may be used to  | ||
|  |  *      endorse or promote products derived from this software without specific | ||
|  |  *      prior written permission. | ||
|  |  * | ||
|  |  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
|  |  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
|  |  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
|  |  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||
|  |  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
|  |  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||
|  |  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||
|  |  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
|  |  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
|  |  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
|  |  * | ||
|  |  ******************************************************************************/ | ||
|  | 
 | ||
|  | #ifndef __WIRELESS_H__
 | ||
|  | #define __WIRELESS_H__
 | ||
|  | 
 | ||
|  | /* Includes ------------------------------------------------------------------*/ | ||
|  | #include "main.h"
 | ||
|  | #include "FreeRTOS.h"
 | ||
|  | #include "task.h"
 | ||
|  | #include "cmsis_os.h"
 | ||
|  | 
 | ||
|  | /* Define --------------------------------------------------------------------*/ | ||
|  | #define WL_CRC32_LEN 4
 | ||
|  | #define WL_DMA_RX_BUF_LEN 1088
 | ||
|  | #define WL_DMA_TX_BUF_LEN 1088
 | ||
|  | 
 | ||
|  | #define WL_BUF_LIST_LEN 4
 | ||
|  | 
 | ||
|  | #define CSG_PKT_DATA_SUM 60
 | ||
|  | 
 | ||
|  | #define CSG_START_FLAG 0x68
 | ||
|  | #define CSG_END_FLAG 0x16
 | ||
|  | 
 | ||
|  | #define CSG_HEAD_LEN 10
 | ||
|  | #define CSG_CRC_LEN 1
 | ||
|  | #define CSG_OTHER_LEN 12
 | ||
|  | 
 | ||
|  | #define CSG_CONNECT_LEN 2
 | ||
|  | #define CSG_TIMING_LEN 0
 | ||
|  | #define CSG_DATA_LEN 26
 | ||
|  | #define CSG_DATA_FOLLOW_LEN 16
 | ||
|  | #define CSG_BEAT_LEN 8
 | ||
|  | #define CSG_SERVER_GET_LEN 12
 | ||
|  | #define CSG_CONFIG_GET_LEN 21
 | ||
|  | #define CSG_TIME_GET_LEN 6
 | ||
|  | #define CSG_ERROR_LEN 2
 | ||
|  | 
 | ||
|  | /* 共有命令字. */ | ||
|  | enum CSG_CMD | ||
|  | { | ||
|  |     CSG_CONNECT = 0x00,                     // 开机联络.
 | ||
|  |     CSG_TIMING,                             // 校时.
 | ||
|  |     CSG_PASSWD_SET,                         // 设置密码.
 | ||
|  |     CSG_CONFIG_SET,                         // 主站下发参数配置.
 | ||
|  |     CSG_BEAT = 0x05,                        // 装置心跳信息.
 | ||
|  |     CSG_SERVER_SET,                         // 更改主站 IP\端口\卡号.
 | ||
|  |     CSG_SERVER_GET,                         // 查询主站 IP\端口\卡号.
 | ||
|  |     CSG_RESET,                              // 装置复位.
 | ||
|  |     CSG_CONFIG_GET = 0x0A,                  // 查询装置配置.
 | ||
|  |     CSG_TIME_GET = 0x0D,                    // 查询装置时间.
 | ||
|  |     CSG_DATA_GET = 0x21,                    // 主站请求装置数据.
 | ||
|  |     CSG_DATA = 0x44                         // 接地电流数据.
 | ||
|  | }; | ||
|  | 
 | ||
|  | /* 共有命令字. */ | ||
|  | enum CSG_DATA_TYPE | ||
|  | { | ||
|  |     CSG_DATA_TYPE_NONE = 0x00,              // 无请求数据.
 | ||
|  |     CSG_DATA_TYPE_HIS,                      // 请求历史数据.
 | ||
|  |     CSG_DATA_TYPE_REAL,                     // 请求实时数据.
 | ||
|  | }; | ||
|  | 
 | ||
|  | /* Exported types ------------------------------------------------------------*/ | ||
|  | /* 无线 buf 数组. */ | ||
|  | typedef struct | ||
|  | { | ||
|  |     uint8_t buf[WL_BUF_LIST_LEN][WL_DMA_RX_BUF_LEN]; | ||
|  |     uint16_t buf_cnt[WL_BUF_LIST_LEN]; | ||
|  |     uint8_t valid; | ||
|  |     uint8_t current; | ||
|  |     uint16_t buf_addr; | ||
|  | } wl_buf_list_t; | ||
|  | 
 | ||
|  | /* 无线 buf 数组. */ | ||
|  | typedef struct | ||
|  | { | ||
|  |     uint16_t cmd_buf_index; | ||
|  |     int16_t CSQ; | ||
|  |     uint8_t cmd_buf[WL_DMA_RX_BUF_LEN]; | ||
|  |     uint8_t csg_buf[WL_DMA_RX_BUF_LEN]; | ||
|  |     uint8_t dma_rx_buf[WL_DMA_RX_BUF_LEN]; | ||
|  |     uint8_t dma_tx_buf[WL_DMA_TX_BUF_LEN]; | ||
|  |     uint32_t time_send; | ||
|  |     uint32_t mul_idx; | ||
|  |     uint8_t state; | ||
|  |     uint8_t send_cnt; | ||
|  |     uint16_t wave_index; | ||
|  |     uint8_t energy_mode_old; | ||
|  |     uint8_t is_update; | ||
|  |     uint16_t update_len; | ||
|  |     int32_t update_rt; | ||
|  |     uint32_t keepalive; | ||
|  |     uint16_t pkt_id; | ||
|  |     uint8_t err_cnt; | ||
|  |     uint8_t data_request; | ||
|  |     uint32_t time_beat; | ||
|  | } wl_ctrl_t; | ||
|  | 
 | ||
|  | /* 南网协议头. */ | ||
|  | typedef struct | ||
|  | { | ||
|  |     uint8_t flag; | ||
|  |     uint8_t dev_id[6]; | ||
|  |     uint8_t cmd; | ||
|  |     uint16_t len; | ||
|  | } csg_head_t; | ||
|  | 
 | ||
|  | /* 南网协议头. */ | ||
|  | typedef struct | ||
|  | { | ||
|  |     uint8_t year; | ||
|  |     uint8_t mon; | ||
|  |     uint8_t day; | ||
|  |     uint8_t hour; | ||
|  |     uint8_t min; | ||
|  |     uint8_t sec; | ||
|  | } csg_time_t; | ||
|  | 
 | ||
|  | /* 环流数据. */ | ||
|  | typedef struct | ||
|  | { | ||
|  |     uint8_t Ciphertext[4]; | ||
|  |     uint8_t flag;                   // 帧标识.
 | ||
|  |     uint8_t sum;                    // 包数
 | ||
|  |     uint8_t time[6];                // 采集时间, 年月日时分秒.
 | ||
|  |     uint16_t Ia;                    // CH1: A 相接地电流.
 | ||
|  |     uint16_t Ib;                    // CH2: B 相接地电流.
 | ||
|  |     uint16_t Ic;                    // CH3: C 相接地电流.
 | ||
|  |     uint16_t ground;                // CH4: 总接地电流.
 | ||
|  |     uint16_t rIa;                   // CH5: 运行电流.
 | ||
|  |     uint16_t rIb; | ||
|  |     uint16_t rIc; | ||
|  | } csg_data_t; | ||
|  | 
 | ||
|  | /* 环流数据. */ | ||
|  | typedef struct | ||
|  | { | ||
|  |     uint16_t time;                  // 采集时间, 与第一包的时间差.
 | ||
|  |     uint16_t Ia;                    // CH1: A 相接地电流.
 | ||
|  |     uint16_t Ib;                    // CH2: B 相接地电流.
 | ||
|  |     uint16_t Ic;                    // CH3: C 相接地电流.
 | ||
|  |     uint16_t ground;                // CH4: 总接地电流.
 | ||
|  |     uint16_t rIa;                   // CH5: 运行电流.
 | ||
|  |     uint16_t rIb; | ||
|  |     uint16_t rIc; | ||
|  | } csg_data_follow_t; | ||
|  | 
 | ||
|  | typedef struct{ | ||
|  |     uint8_t time[6];                // 时间, 年月日时分秒.
 | ||
|  |     uint8_t CSQ;                    // 信号强度.
 | ||
|  |     uint8_t vbat;                   // 电池电压  实际值乘 10.
 | ||
|  | } csg_beat_t; | ||
|  | 
 | ||
|  | typedef struct{ | ||
|  |     uint8_t passwd_old[CSG_PASSWD_LEN];         // 原始密码.
 | ||
|  |     uint8_t passwd_new[CSG_PASSWD_LEN];         // 新密码.
 | ||
|  | } csg_passwd_t; | ||
|  | 
 | ||
|  | typedef struct{ | ||
|  |     uint8_t passwd[CSG_PASSWD_LEN]; | ||
|  |     uint8_t ip1[4]; | ||
|  |     uint16_t port1; | ||
|  |     uint8_t ip2[4]; | ||
|  |     uint16_t port2; | ||
|  |     uint8_t card1[6]; | ||
|  |     uint8_t card2[6]; | ||
|  | } csg_server_t; | ||
|  | 
 | ||
|  | typedef struct{ | ||
|  | 
 | ||
|  |     uint8_t ip[4]; | ||
|  |     uint16_t port; | ||
|  |     uint8_t card[6]; | ||
|  | } csg_server_get_t; | ||
|  | 
 | ||
|  | /* Exported macro ----tm_structure.tm_sec --------------------------------------------------------*/ | ||
|  | /* Extern global variables ---------------------------------------------------*/ | ||
|  | extern osThreadId_t WLHandle; | ||
|  | extern wl_buf_list_t wl_buf_list_rx; | ||
|  | extern wl_ctrl_t wl_ctrl; | ||
|  | 
 | ||
|  | /* Extern functions ----------------------------------------------------------*/ | ||
|  | extern void wl_init_os(void); | ||
|  | extern void wl_show(void); | ||
|  | #endif
 | ||
|  | /******************* (C) COPYRIGHT LandPower ***** END OF FILE ****************/ |