1 /* 2 * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 * Description: log OAM logger producer interface 15 * Author: 16 * Create: 17 */ 18 19 #ifndef LOG_OAM_LOGGER_H 20 #define LOG_OAM_LOGGER_H 21 22 #include "log_types.h" 23 #include "log_trigger.h" 24 #include "log_module_id.h" 25 #include "log_printf.h" 26 27 #define OM_FRAME_DELIMITER (0x7E) 28 #define OM_FRAME_DELIMITER_LEN (1) 29 #define OM_FRAME_HEADER_LEN (8) 30 #define OM_LOG_SEND_MSG_LENGTH (29) 31 #define OM_LOG_HEAD_PRESS_MASK (0xFF) 32 #define OM_MSG_TYPE_LOG_OFFSET (8) 33 #define OM_LOG_RPT_IND_MODULE_ID_OFFSET (16) 34 #define OM_LOG_SN_OFFSET (16) 35 36 #define OM_FRAME_DUMP_DELIMITER (0x1) 37 38 #define OML_LOG_FILEID_HIGH_BIT_OFFSET (2) 39 #define OML_LOG_FILEID_LOW_BIT_MASK (0x3) 40 #define OML_LOG_LINENO_HIGH_BIT_OFFSET (8) 41 #define OML_LOG_LINENO_LOW_BIT_MASK (0xFF) 42 #define OML_LOG_MODULE_MASK (0x3F) 43 #define OML_LOG_LEVEL_MASK (0x3) 44 #define OML_LOG_PARA_MAX_NUM (4) 45 #define OML_LOG_ALTER_PARA_MAX_NUM (12) 46 #define OML_LOG_HEADER_ARRAY_LENTH (3) 47 #define OML_LOG_LEVEL_OFFSET (6) 48 #define OML_LOG_TAIL_LENTH (1) 49 #define OML_LOG_ZERO_ARG_SEND (0) 50 #define OML_LOG_ONE_ARG_SEND (1) 51 #define OML_LOG_TWO_ARG_SEND (2) 52 #define OML_LOG_THREE_ARG_SEND (3) 53 #define OML_LOG_FOUR_ARG_SEND (4) 54 #define OML_LOG_INT_2_DOUBLE (2) 55 #define OML_LOG_INT_BIT (32) 56 57 #define OML_DATA_MSG_TYPE (0x0E) 58 #define OML_MSG_HEADER_LENGTH (4) 59 #define OML_MSG_TAIL_LENGTH (1) 60 61 #define FEATURE_PF_PM (0x00000001) 62 #define FEATURE_PF_PMU_ERR_CHECK (0x00000002) 63 #define FEATURE_PF_STATUS (0x00000004) 64 #define FEATURE_PF_LOG_TEST_LOW_POW (0x00000008) 65 #define FEATURE_PF_BFGNUART_USE_DMA (0x00000010) 66 #define FEATURE_PF_RESTRACE (0x00000020) 67 #define FEATURE_PF_HEARTBEAT (0x00000040) 68 69 #if (USE_COMPRESS_LOG_INSTEAD_OF_SDT_LOG == NO) 70 #ifndef CONFIG_LOG_USE_DIAG_FRAME 71 #define getlog_level(ulPressPara) (((ulPressPara) >> OML_LOG_LEVEL_OFFSET) & OML_LOG_LEVEL_MASK) 72 #define get_module_id(ulPressPara) ((ulPressPara) & OML_LOG_MODULE_MASK) 73 74 #define log_head_press(log_mid) ((OM_FRAME_DELIMITER & OM_LOG_HEAD_PRESS_MASK) | \ 75 ((OM_MSG_TYPE_LOG & OM_LOG_HEAD_PRESS_MASK) << OM_MSG_TYPE_LOG_OFFSET) | \ 76 ((OM_LOG_RPT_IND & OM_LOG_HEAD_PRESS_MASK) << OM_LOG_RPT_IND_MODULE_ID_OFFSET) | \ 77 (((log_mid) & OM_LOG_HEAD_PRESS_MASK) << OM_LOG_RPT_IND_MODULE_ID_OFFSET)) 78 /** 79 * @brief Fill this 32 bit value as little ending format 80 * Last by will be send as the first byte by log system. 81 * |-------------------------------------------------------------------------------------------------------| 82 * |-H--------------------------------------------- 32 bit ----------------------------------------------L-| 83 * | 8 bit | 8 bit | 8 bit | 8 bit | 84 * | lineno low 8 bit | lineno high 6 bit + file_id low 2 bit | file_id high 8 bit | lev 2 bit + mid 6 bit | 85 * |-------------------------------------------------------------------------------------------------------| 86 */ 87 #define para_press(mid, lev, fileid, lineno) (((uint32_t)(((uint32_t)(lineno) & 0xFF) << 0x18)) | \ 88 ((uint32_t)((((uint32_t)(fileid) & 0x3) << 0x10) | \ 89 ((uint32_t)(lineno) & 0x3F00) << 0xA)) | \ 90 ((uint32_t)(((uint32_t)(fileid) & 0x3FC) << 0x6)) | \ 91 ((uint32_t)(((mid) & 0x3F) | (((lev) & 0x3) << 0x6)))) 92 93 #define oal_log_lenth(arg_num) (sizeof(om_log_header_t) + sizeof(uint32_t) * (arg_num) + sizeof(uint8_t)) 94 #define log_lenth_and_sn_press(arg_num, SN) (oal_log_lenth(arg_num) | ((uint32_t)(SN) << OM_LOG_SN_OFFSET)) 95 #else 96 #include "soc_diag_log.h" 97 #include "diag_common.h" 98 99 #define getlog_level(ulPressPara) ((ulPressPara) & OAM_LOG_LEVEL_MASK) 100 #define get_module_id(ulPressPara) (((ulPressPara) >> OAM_LOG_MOD_ID_OFFSET) & OAM_LOG_MOD_ID_MASK) 101 102 #define log_head_press(log_mid) diag_log_msg_mk_mod_id(0) 103 #define para_press(mid, lev, fileid, lineno) diag_log_msg_mk_id(mid, fileid, lineno, lev) 104 #define oal_log_lenth(arg_num) (DIAG_FRAME_HEADER_SIZE + DIAG_IND_HEADER_SIZE + DIAG_LOG_HEADER_SIZE + \ 105 sizeof(uint32_t) * (arg_num) + sizeof(uint8_t)) 106 107 #define sdt_to_diag_log_level(sdt_level) ((sdt_level) == LOG_LEVEL_NONE ? DIAG_LOG_LEVEL_ALERT : \ 108 ((sdt_level) == LOG_LEVEL_ERROR ? DIAG_LOG_LEVEL_ERROR : \ 109 ((sdt_level) == LOG_LEVEL_WARNING ? DIAG_LOG_LEVEL_WARN : \ 110 ((sdt_level) == LOG_LEVEL_INFO ? DIAG_LOG_LEVEL_INFO : \ 111 ((sdt_level) == LOG_LEVEL_DBG ? DIAG_LOG_LEVEL_DBG : \ 112 (LOG_LEVEL_NONE)))))) 113 #endif 114 115 #define oml_wifi_log_print0(mid, lvl, fmt) \ 116 log_event_wifi_print0(para_press(LOG_WIFIMODULE, lvl, THIS_FILE_ID, __LINE__)) 117 #define oml_wifi_log_print1(mid, lvl, fmt, p1) \ 118 log_event_wifi_print1(para_press(LOG_WIFIMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1)) 119 #define oml_wifi_log_print2(mid, lvl, fmt, p1, p2) \ 120 log_event_wifi_print2(para_press(LOG_WIFIMODULE, lvl, THIS_FILE_ID, __LINE__), \ 121 (uint32_t)(p1), (uint32_t)(p2)) 122 #define oml_wifi_log_print3(mid, lvl, fmt, p1, p2, p3) \ 123 log_event_wifi_print3(para_press(LOG_WIFIMODULE, lvl, THIS_FILE_ID, __LINE__), \ 124 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3)) 125 #define oml_wifi_log_print4(mid, lvl, fmt, p1, p2, p3, p4) \ 126 log_event_wifi_print4(para_press(LOG_WIFIMODULE, lvl, THIS_FILE_ID, __LINE__), \ 127 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)) 128 #define oml_wifi_log_alter(mid, lognum, lvl, fmt, num, arg...) \ 129 log_event_print_alterable_para_press(log_head_press(OM_WIFI), \ 130 para_press(LOG_WIFIMODULE, lvl, THIS_FILE_ID, __LINE__), num, ##arg) 131 132 #ifdef BT_USER_RELEASE 133 #define oml_bt_log_print0(mid, lvl, fmt) \ 134 do { compress_printf_nolog(0); \ 135 } while (0) 136 #define oml_bt_log_print1(mid, lvl, fmt, p1) \ 137 do { compress_printf_nolog(0, (uint32_t)(p1)); \ 138 } while (0) 139 #define oml_bt_log_print2(mid, lvl, fmt, p1, p2) \ 140 do { compress_printf_nolog(0, (uint32_t)(p1), (uint32_t)(p2)); \ 141 } while (0) 142 #define oml_bt_log_print3(mid, lvl, fmt, p1, p2, p3) \ 143 do { compress_printf_nolog(0, (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3)); \ 144 } while (0) 145 #define oml_bt_log_print4(mid, lvl, fmt, p1, p2, p3, p4) \ 146 do { compress_printf_nolog(0, (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)); \ 147 } while (0) 148 #define oml_bt_log_alter(mid, lognum, lvl, fmt, num, arg...) \ 149 do { compress_printf_nolog(0, ##arg); \ 150 } while (0) 151 152 #define oml_bth_log_print0(mid, lvl, fmt) \ 153 do { compress_printf_nolog(0); \ 154 } while (0) 155 #define oml_bth_log_print1(mid, lvl, fmt, p1) \ 156 do { compress_printf_nolog(0, (uint32_t)(p1)); \ 157 } while (0) 158 #define oml_bth_log_print2(mid, lvl, fmt, p1, p2) \ 159 do { compress_printf_nolog(0, (uint32_t)(p1), (uint32_t)(p2)); \ 160 } while (0) 161 #define oml_bth_log_print3(mid, lvl, fmt, p1, p2, p3) \ 162 do { compress_printf_nolog(0, (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3)); \ 163 } while (0) 164 #define oml_bth_log_print4(mid, lvl, fmt, p1, p2, p3, p4) \ 165 do { compress_printf_nolog(0, (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)); \ 166 } while (0) 167 #define oml_bth_log_print5(mid, lvl, fmt, num, arg...) \ 168 do { compress_printf_nolog(0, ##arg); \ 169 } while (0) 170 #define oml_bth_log_print6(mid, lvl, fmt, num, arg...) \ 171 do { compress_printf_nolog(0, ##arg); \ 172 } while (0) 173 #define oml_bth_log_alter(mid, lognum, lvl, fmt, num, arg...) \ 174 do { compress_printf_nolog(0, ##arg); \ 175 } while (0) 176 #else 177 #define oml_bt_log_print0(mid, lvl, fmt) \ 178 log_event_print0(log_head_press(OM_BT), para_press(LOG_BTMODULE, lvl, THIS_FILE_ID, __LINE__)) 179 #define oml_bt_log_print1(mid, lvl, fmt, p1) \ 180 log_event_print1(log_head_press(OM_BT), para_press(LOG_BTMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1)) 181 #define oml_bt_log_print2(mid, lvl, fmt, p1, p2) \ 182 log_event_print2(log_head_press(OM_BT), para_press(LOG_BTMODULE, lvl, THIS_FILE_ID, __LINE__), \ 183 (uint32_t)(p1), (uint32_t)(p2)) 184 #define oml_bt_log_print3(mid, lvl, fmt, p1, p2, p3) \ 185 log_event_print3(log_head_press(OM_BT), para_press(LOG_BTMODULE, lvl, THIS_FILE_ID, __LINE__), \ 186 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3)) 187 #define oml_bt_log_print4(mid, lvl, fmt, p1, p2, p3, p4) \ 188 log_event_print4(log_head_press(OM_BT), para_press(LOG_BTMODULE, lvl, THIS_FILE_ID, __LINE__), \ 189 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)) 190 #define oml_bt_log_alter(mid, lognum, lvl, fmt, num, arg...) \ 191 log_event_print_alterable_para_press(log_head_press(OM_BT), \ 192 para_press(LOG_BTMODULE, lvl, THIS_FILE_ID, __LINE__), num, ##arg) 193 194 #define oml_bth_log_print0(mid, lvl, fmt) \ 195 log_event_print0(log_head_press(OM_BTH), para_press(LOG_BTHMODULE, lvl, THIS_FILE_ID, __LINE__)) 196 #define oml_bth_log_print1(mid, lvl, fmt, p1) \ 197 log_event_print1(log_head_press(OM_BTH), para_press(LOG_BTHMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1)) 198 #define oml_bth_log_print2(mid, lvl, fmt, p1, p2) \ 199 log_event_print2(log_head_press(OM_BTH), para_press(LOG_BTHMODULE, lvl, THIS_FILE_ID, __LINE__), \ 200 (uint32_t)(p1), (uint32_t)(p2)) 201 #define oml_bth_log_print3(mid, lvl, fmt, p1, p2, p3) \ 202 log_event_print3(log_head_press(OM_BTH), para_press(LOG_BTHMODULE, lvl, THIS_FILE_ID, __LINE__), \ 203 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3)) 204 #define oml_bth_log_print4(mid, lvl, fmt, p1, p2, p3, p4) \ 205 log_event_print4(log_head_press(OM_BTH), para_press(LOG_BTHMODULE, lvl, THIS_FILE_ID, __LINE__), \ 206 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)) 207 #define oml_bth_log_print5(mid, lvl, fmt, num, arg...) \ 208 log_event_print_alterable_para_press(log_head_press(OM_BTH), \ 209 para_press(LOG_BTHMODULE, lvl, THIS_FILE_ID, __LINE__), num, ##arg) 210 #define oml_bth_log_print6(mid, lvl, fmt, num, arg...) \ 211 log_event_print_alterable_para_press(log_head_press(OM_BTH), \ 212 para_press(LOG_BTHMODULE, lvl, THIS_FILE_ID, __LINE__), num, ##arg) 213 #define oml_bth_log_alter(mid, lognum, lvl, fmt, num, arg...) \ 214 log_event_print_alterable_para_press(log_head_press(OM_BTH), \ 215 para_press(LOG_BTHMODULE, lvl, THIS_FILE_ID, __LINE__), num, ##arg) 216 #endif 217 218 #ifdef CONFIG_DFX_SUPPORT_USERS_PRINT 219 typedef int (*log_other_print_t)(uint32_t log_module_type, uint32_t level, const char *fmt, uint32_t paranum, ...); 220 void log_other_print_register(log_other_print_t users_print_func); 221 void log_other_print0(uint32_t log_header, uint32_t log_level, const char *fmt); 222 void log_other_print1(uint32_t log_header, uint32_t log_level, const char *fmt, uint32_t p0); 223 void log_other_print2(uint32_t log_header, uint32_t log_level, const char *fmt, uint32_t p0, uint32_t p1); 224 void log_other_print3(uint32_t log_header, uint32_t log_level, const char *fmt, uint32_t p0, uint32_t p1, uint32_t p2); 225 void log_other_print4(uint32_t log_header, uint32_t log_level, const char *fmt, 226 uint32_t p0, uint32_t p1, uint32_t p2, uint32_t p3); 227 228 #define oml_pf_log_print0(mid, lognum, lvl, fmt) do { \ 229 log_event_print0(log_head_press(OM_PF), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__)); \ 230 log_other_print0(mid, lvl, fmt); \ 231 } while (0) 232 #define oml_pf_log_print1(mid, lognum, lvl, fmt, p1) do { \ 233 log_event_print1(log_head_press(OM_PF), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1)); \ 234 log_other_print1(mid, lvl, fmt, (uint32_t)(p1)); \ 235 } while (0) 236 #define oml_pf_log_print2(mid, lognum, lvl, fmt, p1, p2) do { \ 237 log_event_print2(log_head_press(OM_PF), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), \ 238 (uint32_t)(p1), (uint32_t)(p2)); \ 239 log_other_print2(mid, lvl, fmt, (uint32_t)(p1), (uint32_t)(p2)); \ 240 } while (0) 241 #define oml_pf_log_print3(mid, lognum, lvl, fmt, p1, p2, p3) do { \ 242 log_event_print3(log_head_press(OM_PF), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), \ 243 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3)); \ 244 log_other_print3(mid, lvl, fmt, (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3)); \ 245 } while (0) 246 #define oml_pf_log_print4(mid, lognum, lvl, fmt, p1, p2, p3, p4) do { \ 247 log_event_print4(log_head_press(OM_PF), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), \ 248 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)); \ 249 log_other_print4(mid, lvl, fmt, (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)); \ 250 } while (0) 251 252 #define oml_app_log_print0(mid, lvl, fmt) do { \ 253 log_event_print0(log_head_press(OM_IR), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__)); \ 254 log_other_print0(mid, lvl, fmt); \ 255 } while (0) 256 #define oml_app_log_print1(mid, lvl, fmt, p1) do { \ 257 log_event_print1(log_head_press(OM_IR), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1)); \ 258 log_other_print1(mid, lvl, fmt, (uint32_t)(p1)); \ 259 } while (0) 260 #define oml_app_log_print2(mid, lvl, fmt, p1, p2) do { \ 261 log_event_print2(log_head_press(OM_IR), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), \ 262 (uint32_t)(p1), (uint32_t)(p2)); \ 263 log_other_print2(mid, lvl, fmt, (uint32_t)(p1), (uint32_t)(p2)); \ 264 } while (0) 265 #define oml_app_log_print3(mid, lvl, fmt, p1, p2, p3) do { \ 266 log_event_print3(log_head_press(OM_IR), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), \ 267 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3)); \ 268 log_other_print3(mid, lvl, fmt, (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3)); \ 269 } while (0) 270 #define oml_app_log_print4(mid, lvl, fmt, p1, p2, p3, p4) do { \ 271 log_event_print4(log_head_press(OM_IR), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), \ 272 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)); \ 273 log_other_print4(mid, lvl, fmt, (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)); \ 274 } while (0) 275 #else 276 #define oml_pf_log_print0(mid, lognum, lvl, fmt) \ 277 log_event_print0(log_head_press(OM_PF), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__)) 278 #define oml_pf_log_print1(mid, lognum, lvl, fmt, p1) \ 279 log_event_print1(log_head_press(OM_PF), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1)) 280 #define oml_pf_log_print2(mid, lognum, lvl, fmt, p1, p2) \ 281 log_event_print2(log_head_press(OM_PF), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1), \ 282 (uint32_t)(p2)) 283 #define oml_pf_log_print3(mid, lognum, lvl, fmt, p1, p2, p3) \ 284 log_event_print3(log_head_press(OM_PF), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1), \ 285 (uint32_t)(p2), (uint32_t)(p3)) 286 #define oml_pf_log_print4(mid, lognum, lvl, fmt, p1, p2, p3, p4) \ 287 log_event_print4(log_head_press(OM_PF), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1), \ 288 (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)) 289 290 #define oml_app_log_print0(mid, lvl, fmt) \ 291 log_event_print0(log_head_press(OM_IR), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__)) 292 #define oml_app_log_print1(mid, lvl, fmt, p1) \ 293 log_event_print1(log_head_press(OM_IR), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1)) 294 #define oml_app_log_print2(mid, lvl, fmt, p1, p2) \ 295 log_event_print2(log_head_press(OM_IR), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1), \ 296 (uint32_t)(p2)) 297 #define oml_app_log_print3(mid, lvl, fmt, p1, p2, p3) \ 298 log_event_print3(log_head_press(OM_IR), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1), \ 299 (uint32_t)(p2), (uint32_t)(p3)) 300 #define oml_app_log_print4(mid, lvl, fmt, p1, p2, p3, p4) \ 301 log_event_print4(log_head_press(OM_IR), para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1), \ 302 (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)) 303 #endif 304 #define oml_pf_log_print_alter(mid, lognum, lvl, fmt, num, arg...) \ 305 log_event_print_alterable_para_press(log_head_press(OM_PF), \ 306 para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), num, ##arg) 307 #define pf_log_alter(mid, lognum, lvl, fmt, num, arg...) \ 308 oml_pf_log_print_alter(LOG_PFMODULE, lognum, lvl, fmt, num, ##arg) 309 #define oml_app_log_print_alter(mid, lvl, fmt, num, arg...) \ 310 log_event_print_alterable_para_press(log_head_press(OM_IR), \ 311 para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), num, ##arg) 312 #define app_log_alter(mid, lvl, fmt, num, arg...) oml_app_log_print_alter(LOG_PFMODULE, lvl, fmt, num, ##arg) 313 314 #define oml_nfc_log_print0(lvl, fmt) \ 315 log_event_print0(log_head_press(OM_NFC), para_press(LOG_NFCMODULE, lvl, THIS_FILE_ID, __LINE__)) 316 #define oml_nfc_log_print1(lvl, fmt, p1) \ 317 log_event_print1(log_head_press(OM_NFC), para_press(LOG_NFCMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1)) 318 #define oml_nfc_log_print2(lvl, fmt, p1, p2) \ 319 log_event_print2(log_head_press(OM_NFC), para_press(LOG_NFCMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1), \ 320 (uint32_t)(p2)) 321 #define oml_nfc_log_print3(lvl, fmt, p1, p2, p3) \ 322 log_event_print3(log_head_press(OM_NFC), para_press(LOG_NFCMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1), \ 323 (uint32_t)(p2), (uint32_t)(p3)) 324 #define oml_nfc_log_print4(lvl, fmt, p1, p2, p3, p4) \ 325 log_event_print4(log_head_press(OM_NFC), para_press(LOG_NFCMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1), \ 326 (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)) 327 #define oml_nfc_log_print_alter(lvl, fmt, num, arg...) \ 328 log_event_print_alterable_para_press(log_head_press(OM_NFC), \ 329 para_press(LOG_NFCMODULE, lvl, THIS_FILE_ID, __LINE__), num, ##arg) 330 #define nfc_log_alter(lvl, fmt, num, arg...) oml_app_log_print_alter(LOG_NFCMODULE, lvl, fmt, num, ##arg) 331 332 333 #define oml_glp_log_print0(lvl, fmt) \ 334 log_event_print0(log_head_press(OM_SLP), para_press(LOG_SLPMODULE, lvl, THIS_FILE_ID, __LINE__)) 335 #define oml_glp_log_print1(lvl, fmt, p1) \ 336 log_event_print1(log_head_press(OM_SLP), para_press(LOG_SLPMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1)) 337 #define oml_glp_log_print2(lvl, fmt, p1, p2) \ 338 log_event_print2(log_head_press(OM_SLP), para_press(LOG_SLPMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1), \ 339 (uint32_t)(p2)) 340 #define oml_glp_log_print3(lvl, fmt, p1, p2, p3) \ 341 log_event_print3(log_head_press(OM_SLP), para_press(LOG_SLPMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1), \ 342 (uint32_t)(p2), (uint32_t)(p3)) 343 #define oml_glp_log_print4(lvl, fmt, p1, p2, p3, p4) \ 344 log_event_print4(log_head_press(OM_SLP), para_press(LOG_SLPMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1), \ 345 (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)) 346 #define oml_glp_log_print_alter(lvl, fmt, num, arg...) \ 347 log_event_print_alterable_para_press(log_head_press(OM_SLP), \ 348 para_press(LOG_SLPMODULE, lvl, THIS_FILE_ID, __LINE__), num, ##arg) 349 #define glp_log_alter(lvl, fmt, num, arg...) oml_app_log_print_alter(LOG_SLPMODULE, lvl, fmt, num, ##arg) 350 351 352 #if CORE == CORE_LOGGING 353 #define pf_write_fifo_log_alter(mid, lognum, lvl, fmt, num, arg...) \ 354 log_event_print_alterable_para_press_by_write_uart_fifo(log_head_press(OM_PF), \ 355 para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), \ 356 num, ##arg) 357 #else 358 #define pf_write_fifo_log_alter(mid, lognum, lvl, fmt, num, arg...) \ 359 log_event_print_alterable_para_press(log_head_press(OM_PF), \ 360 para_press(LOG_PFMODULE, lvl, THIS_FILE_ID, __LINE__), num, ##arg) 361 #endif 362 #ifdef SDT_LOG_BY_UART 363 void oml_log_print_alterable_para_press(uint32_t press_log_head, uint32_t press_para, uint16_t para_num, ...); 364 #define oml_bt_log_print_alter(mid, lvl, fmt, num, arg...) \ 365 oml_log_print_alterable_para_press(LOG_HEAD_PRESS(OM_BT), PARA_PRESS(mid, lvl, THIS_FILE_ID, __LINE__), num, ##arg) 366 367 #define oml_gnss_log_print0(mid, lvl, fmt) \ 368 oml_log_print0_press(LOG_HEAD_PRESS(OM_GNSS), PARA_PRESS(mid, lvl, THIS_FILE_ID, __LINE__)) 369 #define oml_gnss_log_print1(mid, lvl, fmt, p1) \ 370 oml_log_print1_press(LOG_HEAD_PRESS(OM_GNSS), PARA_PRESS(mid, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1)) 371 #define oml_gnss_log_print2(mid, lvl, fmt, p1, p2) \ 372 oml_log_print2_press(LOG_HEAD_PRESS(OM_GNSS), PARA_PRESS(mid, lvl, THIS_FILE_ID, __LINE__), \ 373 (uint32_t)(p1), (uint32_t)(p2)) 374 #define oml_gnss_log_print3(mid, lvl, fmt, p1, p2, p3) \ 375 oml_log_print3_press(LOG_HEAD_PRESS(OM_GNSS), PARA_PRESS(mid, lvl, THIS_FILE_ID, __LINE__), \ 376 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3)) 377 #define oml_gnss_log_print4(mid, lvl, fmt, p1, p2, p3, p4) \ 378 oml_log_print4_press(LOG_HEAD_PRESS(OM_GNSS), PARA_PRESS(mid, lvl, THIS_FILE_ID, __LINE__), \ 379 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)) 380 #define oml_gnss_log_print_alter(mid, lvl, fmt, num, arg...) \ 381 oml_log_print_alterable_para_press(LOG_HEAD_PRESS(OM_GNSS), PARA_PRESS(mid, lvl, THIS_FILE_ID, __LINE__), \ 382 num, ##arg) 383 384 #define oml_gnss_log_no_num_print_alter(mid, lvl, fmt, arg...) \ 385 oml_log_print_alterable_para_press_no_num(LOG_HEAD_PRESS(OM_GNSS), \ 386 PARA_PRESS(mid, lvl, THIS_FILE_ID, __LINE__), (int8_t *)fmt, ##arg) 387 388 #define oml_gnss_double_log_print_alter(mid, lvl, fmt, float_num, int_num, arg...) \ 389 oml_log_print_double_alterable_para(LOG_HEAD_PRESS(OM_GNSS), \ 390 PARA_PRESS(mid, lvl, THIS_FILE_ID, __LINE__), float_num, int_num, ##arg) 391 #else 392 #define oml_bt_log_print_alter(mid, lvl, fmt, num, arg...) \ 393 log_event_print_alterable_para_press(log_head_press(OM_BT), \ 394 para_press(LOG_BTMODULE, lvl, THIS_FILE_ID, __LINE__), num, ##arg) 395 #define oml_gnss_log_print0(mid, lvl, fmt) \ 396 log_event_print0(log_head_press(OM_GNSS), para_press(LOG_GNSSMODULE, lvl, THIS_FILE_ID, __LINE__)) 397 #define oml_gnss_log_print1(mid, lvl, fmt, p1) \ 398 log_event_print1(log_head_press(OM_GNSS), para_press(LOG_GNSSMODULE, lvl, THIS_FILE_ID, __LINE__), (uint32_t)(p1)) 399 #define oml_gnss_log_print2(mid, lvl, fmt, p1, p2) \ 400 log_event_print2(log_head_press(OM_GNSS), para_press(LOG_GNSSMODULE, lvl, THIS_FILE_ID, __LINE__), \ 401 (uint32_t)(p1), (uint32_t)(p2)) 402 #define oml_gnss_log_print3(mid, lvl, fmt, p1, p2, p3) \ 403 log_event_print3(log_head_press(OM_GNSS), para_press(LOG_GNSSMODULE, lvl, THIS_FILE_ID, __LINE__), \ 404 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3)) 405 #define oml_gnss_log_print4(mid, lvl, fmt, p1, p2, p3, p4) \ 406 log_event_print4(log_head_press(OM_GNSS), para_press(LOG_GNSSMODULE, lvl, THIS_FILE_ID, __LINE__), \ 407 (uint32_t)(p1), (uint32_t)(p2), (uint32_t)(p3), (uint32_t)(p4)) 408 #define oml_gnss_log_print_alter(mid, lvl, fmt, num, arg...) \ 409 log_event_print_alterable_para_press(log_head_press(OM_GNSS), \ 410 para_press(LOG_GNSSMODULE, lvl, THIS_FILE_ID, __LINE__), num, ##arg) 411 #endif 412 #else /* USE_COMPRESS_LOG_INSTEAD_OF_SDT_LOG == YES */ 413 #include "log_printf.h" 414 #include "log_num.h" 415 #define LOG_NUM_MASK 0xFFF 416 #define connection(text1, text2) (text1##text2) 417 #define contect(text1, text2) (connection(text1, text2)) 418 #define var_name(text) (contect(text, __LINE__)) 419 420 #if (CORE == BT) 421 #include "ipc.h" 422 #define NO_USE 0 423 #define oml_bt_log_print0(mid, lvl, fmt) BASE_PRINT(NO_USE, lvl, fmt, NO_ARG) 424 #define oml_bt_log_print1(mid, lvl, fmt, p1) BASE_PRINT(NO_USE, lvl, fmt, ONE_ARG, p1) 425 #define oml_bt_log_print2(mid, lvl, fmt, p1, p2) BASE_PRINT(NO_USE, lvl, fmt, TWO_ARG, p1, p2) 426 #define oml_bt_log_print3(mid, lvl, fmt, p1, p2, p3) BASE_PRINT(NO_USE, lvl, fmt, THREE_ARG, p1, p2, p3) 427 #define oml_bt_log_print4(mid, lvl, fmt, p1, p2, p3, p4) BASE_PRINT(NO_USE, lvl, fmt, FOUR_ARG, p1, p2, p3, p4) 428 #define oml_bt_log_print_alter(mid, lvl, fmt, num, arg...) BASE_PRINT(NO_USE, lvl, fmt, num, ##arg) 429 430 #elif (CORE == GNSS) 431 432 #define connection(text1, text2) (text1##text2) 433 #define contect(text1, text2) (connection(text1, text2)) 434 #define var_name(text) (contect(text, __LINE__)) 435 436 #define NO_USE 0 437 #define oml_gnss_log_print0(mid, lvl, fmt) BASE_PRINT(NO_USE, lvl, fmt, NO_ARG) 438 #define oml_gnss_log_print1(mid, lvl, fmt, p1) BASE_PRINT(NO_USE, lvl, fmt, ONE_ARG, p1) 439 #define oml_gnss_log_print2(mid, lvl, fmt, p1, p2) BASE_PRINT(NO_USE, lvl, fmt, TWO_ARG, p1, p2) 440 #define oml_gnss_log_print3(mid, lvl, fmt, p1, p2, p3) BASE_PRINT(NO_USE, lvl, fmt, THREE_ARG, p1, p2, p3) 441 #define oml_gnss_log_print4(mid, lvl, fmt, p1, p2, p3, p4) BASE_PRINT(NO_USE, lvl, fmt, FOUR_ARG, p1, p2, p3, p4) 442 #define oml_gnss_log_print_alter(mid, lvl, fmt, num, arg...) BASE_PRINT(NO_USE, lvl, fmt, num, ##arg) 443 444 #elif (CORE == APPS) 445 #define oml_app_log_print0(mid, lvl, fmt) \ 446 do { \ 447 __attribute__((used, section(".logstr"))) static char var_name(LOGSTR)[] = fmt; \ 448 (LOS_Printf(MODULE_EXTERNAL, LOG_LEVEL_DEBUG, (uint32_t)var_name(LOGSTR), 0)); \ 449 } while (0) 450 #define oml_app_log_print1(mid, lvl, fmt, p1) \ 451 do { \ 452 __attribute__((used, section(".logstr"))) static char var_name(LOGSTR)[] = fmt; \ 453 (LOS_Printf(MODULE_EXTERNAL, LOG_LEVEL_DEBUG, (uint32_t)var_name(LOGSTR), 1, p1)); \ 454 } while (0) 455 #define oml_app_log_print2(mid, lvl, fmt, p1, p2) \ 456 do { \ 457 __attribute__((used, section(".logstr"))) static char var_name(LOGSTR)[] = fmt; \ 458 (LOS_Printf(MODULE_EXTERNAL, LOG_LEVEL_DEBUG, (uint32_t)var_name(LOGSTR), 2, p1, p2)); \ 459 } while (0) 460 #define oml_app_log_print3(mid, lvl, fmt, p1, p2, p3) \ 461 do { \ 462 __attribute__((used, section(".logstr"))) static char var_name(LOGSTR)[] = fmt; \ 463 (LOS_Printf(MODULE_EXTERNAL, LOG_LEVEL_DEBUG, (uint32_t)var_name(LOGSTR), 3, p1, p2, p3)); \ 464 } while (0) 465 #define oml_app_log_print4(mid, lvl, fmt, p1, p2, p3, p4) \ 466 do { \ 467 __attribute__((used, section(".logstr"))) static char var_name(LOGSTR)[] = fmt; \ 468 (LOS_Printf(MODULE_EXTERNAL, LOG_LEVEL_DEBUG, (uint32_t)var_name(LOGSTR), 4, p1, p2, p3, p4)); \ 469 } while (0) 470 #define oml_app_log_print_alter(mid, lvl, fmt, num, arg...) \ 471 do { \ 472 __attribute__((used, section(".logstr"))) static char var_name(LOGSTR)[] = fmt; \ 473 (LOS_Printf(MODULE_EXTERNAL, LOG_LEVEL_DEBUG, (uint32_t)var_name(LOGSTR), num, ##arg)); \ 474 } while (0) 475 476 #endif /* CORE == BT */ 477 #define oml_pf_log_print0(mid, lognum, lvl, fmt) BASE_PRINT(CONNECT(mid, ((lognum) & LOG_NUM_MASK)), lvl, fmt, NO_ARG) 478 #define oml_pf_log_print1(mid, lognum, lvl, fmt, p1) BASE_PRINT(CONNECT(mid, ((lognum) & LOG_NUM_MASK)), lvl, fmt, \ 479 ONE_ARG, p1) 480 #define oml_pf_log_print2(mid, lognum, lvl, fmt, p1, p2) BASE_PRINT(CONNECT(mid, ((lognum) & LOG_NUM_MASK)), lvl, fmt, \ 481 TWO_ARG, p1, p2) 482 #define oml_pf_log_print3(mid, lognum, lvl, fmt, p1, p2, p3) \ 483 BASE_PRINT(CONNECT(mid, ((lognum) & LOG_NUM_MASK)), lvl, fmt, THREE_ARG, p1, p2, p3) 484 #define oml_pf_log_print4(mid, lognum, lvl, fmt, p1, p2, p3, p4) \ 485 BASE_PRINT(CONNECT(mid, ((lognum) & LOG_NUM_MASK)), lvl, fmt, FOUR_ARG, p1, p2, p3, p4) 486 #define oml_pf_log_print_alter(mid, lognum, lvl, fmt, num, arg...) \ 487 BASE_PRINT(CONNECT(mid, ((lognum) & LOG_NUM_MASK)), lvl, fmt, num, ##arg) 488 #define pf_log_alter(mid, lognum, lvl, fmt, num, arg...) oml_pf_log_print_alter(mid, lognum, lvl, fmt, num, ##arg) 489 #define pf_write_fifo_log_alter(mid, lognum, lvl, fmt, num, arg...) \ 490 oml_pf_log_print_alter(mid, lognum, lvl, fmt, num, ##arg) 491 #endif /* USE_COMPRESS_LOG_INSTEAD_OF_SDT_LOG */ 492 493 #ifndef FEATURE_ON 494 #define FEATURE_ON 1 495 #endif 496 #ifndef FEATURE_OFF 497 #define FEATURE_OFF 0 498 #endif 499 500 enum OM_MSG_TYPE_ENUM { 501 OM_MSG_TYPE_LOG = 1, 502 OM_MSG_TYPE_OTA = 2, 503 OM_MSG_TYPE_TRACE = 3, 504 OM_MSG_TYPE_EVENT = 4, 505 OM_MSG_TYPE_ALARM = 5, 506 OM_MSG_TYPE_CATCH = 6, 507 OM_MSG_TYPE_COLLECT = 7, 508 OM_MSG_TYPE_DUMP = 8, 509 OM_MSG_MEM_COMMAND = 9, 510 OM_MSG_SSI_REG_COMMAND = 10, 511 OM_MSG_ICONFIG_COMMAND = 11, 512 OM_MSG_TYPE_BTC_OAM = 12, 513 OM_MSG_TYPE_WARNING = 13, 514 OM_MSG_TYPE_STATISTIC = 15, 515 OM_MSG_TYPE_LAST = 16, 516 OM_MSG_NFC_COMMAND = 17, 517 OM_MSG_TYPE_EDITION = 18, 518 OM_MSG_TYPE_COVERAGE = 19, 519 520 OM_MSG_GNSS_HOST_CMD_TYPE = 20, /* Add for GNSS, should modified later */ 521 OM_MSG_REG_COMMAND = 21, 522 OM_MSG_CS_STAT_CMD = 22, 523 OM_MSG_GNSS_SDT_CMD = 23, 524 OM_MSG_TRSSI_FSM = 25, 525 OM_MSG_TRSSI_VAL_CFG = 26, 526 OM_MSG_TYPE_CALIRESULT = 27, 527 OM_MSG_SSIBLOCK_COMMAND = 28, /* Used by testfpga */ 528 OM_MSG_DBGUART_SWITCH_TO_BT = 29, 529 OM_MSG_DBGUART_SWITCH_TO_WIFI = 30, 530 531 OM_MSG_TYPE_STATUS = 31, 532 OM_PCM_REPORT_BT = 32, 533 OM_MSG_TYPE_DSCR = 33, 534 OM_BT_SAMPLE_DATA = 41, 535 536 OM_MSG_REG32_COMMAND = 65, 537 OM_MSG_TYPE_BTH = 70, 538 OM_MSG_TYPE_APP = 71, 539 OM_MSG_TYPE_HIFI = 72, 540 541 OM_MSG_TYPE_LOG_CUSTOM = 73, /* Used for the log with customized structure. */ 542 543 OM_MSG_TYPE_BTC_WVT = 100, /* 0x64 */ 544 OM_MSG_TYPE_BUTT, 545 }; 546 547 enum OM_LOG_ERROR_TYPE { 548 OM_LOG_RET_OK, 549 OM_LOG_RET_PARA_INVALID, 550 OM_LOG_RET_POINTER_NULL, 551 }; 552 553 enum OM_LOG_MSG_ENUM { 554 OM_LOG_CONFIG_REQ = 1, 555 OM_LOG_CONFIG_ACK = 2, 556 OM_LOG_RPT_IND = 3, 557 OM_LOG_SAVE_STACK = 8, 558 OM_LOG_CONFIG_BUTT, 559 }; 560 561 enum LOG_OAM_ENTRY_INDEX { 562 LOG_OAM_INDEX_0, 563 LOG_OAM_INDEX_1, 564 LOG_OAM_INDEX_2, 565 LOG_OAM_INDEX_3, 566 LOG_OAM_INDEX_4, 567 LOG_OAM_INDEX_5, 568 LOG_OAM_INDEX_6, 569 LOG_OAM_INDEX_7, 570 }; 571 572 typedef struct { 573 uint8_t module_id; 574 uint8_t print_level; 575 } om_log_module_lev_t; 576 577 typedef struct { 578 uint8_t frame_start; 579 uint8_t func_type; 580 uint8_t prime_id; 581 uint8_t arr_reserver[1]; 582 uint16_t frame_len; 583 uint16_t sn; 584 } __attribute__((packed)) om_msg_header_stru_t; 585 586 typedef struct { 587 uint16_t count; 588 uint8_t end_flag; 589 uint8_t arr_reserve; 590 } om_msg_dump_header_stru_t; 591 592 /* Log message struct */ 593 typedef struct { 594 om_msg_header_stru_t header; 595 uint8_t mod_print_lev_info; /* log_level_e */ 596 uint8_t file_idx_high; /* file idx high */ 597 uint8_t bit2_file_idx_low : 2; /* file idx low */ 598 uint8_t bit6_line_no_high : 6; /* line No. high */ 599 uint8_t line_no_low; /* line No. low */ 600 } om_log_header_t; 601 602 #if (USE_COMPRESS_LOG_INSTEAD_OF_SDT_LOG == NO) 603 void log_event_print0(uint32_t log_header, uint32_t presspara); 604 605 void log_event_print1(uint32_t log_header, uint32_t presspara, uint32_t para1); 606 607 void log_event_print2(uint32_t log_header, uint32_t presspara, uint32_t para1, uint32_t para2); 608 609 void log_event_print3(uint32_t log_header, uint32_t presspara, uint32_t para1, uint32_t para2, uint32_t para3); 610 611 void log_event_print4(uint32_t log_header, uint32_t presspara, uint32_t para1, uint32_t para2, 612 uint32_t para3, uint32_t para4); 613 614 void log_event_print_alterable_para_press(uint32_t log_header, uint32_t presspara, uint32_t paranum, ...); 615 616 void log_event_wifi_print0(uint32_t presspara); 617 void log_event_wifi_print1(uint32_t presspara, uint32_t para1); 618 void log_event_wifi_print2(uint32_t presspara, uint32_t para1, uint32_t para2); 619 void log_event_wifi_print3(uint32_t presspara, uint32_t para1, uint32_t para2, uint32_t para3); 620 void log_event_wifi_print4(uint32_t presspara, uint32_t para1, uint32_t para2, uint32_t para3, uint32_t para4); 621 622 #if CORE == CORE_LOGGING 623 void log_event_print_alterable_para_press_by_write_uart_fifo( 624 uint32_t log_header, uint32_t presspara, uint32_t paranum, ...); 625 #endif 626 627 #endif /* USE_COMPRESS_LOG_INSTEAD_OF_SDT_LOG */ 628 629 #endif 630