91 lines
2.2 KiB
C
Raw Normal View History

2025-10-10 16:07:00 +08:00
#ifndef __RWNX_MISC_H_
#define __RWNX_MISC_H_
#include "rwnx_version.h"
#include "rw_msdu.h"
#if NX_VERSION > NX_VERSION_PACK(6, 22, 0, 0)
#if CONFIG_NX_MEDIA_DYNC_DTIM
#define MM_DYNC_DTIM_DUR 200
#endif // CONFIG_NX_MEDIA_DYNC_DTIM
#if CONFIG_MQTT_ARP_ALIGN_EN
#define MM_MQTT_KEEPALIVE_MARGIN (1 * 1000000) ///< 1s
#define MM_MQTT_ARP_MARGIN (2 * 1000000) ///<2s
#endif //CONFIG_MQTT_ARP_ALIGN_EN
enum SPECIAL_FRAME_TYPE
{
S_FRAME_EAPOL = 0,
S_FRAME_DHCP,
S_FRAME_ARP,
S_FRAME_DARP,
S_FRAME_CNT_MAX,
S_FRAME_INVALID = 0xff,
};
#if CONFIG_MQTT_ARP_ALIGN_EN
///Mqtt structure
struct mm_mqtt_tag
{
/// True indicates that mqtt is valid
bool mqtt_valid;
/// True indicates that mqtt is connected
bool mqtt_conn;
/// The number of mqtt ping to align arp reply
uint8_t mqtt_num_align_arp;
/// The count of mqtt ping after last arp reply alignment
uint8_t mqtt_cnt_align_arp;
/// Mqtt keepalive period (in us)
uint32_t ping_period;
/// mqtt next ping time (in us)
uint32_t next_ping_time;
};
#endif // CONFIG_MQTT_ARP_ALIGN_EN
#if CONFIG_DHCP_PROTECT_IN_CONNECTED
enum SM_DHCP_FRAME_TYPE{
SM_DHCP_FRAME_NULL = 0,
SM_DHCP_FRAME_DISCOVER, // 1
SM_DHCP_FRAME_OFFER, // 2
SM_DHCP_FRAME_REQUEST, // 3
SM_DHCP_FRAME_RELET, // 4
SM_DHCP_FRAME_ACK, // 5
SM_DHCP_FRAME_NAK, // 6
SM_DHCP_FRAME_RELEASE, // 7
SM_DHCP_FRAME_INFORM, // 8
};
#define SM_DHCP_RELET_PERIOD 10
#endif //CONFIG_DHCP_PROTECT_IN_CONNECTED
#if CONFIG_NX_MEDIA_DYNC_DTIM
void mm_media_dtim_check();
#endif
#if CONFIG_NX_OTA_DYNC_DTIM
void mm_ota_dtim_open();
void mm_ota_dtim_close();
#endif
#endif // NX_VERSION
struct sm_disconnect_ind;
struct sm_connect_ind;
void rwnx_misc_disconnect_ind(struct sm_disconnect_ind *ind);
void rwnx_misc_connect_ind(struct sm_connect_ind *ind);
void rwnx_dhcp_done_handler(uint8_t vif_idx);
void rwnx_connecting_handler();
/**
* preprocess pbuf before pass it to TCP/IP protocol stack
*/
void rwnx_rx_preprocess(uint8_t vif_idx, struct pbuf *p);
/**
* postprocess pbuf after TCP/IP protocol stack passes it to umac
*/
void rwnx_tx_postprocess(uint8_t vif_idx, struct sk_buff *skb);
#endif // __RWNX_MISC_H_