Exportable version of WizziLab's modem driver.

Dependents:   modem_ref_helper

Committer:
Jeej
Date:
Tue Sep 07 15:58:51 2021 +0000
Revision:
61:820395fc5572
Parent:
60:08efaaca0e83
Child:
64:7c338f388d82
Added boot callbeck set function

Who changed what in which revision?

UserRevisionLine numberNew 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 59:3b38b5f499db 37 alp_payload_t* alp_payload_append(alp_payload_t* alp_1, alp_payload_t* alp_2);
Jeej 59:3b38b5f499db 38 int alp_payload_get_err(alp_payload_t* alp);
Jeej 59:3b38b5f499db 39 alp_payload_t* alp_payload_parse(u8* p, int length);
Jeej 59:3b38b5f499db 40 void alp_payload_print(alp_payload_t* alp);
Jeej 59:3b38b5f499db 41 u32 alp_payload_to_buf(alp_payload_t* alp, u8* buf, u32 offset, u32 max);
Jeej 59:3b38b5f499db 42
Jeej 59:3b38b5f499db 43 //======================================================================
Jeej 59:3b38b5f499db 44 /// @brief Parses one OP from a payload.
Jeej 59:3b38b5f499db 45 /// Returns at first matching OP.
Jeej 59:3b38b5f499db 46 /// Let payload untouched.
Jeej 59:3b38b5f499db 47 /// @param alp alp_payload_t* Payload to parse from
Jeej 59:3b38b5f499db 48 /// @param op u8 OP to look for
Jeej 59:3b38b5f499db 49 /// @param buffer void* Parsed OP
Jeej 59:3b38b5f499db 50 /// @return int Size of parsed OP
Jeej 59:3b38b5f499db 51 /// @revent NONE
Jeej 59:3b38b5f499db 52 //======================================================================
Jeej 59:3b38b5f499db 53 alp_payload_t* alp_payload_get(alp_payload_t* alp, u8 op);
Jeej 59:3b38b5f499db 54
Jeej 59:3b38b5f499db 55 //======================================================================
Jeej 61:820395fc5572 56 /// @brief Extract one OP from a payload.
Jeej 61:820395fc5572 57 /// Returns at first matching OP.
Jeej 61:820395fc5572 58 /// Removes parsed OP from the payload.
Jeej 61:820395fc5572 59 /// @param alp alp_payload_t** Payload to extract from
Jeej 61:820395fc5572 60 /// @param op u8 OP to look for
Jeej 61:820395fc5572 61 /// @return alp_payload_t* Extracted OP
Jeej 61:820395fc5572 62 /// @revent NONE
Jeej 61:820395fc5572 63 //======================================================================
Jeej 61:820395fc5572 64 alp_payload_t* alp_payload_extract(alp_payload_t** alp, u8 op);
Jeej 61:820395fc5572 65
Jeej 61:820395fc5572 66 //======================================================================
Jeej 59:3b38b5f499db 67 /// @brief Parses one OP from a payload.
Jeej 59:3b38b5f499db 68 /// Returns at first matching OP.
Jeej 59:3b38b5f499db 69 /// Removes parsed OP from the payload.
Jeej 61:820395fc5572 70 /// Copy payload data into provider buffer
Jeej 61:820395fc5572 71 /// @param alp alp_payload_t** Payload to extract from
Jeej 59:3b38b5f499db 72 /// @param op u8 OP to look for
Jeej 61:820395fc5572 73 /// @param data void* Parsed OP data buffer
Jeej 61:820395fc5572 74 /// @return bool true if OP found else false
Jeej 59:3b38b5f499db 75 /// @revent NONE
Jeej 59:3b38b5f499db 76 //======================================================================
Jeej 61:820395fc5572 77 bool alp_payload_extract_data(alp_payload_t** alp, u8 op, void* data);
Jeej 59:3b38b5f499db 78
Jeej 59:3b38b5f499db 79 //======================================================================
Jeej 59:3b38b5f499db 80 /// @brief Creates malloc'ed ALP payload
Jeej 59:3b38b5f499db 81 /// @param alp alp_payload_t* Payload to append the ALP message to. A new payload will be malloc'ed if NULL
Jeej 59:3b38b5f499db 82 /// @param ...
Jeej 59:3b38b5f499db 83 /// @return alp_payload_t* New ALP payload
Jeej 59:3b38b5f499db 84 /// @revent NONE
Jeej 59:3b38b5f499db 85 //======================================================================
Jeej 59:3b38b5f499db 86 alp_payload_t* alp_payload_root_auth( alp_payload_t* alp);
Jeej 59:3b38b5f499db 87 alp_payload_t* alp_payload_root_auth_enc(alp_payload_t* alp, u8* challenge);
Jeej 59:3b38b5f499db 88 alp_payload_t* alp_payload_root_sign( alp_payload_t* alp, u8* iv);
Jeej 60:08efaaca0e83 89 alp_payload_t* alp_payload_nop( alp_payload_t* alp, u8 group);
Jeej 59:3b38b5f499db 90 alp_payload_t* alp_payload_forward( alp_payload_t* alp, void* itf);
Jeej 59:3b38b5f499db 91 alp_payload_t* alp_payload_tag( alp_payload_t* alp, u8 tag);
Jeej 59:3b38b5f499db 92 alp_payload_t* alp_payload_rsp_tag( alp_payload_t* alp, u8 tag, u8 eop, u8 err);
Jeej 59:3b38b5f499db 93 alp_payload_t* alp_payload_rsp_f_data( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length);
Jeej 59:3b38b5f499db 94 //alp_payload_t* alp_payload_rsp_f_data_fs(alp_payload_t* alp, u8 fid, u32 offset, u32 length);
Jeej 59:3b38b5f499db 95 alp_payload_t* alp_payload_rsp_status( alp_payload_t* alp, u8 action, s8 status);
Jeej 59:3b38b5f499db 96 alp_payload_t* alp_payload_rsp_fprop( alp_payload_t* alp, u8 fid, alp_file_header_t* hdr);
Jeej 59:3b38b5f499db 97 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 98 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 99 alp_payload_t* alp_payload_f_rd_data( alp_payload_t* alp, u8 fid, u32 offset, u32 length, u8 group);
Jeej 59:3b38b5f499db 100 alp_payload_t* alp_payload_f_flush( alp_payload_t* alp, u8 fid, u8 group);
Jeej 59:3b38b5f499db 101 alp_payload_t* alp_payload_f_declare( alp_payload_t* alp, u8 fid, alp_file_header_t* hdr);
Jeej 60:08efaaca0e83 102 alp_payload_t* alp_payload_f_touch( alp_payload_t* alp, u8 fid, u32 offset, u32 length, u8 group);
Jeej 60:08efaaca0e83 103 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 104 alp_payload_t* alp_payload_urcc_en( alp_payload_t* alp, u8 type, u8 ifid, u8 val);
Jeej 59:3b38b5f499db 105 alp_payload_t* alp_payload_query( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group);
Jeej 59:3b38b5f499db 106 alp_payload_t* alp_payload_qbreak( alp_payload_t* alp, u8 fid, void* data, u32 offset, u32 length, u8 group);
Jeej 59:3b38b5f499db 107 alp_payload_t* alp_payload_qbreak_eq( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group);
Jeej 59:3b38b5f499db 108 alp_payload_t* alp_payload_qbreak_ne( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group);
Jeej 59:3b38b5f499db 109 alp_payload_t* alp_payload_qbreak_gt( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group);
Jeej 59:3b38b5f499db 110 alp_payload_t* alp_payload_qbreak_gte( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group);
Jeej 59:3b38b5f499db 111 alp_payload_t* alp_payload_qbreak_lt( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group);
Jeej 59:3b38b5f499db 112 alp_payload_t* alp_payload_qbreak_lte( alp_payload_t* alp, u8 fid, u32 data, u32 offset, u32 length, u8 group);
Jeej 59:3b38b5f499db 113 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 114
Jeej 59:3b38b5f499db 115
Jeej 59:3b38b5f499db 116 #endif // __ALP_PAYLOAD_H__