forked from gary/ems
2
0
Fork 0
sun_ems/ems_c/bsp/bsp_shm.h

188 lines
8.2 KiB
C
Raw Permalink Normal View History

2025-05-13 17:49:49 +08:00
/*
* @Author: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
* @Date: 2024-09-04 11:32:56
* @LastEditors: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
* @LastEditTime: 2024-09-05 14:10:48
* @FilePath: /_EMS_C_V1.0.0/bsp/bsp_shm.h
* @Description: ,`customMade`, koroFileHeader查看配置 : https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
/*****************************************************************************
2025-05-24 17:16:28 +08:00
* @copyright Copyright (c) 2025-2055 Gary. All rights reserved.
2025-05-13 17:49:49 +08:00
* @file bsp_shm.h
* @brief
* @author Gary
* @date 2024-09-03
* @remark
*****************************************************************************/
#ifndef BSP_SHM_H
#define BSP_SHM_H
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include <stdbool.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/shm.h>
#include <sys/types.h>
#include <stdint.h>
#include <stddef.h>
#include "kit_data.h"
#include "app_parse.h"
#include "kit_log.h"
#include "bsp_data_mode.h"
#define IPC_WEB_SHEM_KEY 3000 // WEB端设置实时通知C端
#define EMS_KERNEL_KEY 2000 // RTDB实时库的测点属性缓存
#define ASSERT_SHM_ENABLE 0
typedef enum
{
kEE_SHM_READ, // 0
kEE_SHM_CREAT // 1
} shm_creat_type_e;
typedef enum
{
SHM_OK,
SHM_ERROR
} shm_state_e;
// 设备的基本测点结构
typedef struct
{
point_t *sPoint; // 考虑指针字节对齐,放前面
uint32_t id; // 设备编号
uint32_t num; // 测点总数
char name[MAX_NAME_BUF_LEN]; // 设备中文名称
char enname[MAX_NAME_BUF_LEN]; // 设备英文名称
} devPoint_t;
// 某一个设备类型所有设备
typedef struct
{
devPoint_t *sDevPoint; // MAX_SDEV_MAP_NUM 此处的测点索引 = 测点ID - 1二者关联相等
uint32_t id; // 设备类型
uint32_t num; // 该设备类型下的设备总数
} devPointType_t;
// 所有的设备类型
typedef struct
{
uint32_t num; // 设备类型总数
devPointType_t *sDCodePoint; // MAX_DEVCODE_MAP_NUM 此处的测点索引 = 测点ID - 1二者关联相等
} DEVPOINT_RTDB_T;
// #--------------------------------------------------------------------------------------------
// 全局变量web配置变化标志
typedef struct
{
uint16_t sysUpgradeSignal; // 系统软件升级等属性变化信号1变化0未变
uint16_t timeSignal; // 对时设置相关属性变化信号1变化0未变化
uint16_t stationInfoSignal; // 站点信息变化信号
uint16_t devArchSignal; // 站点拓扑变化信号
uint16_t logicProteSign; // 保护配置变化信号
uint16_t mallocAcPowerSign; // 有功分配算法配置变化
uint16_t mallocRePowerSign; // 无功分配算法配置变化
uint16_t logicModeSignal; // 算法切换信号
uint16_t logicNoneSignal; // 算法无
uint16_t logicDebugSignal; // 调试算法配置变化信号
uint16_t logicPeakValleySignal; // 削峰填谷算法配置变化信号
uint16_t logicDmdRespondSignal; // 需求侧响应配置变化信号
uint16_t logicLoadTraceSignal; // 负荷跟踪配置变化信号
uint16_t logicDmdCtrlSignal; // 需量管理配置变化信号
uint16_t logicPFSignal; // 功率因数控制配置变化信号
uint16_t reserver[25]; //占位用webSign_t占用40*2=80个字节,固定不变
} webSign_t;
// 全局变量web配置变化标志类型
typedef enum
{
kSign_Start = 0,
kSign_SysUpdate = kSign_Start, // 系统软件升级
kSign_EmsConfig, // EMS配置
kSign_StationInfo, // 站点信息变化信号
kSign_DevArch, // 站点拓扑变化信号
kSign_Protect, // 保护配置变化信号
kSign_ActivePower, // 有功分配算法配置变化
kSign_ReactivePower, // 无功分配算法配置变化
kSign_LogicMode, // 算法切换信号
kSign_Logic_Start,
kSign_LogicNone = kSign_Logic_Start, // 算法无
kSign_LogicDebug, // 调试算法配置变化信号
kSign_LogicPeakValley, // 削峰填谷算法配置变化信号
kSign_LogicDmdRespond, // 需求侧响应配置变化信号
kSign_LogicLoadTrace, // 负荷跟踪配置变化信号
kSign_LogicDmdCtrl, // 需量管理配置变化信号
kSign_LogicPFCtrl, // 功率因数控制配置变化信号
kSign_TempCtrl, // 温控策略信号
kSign_DiDoCtrl, // 干节点配置管理
kSign_AdvancedSetting, // 高级设置
kSign_Logic_End,
kSign_Rev40 = kSign_Start + 39,
kSign_End
} cfg_web_sign_e;
/*****************************************************************************
* @brief web与c写配置变化的通知组件
* @param[in] type: Rtdb_ShMem
* @param[in] arg:
* @return 0- 1
*****************************************************************************/
uint16_t readWebSignShm(cfg_web_sign_e signType);
/*****************************************************************************
* @brief web与c写配置变化的通知组件
* @param[in] type: Rtdb_ShMem
* @param[in] signType:
* @return 0- 1
*****************************************************************************/
void writeWebSignShm(cfg_web_sign_e signType, uint16_t val);
/*****************************************************************************
* @brief web与c写配置变化的通知组件
* @param[in] type:
* @param[in] signType:
* @param[in] val:
* @return 0- 1
*****************************************************************************/
int initWebSignShm(shm_creat_type_e type);
/*****************************************************************************
* @brief rtdb
* @param[in] type:
* @param[in] arg:
* @return 0- 1
*****************************************************************************/
int initRtdbShm(void *arg, shm_creat_type_e type);
/*****************************************************************************
* @brief RTDB中的值
* @param[in] type: Rtdb_ShMem
* @param[in] devType:
* @param[in] devId: 0
* @param[in] pointId: 0
* @return
*****************************************************************************/
double getShmPointValue(uint16_t devType, uint16_t devId, uint16_t pointId);
/*****************************************************************************
* @brief RTDB中的设备值
* @param[in] type: Rtdb_ShMem
* @param[in] devType:
* @param[in] devId: 0
*****************************************************************************/
point_t *getShmDevValue(uint16_t devType, uint16_t devId);
/*****************************************************************************
* @brief RTDB中写入值
* @param[in] type: Rtdb_ShMem
* @param[in] devType:
* @param[in] devId: 0
* @param[in] pointId: 0
* @param[in] value: RTDB中写入的值
*****************************************************************************/
void setShmPointValue(uint16_t devType, uint16_t devId, uint16_t pointId, double value);
#endif // BSP_SHM_H