225 lines
8.0 KiB
C
225 lines
8.0 KiB
C
|
/****************************************************************************
|
||
|
|
||
|
Copyright(c) 2024 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
||
|
|
||
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
||
|
be copied by any method or incorporated into another program without
|
||
|
the express written consent of Aerospace C.Power. This Information or any portion
|
||
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
||
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
||
|
liability for its use in any way and conveys no license or title under
|
||
|
any patent or copyright and makes no representation or warranty that this
|
||
|
Information is free from patent or copyright infringement.
|
||
|
|
||
|
****************************************************************************/
|
||
|
#ifndef PROTO_645_SUNSOLAR_H
|
||
|
#define PROTO_645_SUNSOLAR_H
|
||
|
|
||
|
/* os shim includes */
|
||
|
#include "os_types_api.h"
|
||
|
|
||
|
/* ------------------------ dlt645 DI for solar ---------------------------- */
|
||
|
/* DI: read sunsolar module SN */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_READ_PVSN (0x04001516u)
|
||
|
/* DI: set sunsolar module SN */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_SET_PVSN (0x04001517u)
|
||
|
/* DI: reboot sunsolar module */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_DEV_REBOOT (0x04001518u)
|
||
|
/* DI: set rsd status */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_SET_RSD (0x04001525u)
|
||
|
/* DI: read rsd current status */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_READ_RSD (0x04001526u)
|
||
|
/* DI: heartbeat from CCTT */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_CCTT_HEARTBEAT (0x04001537u)
|
||
|
/* DI: set heartbeat enable or disable */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_SET_HEARTBEAT (0x04001538u)
|
||
|
/* DI: read hearbeat status */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_READ_HEARTBEAT (0x04001539u)
|
||
|
|
||
|
/* DI: read sunsolar module datas, voltage ... */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_READ_SOLAR_DATA (0xFFB00001u)
|
||
|
/* DI: read sunsolar collector current data */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_READ_CUR_DATA (0xFFB00002u)
|
||
|
/* DI: upgrade data buffer */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_TRANS_UPGRADE_DATA (0xFFB00003u)
|
||
|
/* DI: query upgrade data bitmap */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_QUERY_UPGRADE_BM (0xFFB00004u)
|
||
|
/* DI: after device recv done datas, execute device upgrade */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_EXECUTE_UPGRADE (0xFFB00005u)
|
||
|
/* DI: read solar sta frozen data */
|
||
|
#define PROTO_645_2007_EXT_SOLR_DI_READ_FROZEN_DATA (0xFFB0000Du)
|
||
|
|
||
|
/* sunsolar tlv data type */
|
||
|
#define PROTO_645_SUNSOLAR_TLV_LINKSTATE 1
|
||
|
#define PROTO_645_SUNSOLAR_TLV_VOLTAGE 2
|
||
|
#define PROTO_645_SUNSOLAR_TLV_CURRENT 3
|
||
|
#define PROTO_645_SUNSOLAR_TLV_TEMPERATURE 4
|
||
|
#define PROTO_645_SUNSOLAR_TLV_PLC_LINKSTATISTICS 5
|
||
|
#define PROTO_645_SUNSOLAR_TLV_PV_SN_STR 6
|
||
|
#define PROTO_645_SUNSOLAR_TLV_VERSION 7
|
||
|
#define PROTO_645_SUNSOLAR_TLV_RSD_STATUS 9
|
||
|
#define PROTO_645_SUNSOLAR_TLV_PERIOD_ENERGY 10
|
||
|
#define PROTO_645_SUNSOLAR_TLV_HIS_TOTAL_ENERGY 11
|
||
|
#define PROTO_645_SUNSOLAR_TLV_REBOOT_CNT 12
|
||
|
/* define sunsolar max tlv data type count */
|
||
|
#define PROTO_645_SUNSOLAR_TLV_TYPE_MAX 16
|
||
|
|
||
|
#define PROTO_645_SUNSOLAR_TLV_TYPE_ALL (0x0FFF)
|
||
|
|
||
|
#define PROTO_645_SUNSOLAR_REBOOT_TYPE_NORMAL 0
|
||
|
#define PROTO_645_SUNSOLAR_REBOOT_TYPE_ASSERT 1
|
||
|
#define PROTO_645_SUNSOLAR_REBOOT_TYPE_W_ZERO_ADDR 2
|
||
|
#define PROTO_645_SUNSOLAR_REBOOT_TYPE_MAX 2
|
||
|
|
||
|
/* proto 645 cmd magic */
|
||
|
#define PROTO_645_SUNSOLAR_CMD_EN_MAGIC (0XAA)
|
||
|
#define PROTO_645_SUNSOLAR_CMD_DIS_MAGIC (0X55)
|
||
|
|
||
|
/* local rsd status change to magic */
|
||
|
#define RSD_STATUS_2_MAGIC(rsd_status) \
|
||
|
(rsd_status) ? \
|
||
|
(PROTO_645_SUNSOLAR_CMD_EN_MAGIC & 0xF) : \
|
||
|
(PROTO_645_SUNSOLAR_CMD_DIS_MAGIC & 0xF)
|
||
|
|
||
|
/* start code for load curve record */
|
||
|
#define PROTO_645_SOLR_LOAD_CURVE_START_CODE 0xA0
|
||
|
/* finish code for load curve record */
|
||
|
#define PROTO_645_SOLR_LOAD_CURVE_END_CODE 0xE5
|
||
|
|
||
|
/* data structure version for freeze data: version0 */
|
||
|
#define PROTO_645_SOLR_FROZEN_DATA_VER_0 (0)
|
||
|
|
||
|
#pragma pack(push) /* save the pack status */
|
||
|
#pragma pack(1) /* 1 byte align */
|
||
|
|
||
|
/* sunsolar tlv data type request */
|
||
|
typedef struct _proto_645_tlv_type_req {
|
||
|
/* each bit represents a type */
|
||
|
uint16_t value;
|
||
|
} proto_645_tlv_type_req_t;
|
||
|
|
||
|
/* report data information use tag, length, value module */
|
||
|
typedef struct _proto_645_sunsolar_tlv_data {
|
||
|
/* data type: see PROTO_645_SUNSOLAR_TLV_XX */
|
||
|
uint8_t type :7,
|
||
|
/* if is last type data set to 1 */
|
||
|
flg :1;
|
||
|
/* include data length */
|
||
|
uint8_t len;
|
||
|
/* data */
|
||
|
uint8_t data[0];
|
||
|
} proto_645_sunsolar_tlv_data_t;
|
||
|
|
||
|
/* link status */
|
||
|
typedef struct _proto_645_sunsolar_link_state {
|
||
|
/* link type, online/offline status */
|
||
|
uint8_t is_online;
|
||
|
} proto_645_sunsolar_link_state_t;
|
||
|
|
||
|
/* voltage */
|
||
|
typedef struct _proto_645_sunsolar_voltage {
|
||
|
/* voltage unit:0.1V */
|
||
|
uint16_t vol;
|
||
|
} proto_645_sunsolar_voltage_t;
|
||
|
|
||
|
/* current */
|
||
|
typedef struct _proto_645_sunsolar_current {
|
||
|
/* current unit:0.001A */
|
||
|
uint16_t cur;
|
||
|
} proto_645_sunsolar_current_t;
|
||
|
|
||
|
/* temperature */
|
||
|
typedef struct _proto_645_sunsolar_temperature {
|
||
|
/* temperature unit:0.1degrees */
|
||
|
int16_t temp;
|
||
|
} proto_645_sunsolar_temperature_t;
|
||
|
|
||
|
/* plc link statistics */
|
||
|
typedef struct _proto_645_sunsolar_plc_link_stat {
|
||
|
/* the last pkt rssi */
|
||
|
uint8_t rssi;
|
||
|
/* the last pkt snr */
|
||
|
int8_t snr;
|
||
|
} proto_645_sunsolar_plc_link_stat_t;
|
||
|
|
||
|
/* period power output */
|
||
|
typedef struct _proto_645_sunsolar_period_energy {
|
||
|
/* period power output, unit: mWh */
|
||
|
uint32_t period_total_energy;
|
||
|
} proto_645_sunsolar_period_energy_t;
|
||
|
|
||
|
/* history power output */
|
||
|
typedef struct _proto_645_sunsolar_total_his_energy {
|
||
|
/* history total energy output, unit: Wh */
|
||
|
uint64_t his_total_energy;
|
||
|
} proto_645_sunsolar_total_his_energy_t;
|
||
|
|
||
|
/* reboot count struct */
|
||
|
typedef struct _proto_645_sunsolar_reboot_cnt {
|
||
|
/* reboot count */
|
||
|
uint16_t reboot_cnt;
|
||
|
} proto_645_sunsolar_reboot_cnt_t;
|
||
|
|
||
|
/* reboot type struct */
|
||
|
typedef struct _proto_645_sunsolar_dev_reboot {
|
||
|
/* reboot_type, see PROTO_645_SUNSOLAR_REBOOT_TYPE_XX. */
|
||
|
uint8_t reboot_type;
|
||
|
} proto_645_sunsolar_dev_reboot_t;
|
||
|
|
||
|
/* heartbeat function config command layout */
|
||
|
typedef struct _proto_645_sunsolar_heartbeat_set {
|
||
|
/* heartbeat function control cmd magic,
|
||
|
* see PROTO_645_SUNSOLAR_CMD_XX_MAGCI.
|
||
|
*/
|
||
|
uint8_t cmd_magic;
|
||
|
} proto_645_sunsolar_heartbeat_set_t;
|
||
|
|
||
|
/* read rsd cfg status and real status*/
|
||
|
typedef struct _proto_645_sunsolar_read_rsd {
|
||
|
/* config rsd status: 0xA, open; 0x5, close; */
|
||
|
uint8_t last_cmd :4,
|
||
|
/* real time rsd status: 0xA, open; 0x5, close; */
|
||
|
real_status :4;
|
||
|
/* rsd voltage unit:0.1v*/
|
||
|
uint16_t real_volt;
|
||
|
} proto_645_sunsolar_read_rsd_t;
|
||
|
|
||
|
/* rsd config status */
|
||
|
typedef struct _proto_645_sunsolar_set_rsd {
|
||
|
/* master device set rsd time */
|
||
|
uint32_t tm;
|
||
|
/* rsd direct control command magic,
|
||
|
* see PROTO_645_SUNSOLAR_CMD_XX_MAGCI.
|
||
|
*/
|
||
|
uint8_t cmd_magic;
|
||
|
} proto_645_sunsolar_set_rsd_t;
|
||
|
|
||
|
/* sunsolar module Version */
|
||
|
typedef struct _proto_645_sunsolar_mod_ver {
|
||
|
uint32_t sw_ver;
|
||
|
uint32_t hw_ver;
|
||
|
} proto_645_sunsolar_mod_ver_t;
|
||
|
|
||
|
/* collect upgrade data */
|
||
|
typedef struct _proto_645_sunsolar_col_upgrade_data {
|
||
|
/* upgrade total frame count */
|
||
|
uint16_t total_cnt;
|
||
|
/* current frame index */
|
||
|
uint16_t cur_index;
|
||
|
/* current frame data */
|
||
|
uint8_t data[0];
|
||
|
} proto_645_sunsolar_col_upgrade_data_t;
|
||
|
|
||
|
typedef struct _proto_645_sunsolar_upgrade_lost_data {
|
||
|
/* total frame count */
|
||
|
uint16_t total_cnt;
|
||
|
/* lost frame count, one time max 64 */
|
||
|
uint16_t cur_lost_cnt;
|
||
|
/* lost index list */
|
||
|
uint16_t lost_index[0];
|
||
|
} proto_645_sunsolar_upgrade_lost_data_t;
|
||
|
|
||
|
#pragma pack(pop)
|
||
|
|
||
|
#endif /* PROTO_645_SUNSOLAR_H */
|