Files
TAIXIN/sdk/lib/common/weak.c

101 lines
3.8 KiB
C
Raw Permalink Normal View History

#include "basic_include.h"
#include "hal/netdev.h"
#include "lib/net/utils.h"
__weak void sys_wakeup_host(void)
{
}
/*
wkq : work的workqueue
work: work
start: [1: work即将开始运行 ]
[0work运行结束 ]
runtime work的运行时间
*/
__weak void os_work_schedule_hook(struct os_workqueue *wkq, struct os_work *work, uint8 start, uint32 runtime)
{
}
/*************** Some Weak Functions ***************************/
///////////////////////////////////////////////////////////////////////////////////
__weak int32 sys_register_sleepcb(sys_sleepcb cb, void *priv)
{
return RET_OK;
}
__weak int32 wifi_proc_drvcmd_cust(uint16 cmd_id, uint8 *data, uint32 len, void *hdr)
{
/*
cmd_id: driver cmd id (from host driver).
data : cmd data.
len : cmd data length.
hdr : cmd info, just used to call host_cmd_resp API.
1. parse cmd data, do some thing if you need.
2. send cmd response to host:
// has no additional response data.
host_cmd_resp(cmd_return_value, NULL, 0, hdr);
// has some additional response data.
host_cmd_resp(cmd_return_value, reponse_data, response_data_length, hdr);
3. return RET_OK if the driver cmd has been processed, else return -ENOTSUPP.
you can process any driver cmd in this function.
*/
return -ENOTSUPP;
}
__weak int32 sswitch_dev_rule_check(SSWITCH_RULE_CHECK type, uint8 *data, uint32 len, uint32 port)
{
#if 0
/*
*
* | local system(lwip) |
*
*
* <local_input> <local_output>
* |
* <port_input> > <forward> |
*
* > [port dev] [port dev] >
*
*/
scatter_data *sdata;
switch (type) {
case SSWITCH_RULE_CHECK_PORT_INPUT: //从某个端口接收数据
os_printf("Port_%d input data ["MACSTR"<->"MACSTR", proto:%x], len=%d\r\n",
(port & 0xff), MAC2STR(data), MAC2STR(data + 6), get_unaligned_be16(data + 12), len);
break;
case SSWITCH_RULE_CHECK_LOCAL_INPUT: //接收的数据被输入到本地
os_printf("Local input data ["MACSTR"<->"MACSTR", proto:%x] len=%d, source port:%d\r\n",
MAC2STR(data), MAC2STR(data + 6), get_unaligned_be16(data + 12), len, (port & 0xff));
break;
case SSWITCH_RULE_CHECK_FORWARD: //接收的数据数据被转发
os_printf("Forward input data ["MACSTR"<->"MACSTR", proto:%, len=%d] Port_%d -> Port_%d\r\n",
MAC2STR(data), MAC2STR(data + 6), get_unaligned_be16(data + 12), len,
(port & 0xff)/*source port dev*/, (port >> 8) & 0xff /*dest port dev*/);
break;
case SSWITCH_RULE_CHECK_LOCAL_OUTPUT: //本地输出数据
os_printf("Local output data ["MACSTR"<->"MACSTR", proto:%x, len=%d] To Port_%d\r\n",
MAC2STR(data), MAC2STR(data + 6), get_unaligned_be16(data + 12), len, (port >> 8) & 0xff);
break;
case SSWITCH_RULE_CHECK_LOCAL_OUTPUT_SCATTER: //本地输出数据(scatter类型)
sdata = (scatter_data *)data;
os_printf("Local output scatter data ["MACSTR"<->"MACSTR", proto:%x, len=%d] To Port_%d\r\n",
MAC2STR(sdata[0].addr), MAC2STR(sdata[0].addr + 6),
get_unaligned_be16(sdata[0].addr + 12), scatter_size(sdata, len), (port >> 8) & 0xff);
break;
}
#endif
return 1; //1:pass, 0:drop
}