|
|
|
@ -26,13 +26,14 @@
|
|
|
|
|
#include "pd_hf.h"
|
|
|
|
|
#include "pd_csg.h"
|
|
|
|
|
|
|
|
|
|
/* Define --------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
/* Private variables ---------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
//dau_t dau;
|
|
|
|
|
pthread_mutex_t board_mutex = PTHREAD_MUTEX_INITIALIZER;
|
|
|
|
|
int udp_socket;
|
|
|
|
|
dau_t daus[MAX_SLOTS];
|
|
|
|
|
|
|
|
|
|
dau_t daus[PD_SLOTS_MAX];
|
|
|
|
|
|
|
|
|
|
// 上传平台回调函数类型
|
|
|
|
|
typedef void (*UploadCallback)(int slot, const void *data, size_t len);
|
|
|
|
@ -281,7 +282,7 @@ static int32_t _dau_find_proper_function(char *pkt)
|
|
|
|
|
{
|
|
|
|
|
int flag = 0;
|
|
|
|
|
csg_pkt_head_t *head = (csg_pkt_head_t *)pkt;
|
|
|
|
|
for (int i = 0; i < MAX_SLOTS; i++)
|
|
|
|
|
for (int i = 0; i < PD_SLOTS_MAX; i++)
|
|
|
|
|
{
|
|
|
|
|
if (daus[i].slot != head->slot)
|
|
|
|
|
continue;
|
|
|
|
@ -499,7 +500,7 @@ int _dau_remove(int slot)
|
|
|
|
|
#endif
|
|
|
|
|
int _dau_insert(int slot, DauType type)
|
|
|
|
|
{
|
|
|
|
|
if (slot < 0 || slot >= MAX_SLOTS)
|
|
|
|
|
if (slot < 0 || slot >= PD_SLOTS_MAX)
|
|
|
|
|
{
|
|
|
|
|
return E_BAD_PARAM;
|
|
|
|
|
}
|
|
|
|
@ -561,7 +562,7 @@ void _dau_response(int slot, char *buf, int len)
|
|
|
|
|
printf("_dau_response: slot=%d len=%d\n", slot, len);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (slot >= 0 && slot < MAX_SLOTS)
|
|
|
|
|
if (slot >= 0 && slot < PD_SLOTS_MAX)
|
|
|
|
|
{
|
|
|
|
|
if (daus[slot].type == DAU_TYPE_UDP)
|
|
|
|
|
{
|
|
|
|
@ -670,7 +671,7 @@ void *_dau_udp_receive_handle(void *arg)
|
|
|
|
|
|
|
|
|
|
// 查找匹配的UDP板卡
|
|
|
|
|
pthread_mutex_lock(&board_mutex);
|
|
|
|
|
for (int i = 0; i < UDP_SLOTS; i++)
|
|
|
|
|
for (int i = 0; i < DAU_ETH_SLOTS_SUM; i++)
|
|
|
|
|
{
|
|
|
|
|
//printf("state=%d\n", daus[i].state);
|
|
|
|
|
if (daus[i].state == DAU_STATE_DISCONNECTED)
|
|
|
|
@ -705,48 +706,37 @@ void *_dau_udp_receive_handle(void *arg)
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* dau 预初始化 */
|
|
|
|
|
int32_t dau_handle_init(void)
|
|
|
|
|
{
|
|
|
|
|
int32_t rv = 0;
|
|
|
|
|
|
|
|
|
|
memset(&daus, 0, sizeof(dau_t)*MAX_SLOTS);
|
|
|
|
|
memset(&daus, 0, sizeof(dau_t) * PD_SLOTS_MAX);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//cmd_install_element(CONFIG_NODE, &csg_server_set_cmd);
|
|
|
|
|
cmd_install_element(COMMON_NODE, &dau_add_cmd);
|
|
|
|
|
cmd_install_element(COMMON_NODE, &no_dau_add_cmd);
|
|
|
|
|
//cmd_install_element(COMMON_NODE, &csg_file_cmd);
|
|
|
|
|
|
|
|
|
|
/* 注册配置保存函数 */
|
|
|
|
|
//rv = cmd_config_node_config_register(CONFIG_PRI_CSG, _csg_config_save);
|
|
|
|
|
if (rv != E_NONE)
|
|
|
|
|
{
|
|
|
|
|
log_err(LOG_CSG, "Command save register ERROR %d!", rv);
|
|
|
|
|
return rv;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return E_NONE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* 后台通讯模块初始化. */
|
|
|
|
|
/* dau 初始化 */
|
|
|
|
|
int32_t dau_handle_init_after(void)
|
|
|
|
|
{
|
|
|
|
|
thread_param_t param = {0};
|
|
|
|
|
uint8_t i = 0;
|
|
|
|
|
|
|
|
|
|
if (0 == udp_socket)
|
|
|
|
|
{
|
|
|
|
|
udp_socket = _dau_init_udp_server();
|
|
|
|
|
}
|
|
|
|
|
printf("udp_socket=%d\n", udp_socket);
|
|
|
|
|
/* 初始化模块. */
|
|
|
|
|
thread_param_t param = {0};
|
|
|
|
|
|
|
|
|
|
param.priority = 45;
|
|
|
|
|
param.thread_name = "DAU_MANAGER";
|
|
|
|
|
create_thread(_dau_manager_handle, ¶m);
|
|
|
|
|
|
|
|
|
|
param.priority = 45;
|
|
|
|
|
param.thread_name = "DAU_RECV";
|
|
|
|
|
create_thread(_dau_udp_receive_handle, ¶m);
|
|
|
|
|
for (i = 0; i < DAU_ETH_SLOTS_SUM; i++)
|
|
|
|
|
{
|
|
|
|
|
param.priority = 80;
|
|
|
|
|
snprintf(param.thread_name, THREAD_NAME_LEN, "DAU_RECV_%d", i);
|
|
|
|
|
create_thread(_dau_manager_handle, ¶m);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return E_NONE;
|
|
|
|
|
}
|
|
|
|
|