WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
oal_fsm.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2020-2022. All rights reserved.
3 * Description: Header file for oal_fsm
4 */
5#ifndef __OAL_FSM_H__
6#define __OAL_FSM_H__
7
8#include "osal_types.h"
9
10#ifdef __cplusplus
11#if __cplusplus
12extern "C" {
13#endif
14#endif
15/*****************************************************************************
16 2 宏定义
17*****************************************************************************/
18#define OAL_FSM_MAX_NAME 32 /* 状态机名最大长度 */
19#define OAL_FSM_MAX_STATES 100
20#define OAL_FSM_MAX_EVENTS 100
21#define OAL_FSM_STATE_NONE 255 /* invalid state */
22#define OAL_FSM_EVENT_NONE 255 /* invalid event */
23
24/*****************************************************************************
25 7 STRUCT定义
26*****************************************************************************/
27/* 状态信息结构定义 */
28typedef struct __oal_fsm_state_info {
29 osal_u32 state; /* 状态ID */
30 const osal_char *name; /* 状态名 */
31 osal_void (*oal_fsm_entry)(osal_void *p_ctx); /* 进入本状态的处理回调函数指针 */
32 osal_void (*oal_fsm_exit)(osal_void *p_ctx); /* 退出本状态的处理回调函数指针 */
33 /* 本状态下的事件处理回调函数指针 */
34 osal_u32 (*oal_fsm_event)(osal_void *p_ctx, osal_u16 event, osal_u16 event_data_len, osal_void *event_data);
36
37/* 状态机结构定义 */
38typedef struct __oal_fsm {
39 osal_u8 name[OAL_FSM_MAX_NAME]; /* 状态机名字 */
40 osal_u8 cur_state; /* 当前状态 */
41 osal_u8 prev_state; /* 前一状态,发出状态切换事件的状态 */
42 osal_u8 num_states; /* 状态机的状态个数 */
45 osal_void *p_ctx; /* 上下文,指向状态机实例拥有者 */
46 osal_void *p_oshandler; /* owner指针,指向VAP或者device,由具体的状态机决定 */
47 osal_u16 last_event; /* 最后处理的事件 */
48 osal_u8 rsv1[2]; /* 保留2字节对齐 */
50
51typedef struct {
52 osal_void *oshandle; /* 状态机owner的指针,对低功耗状态机,指向VAP结构 */
53 osal_u8 *name; /* 状态机的名字 */
54 osal_void *context; /* 状态机context */
56
57/*****************************************************************************
58 10 函数声明
59*****************************************************************************/
61 oal_fsm_stru *oal_fsm, /* oal状态机内容 */
62 osal_u8 init_state, /* 初始状态 */
63 const oal_fsm_state_info *p_state_info, /* 状态机实例指针 */
64 osal_u8 num_states); /* 本状态机的状态个数 */
65
67
69 osal_u16 event_data_len, osal_void *p_event_data);
70
71#ifdef __cplusplus
72#if __cplusplus
73}
74#endif
75#endif
76
77#endif
struct __oal_fsm oal_fsm_stru
osal_u32 oal_fsm_create(const oal_fsm_create_stru *fsm_stru, oal_fsm_stru *oal_fsm, osal_u8 init_state, const oal_fsm_state_info *p_state_info, osal_u8 num_states)
#define OAL_FSM_MAX_NAME
Definition oal_fsm.h:18
osal_u32 oal_fsm_event_dispatch(oal_fsm_stru *p_fsm, osal_u16 event, osal_u16 event_data_len, osal_void *p_event_data)
struct __oal_fsm_state_info oal_fsm_state_info
osal_u32 oal_fsm_trans_to_state(oal_fsm_stru *p_fsm, osal_u8 state)
unsigned char osal_u8
Definition osal_types.h:11
char osal_char
Definition osal_types.h:16
void osal_void
Definition osal_types.h:29
unsigned int osal_u32
Definition osal_types.h:13
unsigned short osal_u16
Definition osal_types.h:12
Definition oal_fsm.h:28
osal_void(* oal_fsm_entry)(osal_void *p_ctx)
Definition oal_fsm.h:31
osal_u32(* oal_fsm_event)(osal_void *p_ctx, osal_u16 event, osal_u16 event_data_len, osal_void *event_data)
Definition oal_fsm.h:34
const osal_char * name
Definition oal_fsm.h:30
osal_u32 state
Definition oal_fsm.h:29
osal_void(* oal_fsm_exit)(osal_void *p_ctx)
Definition oal_fsm.h:32
Definition oal_fsm.h:38
osal_u8 cur_state
Definition oal_fsm.h:40
osal_u8 name[32]
Definition oal_fsm.h:39
osal_u16 last_event
Definition oal_fsm.h:47
osal_u8 rsv1[2]
Definition oal_fsm.h:48
osal_u8 prev_state
Definition oal_fsm.h:41
osal_u8 num_states
Definition oal_fsm.h:42
osal_void * p_oshandler
Definition oal_fsm.h:46
const oal_fsm_state_info * p_state_info
Definition oal_fsm.h:44
osal_void * p_ctx
Definition oal_fsm.h:45
osal_u8 rsv[1]
Definition oal_fsm.h:43
Definition oal_fsm.h:51
osal_u8 * name
Definition oal_fsm.h:53
osal_void * oshandle
Definition oal_fsm.h:52
osal_void * context
Definition oal_fsm.h:54