WizziLab / modem_ref_v5_3_217

Dependents:   modem_ref_helper_for_v5_3_217

Committer:
Jeej
Date:
Mon Jun 04 15:32:05 2018 +0000
Revision:
30:74aa36420c61
Parent:
19:701d5669f2e9
Child:
35:ac940cf8ebe6
Updated to v5.1.174

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jeej 0:027760f45e2c 1 /// @copyright
Jeej 0:027760f45e2c 2 /// ========================================================================={{{
Jeej 0:027760f45e2c 3 /// Copyright (c) 2012-2013 WizziLab /
Jeej 0:027760f45e2c 4 /// All rights reserved /
Jeej 0:027760f45e2c 5 /// /
Jeej 0:027760f45e2c 6 /// IMPORTANT: This Software may not be modified, copied or distributed unless /
Jeej 0:027760f45e2c 7 /// embedded on a WizziLab product. Other than for the foregoing purpose, this /
Jeej 0:027760f45e2c 8 /// Software and/or its documentation may not be used, reproduced, copied, /
Jeej 0:027760f45e2c 9 /// prepared derivative works of, modified, performed, distributed, displayed /
Jeej 0:027760f45e2c 10 /// or sold for any purpose. For the sole purpose of embedding this Software /
Jeej 0:027760f45e2c 11 /// on a WizziLab product, copy, modification and distribution of this /
Jeej 0:027760f45e2c 12 /// Software is granted provided that the following conditions are respected: /
Jeej 0:027760f45e2c 13 /// /
Jeej 0:027760f45e2c 14 /// * Redistributions of source code must retain the above copyright notice, /
Jeej 0:027760f45e2c 15 /// this list of conditions and the following disclaimer /
Jeej 0:027760f45e2c 16 /// /
Jeej 0:027760f45e2c 17 /// * Redistributions in binary form must reproduce the above copyright /
Jeej 0:027760f45e2c 18 /// notice, this list of conditions and the following disclaimer in the /
Jeej 0:027760f45e2c 19 /// documentation and/or other materials provided with the distribution. /
Jeej 0:027760f45e2c 20 /// /
Jeej 0:027760f45e2c 21 /// * The name of WizziLab can not be used to endorse or promote products /
Jeej 0:027760f45e2c 22 /// derived from this software without specific prior written permission. /
Jeej 0:027760f45e2c 23 /// /
Jeej 0:027760f45e2c 24 /// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS /
Jeej 0:027760f45e2c 25 /// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED /
Jeej 0:027760f45e2c 26 /// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR /
Jeej 0:027760f45e2c 27 /// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR /
Jeej 0:027760f45e2c 28 /// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, /
Jeej 0:027760f45e2c 29 /// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, /
Jeej 0:027760f45e2c 30 /// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, /
Jeej 0:027760f45e2c 31 /// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY /
Jeej 0:027760f45e2c 32 /// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING /
Jeej 0:027760f45e2c 33 /// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS /
Jeej 0:027760f45e2c 34 /// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /
Jeej 0:027760f45e2c 35 /// WIZZILAB HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, /
Jeej 0:027760f45e2c 36 /// ENHANCEMENTS OR MODIFICATIONS. /
Jeej 0:027760f45e2c 37 /// /
Jeej 0:027760f45e2c 38 /// Should you have any questions regarding your right to use this Software, /
Jeej 0:027760f45e2c 39 /// contact WizziLab at www.wizzilab.com. /
Jeej 0:027760f45e2c 40 /// /
Jeej 0:027760f45e2c 41 /// =========================================================================}}}
Jeej 0:027760f45e2c 42 /// @endcopyright
Jeej 0:027760f45e2c 43
Jeej 0:027760f45e2c 44 // =======================================================================
Jeej 0:027760f45e2c 45 /// @file alp.h
Jeej 0:027760f45e2c 46 /// @brief Wizzilab's specific ALP definitions
Jeej 0:027760f45e2c 47 /// @defgroup ALP
Jeej 0:027760f45e2c 48 // =======================================================================
Jeej 0:027760f45e2c 49
Jeej 0:027760f45e2c 50 #ifndef __ALP_H__
Jeej 0:027760f45e2c 51 #define __ALP_H__
Jeej 0:027760f45e2c 52
Jeej 0:027760f45e2c 53 // D7A spec
Jeej 0:027760f45e2c 54 #include "alp_spec.h"
Jeej 0:027760f45e2c 55 // helpers
Jeej 0:027760f45e2c 56 #include "alp_helpers.h"
Jeej 1:40ead20ecb14 57
Jeej 0:027760f45e2c 58 // D7AActP Substitution modes:
Jeej 0:027760f45e2c 59 // ----------------------------------------------------------------------
Jeej 0:027760f45e2c 60 // MODE1: replace FID= actp.fid, offset=0, length=(actp.fid).length
Jeej 0:027760f45e2c 61 // MODE2: replace FID= actp.fid, offset=actp.offset, length=actp.length
Jeej 0:027760f45e2c 62 // ======================================================================
Jeej 0:027760f45e2c 63 typedef enum {
Jeej 0:027760f45e2c 64 ACTP_SUBST_NONE = 0,
Jeej 0:027760f45e2c 65 ACTP_SUBST_MODE1,
Jeej 0:027760f45e2c 66 ACTP_SUBST_MODE2,
Jeej 0:027760f45e2c 67 } alp_actp_substitution_mode_t;
Jeej 0:027760f45e2c 68
Jeej 0:027760f45e2c 69 typedef union {
Jeej 0:027760f45e2c 70 struct {
Jeej 0:027760f45e2c 71 u8 fid;
Jeej 0:027760f45e2c 72 u8 error;
Jeej 0:027760f45e2c 73 };
Jeej 0:027760f45e2c 74 } alp_evt_done_evp_t;
Jeej 0:027760f45e2c 75
Jeej 0:027760f45e2c 76 typedef enum {
Jeej 0:027760f45e2c 77 ALP_ITF_FID_COM0,
Jeej 0:027760f45e2c 78 ALP_ITF_FID_COM1,
Jeej 0:027760f45e2c 79 ALP_ITF_FID_COM2,
Jeej 0:027760f45e2c 80 ALP_ITF_FID_BLE,
Jeej 0:027760f45e2c 81 } alp_itf_fixed_fids_t;
Jeej 0:027760f45e2c 82
Jeej 0:027760f45e2c 83 typedef enum {
Jeej 0:027760f45e2c 84 ALP_ROLE_ROOT = 0xFF,
Jeej 0:027760f45e2c 85 ALP_ROLE_USER = 0x38,
Jeej 0:027760f45e2c 86 ALP_ROLE_GUEST = 0x07,
Jeej 0:027760f45e2c 87 } alp_role_t;
Jeej 0:027760f45e2c 88
Jeej 0:027760f45e2c 89 typedef enum {
Jeej 30:74aa36420c61 90 ALP_RPOL_ONESHOT = 0,
Jeej 30:74aa36420c61 91 ALP_RPOL_ONESHOT_RETRY = 1,
Jeej 30:74aa36420c61 92 ALP_RPOL_FIFO_FAST = 2,
Jeej 30:74aa36420c61 93 ALP_RPOL_FIFO_SLOW = 3,
Jeej 30:74aa36420c61 94 ALP_RPOL_SINGLE_FAST = 4,
Jeej 30:74aa36420c61 95 ALP_RPOL_SINGLE_SLOW = 5,
Jeej 30:74aa36420c61 96 ALP_RPOL_ONESHOT_STICKY = 6,
Jeej 30:74aa36420c61 97 ALP_RPOL_RFU_7 = 7,
Jeej 0:027760f45e2c 98 ALP_RPOL_QTY,
Jeej 0:027760f45e2c 99 } alp_rpol_t;
Jeej 0:027760f45e2c 100
Jeej 0:027760f45e2c 101 typedef enum {
Jeej 0:027760f45e2c 102 ALP_BOFF_NONE = 0,
Jeej 0:027760f45e2c 103 ALP_BOFF_LINEAR = 1,
Jeej 0:027760f45e2c 104 ALP_BOFF_EXP = 2,
Jeej 0:027760f45e2c 105
Jeej 0:027760f45e2c 106 ALP_BOFF_QTY
Jeej 0:027760f45e2c 107 } alp_rpol_backoff_proc_t;
Jeej 0:027760f45e2c 108
Jeej 0:027760f45e2c 109
Jeej 0:027760f45e2c 110 // Event parameter for ALP_EVT_URC
Jeej 0:027760f45e2c 111 typedef union {
Jeej 0:027760f45e2c 112 struct {
Jeej 0:027760f45e2c 113 u8 type;
Jeej 0:027760f45e2c 114 u8 ifid;
Jeej 0:027760f45e2c 115 u8 value;
Jeej 0:027760f45e2c 116 };
Jeej 0:027760f45e2c 117 } alp_urc_evp_t;
Jeej 0:027760f45e2c 118
Jeej 0:027760f45e2c 119 TYPEDEF_STRUCT_PACKED {
Jeej 0:027760f45e2c 120 u8 ifid;
Jeej 0:027760f45e2c 121 u8 report_freq;
Jeej 0:027760f45e2c 122 } alp_urc_lqual_params_t;
Jeej 0:027760f45e2c 123
Jeej 0:027760f45e2c 124 TYPEDEF_STRUCT_PACKED {
Jeej 0:027760f45e2c 125 u8 ifid;
Jeej 0:027760f45e2c 126 u8 max_consecutive_errors;
Jeej 0:027760f45e2c 127 } alp_urc_ldown_params_t;
Jeej 0:027760f45e2c 128
Jeej 0:027760f45e2c 129 // ALP D7 "Retry-policies" description
Jeej 0:027760f45e2c 130 // ----------------------------------------------------------------------
Jeej 0:027760f45e2c 131 // Retry-policies (also called QoS) are defining an application level
Jeej 0:027760f45e2c 132 // set of parameters such as automatic retry in case of failure, termination
Jeej 0:027760f45e2c 133 // messaging and other implementation dependent settings.
Jeej 0:027760f45e2c 134 // ======================================================================
Jeej 0:027760f45e2c 135 TYPEDEF_STRUCT_PACKED {
Jeej 30:74aa36420c61 136 /// Select between background of foreground tasks,
Jeej 30:74aa36420c61 137 /// - if '1': Session fifo remains opened for further messaging
Jeej 30:74aa36420c61 138 /// - if '0': Session fifo is closed/released
Jeej 30:74aa36420c61 139 /// Replaces the "persistant flag" ("background" = "persistant").
Jeej 30:74aa36420c61 140 /// Note : In the D7A stack, the BG fifos have lower priority.
Jeej 30:74aa36420c61 141 /// This field could be extended to be a priority level
Jeej 30:74aa36420c61 142 u8 bg;
Jeej 0:027760f45e2c 143 /// Number of "pushed" messages that will be internally buffered
Jeej 0:027760f45e2c 144 /// until they are successfully sent. In case of overflow, the oldest
Jeej 0:027760f45e2c 145 /// message is lost.
Jeej 0:027760f45e2c 146 u8 depth;
Jeej 0:027760f45e2c 147 /// Maximum number of retry steps
Jeej 0:027760f45e2c 148 u8 retries;
Jeej 30:74aa36420c61 149 /// Minimum unit of time (in second) used for Backoff time calculation
Jeej 30:74aa36420c61 150 u8 slot_min;
Jeej 30:74aa36420c61 151 /// Maximum unit of time (in second) used for Backoff time calculation
Jeej 30:74aa36420c61 152 u8 slot_max;
Jeej 0:027760f45e2c 153 } alp_retry_policy_t;
Jeej 0:027760f45e2c 154
Jeej 30:74aa36420c61 155 #define ALP_RPOL(_bg,_d,_r,_min,_max) \
Jeej 0:027760f45e2c 156 { \
Jeej 30:74aa36420c61 157 .bg = (_bg), \
Jeej 30:74aa36420c61 158 .depth = (_d), \
Jeej 30:74aa36420c61 159 .retries = (_r), \
Jeej 30:74aa36420c61 160 .slot_min = (_min), \
Jeej 30:74aa36420c61 161 .slot_max = (_max), \
Jeej 0:027760f45e2c 162 }
Jeej 0:027760f45e2c 163
Jeej 0:027760f45e2c 164 // Basic public container for ALP payload.
Jeej 0:027760f45e2c 165 typedef struct {
Jeej 0:027760f45e2c 166 u32 len;
Jeej 0:027760f45e2c 167 u8 d[1];
Jeej 0:027760f45e2c 168 } alp_pub_payload_t;
Jeej 0:027760f45e2c 169
Jeej 0:027760f45e2c 170 typedef enum {
Jeej 0:027760f45e2c 171 /// Unsollicited message
Jeej 0:027760f45e2c 172 ALP_MSG_UNS,
Jeej 0:027760f45e2c 173 /// Deprecated
Jeej 0:027760f45e2c 174 ALP_MSG_ERR,
Jeej 0:027760f45e2c 175 /// Command message XXX deprecated BUT (mis)used in ALP Interfaces.
Jeej 0:027760f45e2c 176 ALP_MSG_CMD,
Jeej 0:027760f45e2c 177 /// Response message
Jeej 0:027760f45e2c 178 ALP_MSG_RES,
Jeej 0:027760f45e2c 179 /// Interface Termination message (used for TAG EOP handing)
Jeej 0:027760f45e2c 180 ALP_MSG_DONE,
Jeej 0:027760f45e2c 181 } alp_msg_t;
Jeej 0:027760f45e2c 182
Jeej 1:40ead20ecb14 183
Jeej 1:40ead20ecb14 184 //======================================================================
Jeej 1:40ead20ecb14 185 //======================================================================
Jeej 1:40ead20ecb14 186 // D7A Interface
Jeej 1:40ead20ecb14 187 //======================================================================
Jeej 1:40ead20ecb14 188 //======================================================================
Jeej 1:40ead20ecb14 189
Jeej 1:40ead20ecb14 190 #define ALP_D7A_ISTAT_NONE 0
Jeej 1:40ead20ecb14 191 #define ALP_D7A_ISTAT_UNS (1<<0)
Jeej 1:40ead20ecb14 192 #define ALP_D7A_ISTAT_RESP (1<<1)
Jeej 1:40ead20ecb14 193
Jeej 1:40ead20ecb14 194
Jeej 30:74aa36420c61 195 #endif // __ALP_H__