/****************************************************************************** * file include/pd_csg.h * author YuLiang * version 1.0.0 * date 21-Feb-2023 * brief This file provides all the headers of the csg server functions. ****************************************************************************** * Attention * *

© COPYRIGHT(c) 2021 LandPower

* * 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 LandPower 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 _PD_CSG_H_ #define _PD_CSG_H_ #ifdef CFG_DEV_TYPE_LAND_PD /* Includes ------------------------------------------------------------------*/ #include "pd_main.h" /* Define --------------------------------------------------------------------*/ #define CSG_DATA_FIFO "CSG_DATA_FIFO" #define CSG_HEAD_LEN (22) #define CSG_TAIL_LEN (4) #define CSG_TOTLE_LEN (26) #define CSG_PKT_LEN (1536) #define CSG_SHIQUCHA (28800) // 8 * 3600. #define CSG_CONNECT_REQ (0xA000) // 开机联络信息. #define CSG_CONNECT_ACK (0xC000) // 开机联络信息应答. #define CSG_HEARTBEAT_REQ (0xA001) // 心跳信息. #define CSG_HEARTBEAT_ACK (0xC001) // 心跳信息应答. #define CSG_ACITVE_CONNECT_REQ (0xC002) // 主站主动连接设备 . #define CSG_REBOOT_REQ (0xC015) // 装置重启. #define CSG_FACTORY_SET_ACK (0xA010) // 生产初始化信息配置应答. #define CSG_FACTORY_SET_REQ (0xC010) // 生产初始化信息配置. #define CSG_FACTORY_GET_ACK (0xA020) // 生产初始化信息查询应答. #define CSG_FACTORY_GET_REQ (0xC020) // 生产初始化信息查询. #define CSG_CONFIG_SET_ACK (0xA013) // 下发参数配置应答. #define CSG_CONFIG_SET_REQ (0xC013) // 下发参数配置. #define CSG_CONFIG_GET_ACK (0xA023) // 查询参数配置应答. #define CSG_CONFIG_GET_REQ (0xC023) // 查询参数配置. #define CSG_PORT_CONFIG_SET_REQ (0xC111) // 端口参数配置. #define CSG_PORT_CONFIG_SET_ACK (0xA111) // 端口参数配置应答. #define CSG_PORT_CONFIG_GET_REQ (0xC121) // 端口参数查询. #define CSG_PORT_CONFIG_GET_ACK (0xA121) // 端口参数查询应答. #define CSG_EVENT_REQ (0xA130) // 事件主动上传. #define CSG_EVENT_ACK (0xC136) // 事件回复确认. #define CSG_TREND_REQ (0xC132) // 趋势数据查询. #define CSG_TREND_ACK (0xA132) // 趋势数据主动上传. #define CSG_REAL_IMAGE_REQ (0xC135) // 实时图谱数据平台召唤. #define CSG_REAL_IMAGE_ACK (0xA135) // 实时图谱数据上传. /* Exported types ------------------------------------------------------------*/ /* 设备配置的滤波类型. */ typedef enum { CSG_FILTER_TYPE_FF = 1, CSG_FILTER_TYPE_FR, CSG_FILTER_TYPE_LF, CSG_FILTER_TYPE_HF } CSG_FILTER_TYPE_E; /* . */ typedef struct { int fd; // 后台通讯使用的 socket. uint32_t pkt_index; // 报文索引. int32_t data_fifo_id; // 数据处理线程发向后台发送线程的 fifo. char buf_send[CSG_PKT_LEN]; char buf_reply[CSG_PKT_LEN]; char buf_recv[CSG_PKT_LEN]; struct sockaddr_in server; int32_t server_ip; // server ip. uint16_t server_port; // server port. uint8_t is_connect; // 是否连接上服务器. uint8_t heartbeat; // 心跳发送后没有收到回复的次数. int32_t communication_time; // 最后通讯时间. pthread_mutex_t mutex; } csg_t; /* 报文头结构. */ typedef struct{ uint16_t head; uint16_t cmd; uint8_t dev_num[PD_DEV_NUM_LEN]; uint16_t len; } csg_pkt_head_t; /* 报文尾结构.*/ typedef struct{ uint16_t checksum; uint16_t tail; } csg_pkt_tail_t; /* 心跳报文. */ typedef struct{ uint8_t port_alarm[PD_PORT_SUM]; // 通道报警状态 0: 没有报警 1: 报警. uint32_t event_num[PD_PORT_SUM]; // 通道的最新事件编号. uint32_t fault_num[PD_PORT_SUM]; // 通道的最新原始数据编号. uint32_t utc; float freq; // 实测同步源工频频率. uint8_t dau_state[4]; // 采集模块的状态. uint8_t out_sync; // 外接调频同步 1: 有效 0: 无效. uint8_t pt_sync; // PT同步 1: 有效 0: 无效. uint8_t in_sync; // 内同步 1: 有效 0: 无效. uint8_t reserved1; // 预留 字节对齐. uint8_t port_link_alarm[PD_PORT_SUM]; // 通道传感器连接状态 断线告警. float voltage; // 设备电压, 预留. float temperature; // 设备温度, 预留. uint8_t heartbeat; // 心跳发送后没有收到回复的次数. uint8_t bat; // 电池电量 预留, 单位 %. uint8_t reserved2[18]; } csg_pkt_heartbeat_t; typedef struct { uint8_t vport; // 通道编号 1 ~ 16. uint8_t is_concern; // 关注 1: 关注 0: 取消关注. uint8_t r_noise_reduction; // 关联降噪 1: 关联噪声去噪. uint8_t auto_noise_reduction; // 自适应降噪 自适应降噪. uint8_t manual_noise_reduction; // 手动降噪 0 ~ 80 手动降噪. uint8_t filter; // 滤波器类型. uint8_t reserved[2]; //保留. } csg_real_image_get_t; /* 实时图谱报文头 36Byte. */ typedef struct{ uint16_t index; // 每10包传完之后自动自加,用于区分当前包结束. uint8_t pkt_sum; // 总包数 10. uint8_t pkt_index; // 当前包数 0 ~ 9. uint8_t vport; // 通道编号. uint8_t reserved1[3]; int16_t max; int16_t avg; uint32_t cnt; uint32_t utc; uint32_t is_sub; // 0: 定时数据主动上传 , 1: 定时数据 UTC 召唤. uint32_t interval; // 上传间隔, 单位分钟. uint8_t reserved2[8]; } csg_real_image_t; typedef struct{ uint32_t is_valid; // 1 有效 0 无效. int16_t max; int16_t avg; uint32_t cnt; float phase; // 放电相位. uint32_t event_cnt; // 趋势数据中的的事件数量记录. float noise; // 底噪平均值. uint8_t reserved[16]; } csg_trend_t; typedef struct{ uint32_t idx; // 数据编号. uint32_t utc; uint32_t is_sub; // 是否是补包. uint32_t interval; // 上传间隔 单位分钟. csg_trend_t data[PD_PORT_SUM]; uint8_t reserved[144]; } csg_trend_head_t; typedef struct{ uint16_t idx; // 每 10 包传完之后自动++, 用于区分当前包结束. uint8_t pkt_sum; // 总包数 10. uint8_t pkt_idx; // 当前包数 0 ~ 9. uint8_t vport; // 通道编号. uint8_t type; // 事件类型. int16_t max; // 事件幅值最大值. uint32_t level; // 事件等级. uint32_t pd_Type; // 放电类型. float type_per[8]; // 放电概率. float PositionDistance; // 距离本传感器的距离. uint32_t utc; // utc. uint32_t event_idx; // 事件编号. uint32_t cnt; // 脉冲频次计数值. } csg_event_head_t; /* Exported macro ------------------------------------------------------------*/ /* Extern global variables ---------------------------------------------------*/ extern csg_t csg; /* Extern functions ----------------------------------------------------------*/ extern int32_t csg_handle_init(void); #endif #endif /************************ (C) COPYRIGHT LandPower ***** END OF FILE ****************/