Exportable version of WizziLab's modem driver.

Dependents:   modem_ref_helper

Committer:
Jeej
Date:
Wed Jul 31 16:48:48 2019 +0000
Revision:
46:9b83866cef2c
Parent:
41:6f83174ffed4
Child:
47:cf4519ba56d9
Updated for mbed-os 5.13

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jeej 30:74aa36420c61 1 /// @copyright
Jeej 30:74aa36420c61 2 /// ========================================================================={{{
Jeej 30:74aa36420c61 3 /// Copyright (c) 2012-2013 WizziLab /
Jeej 30:74aa36420c61 4 /// All rights reserved /
Jeej 30:74aa36420c61 5 /// /
Jeej 30:74aa36420c61 6 /// IMPORTANT: This Software may not be modified, copied or distributed unless /
Jeej 30:74aa36420c61 7 /// embedded on a WizziLab product. Other than for the foregoing purpose, this /
Jeej 30:74aa36420c61 8 /// Software and/or its documentation may not be used, reproduced, copied, /
Jeej 30:74aa36420c61 9 /// prepared derivative works of, modified, performed, distributed, displayed /
Jeej 30:74aa36420c61 10 /// or sold for any purpose. For the sole purpose of embedding this Software /
Jeej 30:74aa36420c61 11 /// on a WizziLab product, copy, modification and distribution of this /
Jeej 30:74aa36420c61 12 /// Software is granted provided that the following conditions are respected: /
Jeej 30:74aa36420c61 13 /// /
Jeej 30:74aa36420c61 14 /// * Redistributions of source code must retain the above copyright notice, /
Jeej 30:74aa36420c61 15 /// this list of conditions and the following disclaimer /
Jeej 30:74aa36420c61 16 /// /
Jeej 30:74aa36420c61 17 /// * Redistributions in binary form must reproduce the above copyright /
Jeej 30:74aa36420c61 18 /// notice, this list of conditions and the following disclaimer in the /
Jeej 30:74aa36420c61 19 /// documentation and/or other materials provided with the distribution. /
Jeej 30:74aa36420c61 20 /// /
Jeej 30:74aa36420c61 21 /// * The name of WizziLab can not be used to endorse or promote products /
Jeej 30:74aa36420c61 22 /// derived from this software without specific prior written permission. /
Jeej 30:74aa36420c61 23 /// /
Jeej 30:74aa36420c61 24 /// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS /
Jeej 30:74aa36420c61 25 /// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED /
Jeej 30:74aa36420c61 26 /// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR /
Jeej 30:74aa36420c61 27 /// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR /
Jeej 30:74aa36420c61 28 /// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, /
Jeej 30:74aa36420c61 29 /// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, /
Jeej 30:74aa36420c61 30 /// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, /
Jeej 30:74aa36420c61 31 /// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY /
Jeej 30:74aa36420c61 32 /// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING /
Jeej 30:74aa36420c61 33 /// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS /
Jeej 30:74aa36420c61 34 /// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /
Jeej 30:74aa36420c61 35 /// WIZZILAB HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, /
Jeej 30:74aa36420c61 36 /// ENHANCEMENTS OR MODIFICATIONS. /
Jeej 30:74aa36420c61 37 /// /
Jeej 30:74aa36420c61 38 /// Should you have any questions regarding your right to use this Software, /
Jeej 30:74aa36420c61 39 /// contact WizziLab at www.wizzilab.com. /
Jeej 30:74aa36420c61 40 /// /
Jeej 30:74aa36420c61 41 /// =========================================================================}}}
Jeej 30:74aa36420c61 42 /// @endcopyright
Jeej 0:027760f45e2c 43
Jeej 30:74aa36420c61 44 // =======================================================================
Jeej 30:74aa36420c61 45 /// @file kal_fs.c
Jeej 30:74aa36420c61 46 /// @brief File-System header
Jeej 30:74aa36420c61 47 // =======================================================================
Jeej 0:027760f45e2c 48
Jeej 30:74aa36420c61 49 #ifndef __KAL_FS_H__
Jeej 30:74aa36420c61 50 #define __KAL_FS_H__
Jeej 0:027760f45e2c 51
Jeej 35:ac940cf8ebe6 52 // PROP Byte
Jeej 0:027760f45e2c 53 #define FS_BFO_STORAGE_CLASS 0
Jeej 0:027760f45e2c 54 #define FS_BFO_ACT_COND 4
Jeej 0:027760f45e2c 55 #define FS_BFO_ACT_EN 7
Jeej 0:027760f45e2c 56 #define FS_BFS_STORAGE_CLASS 2
Jeej 0:027760f45e2c 57 #define FS_BFM_STORAGE_CLASS 0x3
Jeej 0:027760f45e2c 58 #define FS_BFS_ACT_COND 3
Jeej 0:027760f45e2c 59 #define FS_BFM_ACT_COND 0x7
Jeej 0:027760f45e2c 60 #define FS_BFS_ACT_EN 1
Jeej 0:027760f45e2c 61 #define FS_BFM_ACT_EN 0x1
Jeej 0:027760f45e2c 62
Jeej 30:74aa36420c61 63 // =======================================================================
Jeej 30:74aa36420c61 64 // kal_fs_perm_t
Jeej 30:74aa36420c61 65 // -----------------------------------------------------------------------
Jeej 30:74aa36420c61 66 /// Bitfield structure of PERM
Jeej 30:74aa36420c61 67 // =======================================================================
Jeej 30:74aa36420c61 68 typedef union
Jeej 30:74aa36420c61 69 {
Jeej 30:74aa36420c61 70 struct {
Jeej 30:74aa36420c61 71 /// Guest permissions
Jeej 30:74aa36420c61 72 u8 guest_x : 1;
Jeej 30:74aa36420c61 73 u8 guest_w : 1;
Jeej 30:74aa36420c61 74 u8 guest_r : 1;
Jeej 30:74aa36420c61 75 /// User permissions
Jeej 30:74aa36420c61 76 u8 user_x : 1;
Jeej 30:74aa36420c61 77 u8 user_w : 1;
Jeej 30:74aa36420c61 78 u8 user_r : 1;
Jeej 30:74aa36420c61 79 /// General permissions
Jeej 30:74aa36420c61 80 u8 writable : 1;
Jeej 30:74aa36420c61 81 u8 readable : 1;
Jeej 30:74aa36420c61 82 } bf;
Jeej 30:74aa36420c61 83
Jeej 30:74aa36420c61 84 u8 byte;
Jeej 30:74aa36420c61 85 } kal_fs_perm_t;
Jeej 30:74aa36420c61 86
Jeej 30:74aa36420c61 87 // PERM Byte
Jeej 30:74aa36420c61 88 #define FS_BFO_GUEST_X 0
Jeej 30:74aa36420c61 89 #define FS_BFO_GUEST_W 1
Jeej 30:74aa36420c61 90 #define FS_BFO_GUEST_R 2
Jeej 30:74aa36420c61 91 #define FS_BFO_USER_X 3
Jeej 30:74aa36420c61 92 #define FS_BFO_USER_W 4
Jeej 30:74aa36420c61 93 #define FS_BFO_USER_R 5
Jeej 30:74aa36420c61 94 #define FS_BFO_WRITABLE 6
Jeej 30:74aa36420c61 95 #define FS_BFO_READABLE 7
Jeej 30:74aa36420c61 96 #define FS_BFS_GUEST_X 1
Jeej 30:74aa36420c61 97 #define FS_BFS_GUEST_W 1
Jeej 30:74aa36420c61 98 #define FS_BFS_GUEST_R 1
Jeej 30:74aa36420c61 99 #define FS_BFS_USER_X 1
Jeej 30:74aa36420c61 100 #define FS_BFS_USER_W 1
Jeej 30:74aa36420c61 101 #define FS_BFS_USER_R 1
Jeej 30:74aa36420c61 102 #define FS_BFS_WRITABLE 1
Jeej 30:74aa36420c61 103 #define FS_BFS_READABLE 1
Jeej 30:74aa36420c61 104
Jeej 0:027760f45e2c 105 enum { TRANSIENT=0, VOLATILE, RESTORABLE, PERMANENT};
Jeej 0:027760f45e2c 106
Jeej 0:027760f45e2c 107 // "Piped" File: rd/wr are not stored but just sent on IF
Jeej 0:027760f45e2c 108 #define FS_TRANSIENT (TRANSIENT << FS_BFO_STORAGE_CLASS)
Jeej 0:027760f45e2c 109 // "RAM" File: rd/wr to a volatile buffer.
Jeej 0:027760f45e2c 110 #define FS_VOLATILE (VOLATILE << FS_BFO_STORAGE_CLASS)
Jeej 0:027760f45e2c 111 // "Mirrored" File: loaded from NVM, cached/used in RAM. Flushable to NVM.
Jeej 0:027760f45e2c 112 #define FS_RESTORABLE (RESTORABLE << FS_BFO_STORAGE_CLASS)
Jeej 0:027760f45e2c 113 // "Normal" File: rd/wr from/to NVM
Jeej 0:027760f45e2c 114 #define FS_PERMANENT (PERMANENT << FS_BFO_STORAGE_CLASS)
Jeej 0:027760f45e2c 115 #define FS_ACT_COND(c) ((c & 0x7) << FS_BFO_ACT_COND)
Jeej 0:027760f45e2c 116 #define FS_ACT_EN (1 << FS_BFO_ACT_EN)
Jeej 0:027760f45e2c 117
Jeej 30:74aa36420c61 118 // D7AactP Enabled File properties
Jeej 30:74aa36420c61 119 #if 0 // Condition is not used (nor usable)
Jeej 30:74aa36420c61 120 #define FS_TRANSIENT_NOTIF(c) (FS_TRANSIENT | FS_ACT_EN | FS_ACT_COND(c))
Jeej 30:74aa36420c61 121 #define FS_VOLATILE_NOTIF(c) (FS_VOLATILE | FS_ACT_EN | FS_ACT_COND(c))
Jeej 30:74aa36420c61 122 #define FS_RESTORABLE_NOTIF(c)(FS_RESTORABLE | FS_ACT_EN | FS_ACT_COND(c))
Jeej 30:74aa36420c61 123 #define FS_PERMANENT_NOTIF(c) (FS_PERMANENT | FS_ACT_EN | FS_ACT_COND(c))
Jeej 30:74aa36420c61 124 #else
Jeej 30:74aa36420c61 125 #define FS_TRANSIENT_NOTIF (FS_TRANSIENT | FS_ACT_EN)
Jeej 30:74aa36420c61 126 #define FS_VOLATILE_NOTIF (FS_VOLATILE | FS_ACT_EN)
Jeej 30:74aa36420c61 127 #define FS_RESTORABLE_NOTIF (FS_RESTORABLE | FS_ACT_EN)
Jeej 30:74aa36420c61 128 #define FS_PERMANENT_NOTIF (FS_PERMANENT | FS_ACT_EN)
Jeej 30:74aa36420c61 129 #endif
Jeej 30:74aa36420c61 130
Jeej 30:74aa36420c61 131 #define RWX_RWX 0b11111111
Jeej 30:74aa36420c61 132 #define RW_ALL 0b11110110
Jeej 30:74aa36420c61 133 #define RW_RW 0b11110110
Jeej 30:74aa36420c61 134 #define RW_STANDARD 0b11110100
Jeej 30:74aa36420c61 135 #define RW_R 0b11110100
Jeej 30:74aa36420c61 136 #define R_R 0b10100100
Jeej 30:74aa36420c61 137 #define ROOT_RW 0b11000000
Jeej 30:74aa36420c61 138 #define ROOT_RO 0b10000000
Jeej 30:74aa36420c61 139 #define ROOT_WO 0b01000000
Jeej 30:74aa36420c61 140
Jeej 30:74aa36420c61 141 #define FS_GUEST_X 0b00000001
Jeej 30:74aa36420c61 142 #define FS_GUEST_W 0b00000010
Jeej 30:74aa36420c61 143 #define FS_GUEST_R 0b00000100
Jeej 30:74aa36420c61 144 #define FS_USER_X 0b00001000
Jeej 30:74aa36420c61 145 #define FS_USER_W 0b00010000
Jeej 30:74aa36420c61 146 #define FS_USER_R 0b00100000
Jeej 30:74aa36420c61 147 #define FS_WRITABLE 0b01000000
Jeej 30:74aa36420c61 148 #define FS_READABLE 0b10000000
Jeej 30:74aa36420c61 149
Jeej 30:74aa36420c61 150 #define FS_OPENBAR 0b11110110
Jeej 30:74aa36420c61 151 #define FS_STANDARD 0b11110100
Jeej 30:74aa36420c61 152 #define FS_READ_ONLY 0b11100100
Jeej 30:74aa36420c61 153 #define FS_WRITE_ONLY 0b11010000
Jeej 30:74aa36420c61 154 #define FS_ROOT 0b11000000
Jeej 30:74aa36420c61 155 #define FS_ROOT_RO 0b10000000
Jeej 30:74aa36420c61 156 #define FS_ROOT_WO 0b01000000
Jeej 30:74aa36420c61 157
Jeej 35:ac940cf8ebe6 158 #define RWRWRW 0b11110110
Jeej 35:ac940cf8ebe6 159 #define RWRWR_ 0b11110100
Jeej 35:ac940cf8ebe6 160 #define RWR_R_ 0b11100100
Jeej 35:ac940cf8ebe6 161 #define R_R_R_ 0b10100100
Jeej 37:f5424d109c6d 162 #define RWRW__ 0b11110000
Jeej 37:f5424d109c6d 163 #define RW_W__ 0b11010000
Jeej 37:f5424d109c6d 164 #define _W_W__ 0b01010000
Jeej 37:f5424d109c6d 165 #define RWR___ 0b11100000
Jeej 37:f5424d109c6d 166 #define RW____ 0b11000000
Jeej 37:f5424d109c6d 167 #define R_R___ 0b10100000
Jeej 35:ac940cf8ebe6 168 #define _W____ 0b01000000
Jeej 41:6f83174ffed4 169 #define R_____ 0b10000000
Jeej 35:ac940cf8ebe6 170
Jeej 30:74aa36420c61 171 #define FS_GMASK_GUEST_X FS_GUEST_X
Jeej 30:74aa36420c61 172 #define FS_GMASK_GUEST_W FS_GUEST_W
Jeej 30:74aa36420c61 173 #define FS_GMASK_GUEST_R FS_GUEST_R
Jeej 30:74aa36420c61 174 #define FS_GMASK_USER_X (FS_GUEST_X+FS_USER_X)
Jeej 30:74aa36420c61 175 #define FS_GMASK_USER_W (FS_GUEST_W+FS_USER_W)
Jeej 30:74aa36420c61 176 #define FS_GMASK_USER_R (FS_GUEST_R+FS_USER_R)
Jeej 30:74aa36420c61 177
Jeej 35:ac940cf8ebe6 178 #endif // __KAL_FS_H__