• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 oml ota module to rom implementation
15  * Author:
16  * Create: 2020-4-17
17  */
18 
19 #include "non_os.h"
20 #include "log_buffer.h"
21 #include "log_oam_ota.h"
22 #include "log_oam_status.h"
23 #include "log_oam_pcm.h"
24 
25 #ifdef __cplusplus
26 #if __cplusplus
27 extern "C" {
28 #endif
29 #endif
30 
31 #define BUFFER_ARRAY_LEN 4
32 
33 static uint32_t g_ota_start = OM_OTA_OPEN;
34 
35 static log_oml_ota_write_handler g_log_oml_ota_write_deal = log_oml_ota_write_deal;
36 
37 static log_oam_status_store_handler g_log_oam_status_store_deal = log_oam_status_store_deal;
38 
39 static log_oml_bt_sdw_handler g_log_oml_bt_sdw_deal = log_oml_bt_sample_data_write_deal;
40 
log_oml_ota_set(om_ota_config_t value)41 void log_oml_ota_set(om_ota_config_t value)
42 {
43     if (value > OM_OTA_CLOSED) {
44         return;
45     }
46     non_os_enter_critical();
47     g_ota_start = (uint32_t)value;
48     non_os_exit_critical();
49 }
50 
log_oml_ota_get(void)51 uint32_t log_oml_ota_get(void)
52 {
53     return g_ota_start;
54 }
55 
log_oml_ota_write(uint8_t mode_id,uint16_t msg_id,uint16_t length,const uint8_t * msg_buffer)56 void log_oml_ota_write(uint8_t mode_id, uint16_t msg_id, uint16_t length, const uint8_t *msg_buffer)
57 {
58     log_oml_ota_write_trigger_callback(mode_id, msg_id, length, msg_buffer);
59 }
60 
log_oml_ota_write_register_callback(log_oml_ota_write_handler callback)61 void log_oml_ota_write_register_callback(log_oml_ota_write_handler callback)
62 {
63     if (callback != NULL) {
64         g_log_oml_ota_write_deal = callback;
65     }
66 }
67 
log_oml_ota_write_unregister_callback(void)68 void log_oml_ota_write_unregister_callback(void)
69 {
70     g_log_oml_ota_write_deal = NULL;
71 }
72 
log_oml_ota_write_trigger_callback(uint8_t mode_id,uint16_t msg_id,uint16_t length,const uint8_t * msg_buffer)73 void log_oml_ota_write_trigger_callback(uint8_t mode_id, uint16_t msg_id, uint16_t length, const uint8_t *msg_buffer)
74 {
75     if (g_log_oml_ota_write_deal != NULL) {
76         g_log_oml_ota_write_deal(mode_id, msg_id, length, msg_buffer);
77     }
78 }
79 
log_oam_status_store(uint8_t prime_id,uint16_t msg_id,uint16_t mode,uint32_t length,...)80 void log_oam_status_store(uint8_t prime_id, uint16_t msg_id, uint16_t mode, uint32_t length, ...)
81 {
82     uint32_t buffer[BUFFER_ARRAY_LEN] = {0};
83     uint8_t len;
84     va_list args;
85 
86     if (length > BUFFER_ARRAY_LEN) {
87         return;
88     }
89 
90     va_start(args, length);
91     for (len = 0; len < length; len++) {
92         buffer[len] = (uint32_t)va_arg(args, uint32_t);
93     }
94     va_end(args);
95 
96     log_oam_status_store_trigger_callback(prime_id, msg_id, mode, (uint16_t)length, buffer);
97 }
98 
log_oam_status_store_register_callback(log_oam_status_store_handler callback)99 void log_oam_status_store_register_callback(log_oam_status_store_handler callback)
100 {
101     if (callback != NULL) {
102         g_log_oam_status_store_deal = callback;
103     }
104 }
105 
log_oam_status_store_unregister_callback(void)106 void log_oam_status_store_unregister_callback(void)
107 {
108     g_log_oam_status_store_deal = NULL;
109 }
110 
log_oam_status_store_trigger_callback(uint8_t prime_id,uint16_t msg_id,uint16_t mode,uint16_t length,const uint32_t * param)111 void log_oam_status_store_trigger_callback(uint8_t prime_id, uint16_t msg_id, uint16_t mode,
112                                            uint16_t length, const uint32_t *param)
113 {
114     if (g_log_oam_status_store_deal != NULL) {
115         g_log_oam_status_store_deal(prime_id, msg_id, mode, length, param);
116     }
117 }
118 
log_oml_bt_sample_data_write(uint8_t mode_id,uint16_t msg_id,uint16_t length,const uint8_t * buffer)119 void log_oml_bt_sample_data_write(uint8_t mode_id, uint16_t msg_id, uint16_t length, const uint8_t *buffer)
120 {
121     log_oml_bt_sample_data_write_trigger_callback(mode_id, msg_id, length, buffer);
122 }
123 
log_oml_bt_sample_data_write_register_callback(log_oml_bt_sdw_handler callback)124 void log_oml_bt_sample_data_write_register_callback(log_oml_bt_sdw_handler callback)
125 {
126     if (callback != NULL) {
127         g_log_oml_bt_sdw_deal = callback;
128     }
129 }
130 
log_oml_bt_sample_data_write_unregister_callback(void)131 void log_oml_bt_sample_data_write_unregister_callback(void)
132 {
133     g_log_oml_bt_sdw_deal = NULL;
134 }
135 
log_oml_bt_sample_data_write_trigger_callback(uint8_t mode_id,uint16_t msg_id,uint16_t length,const uint8_t * buffer)136 void log_oml_bt_sample_data_write_trigger_callback(uint8_t mode_id, uint16_t msg_id, uint16_t length,
137                                                    const uint8_t *buffer)
138 {
139     if (g_log_oml_bt_sdw_deal != NULL) {
140         g_log_oml_bt_sdw_deal(mode_id, msg_id, length, buffer);
141     }
142 }
143 
144 #ifdef __cplusplus
145 #if __cplusplus
146 }
147 #endif
148 #endif
149