aff95158创建于 2025年12月23日历史提交
/**

 * Copyright (c) 2025 Huawei Technologies Co., Ltd.

 * This program is free software, you can redistribute it and/or modify it under the terms and conditions of

 * CANN Open Software License Agreement Version 2.0 (the "License").

 * Please refer to the License for details. You may not use this file except in compliance with the License.

 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,

 * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.

 * See LICENSE in the root of the software repository for the full text of the License.

 */

#ifndef PROF_ADAPT_H

#define PROF_ADAPT_H

#include "prof_common.h"



typedef enum {

    PROF_CHAN_MODE_USER = 0,

    PROF_CHAN_MODE_KERNEL,

} PROF_CHAN_MODE_TYPE;



struct prof_chan_ops {

    drvError_t (*init)(uint32_t dev_id, uint32_t chan_id, bool event_flag, char **priv);

    void (*uninit)(char **priv);

    drvError_t (*start)(uint32_t dev_id, uint32_t chan_id, struct prof_user_start_para *para, char *priv);

    drvError_t (*stop)(uint32_t dev_id, uint32_t chan_id, struct prof_user_stop_para *para, char *priv);

    drvError_t (*flush)(uint32_t dev_id, uint32_t chan_id, uint32_t *data_len, char *priv);

    int (*read)(uint32_t dev_id, uint32_t chan_id, struct prof_user_read_para *para, char *priv);

    drvError_t (*query)(uint32_t dev_id, uint32_t chan_id, uint32_t *avail_len, char *priv);

    drvError_t (*report)(uint32_t dev_id, uint32_t chan_id, void *data, uint32_t data_len, char *priv);

};

drvError_t prof_adapt_get_chan_ops(uint32_t dev_id, uint32_t chan_mode, struct prof_chan_ops **ops);



drvError_t prof_adapt_register_channel(uint32_t dev_id, uint32_t chan_id, struct prof_sample_register_para *para);

drvError_t prof_adapt_get_channels(uint32_t dev_id, struct prof_channel_list *channels);



struct prof_adapt_core_notifier {

    void (*poll_report)(uint32_t dev_id, uint32_t chan_id);

    drvError_t (*chan_report)(uint32_t dev_id, uint32_t chan_id, void *data, uint32_t data_len, bool hal_flag);

};

void prof_adapt_register_notifier(struct prof_adapt_core_notifier *notifier);

struct prof_adapt_core_notifier *prof_adapt_get_notifier(void);



#endif