ex
Fork of mbed-os-example-mbed5-blinky by
DuerOS-Light-SDK-v1.1.0/duer-os-light/src/iot-baidu-ota/baidu_ota_unpack/ota/inc/pack_include.h
- Committer:
- TMBOY
- Date:
- 2017-07-18
- Revision:
- 47:9e361da97763
File content as of revision 47:9e361da97763:
#ifndef _MBED_OTA_PACK_INCLUDE_
#define _MBED_OTA_PACK_INCLUDE_
#include <stdint.h>
#define KEY_LEN 128
#define _DEBUG_
//#define _DEBUG_OUT_
#ifndef _DEBUG_OUT_
#define MBEDPACK_DEBUG_PRINT bca_printf
#else
#define MBEDPACK_DEBUG_PRINT printf
#endif
///
/// package header
typedef struct _package_header {
///
/// 'mbed' verify tag
unsigned char tag[4];
///
/// package header size
uint32_t header_size;
///
/// package signature size : 1024 bits
uint32_t package_sig_size;
///
/// package signature : include meta.json and all modules
unsigned char package_sig[KEY_LEN];
///
/// meta.json signature size : 1024 bits
uint32_t meta_sig_size;
///
/// meta.json signature
unsigned char meta_sig[KEY_LEN];
///
/// meta.json size : used for decompress meta.json from package body
uint32_t meta_size;
///
/// package size before decompress
uint32_t ori_package_size;
} package_header_t;
///
/// all modules included in mbed package is 'js' and mbed executable '.bin' file
typedef enum _module_type {
ModuleTypeALL,
ModuleTypeJS,
ModuleTypeSO,
ModuleTypeBIN,
ModuleTypeJSON,
ModuleTypeIMG
} module_type_t;
typedef struct _file_type_pair {
char* string;
module_type_t type;
} file_type;
typedef enum _package_type {
PackageTypeApp,
PackageTypeOS,
PackageTypeProfile,
PackageTypeUnknown
} package_type_t;
/*
typedef enum {
false = 0,
true
} bool;*/
/*
///
/// package body modules info excluding meta.json
typedef struct _module_info {
///
/// module name : xx.js / xx.bin
unsigned char* name;
///
/// module type : js / bin
module_type_t type;
uint32_t module_size;
uint8_t update;
unsigned char* version;
unsigned char* hw_version;
///
/// module data
unsigned char* data;
} module_info_t;
///
/// decompress info : used for extract meta data and modules array data
typedef struct _decompress_info {
///
/// decompressed meta data size
uint32_t decompress_meta_data_size;
///
/// decompressed meta data from package body
unsigned char* decompress_meta_data;
///
/// decompressed modules array data size
uint32_t decompress_module_data_size;
///
/// decompressed modules array data from package body
unsigned char* decompress_module_data;
} decompress_info_t;
*/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
typedef struct _module_info {
///
/// module name : xx.js / xx.bin
unsigned char* name;
///
/// module type : js / bin
module_type_t type;
uint32_t module_size;
uint8_t update;
unsigned char* version;
unsigned char* hw_version;
uint32_t offset; // offset from file begin
} module_info_t;
///
/// meta info : used for extract meta data and modules array data
typedef struct _meta_info {
///
/// decompressed meta data size
uint32_t meta_data_size;
///
/// decompressed module data offset
uint32_t module_data_offset;
///
/// decompressed meta data
unsigned char* meta_data;
///
/// json object
void* meta_object;
} meta_info_t;
#endif
