Exportable version of WizziLab's modem driver.
include/alp_payload.h
- Committer:
- Jeej
- Date:
- 2021-02-19
- Revision:
- 60:08efaaca0e83
- Parent:
- 59:3b38b5f499db
- Child:
- 61:820395fc5572
File content as of revision 60:08efaaca0e83:
/// @copyright /// ========================================================================={{{ /// Copyright (c) 2012-2020 WizziLab / /// All rights reserved / /// / /// =========================================================================}}} /// @endcopyright // ======================================================================= /// @file alp_helpers.h /// @defgroup ALP /// @brief ALP helpers functions // ======================================================================= #ifndef __ALP_PAYLOAD_H__ #define __ALP_PAYLOAD_H__ #include "hal_types.h" //====================================================================== //====================================================================== // ALP Helpers //====================================================================== //====================================================================== // ALP payload (chained list) // Each element contains ONE ALP OP typedef struct _alp_payload_t { u32 len; _alp_payload_t* next; u8 d[1]; } alp_payload_t; // Utils alp_payload_t* alp_payload_new(u32 size); void alp_payload_free(alp_payload_t* alp); alp_payload_t* alp_payload_append(alp_payload_t* alp_1, alp_payload_t* alp_2); int alp_payload_get_err(alp_payload_t* alp); alp_payload_t* alp_payload_parse(u8* p, int length); void alp_payload_print(alp_payload_t* alp); u32 alp_payload_to_buf(alp_payload_t* alp, u8* buf, u32 offset, u32 max); //====================================================================== /// @brief Parses one OP from a payload. /// Returns at first matching OP. /// Let payload untouched. /// @param alp alp_payload_t* Payload to parse from /// @param op u8 OP to look for /// @param buffer void* Parsed OP /// @return int Size of parsed OP /// @revent NONE //====================================================================== alp_payload_t* alp_payload_get(alp_payload_t* alp, u8 op); //====================================================================== /// @brief Parses one OP from a payload. /// Returns at first matching OP. /// Removes parsed OP from the payload. /// @param alp alp_payload_t* Payload to parse from /// @param op u8 OP to look for /// @param buffer void* Parsed OP /// @return int Size of parsed OP /// @revent NONE //====================================================================== alp_payload_t* alp_payload_extract(alp_payload_t** alp, u8 op); //====================================================================== /// @brief Creates malloc'ed ALP payload /// @param alp alp_payload_t* Payload to append the ALP message to. A new payload will be malloc'ed if NULL /// @param ... /// @return alp_payload_t* New ALP payload /// @revent NONE //====================================================================== alp_payload_t* alp_payload_root_auth( alp_payload_t* alp); alp_payload_t* alp_payload_root_auth_enc(alp_payload_t* alp, u8* challenge); alp_payload_t* alp_payload_root_sign( alp_payload_t* alp, u8* iv); alp_payload_t* alp_payload_nop( alp_payload_t* alp, u8 group); alp_payload_t* alp_payload_forward( alp_payload_t* alp, void* itf); alp_payload_t* alp_payload_tag( alp_payload_t* alp, u8 tag); alp_payload_t* alp_payload_rsp_tag( alp_payload_t* alp, u8 tag, u8 eop, u8 err); alp_payload_t* alp_payload_rsp_f_data( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length); //alp_payload_t* alp_payload_rsp_f_data_fs(alp_payload_t* alp, u8 fid, u32 offset, u32 length); alp_payload_t* alp_payload_rsp_status( alp_payload_t* alp, u8 action, s8 status); alp_payload_t* alp_payload_rsp_fprop( alp_payload_t* alp, u8 fid, alp_file_header_t* hdr); alp_payload_t* alp_payload_f_wr_data( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group); alp_payload_t* alp_payload_f_wr_data_nr( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group); alp_payload_t* alp_payload_f_rd_data( alp_payload_t* alp, u8 fid, u32 offset, u32 length, u8 group); alp_payload_t* alp_payload_f_flush( alp_payload_t* alp, u8 fid, u8 group); alp_payload_t* alp_payload_f_declare( alp_payload_t* alp, u8 fid, alp_file_header_t* hdr); alp_payload_t* alp_payload_f_touch( alp_payload_t* alp, u8 fid, u32 offset, u32 length, u8 group); alp_payload_t* alp_payload_activate_itf( alp_payload_t* alp, u8 type, u8 nb_dev, u8 ifid, u8 flags, u8 enable); alp_payload_t* alp_payload_urcc_en( alp_payload_t* alp, u8 type, u8 ifid, u8 val); alp_payload_t* alp_payload_query( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group); alp_payload_t* alp_payload_qbreak( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group); alp_payload_t* alp_payload_qbreak_eq( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); alp_payload_t* alp_payload_qbreak_ne( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); alp_payload_t* alp_payload_qbreak_gt( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); alp_payload_t* alp_payload_qbreak_gte( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); alp_payload_t* alp_payload_qbreak_lt( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); alp_payload_t* alp_payload_qbreak_lte( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); alp_payload_t* alp_payload_qbreak_eq_msk(alp_payload_t* alp, u8 fid, u32 mask, u32 data, u32 offset, u32 length, u8 group); #endif // __ALP_PAYLOAD_H__