1*10465441SEvalZero /* 2*10465441SEvalZero * Copyright (c) 2006-2018, RT-Thread Development Team 3*10465441SEvalZero * 4*10465441SEvalZero * SPDX-License-Identifier: Apache-2.0 5*10465441SEvalZero * 6*10465441SEvalZero * Change Logs: 7*10465441SEvalZero * Date Author Notes 8*10465441SEvalZero * 2018-08-14 tyx the first version 9*10465441SEvalZero */ 10*10465441SEvalZero 11*10465441SEvalZero #ifndef __WLAN_PROT_H__ 12*10465441SEvalZero #define __WLAN_PROT_H__ 13*10465441SEvalZero 14*10465441SEvalZero #ifdef __cplusplus 15*10465441SEvalZero extern "C" { 16*10465441SEvalZero #endif 17*10465441SEvalZero 18*10465441SEvalZero #ifndef RT_WLAN_PROT_NAME_LEN 19*10465441SEvalZero #define RT_WLAN_PROT_NAME_LEN (8) 20*10465441SEvalZero #endif 21*10465441SEvalZero 22*10465441SEvalZero #ifndef RT_WLAN_PROT_MAX 23*10465441SEvalZero #define RT_WLAN_PROT_MAX (1) 24*10465441SEvalZero #endif 25*10465441SEvalZero 26*10465441SEvalZero #define RT_LWAN_ID_PREFIX (0x5054) 27*10465441SEvalZero 28*10465441SEvalZero #define RT_WLAN_PROT_LWIP ("lwip") 29*10465441SEvalZero 30*10465441SEvalZero typedef enum 31*10465441SEvalZero { 32*10465441SEvalZero RT_WLAN_PROT_EVT_INIT_DONE = 0, 33*10465441SEvalZero RT_WLAN_PROT_EVT_CONNECT, 34*10465441SEvalZero RT_WLAN_PROT_EVT_DISCONNECT, 35*10465441SEvalZero RT_WLAN_PROT_EVT_AP_START, 36*10465441SEvalZero RT_WLAN_PROT_EVT_AP_STOP, 37*10465441SEvalZero RT_WLAN_PROT_EVT_AP_ASSOCIATED, 38*10465441SEvalZero RT_WLAN_PROT_EVT_AP_DISASSOCIATED, 39*10465441SEvalZero RT_WLAN_PROT_EVT_MAX, 40*10465441SEvalZero } rt_wlan_prot_event_t; 41*10465441SEvalZero 42*10465441SEvalZero struct rt_wlan_prot; 43*10465441SEvalZero struct rt_wlan_prot_ops 44*10465441SEvalZero { 45*10465441SEvalZero rt_err_t (*prot_recv)(struct rt_wlan_device *wlan, void *buff, int len); 46*10465441SEvalZero struct rt_wlan_prot *(*dev_reg_callback)(struct rt_wlan_prot *prot, struct rt_wlan_device *wlan); 47*10465441SEvalZero void (*dev_unreg_callback)(struct rt_wlan_prot *prot, struct rt_wlan_device *wlan); 48*10465441SEvalZero }; 49*10465441SEvalZero 50*10465441SEvalZero struct rt_wlan_prot 51*10465441SEvalZero { 52*10465441SEvalZero char name[RT_WLAN_PROT_NAME_LEN]; 53*10465441SEvalZero rt_uint32_t id; 54*10465441SEvalZero const struct rt_wlan_prot_ops *ops; 55*10465441SEvalZero }; 56*10465441SEvalZero 57*10465441SEvalZero typedef void (*rt_wlan_prot_event_handler)(struct rt_wlan_prot *port, struct rt_wlan_device *wlan, int event); 58*10465441SEvalZero 59*10465441SEvalZero rt_err_t rt_wlan_prot_attach(const char *dev_name, const char *prot_name); 60*10465441SEvalZero 61*10465441SEvalZero rt_err_t rt_wlan_prot_attach_dev(struct rt_wlan_device *wlan, const char *prot_name); 62*10465441SEvalZero 63*10465441SEvalZero rt_err_t rt_wlan_prot_detach(const char *dev_name); 64*10465441SEvalZero 65*10465441SEvalZero rt_err_t rt_wlan_prot_detach_dev(struct rt_wlan_device *wlan); 66*10465441SEvalZero 67*10465441SEvalZero rt_err_t rt_wlan_prot_regisetr(struct rt_wlan_prot *prot); 68*10465441SEvalZero 69*10465441SEvalZero rt_err_t rt_wlan_prot_transfer_dev(struct rt_wlan_device *wlan, void *buff, int len); 70*10465441SEvalZero 71*10465441SEvalZero rt_err_t rt_wlan_dev_transfer_prot(struct rt_wlan_device *wlan, void *buff, int len); 72*10465441SEvalZero 73*10465441SEvalZero rt_err_t rt_wlan_prot_event_register(struct rt_wlan_prot *prot, rt_wlan_prot_event_t event, rt_wlan_prot_event_handler handler); 74*10465441SEvalZero 75*10465441SEvalZero rt_err_t rt_wlan_prot_event_unregister(struct rt_wlan_prot *prot, rt_wlan_prot_event_t event); 76*10465441SEvalZero 77*10465441SEvalZero int rt_wlan_prot_ready(struct rt_wlan_device *wlan, struct rt_wlan_buff *buff); 78*10465441SEvalZero 79*10465441SEvalZero void rt_wlan_prot_dump(void); 80*10465441SEvalZero 81*10465441SEvalZero #ifdef __cplusplus 82*10465441SEvalZero } 83*10465441SEvalZero #endif 84*10465441SEvalZero 85*10465441SEvalZero #endif 86