aboutsummaryrefslogtreecommitdiffstats
path: root/usr/ble_tst/src/stubs
diff options
context:
space:
mode:
authorBernhard Guillon <Bernhard.Guillon@begu.org>2024-12-22 20:12:21 +0100
committerBernhard Guillon <Bernhard.Guillon@begu.org>2024-12-22 20:12:21 +0100
commit7754ef7204e873aa33d55ebe5002257e3941e942 (patch)
tree873dc17f83c61f56e452330c2d1d2d0343305f67 /usr/ble_tst/src/stubs
downloadwb3s-ble-nebula-galaxy-7754ef7204e873aa33d55ebe5002257e3941e942.tar.gz
wb3s-ble-nebula-galaxy-7754ef7204e873aa33d55ebe5002257e3941e942.zip
Import bk_ble from elektroda forum
https://www.elektroda.com/rtvforum/topic3989434.html\#20742145
Diffstat (limited to 'usr/ble_tst/src/stubs')
-rw-r--r--usr/ble_tst/src/stubs/ke_stubs.c86
-rw-r--r--usr/ble_tst/src/stubs/other_stubs.c132
-rw-r--r--usr/ble_tst/src/stubs/re_stubs.S55
-rw-r--r--usr/ble_tst/src/stubs/re_stubs.c51
-rw-r--r--usr/ble_tst/src/stubs/stubs.c173
5 files changed, 497 insertions, 0 deletions
diff --git a/usr/ble_tst/src/stubs/ke_stubs.c b/usr/ble_tst/src/stubs/ke_stubs.c
new file mode 100644
index 0000000..4a329b6
--- /dev/null
+++ b/usr/ble_tst/src/stubs/ke_stubs.c
@@ -0,0 +1,86 @@
+/*
+Various functions and data structures required by the KE kernel
+*/
+
+#include "mm_task.h"
+
+const struct ke_state_handler mm_default_handler = {0};
+const struct ke_state_handler mm_state_handler[MM_STATE_MAX] = {{0}};
+ke_state_t mm_state[MM_IDX_MAX] = {0};
+
+#include "scan_task.h"
+
+const struct ke_state_handler scan_default_handler = {0};
+ke_state_t scan_state[SCAN_IDX_MAX] = {0};
+
+#include "scanu_task.h"
+
+const struct ke_state_handler scanu_state_handler[SCANU_STATE_MAX] = {{0}};
+const struct ke_state_handler scanu_default_handler = {0};
+ke_state_t scanu_state[SCANU_IDX_MAX] = {0};
+
+#include "me_task.h"
+
+const struct ke_state_handler me_state_handler[ME_STATE_MAX] = {{0}};
+const struct ke_state_handler me_default_handler = {0};
+ke_state_t me_state[ME_IDX_MAX] = {0};
+
+#include "sm_task.h"
+
+const struct ke_state_handler sm_default_handler = {0};
+ke_state_t sm_state[SM_IDX_MAX] = {0};
+
+#include "apm_task.h"
+
+const struct ke_state_handler apm_default_handler = {0};
+ke_state_t apm_state[APM_IDX_MAX] = {0};
+
+#include "bam_task.h"
+
+const struct ke_state_handler bam_default_handler = {0};
+ke_state_t bam_state[BAM_IDX_MAX] = {0};
+
+//from txl_cntrl.h
+void txl_payload_handle(int access_category) {
+};
+
+//from txl_cfm.h
+void txl_cfm_evt(int dummy) {
+};
+
+//from mm.h
+void mm_tbtt_evt(int dummy){
+};
+
+void mm_hw_idle_evt(int dummy){
+};
+
+//from mm_timer.h
+void mm_timer_schedule(int dummy){
+};
+
+#include "rwnx.h"
+
+RW_CONNECTOR_T g_rwnx_connector;
+
+void rwnxl_reset_evt(int dummy){
+};
+
+//from reg_mac_pl.h
+void rwnxl_set_nxmac_timer_value_set_bit(uint32_t bit){
+};
+
+void rwnxl_set_nxmac_timer_value_clear_bit(uint32_t bit){
+};
+
+//from rxu_cntrl.h
+void rxu_cntrl_evt(int dummy){
+};
+
+//from txl_frame.h
+void txl_frame_evt(int dummy){
+};
+
+//from hal_dma.h
+void hal_dma_evt(int dma_queue){
+};
diff --git a/usr/ble_tst/src/stubs/other_stubs.c b/usr/ble_tst/src/stubs/other_stubs.c
new file mode 100644
index 0000000..3d79d13
--- /dev/null
+++ b/usr/ble_tst/src/stubs/other_stubs.c
@@ -0,0 +1,132 @@
+#include "rw_pub.h"
+
+unsigned char mhdr_get_station_status(){
+ return RW_EVT_STA_IDLE;
+}
+
+#include "td.h"
+void td_pck_ps_ind(uint8_t vif_index, bool rx){
+};
+
+void td_timer_end(void *env){
+};
+
+struct td_env_tag td_env[NX_VIRT_DEV_MAX] = {{{{0}}}};
+
+#include "vif_mgmt.h"
+
+struct vif_info_tag vif_info_tab[NX_VIRT_DEV_MAX] = {{{0}}};
+struct vif_mgmt_env_tag vif_mgmt_env = {{0}};
+
+void rwnx_printf( char *fmt, ...) {
+
+}
+
+#include "rwnx.h"
+bool rwnxl_sleep(IDLE_FUNC wait_func,IDLE_FUNC do_func) {
+ return true;
+};
+
+void rwnxl_wakeup(IDLE_FUNC wait_func){
+};
+
+bool rwnxl_get_status_in_doze(void){
+ return true;
+};
+
+void tpc_init(void){
+};
+
+void tpc_deinit(void){
+};
+
+#include "chan.h"
+bool chan_is_on_channel(struct vif_info_tag *vif_entry){
+ return false;
+}
+
+#include "mm_timer.h"
+void mm_timer_set(struct mm_timer_tag *timer, uint32_t value){
+};
+
+
+//from app_bk.c
+#include "include.h"
+#include "mem_pub.h"
+#include "rwnx_config.h"
+#include "app.h"
+
+#if (NX_POWERSAVE)
+#include "ps.h"
+#endif //(NX_POWERSAVE)
+
+#include "sa_ap.h"
+#include "sa_station.h"
+#include "main_none.h"
+#include "sm.h"
+#include "uart_pub.h"
+
+#include "rtos_pub.h"
+#include "rtos_error.h"
+#include "param_config.h"
+#include "rxl_cntrl.h"
+#include "lwip/pbuf.h"
+#include "rw_pub.h"
+#include "rw_msg_rx.h"
+#include "hostapd_intf_pub.h"
+#include "wlan_ui_pub.h"
+#include "ps_debug_pub.h"
+#include "power_save_pub.h"
+#include "mcu_ps_pub.h"
+#include "rw_msdu.h"
+#include "txu_cntrl.h"
+
+#include "app_music_pub.h"
+#include "bk7011_cal_pub.h"
+
+WIFI_CORE_T g_wifi_core = {0};
+
+void bmsg_null_sender(void)
+{
+ OSStatus ret;
+ BUS_MSG_T msg;
+
+ msg.type = BMSG_NULL_TYPE;
+ msg.arg = 0;
+ msg.len = 0;
+ msg.sema = NULL;
+
+ if(!rtos_is_queue_empty(&g_wifi_core.io_queue))
+ {
+ return;
+ }
+
+ ret = rtos_push_to_queue(&g_wifi_core.io_queue, &msg, BEKEN_NO_WAIT);
+ if(kNoErr != ret)
+ {
+ os_printf("bmsg_null_sender_failed\r\n");
+ }
+}
+
+void bmsg_ps_sender(uint8_t arg)
+{
+ OSStatus ret;
+ BUS_MSG_T msg;
+ if(g_wifi_core.io_queue)
+ {
+ msg.type = BMSG_STA_PS_TYPE;
+ msg.arg = (uint32_t)arg;
+ msg.len = 0;
+ msg.sema = NULL;
+
+ ret = rtos_push_to_queue(&g_wifi_core.io_queue, &msg, BEKEN_NO_WAIT);
+ if(kNoErr != ret)
+ {
+ os_printf("bmsg_ps_sender failed\r\n");
+ }
+ }
+ else
+ {
+ os_printf("g_wifi_core.io_queue null\r\n");
+ }
+}
diff --git a/usr/ble_tst/src/stubs/re_stubs.S b/usr/ble_tst/src/stubs/re_stubs.S
new file mode 100644
index 0000000..774a390
--- /dev/null
+++ b/usr/ble_tst/src/stubs/re_stubs.S
@@ -0,0 +1,55 @@
+ .thumb
+ .globl rwble_reset
+ .thumb_func
+
+rwble_reset:
+ push {r3, r4, r5, lr}
+ bl portDISABLE_FIQ
+ add r5, r0, #0
+ bl portDISABLE_IRQ
+ movs r2, #128 // 0x80
+ add r4, r0, #0
+ ldr r3, BLE_BASETIMECNT_ADDR
+ lsl r2, r2, #24
+ str r2, [r3, #0]
+2:
+ ldr r2, [r3, #0]
+ cmp r2, #0
+ blt 2b
+ ldr r2, BLE_FINETIMECNT_ADDR
+ ldr r3, BLE_BASETIMECNT_ADDR
+ ldr r3, [r3, #0]
+ ldr r0, [r2, #0]
+ add r0, r0, r3
+ ldr r3, BLE_BDADDRL_ADDR
+ ldr r3, [r3, #0]
+ add r0, r0, r3
+ bl srand
+ bl lld_core_reset
+ movs r0, #1
+ bl lld_init
+ movs r0, #1
+ bl lld_adv_test_init
+ bl llc_reset
+ movs r0, #1
+ bl llm_init
+ bl em_buf_init
+ cmp r5, #0
+ bne 0f
+ bl portENABLE_FIQ
+0:
+ cmp r4, #0
+ bne 1f
+ bl portENABLE_IRQ
+1:
+ pop {r3, r4, r5, pc}
+
+ .balign 4
+
+BLE_BASETIMECNT_ADDR:
+ .word 0x0081001c // BLE_BASETIMECNT_ADDR
+BLE_FINETIMECNT_ADDR:
+ .word 0x00810020 // BLE_FINETIMECNT_ADDR
+BLE_BDADDRL_ADDR:
+ .word 0x00810024 // BLE_BDADDRL_ADDR
+
diff --git a/usr/ble_tst/src/stubs/re_stubs.c b/usr/ble_tst/src/stubs/re_stubs.c
new file mode 100644
index 0000000..f9dabb5
--- /dev/null
+++ b/usr/ble_tst/src/stubs/re_stubs.c
@@ -0,0 +1,51 @@
+#include "include.h"
+
+#include "rwble_hl.h"
+#include "gattm.h"
+#include "gapm.h"
+#include "attm.h"
+#include "l2cm.h"
+
+void rwble_hl_init(void) {
+ bk_printf("BLE stack init: %s\n", __func__);
+ attm_init(0);
+ gapm_init(0);
+ gattm_init(0);
+ l2cm_init(0);
+}
+
+/*
+0003dca0 <rwble_hl_init>:
+ 3dca0: b508 push {r3, lr}
+ 3dca2: 2000 movs r0, #0
+ 3dca4: f7f0 fc86 bl 2e5b4 <attm_init>
+ 3dca8: 2000 movs r0, #0
+ 3dcaa: f7ec fe3d bl 2a928 <gapm_init>
+ 3dcae: 2000 movs r0, #0
+ 3dcb0: f7ef fdda bl 2d868 <gattm_init>
+ 3dcb4: 2000 movs r0, #0
+ 3dcb6: f006 fa3b bl 44130 <l2cm_init>
+ 3dcba: bd08 pop {r3, pc}
+*/
+
+void rwble_hl_reset(void) {
+ bk_printf("BLE stack reset: %s\n", __func__);
+ attm_init(1);
+ gapm_init(1);
+ gattm_init(1);
+ l2cm_init(1);
+}
+
+/*
+0003dcc8 <rwble_hl_reset>:
+ 3dcc8: b508 push {r3, lr}
+ 3dcca: 2001 movs r0, #1
+ 3dccc: f7f0 fc86 bl 2e5dc <attm_init>
+ 3dcd0: 2001 movs r0, #1
+ 3dcd2: f7ec fe3d bl 2a950 <gapm_init>
+ 3dcd6: 2001 movs r0, #1
+ 3dcd8: f7ef fdda bl 2d890 <gattm_init>
+ 3dcdc: 2001 movs r0, #1
+ 3dcde: f006 fa2d bl 4413c <l2cm_init>
+ 3dce2: bd08 pop {r3, pc}
+*/
diff --git a/usr/ble_tst/src/stubs/stubs.c b/usr/ble_tst/src/stubs/stubs.c
new file mode 100644
index 0000000..9dadf75
--- /dev/null
+++ b/usr/ble_tst/src/stubs/stubs.c
@@ -0,0 +1,173 @@
+//stubs
+#include "wlan_ui_pub.h"
+#include "sk_intf.h"
+
+//from wlan_ui.c
+static monitor_data_cb_t g_bcn_cb = 0;
+monitor_data_cb_t g_monitor_cb = 0;
+int g_set_channel_postpone_num = 0;
+
+int bk_wlan_is_monitor_mode(void)
+{
+ return (0 == g_monitor_cb) ? false : true;
+}
+
+monitor_data_cb_t bk_wlan_get_bcn_cb(void)
+{
+ return g_bcn_cb;
+}
+
+monitor_data_cb_t bk_wlan_get_monitor_cb(void)
+{
+ if (g_monitor_cb)
+ {
+ return g_monitor_cb;
+ }
+ else
+ {
+ return NULL;
+ }
+}
+
+int bk_wlan_is_general_sniffer_type(void)
+{
+ return false;//(MTR_GENERAL_SNIFFER_TYPE == g_monitor_type);
+}
+
+uint32_t bk_sta_cipher_is_open(void)
+{
+ // ASSERT(g_sta_param_ptr);
+ return false;//(SECURITY_TYPE_NONE == g_sta_param_ptr->cipher_suite);
+}
+
+
+int bk_wlan_dtim_rf_ps_mode_do_wakeup()
+{
+ // void *sem_list = NULL;
+
+ UINT32 ret = 0;
+ #if 0
+ sem_list = power_save_rf_ps_wkup_semlist_create();
+
+ if (!sem_list)
+ {
+ os_printf("err ---- NULL\r\n");
+ ASSERT(0);
+ }
+
+ GLOBAL_INT_DECLARATION();
+ GLOBAL_INT_DISABLE();
+
+ if((power_save_if_ps_rf_dtim_enabled()
+ && power_save_if_rf_sleep()) || ble_switch_mac_sleeped)
+ {
+ power_save_rf_ps_wkup_semlist_wait(sem_list);
+ }
+ else
+ {
+ power_save_rf_ps_wkup_semlist_destroy(sem_list);
+ os_free(sem_list);
+ sem_list = NULL;
+ }
+
+ GLOBAL_INT_RESTORE();
+
+ power_save_rf_ps_wkup_semlist_get(sem_list);
+#endif
+ return ret;
+}
+
+
+void bk_wlan_ap_set_channel_config(uint8_t channel)
+{
+ // g_ap_param_ptr->chann = channel;
+}
+
+UINT32 if_other_mode_rf_sleep(void){
+ return false;
+}
+
+int bk_wlan_mcu_suppress_and_sleep(UINT32 sleep_ticks ){
+ return 0;
+}
+
+// from wpa_ie.c
+struct wpa_ie_data;
+
+int wpa_parse_wpa_ie(const u8 *wpa_ie, size_t wpa_ie_len,
+ struct wpa_ie_data *data)
+{
+#if 0
+ if (wpa_ie_len >= 1 && wpa_ie[0] == WLAN_EID_RSN)
+ return wpa_parse_wpa_ie_rsn(wpa_ie, wpa_ie_len, data);
+ if (wpa_ie_len >= 6 && wpa_ie[0] == WLAN_EID_VENDOR_SPECIFIC &&
+ wpa_ie[1] >= 4 && WPA_GET_BE32(&wpa_ie[2]) == OSEN_IE_VENDOR_TYPE)
+ return wpa_parse_wpa_ie_rsn(wpa_ie, wpa_ie_len, data);
+ else
+ return wpa_parse_wpa_ie_wpa(wpa_ie, wpa_ie_len, data);
+#endif
+ return 0;
+}
+
+//from sk_intf.c
+int ke_mgmt_packet_tx(unsigned char *buf, int len, int flag)
+{
+ int ret = 0;
+
+#if 0
+ int ret, poll_flag = 0;
+ SOCKET sk = mgmt_get_socket_num(flag);
+
+ ret = ke_sk_send(sk, buf, len, flag);
+ if(ret)
+ {
+ poll_flag = wpa_hostapd_queue_poll((uint32_t)flag);
+ }
+
+ if(poll_flag)
+ {
+ handle_dummy_read(sk, NULL, NULL);
+ }
+#endif
+ return ret;
+}
+
+//from pbuf.c
+u8_t
+pbuf_free(struct pbuf *p)
+{
+ return 0;
+}
+
+void
+pbuf_chain(struct pbuf *h, struct pbuf *t)
+{
+}
+
+struct pbuf *
+pbuf_dechain(struct pbuf *p)
+{
+ return NULL;
+}
+
+struct pbuf *
+pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type)
+{
+ return NULL;
+}
+
+
+//from rwnx.h
+void rwnxl_init(void){}
+
+// compiler experiments: can be removed
+
+int secret_int = 0;
+
+int *get_that_int(void) {
+ return &secret_int;
+}
+
+void change_that_int(int a) {
+ secret_int = a;
+}