ex

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers pack_include.h Source File

pack_include.h

00001 
00002 #ifndef _MBED_OTA_PACK_INCLUDE_
00003 #define _MBED_OTA_PACK_INCLUDE_
00004 #include <stdint.h>
00005 
00006 #define KEY_LEN 128
00007 
00008 #define _DEBUG_
00009 //#define _DEBUG_OUT_
00010 
00011 #ifndef _DEBUG_OUT_
00012     #define MBEDPACK_DEBUG_PRINT bca_printf
00013 #else
00014     #define MBEDPACK_DEBUG_PRINT    printf
00015 #endif
00016 
00017 ///
00018 /// package header
00019 typedef struct _package_header {
00020 
00021    ///
00022    /// 'mbed' verify tag
00023    unsigned char tag[4];
00024 
00025    ///
00026    /// package header size
00027    uint32_t header_size;
00028 
00029    ///
00030    /// package signature size : 1024 bits
00031    uint32_t package_sig_size;
00032    ///
00033    /// package signature : include meta.json and all modules
00034    unsigned char package_sig[KEY_LEN];
00035 
00036    ///
00037    /// meta.json signature size : 1024 bits
00038    uint32_t meta_sig_size;
00039    ///
00040    /// meta.json signature
00041    unsigned char meta_sig[KEY_LEN];
00042 
00043    ///
00044    /// meta.json size : used for decompress meta.json from package body
00045    uint32_t meta_size;
00046 
00047    ///
00048    /// package size before decompress
00049    uint32_t ori_package_size;
00050 
00051 } package_header_t;
00052 
00053 ///
00054 /// all modules included in mbed package is 'js' and mbed executable '.bin' file
00055 typedef enum _module_type {
00056     ModuleTypeALL,
00057     ModuleTypeJS,
00058     ModuleTypeSO,
00059     ModuleTypeBIN,
00060     ModuleTypeJSON,
00061     ModuleTypeIMG
00062 } module_type_t;
00063 
00064 
00065 typedef struct _file_type_pair {
00066     char* string;
00067     module_type_t type;
00068 } file_type;
00069 
00070 
00071 typedef enum _package_type {
00072     PackageTypeApp,
00073     PackageTypeOS,
00074     PackageTypeProfile,
00075     PackageTypeUnknown
00076 } package_type_t;
00077 /*
00078 typedef enum {
00079     false = 0,
00080     true
00081 } bool;*/
00082 
00083 /*
00084 ///
00085 /// package body modules info excluding meta.json
00086 typedef struct _module_info {
00087 
00088    ///
00089    /// module name : xx.js / xx.bin
00090    unsigned char* name;
00091 
00092    ///
00093    /// module type : js / bin
00094    module_type_t type;
00095 
00096    uint32_t  module_size;
00097    uint8_t  update;
00098    unsigned char* version;
00099    unsigned char* hw_version;
00100 
00101    ///
00102    /// module data
00103    unsigned char* data;
00104 } module_info_t;
00105 
00106 ///
00107 /// decompress info : used for extract meta data and modules array data
00108 typedef struct _decompress_info {
00109 
00110    ///
00111    /// decompressed meta data size
00112    uint32_t decompress_meta_data_size;
00113    ///
00114    /// decompressed meta data from package body
00115    unsigned char* decompress_meta_data;
00116 
00117    ///
00118    /// decompressed modules array data size
00119    uint32_t decompress_module_data_size;
00120    ///
00121    /// decompressed modules array data from package body
00122    unsigned char* decompress_module_data;   
00123 } decompress_info_t;
00124 */
00125 
00126 
00127 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
00128 typedef struct _module_info {
00129 
00130    ///
00131    /// module name : xx.js / xx.bin
00132    unsigned char* name;
00133 
00134    ///
00135    /// module type : js / bin
00136    module_type_t type;
00137 
00138    uint32_t  module_size;
00139    uint8_t  update;
00140    unsigned char* version;
00141    unsigned char* hw_version;
00142    uint32_t offset;  // offset from file begin
00143 
00144 } module_info_t;
00145 
00146 ///
00147 /// meta info : used for extract meta data and modules array data
00148 typedef struct _meta_info {
00149 
00150    ///
00151    /// decompressed meta data size
00152    uint32_t meta_data_size;
00153 
00154    ///
00155    /// decompressed module data offset
00156    uint32_t module_data_offset;
00157 
00158    ///
00159    /// decompressed meta data
00160    unsigned char* meta_data;
00161 
00162    ///
00163    /// json object
00164    void* meta_object;
00165 } meta_info_t;
00166 
00167 #endif
00168 
00169