inwudriver-weibo/app/mrs/cco/mrs_cco_upg.h

78 lines
3.0 KiB
C
Raw Normal View History

/*
* Copyright (c) CompanyNameMagicTag 2019-2020. All rights reserved.
* Description: CCO upgrade implementation.
*/
#ifndef __MRS_CCO_UPG_H__
#define __MRS_CCO_UPG_H__
#include "mrs_config.h"
#include "soc_mdm_upg.h"
#include "mrs_proto_1376_2.h"
#if defined(PRODUCT_CFG_PRODUCT_TYPE_CCO)
EXT_START_HEADER
#define MRS_CCO_UPG_ERROR_SEG (0x0000FFFF)
/* File flag */
#define MRS_CCO_UPG_FILE_FLAG_CLR (0x00)
#define MRS_CCO_UPG_FILE_FLAG_CCO (0x03)
#define MRS_CCO_UPG_FILE_FLAG_STA (0x08)
/* Data transfer format */
#define MRS_CCO_UPG_FILE_FLAG_OFFSET (0)
#define MRS_CCO_UPG_FILE_FLAG_SIZE (1)
#define MRS_CCO_UPG_FILE_PROPERTY_OFFSET (MRS_CCO_UPG_FILE_FLAG_OFFSET + MRS_CCO_UPG_FILE_FLAG_SIZE)
#define MRS_CCO_UPG_FILE_PROPERTY_SIZE (1)
#define MRS_CCO_UPG_FILE_INS_OFFSET (MRS_CCO_UPG_FILE_PROPERTY_OFFSET + MRS_CCO_UPG_FILE_PROPERTY_SIZE)
#define MRS_CCO_UPG_FILE_INS_SIZE (1)
#define MRS_CCO_UPG_SEG_TOTOAL_OFFSET (MRS_CCO_UPG_FILE_INS_OFFSET + MRS_CCO_UPG_FILE_INS_SIZE)
#define MRS_CCO_UPG_SEG_TOTOAL_SIZE (2)
#define MRS_CCO_UPG_SEG_CURRENT_OFFSET (MRS_CCO_UPG_SEG_TOTOAL_OFFSET + MRS_CCO_UPG_SEG_TOTOAL_SIZE)
#define MRS_CCO_UPG_SEG_CURRENT_SIZE (4)
#define MRS_CCO_UPG_SEG_DATA_LEN_OFFSET (MRS_CCO_UPG_SEG_CURRENT_OFFSET + MRS_CCO_UPG_SEG_CURRENT_SIZE)
#define MRS_CCO_UPG_SEG_DATA_LEN_SIZE (2)
#define MRS_CCO_UPG_SEG_DATA_OFFSET (MRS_CCO_UPG_SEG_DATA_LEN_OFFSET + MRS_CCO_UPG_SEG_DATA_LEN_SIZE)
#define MRS_CCO_UPG_FRAME_DATA_SIZE_MIN (MRS_CCO_UPG_FILE_FLAG_SIZE + MRS_CCO_UPG_FILE_PROPERTY_SIZE + \
MRS_CCO_UPG_FILE_INS_SIZE + MRS_CCO_UPG_SEG_TOTOAL_SIZE + \
MRS_CCO_UPG_SEG_CURRENT_SIZE + MRS_CCO_UPG_SEG_DATA_LEN_SIZE)
typedef struct {
td_u8 file_flag;
td_u8 file_property;
td_u8 file_ins;
td_u8 rsv;
td_u32 seg_curr;
td_u16 seg_totoal;
td_u16 data_len;
td_u8 *data;
} mrs_upg_param;
/* Initalize */
td_u32 mrs_upg_init(td_void);
/* File receive handler */
td_u32 mrs_upg_file_rx(mrs_upg_param *upg_param, td_u32 *segment);
/* Clear file handler */
td_u32 mrs_upg_clr(td_void);
/* Store 376.2 command frame */
td_void mrs_cco_upg_set_frame(const mrs_proto_1376_2_frame *frame);
/* Check CCO status of upgrade */
td_bool mrs_cco_upg_is_idle(td_void);
/* SW Verson reponse received */
td_void mrs_cco_upg_get_sw_ver_rx(const td_u8 addr[MRS_METER_ADDR_LEN], td_u8 *ver_str, td_u16 ver_len);
/* Receive file timeout reset */
td_void mrs_cco_upg_reset_file_rx_timeout(td_void);
/* Timer handlers */
td_void mrs_cco_upg_file_rx_on_timer(td_void);
td_void mrs_cco_upg_stop_on_timer(td_void);
td_void mrs_cco_upg_stat_query_bs_on_timer(td_void);
td_void mrs_cco_upg_stat_timeout(td_void);
td_void mrs_cco_upg_plc_wait_timeout(td_void);
td_void mrs_cco_upg_get_sw_ver_timeout(td_void);
td_void mrs_cco_upg_wait_resp_done_timeout(td_void);
EXT_END_HEADER
#endif /* PRODUCT_CFG_PRODUCT_TYPE_CCO */
#endif /* __MRS_CCO_UPG_H__ */