Exportable version of WizziLab's modem driver.
include/alp_payload.h@64:7c338f388d82, 2021-09-23 (annotated)
- Committer:
- Jeej
- Date:
- Thu Sep 23 15:06:02 2021 +0000
- Revision:
- 64:7c338f388d82
- Parent:
- 61:820395fc5572
- Child:
- 65:c7749f9b6009
Added print to follow number of malloc'ed ALP payloads.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jeej | 59:3b38b5f499db | 1 | /// @copyright |
Jeej | 59:3b38b5f499db | 2 | /// ========================================================================={{{ |
Jeej | 59:3b38b5f499db | 3 | /// Copyright (c) 2012-2020 WizziLab / |
Jeej | 59:3b38b5f499db | 4 | /// All rights reserved / |
Jeej | 59:3b38b5f499db | 5 | /// / |
Jeej | 59:3b38b5f499db | 6 | /// =========================================================================}}} |
Jeej | 59:3b38b5f499db | 7 | /// @endcopyright |
Jeej | 59:3b38b5f499db | 8 | |
Jeej | 59:3b38b5f499db | 9 | // ======================================================================= |
Jeej | 59:3b38b5f499db | 10 | /// @file alp_helpers.h |
Jeej | 59:3b38b5f499db | 11 | /// @defgroup ALP |
Jeej | 59:3b38b5f499db | 12 | /// @brief ALP helpers functions |
Jeej | 59:3b38b5f499db | 13 | // ======================================================================= |
Jeej | 59:3b38b5f499db | 14 | |
Jeej | 59:3b38b5f499db | 15 | #ifndef __ALP_PAYLOAD_H__ |
Jeej | 59:3b38b5f499db | 16 | #define __ALP_PAYLOAD_H__ |
Jeej | 59:3b38b5f499db | 17 | |
Jeej | 59:3b38b5f499db | 18 | #include "hal_types.h" |
Jeej | 59:3b38b5f499db | 19 | |
Jeej | 59:3b38b5f499db | 20 | //====================================================================== |
Jeej | 59:3b38b5f499db | 21 | //====================================================================== |
Jeej | 59:3b38b5f499db | 22 | // ALP Helpers |
Jeej | 59:3b38b5f499db | 23 | //====================================================================== |
Jeej | 59:3b38b5f499db | 24 | //====================================================================== |
Jeej | 59:3b38b5f499db | 25 | |
Jeej | 59:3b38b5f499db | 26 | // ALP payload (chained list) |
Jeej | 59:3b38b5f499db | 27 | // Each element contains ONE ALP OP |
Jeej | 59:3b38b5f499db | 28 | typedef struct _alp_payload_t { |
Jeej | 59:3b38b5f499db | 29 | u32 len; |
Jeej | 59:3b38b5f499db | 30 | _alp_payload_t* next; |
Jeej | 59:3b38b5f499db | 31 | u8 d[1]; |
Jeej | 59:3b38b5f499db | 32 | } alp_payload_t; |
Jeej | 59:3b38b5f499db | 33 | |
Jeej | 59:3b38b5f499db | 34 | // Utils |
Jeej | 59:3b38b5f499db | 35 | alp_payload_t* alp_payload_new(u32 size); |
Jeej | 59:3b38b5f499db | 36 | void alp_payload_free(alp_payload_t* alp); |
Jeej | 64:7c338f388d82 | 37 | void alp_payload_print_nb(void); |
Jeej | 59:3b38b5f499db | 38 | alp_payload_t* alp_payload_append(alp_payload_t* alp_1, alp_payload_t* alp_2); |
Jeej | 59:3b38b5f499db | 39 | int alp_payload_get_err(alp_payload_t* alp); |
Jeej | 59:3b38b5f499db | 40 | alp_payload_t* alp_payload_parse(u8* p, int length); |
Jeej | 59:3b38b5f499db | 41 | void alp_payload_print(alp_payload_t* alp); |
Jeej | 59:3b38b5f499db | 42 | u32 alp_payload_to_buf(alp_payload_t* alp, u8* buf, u32 offset, u32 max); |
Jeej | 59:3b38b5f499db | 43 | |
Jeej | 59:3b38b5f499db | 44 | //====================================================================== |
Jeej | 59:3b38b5f499db | 45 | /// @brief Parses one OP from a payload. |
Jeej | 59:3b38b5f499db | 46 | /// Returns at first matching OP. |
Jeej | 59:3b38b5f499db | 47 | /// Let payload untouched. |
Jeej | 59:3b38b5f499db | 48 | /// @param alp alp_payload_t* Payload to parse from |
Jeej | 59:3b38b5f499db | 49 | /// @param op u8 OP to look for |
Jeej | 59:3b38b5f499db | 50 | /// @param buffer void* Parsed OP |
Jeej | 59:3b38b5f499db | 51 | /// @return int Size of parsed OP |
Jeej | 59:3b38b5f499db | 52 | /// @revent NONE |
Jeej | 59:3b38b5f499db | 53 | //====================================================================== |
Jeej | 59:3b38b5f499db | 54 | alp_payload_t* alp_payload_get(alp_payload_t* alp, u8 op); |
Jeej | 59:3b38b5f499db | 55 | |
Jeej | 59:3b38b5f499db | 56 | //====================================================================== |
Jeej | 61:820395fc5572 | 57 | /// @brief Extract one OP from a payload. |
Jeej | 61:820395fc5572 | 58 | /// Returns at first matching OP. |
Jeej | 61:820395fc5572 | 59 | /// Removes parsed OP from the payload. |
Jeej | 61:820395fc5572 | 60 | /// @param alp alp_payload_t** Payload to extract from |
Jeej | 61:820395fc5572 | 61 | /// @param op u8 OP to look for |
Jeej | 61:820395fc5572 | 62 | /// @return alp_payload_t* Extracted OP |
Jeej | 61:820395fc5572 | 63 | /// @revent NONE |
Jeej | 61:820395fc5572 | 64 | //====================================================================== |
Jeej | 61:820395fc5572 | 65 | alp_payload_t* alp_payload_extract(alp_payload_t** alp, u8 op); |
Jeej | 61:820395fc5572 | 66 | |
Jeej | 61:820395fc5572 | 67 | //====================================================================== |
Jeej | 59:3b38b5f499db | 68 | /// @brief Parses one OP from a payload. |
Jeej | 59:3b38b5f499db | 69 | /// Returns at first matching OP. |
Jeej | 59:3b38b5f499db | 70 | /// Removes parsed OP from the payload. |
Jeej | 61:820395fc5572 | 71 | /// Copy payload data into provider buffer |
Jeej | 61:820395fc5572 | 72 | /// @param alp alp_payload_t** Payload to extract from |
Jeej | 59:3b38b5f499db | 73 | /// @param op u8 OP to look for |
Jeej | 61:820395fc5572 | 74 | /// @param data void* Parsed OP data buffer |
Jeej | 61:820395fc5572 | 75 | /// @return bool true if OP found else false |
Jeej | 59:3b38b5f499db | 76 | /// @revent NONE |
Jeej | 59:3b38b5f499db | 77 | //====================================================================== |
Jeej | 61:820395fc5572 | 78 | bool alp_payload_extract_data(alp_payload_t** alp, u8 op, void* data); |
Jeej | 59:3b38b5f499db | 79 | |
Jeej | 59:3b38b5f499db | 80 | //====================================================================== |
Jeej | 59:3b38b5f499db | 81 | /// @brief Creates malloc'ed ALP payload |
Jeej | 59:3b38b5f499db | 82 | /// @param alp alp_payload_t* Payload to append the ALP message to. A new payload will be malloc'ed if NULL |
Jeej | 59:3b38b5f499db | 83 | /// @param ... |
Jeej | 59:3b38b5f499db | 84 | /// @return alp_payload_t* New ALP payload |
Jeej | 59:3b38b5f499db | 85 | /// @revent NONE |
Jeej | 59:3b38b5f499db | 86 | //====================================================================== |
Jeej | 59:3b38b5f499db | 87 | alp_payload_t* alp_payload_root_auth( alp_payload_t* alp); |
Jeej | 59:3b38b5f499db | 88 | alp_payload_t* alp_payload_root_auth_enc(alp_payload_t* alp, u8* challenge); |
Jeej | 59:3b38b5f499db | 89 | alp_payload_t* alp_payload_root_sign( alp_payload_t* alp, u8* iv); |
Jeej | 60:08efaaca0e83 | 90 | alp_payload_t* alp_payload_nop( alp_payload_t* alp, u8 group); |
Jeej | 59:3b38b5f499db | 91 | alp_payload_t* alp_payload_forward( alp_payload_t* alp, void* itf); |
Jeej | 59:3b38b5f499db | 92 | alp_payload_t* alp_payload_tag( alp_payload_t* alp, u8 tag); |
Jeej | 59:3b38b5f499db | 93 | alp_payload_t* alp_payload_rsp_tag( alp_payload_t* alp, u8 tag, u8 eop, u8 err); |
Jeej | 59:3b38b5f499db | 94 | alp_payload_t* alp_payload_rsp_f_data( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length); |
Jeej | 59:3b38b5f499db | 95 | //alp_payload_t* alp_payload_rsp_f_data_fs(alp_payload_t* alp, u8 fid, u32 offset, u32 length); |
Jeej | 59:3b38b5f499db | 96 | alp_payload_t* alp_payload_rsp_status( alp_payload_t* alp, u8 action, s8 status); |
Jeej | 59:3b38b5f499db | 97 | alp_payload_t* alp_payload_rsp_fprop( alp_payload_t* alp, u8 fid, alp_file_header_t* hdr); |
Jeej | 59:3b38b5f499db | 98 | alp_payload_t* alp_payload_f_wr_data( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group); |
Jeej | 59:3b38b5f499db | 99 | alp_payload_t* alp_payload_f_wr_data_nr( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group); |
Jeej | 59:3b38b5f499db | 100 | alp_payload_t* alp_payload_f_rd_data( alp_payload_t* alp, u8 fid, u32 offset, u32 length, u8 group); |
Jeej | 59:3b38b5f499db | 101 | alp_payload_t* alp_payload_f_flush( alp_payload_t* alp, u8 fid, u8 group); |
Jeej | 59:3b38b5f499db | 102 | alp_payload_t* alp_payload_f_declare( alp_payload_t* alp, u8 fid, alp_file_header_t* hdr); |
Jeej | 60:08efaaca0e83 | 103 | alp_payload_t* alp_payload_f_touch( alp_payload_t* alp, u8 fid, u32 offset, u32 length, u8 group); |
Jeej | 60:08efaaca0e83 | 104 | alp_payload_t* alp_payload_activate_itf( alp_payload_t* alp, u8 type, u8 nb_dev, u8 ifid, u8 flags, u8 enable); |
Jeej | 60:08efaaca0e83 | 105 | alp_payload_t* alp_payload_urcc_en( alp_payload_t* alp, u8 type, u8 ifid, u8 val); |
Jeej | 59:3b38b5f499db | 106 | alp_payload_t* alp_payload_query( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group); |
Jeej | 59:3b38b5f499db | 107 | alp_payload_t* alp_payload_qbreak( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group); |
Jeej | 59:3b38b5f499db | 108 | alp_payload_t* alp_payload_qbreak_eq( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); |
Jeej | 59:3b38b5f499db | 109 | alp_payload_t* alp_payload_qbreak_ne( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); |
Jeej | 59:3b38b5f499db | 110 | alp_payload_t* alp_payload_qbreak_gt( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); |
Jeej | 59:3b38b5f499db | 111 | alp_payload_t* alp_payload_qbreak_gte( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); |
Jeej | 59:3b38b5f499db | 112 | alp_payload_t* alp_payload_qbreak_lt( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); |
Jeej | 59:3b38b5f499db | 113 | alp_payload_t* alp_payload_qbreak_lte( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group); |
Jeej | 59:3b38b5f499db | 114 | alp_payload_t* alp_payload_qbreak_eq_msk(alp_payload_t* alp, u8 fid, u32 mask, u32 data, u32 offset, u32 length, u8 group); |
Jeej | 59:3b38b5f499db | 115 | |
Jeej | 59:3b38b5f499db | 116 | |
Jeej | 59:3b38b5f499db | 117 | #endif // __ALP_PAYLOAD_H__ |