#ifndef R88E_FW_CMD_H
#define R88E_FW_CMD_H
struct r88e_fw_cmd {
uint8_t id;
#define R88E_CMD_RSVD_PAGE 0x00
#define R88E_CMD_MSR_RPT 0x01
#define R88E_CMD_SET_PWRMODE 0x20
uint8_t msg[7];
} __packed __attribute__((aligned(4)));
struct r88e_fw_cmd_rsvdpage {
uint8_t probe_resp;
uint8_t ps_poll;
uint8_t null_data;
uint8_t null_data_qos;
uint8_t null_data_qos_bt;
} __packed;
struct r88e_fw_cmd_msrrpt {
uint8_t msrb0;
#define R88E_MSRRPT_B0_DISASSOC 0x00
#define R88E_MSRRPT_B0_ASSOC 0x01
uint8_t macid;
} __packed;
struct r88e_fw_cmd_pwrmode {
uint8_t mode;
#define R88E_PWRMODE_CAM 0
#define R88E_PWRMODE_LEG 1
#define R88E_PWRMODE_UAPSD 2
uint8_t pwrb1;
#define R88E_PWRMODE_B1_RLBM_M 0x0f
#define R88E_PWRMODE_B1_RLBM_S 0
#define R88E_PWRMODE_B1_MODE_MIN 0
#define R88E_PWRMODE_B1_MODE_MAX 1
#define R88E_PWRMODE_B1_MODE_DTIM 2
#define R88E_PWRMODE_B1_SMART_PS_M 0xf0
#define R88E_PWRMODE_B1_SMART_PS_S 4
#define R88E_PWRMODE_B1_LEG_PSPOLL0 0
#define R88E_PWRMODE_B1_LEG_PSPOLL1 1
#define R88E_PWRMODE_B1_LEG_NULLDATA 2
#define R88E_PWRMODE_B1_WMM_PSPOLL 0
#define R88E_PWRMODE_B1_WMM_NULLDATA 1
uint8_t bcn_pass;
uint8_t queue_uapsd;
uint8_t pwr_state;
#define R88E_PWRMODE_STATE_RFOFF 0x00
#define R88E_PWRMODE_STATE_RFON 0x04
#define R88E_PWRMODE_STATE_ALLON 0x0c
} __packed;
#endif