2025-10-10 16:07:00 +08:00

138 lines
3.7 KiB
C
Executable File

#include <common/sys_config.h>
#include <components/log.h>
#include <modules/wifi.h>
#include <components/netif.h>
#include <components/event.h>
#include <string.h>
#include "bk_private/bk_init.h"
#include <components/system.h>
#include <os/os.h>
#include <components/shell_task.h>
#include "cli.h"
#include "media_service.h"
#define TAG "AGORA"
//#define AUTOCONNECT_WIFI
#define CONFIG_WIFI_SSID "aclsemi"//"BEKEN-CES"//"test123"//"biubiu"//"MEGSCREEN_TEST"//"cs-ruowang-2.4G"//"Carl"//"NXIOT"
#define CONFIG_WIFI_PASSWORD "ACL8semi"//"1233211234567"//"1234567890"//"87654321"//"987654321"//"wohenruo"//"12345678"//"88888888"
#if (CONFIG_SYS_CPU0)
#define AGORA_RTC_CMD_CNT (sizeof(s_agora_rtc_commands) / sizeof(struct cli_command))
extern void cli_agora_rtc_test_cmd(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv);
static const struct cli_command s_agora_rtc_commands[] =
{
{"agora_test", "agora_test {audio start|stop appid audio_type sample_rate aec_en}", cli_agora_rtc_test_cmd},
{"agora_test", "agora_test {video start|stop appid video_type}", cli_agora_rtc_test_cmd},
{"agora_test", "agora_test {both start|stop appid audio_type sample_rate video_type aec_en}", cli_agora_rtc_test_cmd},
};
static int agora_rtc_cli_init(void)
{
return cli_register_commands(s_agora_rtc_commands, AGORA_RTC_CMD_CNT);
}
/* connect wifi by cli */
#ifdef AUTOCONNECT_WIFI
static int netif_event_cb(void *arg, event_module_t event_module, int event_id, void *event_data)
{
netif_event_got_ip4_t *got_ip;
switch (event_id) {
case EVENT_NETIF_GOT_IP4:
got_ip = (netif_event_got_ip4_t *)event_data;
BK_LOGI(TAG, "%s got ip %s.\n", got_ip->netif_if == NETIF_IF_STA ? "STA" : "unknown netif", got_ip->ip);
extern void temp_agora_run(void);
temp_agora_run();
break;
default:
BK_LOGI(TAG, "rx event <%d %d>\n", event_module, event_id);
break;
}
return BK_OK;
}
int wifi_event_cb(void *arg, event_module_t event_module, int event_id, void *event_data)
{
wifi_event_sta_disconnected_t *sta_disconnected;
wifi_event_sta_connected_t *sta_connected;
switch (event_id) {
case EVENT_WIFI_STA_CONNECTED:
sta_connected = (wifi_event_sta_connected_t *)event_data;
BK_LOGI(TAG, "STA connected to %s\n", sta_connected->ssid);
break;
case EVENT_WIFI_STA_DISCONNECTED:
sta_disconnected = (wifi_event_sta_disconnected_t *)event_data;
BK_LOGI(TAG, "STA disconnected, reason(%d)\n", sta_disconnected->disconnect_reason);
break;
default:
BK_LOGI(TAG, "rx event <%d %d>\n", event_module, event_id);
break;
}
return BK_OK;
}
static void event_handler_init(void)
{
BK_LOG_ON_ERR(bk_event_register_cb(EVENT_MOD_WIFI, EVENT_ID_ALL, wifi_event_cb, NULL));
BK_LOG_ON_ERR(bk_event_register_cb(EVENT_MOD_NETIF, EVENT_ID_ALL, netif_event_cb, NULL));
}
static void sta_connect(void)
{
wifi_sta_config_t sta_config = WIFI_DEFAULT_STA_CONFIG();
strncpy(sta_config.ssid, CONFIG_WIFI_SSID, WIFI_SSID_STR_LEN);
if (strlen(CONFIG_WIFI_PASSWORD)) {
strncpy(sta_config.password, CONFIG_WIFI_PASSWORD, WIFI_PASSWORD_LEN);
}
BK_LOGI(TAG, "sta ssid:%s password:%s.\n", sta_config.ssid, sta_config.password);
BK_LOG_ON_ERR(bk_wifi_sta_set_config(&sta_config));
BK_LOG_ON_ERR(bk_wifi_sta_start());
}
#endif //AUTOCONNECT_WIFI
#endif
extern void user_app_main(void);
extern void rtos_set_user_app_entry(beken_thread_function_t entry);
extern int bk_cli_init(void);
extern void bk_set_jtag_mode(uint32_t cpu_id, uint32_t group_id);
void user_app_main(void){
#if (CONFIG_SYS_CPU0)
#ifdef AUTOCONNECT_WIFI
event_handler_init();
sta_connect();
#endif
agora_rtc_cli_init();
#endif
}
int main(void)
{
#if (CONFIG_SYS_CPU0)
rtos_set_user_app_entry((beken_thread_function_t)user_app_main);
#endif
bk_init();
media_service_init();
return 0;
}