Exportable version of WizziLab's modem driver.
include/kal_fs.h@67:e458db8402dc, 2021-10-29 (annotated)
- Committer:
- marin_wizzi
- Date:
- Fri Oct 29 13:54:43 2021 +0000
- Revision:
- 67:e458db8402dc
- Parent:
- 47:cf4519ba56d9
had to be commited for Scanner test
Who changed what in which revision?
User | Revision | Line number | New 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 | 35:ac940cf8ebe6 | 131 | #define RWRWRW 0b11110110 |
Jeej | 35:ac940cf8ebe6 | 132 | #define RWRWR_ 0b11110100 |
Jeej | 35:ac940cf8ebe6 | 133 | #define RWR_R_ 0b11100100 |
Jeej | 35:ac940cf8ebe6 | 134 | #define R_R_R_ 0b10100100 |
Jeej | 37:f5424d109c6d | 135 | #define RWRW__ 0b11110000 |
Jeej | 37:f5424d109c6d | 136 | #define RW_W__ 0b11010000 |
Jeej | 37:f5424d109c6d | 137 | #define _W_W__ 0b01010000 |
Jeej | 37:f5424d109c6d | 138 | #define RWR___ 0b11100000 |
Jeej | 37:f5424d109c6d | 139 | #define RW____ 0b11000000 |
Jeej | 37:f5424d109c6d | 140 | #define R_R___ 0b10100000 |
Jeej | 35:ac940cf8ebe6 | 141 | #define _W____ 0b01000000 |
Jeej | 41:6f83174ffed4 | 142 | #define R_____ 0b10000000 |
Jeej | 35:ac940cf8ebe6 | 143 | |
Jeej | 30:74aa36420c61 | 144 | #define FS_GMASK_GUEST_X FS_GUEST_X |
Jeej | 30:74aa36420c61 | 145 | #define FS_GMASK_GUEST_W FS_GUEST_W |
Jeej | 30:74aa36420c61 | 146 | #define FS_GMASK_GUEST_R FS_GUEST_R |
Jeej | 30:74aa36420c61 | 147 | #define FS_GMASK_USER_X (FS_GUEST_X+FS_USER_X) |
Jeej | 30:74aa36420c61 | 148 | #define FS_GMASK_USER_W (FS_GUEST_W+FS_USER_W) |
Jeej | 30:74aa36420c61 | 149 | #define FS_GMASK_USER_R (FS_GUEST_R+FS_USER_R) |
Jeej | 30:74aa36420c61 | 150 | |
Jeej | 47:cf4519ba56d9 | 151 | #endif // __KAL_FS_H__ |