Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
alp_payload.h
00001 /// @copyright 00002 /// ========================================================================={{{ 00003 /// Copyright (c) 2012-2020 WizziLab / 00004 /// All rights reserved / 00005 /// / 00006 /// =========================================================================}}} 00007 /// @endcopyright 00008 00009 // ======================================================================= 00010 /// @file alp_helpers.h 00011 /// @defgroup ALP 00012 /// @brief ALP helpers functions 00013 // ======================================================================= 00014 00015 #ifndef __ALP_PAYLOAD_H__ 00016 #define __ALP_PAYLOAD_H__ 00017 00018 #include "hal_types.h" 00019 00020 //====================================================================== 00021 //====================================================================== 00022 // ALP Helpers 00023 //====================================================================== 00024 //====================================================================== 00025 00026 // ALP payload (chained list) 00027 // Each element contains ONE ALP OP 00028 typedef struct _alp_payload_t { 00029 u32 len; 00030 _alp_payload_t* next; 00031 u8 d[1]; 00032 } alp_payload_t; 00033 00034 // Utils 00035 alp_payload_t* alp_payload_new(u32 size); 00036 void alp_payload_free(alp_payload_t* alp); 00037 void alp_payload_print_nb(void); 00038 alp_payload_t* alp_payload_append(alp_payload_t* alp_1, alp_payload_t* alp_2); 00039 int alp_payload_get_err(alp_payload_t* alp); 00040 alp_payload_t* alp_payload_parse(u8* p, int length); 00041 int alp_payload_parse_chunk(alp_payload_t* alp, alp_parsed_chunk_t* r); 00042 void alp_payload_print(alp_payload_t* alp); 00043 u32 alp_payload_to_buf(alp_payload_t* alp, u8* buf, u32 max); 00044 00045 //====================================================================== 00046 /// @brief Parses one OP from a payload. 00047 /// Returns at first matching OP. 00048 /// Let payload untouched. 00049 /// @param alp alp_payload_t* Payload to parse from 00050 /// @param op u8 OP to look for 00051 /// @param buffer void* Parsed OP 00052 /// @return int Size of parsed OP 00053 /// @revent NONE 00054 //====================================================================== 00055 alp_payload_t* alp_payload_get(alp_payload_t* alp, u8 op); 00056 00057 //====================================================================== 00058 /// @brief Extract one OP from a payload. 00059 /// Returns at first matching OP. 00060 /// Removes parsed OP from the payload. 00061 /// @param alp alp_payload_t** Payload to extract from 00062 /// @param op u8 OP to look for 00063 /// @return alp_payload_t* Extracted OP 00064 /// @revent NONE 00065 //====================================================================== 00066 alp_payload_t* alp_payload_extract(alp_payload_t** alp, u8 op); 00067 00068 //====================================================================== 00069 /// @brief Parses one OP from a payload. 00070 /// Returns at first matching OP. 00071 /// Removes parsed OP from the payload. 00072 /// Copy payload data into provider buffer 00073 /// @param alp alp_payload_t** Payload to extract from 00074 /// @param op u8 OP to look for 00075 /// @param data void* Parsed OP data buffer 00076 /// @return bool true if OP found else false 00077 /// @revent NONE 00078 //====================================================================== 00079 bool alp_payload_extract_data(alp_payload_t** alp, u8 op, void* data); 00080 00081 //====================================================================== 00082 /// @brief Creates malloc'ed ALP payload 00083 /// @param alp alp_payload_t* Payload to append the ALP message to. A new payload will be malloc'ed if NULL 00084 /// @param ... 00085 /// @return alp_payload_t* New ALP payload 00086 /// @revent NONE 00087 //====================================================================== 00088 alp_payload_t* alp_payload_root_auth( alp_payload_t* alp); 00089 alp_payload_t* alp_payload_root_auth_enc(alp_payload_t* alp, u8* challenge); 00090 alp_payload_t* alp_payload_root_sign( alp_payload_t* alp, u8* iv); 00091 alp_payload_t* alp_payload_nop( alp_payload_t* alp, u8 group); 00092 alp_payload_t* alp_payload_forward( alp_payload_t* alp, void* itf); 00093 alp_payload_t* alp_payload_tag( alp_payload_t* alp, u8 tag); 00094 alp_payload_t* alp_payload_rsp_tag( alp_payload_t* alp, u8 tag, u8 eop, u8 err); 00095 alp_payload_t* alp_payload_rsp_f_data( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length); 00096 //alp_payload_t* alp_payload_rsp_f_data_fs(alp_payload_t* alp, u8 fid, u32 offset, u32 length); 00097 alp_payload_t* alp_payload_rsp_status( alp_payload_t* alp, u8 action, s8 status); 00098 alp_payload_t* alp_payload_rsp_fprop( alp_payload_t* alp, u8 fid, alp_file_header_t* hdr); 00099 alp_payload_t* alp_payload_f_wr_data( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group); 00100 alp_payload_t* alp_payload_f_wr_data_nr( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group); 00101 alp_payload_t* alp_payload_f_rd_data( alp_payload_t* alp, u8 fid, u32 offset, u32 length, u8 group); 00102 alp_payload_t* alp_payload_f_flush( alp_payload_t* alp, u8 fid, u8 group); 00103 alp_payload_t* alp_payload_f_declare( alp_payload_t* alp, u8 fid, alp_file_header_t* hdr); 00104 alp_payload_t* alp_payload_f_touch( alp_payload_t* alp, u8 fid, u32 offset, u32 length, u8 group); 00105 alp_payload_t* alp_payload_activate_itf( alp_payload_t* alp, u8 type, u8 nb_dev, u8 ifid, u8 flags, u8 enable); 00106 alp_payload_t* alp_payload_urcc_en( alp_payload_t* alp, u8 type, u8 ifid, u8 val); 00107 alp_payload_t* alp_payload_query( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group); 00108 alp_payload_t* alp_payload_qbreak( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group); 00109 alp_payload_t* alp_payload_qbreak_eq( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); 00110 alp_payload_t* alp_payload_qbreak_ne( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); 00111 alp_payload_t* alp_payload_qbreak_gt( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); 00112 alp_payload_t* alp_payload_qbreak_gte( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); 00113 alp_payload_t* alp_payload_qbreak_lt( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); 00114 alp_payload_t* alp_payload_qbreak_lte( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); 00115 alp_payload_t* alp_payload_qbreak_eq_msk(alp_payload_t* alp, u8 fid, u32 mask, u32 data, u32 offset, u32 length, u8 group); 00116 00117 00118 #endif // __ALP_PAYLOAD_H__
Generated on Tue Jul 12 2022 13:52:23 by
1.7.2