WizziLab / modem_ref_v5_3_217

Dependents:   modem_ref_helper_for_v5_3_217

Committer:
Jeej
Date:
Fri May 05 14:42:02 2017 +0000
Revision:
1:40ead20ecb14
Parent:
0:027760f45e2c
Updated to last version.

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 0:027760f45e2c 90 ALP_RPOL_EP_ONESHOT = 0,
Jeej 0:027760f45e2c 91 ALP_RPOL_EP_SINGLE = 1,
Jeej 0:027760f45e2c 92 ALP_RPOL_EP_REPORT = 2,
Jeej 0:027760f45e2c 93 ALP_RPOL_EP_REPORT_CHECKED = 3,
Jeej 0:027760f45e2c 94 ALP_RPOL_EP_BULK = 4,
Jeej 0:027760f45e2c 95 ALP_RPOL_GW_ONESHOT = 5,
Jeej 0:027760f45e2c 96 ALP_RPOL_GW_BULK = 6,
Jeej 0:027760f45e2c 97 ALP_RPOL_BLINK = 7,
Jeej 0:027760f45e2c 98
Jeej 0:027760f45e2c 99 ALP_RPOL_QTY,
Jeej 0:027760f45e2c 100 } alp_rpol_t;
Jeej 0:027760f45e2c 101
Jeej 0:027760f45e2c 102 typedef enum {
Jeej 0:027760f45e2c 103 ALP_BOFF_NONE = 0,
Jeej 0:027760f45e2c 104 ALP_BOFF_LINEAR = 1,
Jeej 0:027760f45e2c 105 ALP_BOFF_EXP = 2,
Jeej 0:027760f45e2c 106
Jeej 0:027760f45e2c 107 ALP_BOFF_QTY
Jeej 0:027760f45e2c 108 } alp_rpol_backoff_proc_t;
Jeej 0:027760f45e2c 109
Jeej 0:027760f45e2c 110
Jeej 0:027760f45e2c 111 // Event parameter for ALP_EVT_URC
Jeej 0:027760f45e2c 112 typedef union {
Jeej 0:027760f45e2c 113 struct {
Jeej 0:027760f45e2c 114 u8 type;
Jeej 0:027760f45e2c 115 u8 ifid;
Jeej 0:027760f45e2c 116 u8 value;
Jeej 0:027760f45e2c 117 };
Jeej 0:027760f45e2c 118 } alp_urc_evp_t;
Jeej 0:027760f45e2c 119
Jeej 0:027760f45e2c 120 TYPEDEF_STRUCT_PACKED {
Jeej 0:027760f45e2c 121 u8 ifid;
Jeej 0:027760f45e2c 122 u8 report_freq;
Jeej 0:027760f45e2c 123 } alp_urc_lqual_params_t;
Jeej 0:027760f45e2c 124
Jeej 0:027760f45e2c 125 TYPEDEF_STRUCT_PACKED {
Jeej 0:027760f45e2c 126 u8 ifid;
Jeej 0:027760f45e2c 127 u8 max_consecutive_errors;
Jeej 0:027760f45e2c 128 } alp_urc_ldown_params_t;
Jeej 0:027760f45e2c 129
Jeej 0:027760f45e2c 130 // ALP D7 "Retry-policies" description
Jeej 0:027760f45e2c 131 // ----------------------------------------------------------------------
Jeej 0:027760f45e2c 132 // Retry-policies (also called QoS) are defining an application level
Jeej 0:027760f45e2c 133 // set of parameters such as automatic retry in case of failure, termination
Jeej 0:027760f45e2c 134 // messaging and other implementation dependent settings.
Jeej 0:027760f45e2c 135 // ======================================================================
Jeej 0:027760f45e2c 136 TYPEDEF_STRUCT_PACKED {
Jeej 0:027760f45e2c 137 struct {
Jeej 0:027760f45e2c 138 /// Backoff time generator for retry attempts
Jeej 0:027760f45e2c 139 u8 procedure : 4;
Jeej 0:027760f45e2c 140 /// On transmission success or at the end of the retry procedure:
Jeej 0:027760f45e2c 141 /// - if '1': a response is generated to requester (source ITF)
Jeej 0:027760f45e2c 142 /// - if '0': nothing notified to the source
Jeej 0:027760f45e2c 143 u8 respond : 1;
Jeej 0:027760f45e2c 144 /// On transmission success or at the end of the retry procedure:
Jeej 0:027760f45e2c 145 /// - if '1': Session fifo remains opened for further messaging
Jeej 0:027760f45e2c 146 /// - if '0': Session fifo is closed/released
Jeej 0:027760f45e2c 147 u8 persistant : 1;
Jeej 0:027760f45e2c 148 /// When a payload is send to an ITF that implements buffering,
Jeej 0:027760f45e2c 149 /// if 'bulk' is set the ITF should not start actual transfer until
Jeej 0:027760f45e2c 150 /// buffer is full.
Jeej 0:027760f45e2c 151 u8 bulk : 1;
Jeej 0:027760f45e2c 152
Jeej 0:027760f45e2c 153 u8 rfu : 1;
Jeej 0:027760f45e2c 154 } meta;
Jeej 0:027760f45e2c 155 /// Number of "pushed" messages that will be internally buffered
Jeej 0:027760f45e2c 156 /// until they are successfully sent. In case of overflow, the oldest
Jeej 0:027760f45e2c 157 /// message is lost.
Jeej 0:027760f45e2c 158 u8 depth;
Jeej 0:027760f45e2c 159 /// Maximum number of retry steps
Jeej 0:027760f45e2c 160 u8 retries;
Jeej 0:027760f45e2c 161 /// Unit of time (in second) used for Backoff time calculation
Jeej 0:027760f45e2c 162 u8 slot_time;
Jeej 0:027760f45e2c 163 } alp_retry_policy_t;
Jeej 0:027760f45e2c 164
Jeej 0:027760f45e2c 165 #define ALP_RPOL(_b,_resp,_p,_d,_r,_s,_proc) \
Jeej 0:027760f45e2c 166 { \
Jeej 0:027760f45e2c 167 .meta.procedure = (_proc), \
Jeej 0:027760f45e2c 168 .meta.respond = (_resp), \
Jeej 0:027760f45e2c 169 .meta.persistant = (_p), \
Jeej 0:027760f45e2c 170 .meta.bulk = (_b), \
Jeej 0:027760f45e2c 171 .depth = (_d), \
Jeej 0:027760f45e2c 172 .retries = (_r), \
Jeej 0:027760f45e2c 173 .slot_time = (_s) \
Jeej 0:027760f45e2c 174 }
Jeej 0:027760f45e2c 175
Jeej 0:027760f45e2c 176 // Basic public container for ALP payload.
Jeej 0:027760f45e2c 177 typedef struct {
Jeej 0:027760f45e2c 178 u32 len;
Jeej 0:027760f45e2c 179 u8 d[1];
Jeej 0:027760f45e2c 180 } alp_pub_payload_t;
Jeej 0:027760f45e2c 181
Jeej 0:027760f45e2c 182 typedef enum {
Jeej 0:027760f45e2c 183 /// Unsollicited message
Jeej 0:027760f45e2c 184 ALP_MSG_UNS,
Jeej 0:027760f45e2c 185 /// Deprecated
Jeej 0:027760f45e2c 186 ALP_MSG_ERR,
Jeej 0:027760f45e2c 187 /// Command message XXX deprecated BUT (mis)used in ALP Interfaces.
Jeej 0:027760f45e2c 188 ALP_MSG_CMD,
Jeej 0:027760f45e2c 189 /// Response message
Jeej 0:027760f45e2c 190 ALP_MSG_RES,
Jeej 0:027760f45e2c 191 /// Interface Termination message (used for TAG EOP handing)
Jeej 0:027760f45e2c 192 ALP_MSG_DONE,
Jeej 0:027760f45e2c 193 } alp_msg_t;
Jeej 0:027760f45e2c 194
Jeej 1:40ead20ecb14 195
Jeej 1:40ead20ecb14 196 //======================================================================
Jeej 1:40ead20ecb14 197 //======================================================================
Jeej 1:40ead20ecb14 198 // D7A Interface
Jeej 1:40ead20ecb14 199 //======================================================================
Jeej 1:40ead20ecb14 200 //======================================================================
Jeej 1:40ead20ecb14 201
Jeej 1:40ead20ecb14 202 #define ALP_D7A_ISTAT_NONE 0
Jeej 1:40ead20ecb14 203 #define ALP_D7A_ISTAT_UNS (1<<0)
Jeej 1:40ead20ecb14 204 #define ALP_D7A_ISTAT_RESP (1<<1)
Jeej 1:40ead20ecb14 205
Jeej 1:40ead20ecb14 206
Jeej 0:027760f45e2c 207 #endif // __ALP_H__
Jeej 0:027760f45e2c 208