[Feature][T106]ZXW P56U09 code

Only Configure: Yes
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: No
Doc Update: No

Change-Id: I3cbd8b420271eb20c2b40ebe5c78f83059cd42f3
diff --git a/ap/lib/libupi_ab/inc/upi_upgrade_package.h b/ap/lib/libupi_ab/inc/upi_upgrade_package.h
new file mode 100755
index 0000000..0fb5c38
--- /dev/null
+++ b/ap/lib/libupi_ab/inc/upi_upgrade_package.h
@@ -0,0 +1,171 @@
+/**
+* @file upi_delta.h
+* @brief ²î·ÖÎļþÏà¹ØÍ·Îļþ
+*
+* Copyright (C) 2017 Sanechips Technology Co., Ltd.
+* @author
+*
+*/
+
+#ifndef _UPI_UPGRADE_PACKAGE_H
+#define _UPI_UPGRADE_PACKAGE_H
+
+/*******************************************************************************
+ *						   Include header files							  *
+ ******************************************************************************/
+
+#include "upi_public.h"
+
+/*******************************************************************************
+ *							 Macro definitions							   *
+ ******************************************************************************/
+
+#define UPGRADE_PACKAGE_HEAD_MAGIC				("FOTA")
+#define UPGRADE_PACKAGE_HEAD_MAGIC_LEN			(4)
+
+#define VERSION_LEN								(64)
+
+
+/*******************************************************************************
+ *							 Type definitions								*
+ ******************************************************************************/
+
+/**
+* @brief		²î·ÖÎļþÎļþÍ·ÐÅÏ¢£¬¿ÉÒÔÓÃÓÚУÑé²î·ÖÎļþµÈ£»¼°»ñÈ¡µ±Ç°ÎļþÖзÖÇø¼°extraÊýµÈ£»
+* @param	magic_word:						ÎļþͷħÊõ×Ö
+* @param	plat:							ƽ̨
+* @param	upgrade_package_type:			Éý¼¶°üÎļþÀàÐÍ AL£ºÈ«°æ±¾£¬ DE£º²î·Ö
+* @param	upgrade_type					Éý¼¶ÀàÐÍ
+* @param	upgrade_package_version:		Éý¼¶°üÎļþ°æ±¾
+* @param	partition_num:					·ÖÇøÊý
+* @param	extra_num:						hashËã·¨ÀàÐÍ£¬0£ºÄ¬ÈÏ SHA512
+* @param	block_size:						¿é´óС£¬128ÕûÊý±¶
+* @param	extra_num:						extraÎļþÊý
+* @param	version_src:					²î·ÖÎļþÉý¼¶Ô´°æ±¾£¬¶ÔÓ¦ÄÚ²¿°æ±¾ºÅ
+* @param	version_dst:					²î·ÖÎļþÉý¼¶Ä¿±ê°æ±¾ºÅ£¬¶ÔÓ¦ÄÚ²¿°æ±¾ºÅ
+* @param	hash:							hashËã·¨Öµ
+**/
+
+
+
+typedef struct
+{
+    char							magic_word[UPGRADE_PACKAGE_HEAD_MAGIC_LEN];
+    int								upgrade_package_version;
+    int								plat;
+    int								upgrade_package_type;
+    int								upgrade_type;
+    int								partition_num;
+    int								extra_num;
+    int								hash_type;
+    int								block_size;
+    char							version_src[VERSION_LEN];
+    char							version_dst[VERSION_LEN];
+    unsigned char					hash[HASH_MAX_LEN];
+    char							reserve[28];
+} upgrade_package_head_info_t;
+
+/**
+* @brief		·ÖÇøÎļþÍ·ÐÅÏ¢£¬°üº¬´ýÉý¼¶µÄ²î·Ö·ÖÇøÎļþÐÅÏ¢
+* @param	name:				²î·Ö·ÖÇøÃû
+* @param	len:				²î·Ö·ÖÇøÎļþ³¤¶È
+* @param	offset:				²î·Ö·ÖÇøÎļþÏà¶ÔÓÚdeltaÎļþ0µØÖ·µÄÆ«ÒÆ
+* @param	partition_type:		·ÖÇøÀàÐÍ
+* @param	zipped:				ÊÇ·ñ¾­¹ýѹËõ
+* @param	reserve:			±£Áô
+* @param	hash:				ÖÆ×÷²î·Ö·ÖÇøµÄÔ´·ÖÇøÎļþmd5
+*/
+typedef struct
+{
+    char				name[PARTITION_NAME_LEN];
+    int					len;
+    int					offset;
+    int					partition_type;
+    int					zipped;
+    char				reserve[16];
+    unsigned char		hash[HASH_MAX_LEN];
+} partition_head_info_t;
+
+
+/**
+* @brief		extraÐÅÏ¢
+* @param	name:		extraÎļþÃû
+* @param	len:		Îļþ³¤¶È
+* @param	offset:		»ùÓÚÕû¸ö²î·ÖÎļþµÄÆ«ÒÆ
+* @param	hash:		ÎļþhashÖµ
+* @param	reserve:	Ô¤ÁôÐÅÏ¢
+*/
+typedef struct
+{
+    char				name[EXTRA_NAME_LEN];
+    int					len;
+    int					offset;
+    char				reserve_1[8];
+    unsigned char		hash[HASH_MAX_LEN];
+    char				reserve_2[8];
+} extra_head_info_t;
+
+
+/**
+* @brief		²î·ÖÎļþÐÅÏ¢
+* @param	head:						ÎļþÍ·ÐÅÏ¢
+* @param	partition_num:				ÎļþÖзÖÇøÊý
+* @param	partition_info:				·ÖÇøÐÅÏ¢Ö¸ÕëÍ·
+* @param	extra_num:					extraÎļþÊý
+* @param	extra_info:					extraÎļþÐÅÏ¢Ö¸Õë
+* @param	upgrade_package_file_desc:	Îļþ¾ä±ú
+* @param	upgrade_package_file_size:	Îļþ³¤¶È
+*/
+typedef struct
+{
+    upgrade_package_head_info_t			*head;
+    //	int									partition_num;
+    partition_head_info_t				*partition_info;
+    //	int									extra_num;
+    extra_head_info_t					*extra_info;
+    int									upgrade_package_file_desc;
+    unsigned int						upgrade_package_file_size;
+} upgrade_package_info_t;
+
+
+
+
+
+
+/*******************************************************************************
+ *					   Global variable declarations						  *
+ ******************************************************************************/
+
+
+/*******************************************************************************
+ *					   Global function declarations						  *
+ ******************************************************************************/
+
+
+int init_upgrade_package_info(const char * upagrade_package_file_path);
+void deinit_upgrade_package_info();
+
+upgrade_package_info_t  *get_upgrade_package_info();
+
+partition_head_info_t *get_partition_head_info();
+int get_partition_num();
+
+extra_head_info_t *get_extra_head_info();
+int get_extra_num();
+
+int get_upgrade_package_file_fd();
+
+partition_head_info_t *get_partition_head_info_by_name(const char *partition_name);
+int get_total_partition_length();
+
+int get_upgrade_type();
+
+/*******************************************************************************
+ *					  Inline function implementations						*
+ ******************************************************************************/
+
+
+
+
+#endif // _UPI_UPGRADE_PACKAGE_H
+