X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=Include%2Fvos_module.h;fp=Include%2Fvos_module.h;h=60a25a0d9d129d29c397491d8509792b686c2791;hb=e93798699eccb72af04938fc9b0d7a836e284488;hp=5dcbbc81e81aee34c710d12f0906fb9f21b1b614;hpb=94f13ab3e8da393eb27ccc561d31b447b1367c56;p=scp%2Focu%2F5gnr.git diff --git a/Include/vos_module.h b/Include/vos_module.h index 5dcbbc8..60a25a0 100644 --- a/Include/vos_module.h +++ b/Include/vos_module.h @@ -1,12 +1,24 @@ /****************************************************************************** -############################################################################### -# Copyright (c) [2017-2020] [ICT/CAS] # -# Licensed under the ORAN Software License v1.0 (License) # -############################################################################### -******************************************************************************/ - - -#ifndef __VOS_MODULE_H__ +* +* Copyright (c) 2020 ICT/CAS. +* +* Licensed under the O-RAN Software License, Version 1.0 (the "Software License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* https://www.o-ran.org/software +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +*******************************************************************************/ + + + +#ifndef __VOS_MODULE_H__ #define __VOS_MODULE_H__ #include "vos_types.h" @@ -26,7 +38,7 @@ typedef enum module_type_e{ VOS_MOD_T_HOST, ///< host task VOS_MOD_T_USER, ///< user task VOS_MOD_T_EXTERN, ///< 外部模块 (不是 vos app 中的模块,其他的进程 ) - VOS_MOD_T_MAX, ///< + VOS_MOD_T_MAX, ///< }module_type_t; /** 模块通信类型 */ @@ -53,9 +65,9 @@ typedef enum module_comm_type_e{ typedef struct vos_module_s{ module_type_t modType; ///< 模块类型 LONG commType; ///< 当前的通信类型 - ULONG moduleID; ///< 模块ID - CHAR name[MODULE_NAME_LEN]; ///< 模块名 - ULONG queueID; ///< 模块消息队列,用于接收从其他模块发送过来的消息 + ULONG moduleID; ///< 模块ID + CHAR name[MODULE_NAME_LEN]; ///< 模块名 + ULONG queueID; ///< 模块消息队列,用于接收从其他模块发送过来的消息 LONG paraCount; ///< 无需关心, (添加的额外参数个数) void *pPara; ///< 无需关心, (vos_mod_com_para_cb_t) LONG paraLock; ///< 无需关心, @@ -65,15 +77,15 @@ typedef struct vos_module_s{ /** 采用非VOS通信方式的模块需要提供的handle函数,用于接收数据 * buf 用于消息接收的缓冲区 * size buf 大小 -* opval 额外信息,类型为 vos_mod_com_op_t +* opval 额外信息,类型为 vos_mod_com_op_t * opvalLen opval的大小 -* +* */ typedef LONG (*receive_handler)(VOID *buf,LONG size,VOID *opval,LONG opvalLen); -/** - * 模块注册 API +/** + * 模块注册 API * 向VOS 模块管理中注册模块 。 * @param[in ] name 模块名,大小为 MODULE_NAME_LEN * @param[in] module 模块管理信息 @@ -85,37 +97,37 @@ typedef LONG (*receive_handler)(VOID *buf,LONG size,VOID *opval,LONG opvalLen); * module.name * module.moduleID * @return VOS_OK - 成功,其他 - 失败 - */ + */ LONG VOS_module_register(const CHAR *name,vos_module_t *module); -/** - * 模块注销 API +/** + * 模块注销 API * 向VOS 模块管理中注册模块 。 * @param[in ] name 模块名,大小为 MODULE_NAME_LEN * @return VOS_OK - 成功,其他 - 失败 - */ + */ LONG VOS_module_deregister(const CHAR *name); -/** - * 根据模块ID获得模块名 +/** + * 根据模块ID获得模块名 * @param[in ] id 模块ID * @param[out] name 模块名,大小为 MODULE_NAME_LEN * @return VOS_OK - 成功,其他 - 失败 - */ + */ LONG VOS_module_get_name(ULONG id,CHAR name[MODULE_NAME_LEN]); -/** - * 根据模块名获得模块ID +/** + * 根据模块名获得模块ID * @param[in ] name 模块名,大小为 MODULE_NAME_LEN * @return 成功返回模块ID,失败返回 0 - */ + */ ULONG VOS_module_get_Id(CHAR *name); -/** - * 向某个模块发送异步消息 +/** + * 向某个模块发送异步消息 * @param[in ] dst_slot 目的槽位号 * @param[in ] dst_moduleName 目的模块名,大小为 MODULE_NAME_LEN * @param[in ] src_moduleName 源模块名,大小为 MODULE_NAME_LEN @@ -123,12 +135,12 @@ ULONG VOS_module_get_Id(CHAR *name); * @param[in ] msgData 消息数据 * @param[in ] msgDataLen 消息数据长度 * @return 成功返回 VOS_OK,失败返回 其他 - */ + */ LONG VOS_SendAsynMsg2Module(LONG dst_slot,CHAR dst_moduleName[MODULE_NAME_LEN],CHAR src_moduleName[MODULE_NAME_LEN], LONG msgCode,VOID *msgData,LONG msgDataLen); -/** - * 向某个模块发送同步消息 +/** + * 向某个模块发送同步消息 * @param[in ] dst_slot 目的槽位号 * @param[in ] dst_moduleName 目的模块名,大小为 MODULE_NAME_LEN * @param[in ] src_moduleName 源模块名,大小为 MODULE_NAME_LEN @@ -140,14 +152,14 @@ LONG VOS_SendAsynMsg2Module(LONG dst_slot,CHAR dst_moduleName[MODULE_NAME_LEN],C * @param[out] ackDataLen 输出:buf的有效长度 * @param[in ] timeout 等待接收的时间,单位毫秒,调用者自行判断需要等待时间,一般等待 5秒 * @return 成功返回 VOS_OK,失败返回 其他 - */ + */ LONG VOS_SendSynMsg2Module(LONG dst_slot,CHAR dst_moduleName[MODULE_NAME_LEN],CHAR src_moduleName[MODULE_NAME_LEN], LONG msgCode,VOID *msgData,LONG msgDataLen,VOID *ackData,LONG *ackDataLen,LONG timeout); -/** - * 向某个模块发送异步消息,支持非VOS通信方式 +/** + * 向某个模块发送异步消息,支持非VOS通信方式 * @param[in ] dst_slot 目的槽位号 * @param[in ] dst_moduleName 目的模块名,大小为 MODULE_NAME_LEN * @param[in ] src_moduleName 源模块名,大小为 MODULE_NAME_LEN @@ -158,14 +170,14 @@ LONG VOS_SendSynMsg2Module(LONG dst_slot,CHAR dst_moduleName[MODULE_NAME_LEN],CH * @param[in ] optval 可选参数,不需要则填NULL * @param[in ] optlen 可选参数长度 * @return 成功返回 VOS_OK,失败返回 其他 - */ + */ LONG VOS_SendAsynMsg2ModuleEx(LONG dst_slot,CHAR dst_moduleName[MODULE_NAME_LEN],CHAR src_moduleName[MODULE_NAME_LEN], LONG msgCode,VOID *msgData,LONG msgDataLen, module_comm_type_t commType,VOID *optval,LONG optlen); -/** - * 向某个模块发送同步消息,仅支持VOS通信方式 +/** + * 向某个模块发送同步消息,仅支持VOS通信方式 * @param[in ] dst_slot 目的槽位号 * @param[in ] dst_moduleName 目的模块名,大小为 MODULE_NAME_LEN * @param[in ] src_moduleName 源模块名,大小为 MODULE_NAME_LEN @@ -180,7 +192,7 @@ LONG VOS_SendAsynMsg2ModuleEx(LONG dst_slot,CHAR dst_moduleName[MODULE_NAME_LEN] * @param[in ] optval 可选参数,不需要则填NULL * @param[in ] optlen 可选参数长度 * @return 成功返回 VOS_OK,失败返回 其他 - */ + */ LONG VOS_SendSynMsg2ModuleEx(LONG dst_slot,CHAR dst_moduleName[MODULE_NAME_LEN],CHAR src_moduleName[MODULE_NAME_LEN], LONG msgCode,VOID *msgData,LONG msgDataLen,VOID *ackData,LONG *ackDataLen,LONG timeout, module_comm_type_t commType,VOID *optval,LONG optlen); @@ -190,34 +202,34 @@ LONG VOS_SendAsynMsg2Module_Raw(LONG dst_slot,CHAR dst_moduleName[MODULE_NAME_LE -/** -* 回复同步消息 +/** +* 回复同步消息 * @param[in ] aulMsg VOS_QueReceive 收到的原始消息 * @param[in ] ackData 返回数据的buf * @param[in ] ackDataLen 返回数据buf的长度 * @return 成功返回 VOS_OK,失败返回 其他 -*/ +*/ LONG VOS_SendSynAckMsg(ULONG aulMsg[VOS_QUEUE_MSG_SIZE],VOID *ackData,LONG ackDataLen); -/** -* 注册timer 消息 +/** +* 注册timer 消息 * @param[in ] module_ID 要注册timer msg的模块号 * @param[in ] msg_code 消息码 * @param[in ] interval 发送间隔,毫秒 * @param[in ] type 类型,循环或者只执行一次 * @param[in ] pArg 附加参数,一般为一个指针 * @return 成功返回 VOS_OK,失败返回 其他 -*/ +*/ LONG VOS_RegTimerMsg(LONG module_ID,LONG msg_code,LONG interval,VOS_TIMER_TYPE_EN type,VOID *pArg); -/** -* 注销timer 消息 +/** +* 注销timer 消息 * @param[in ] module_ID 要注销timer msg的模块号 * @param[in ] msg_code 消息码 * @return 成功返回 VOS_OK,失败返回 其他 -*/ +*/ LONG VOS_DeregTimerMsg(LONG module_ID,LONG msg_code); @@ -267,7 +279,7 @@ typedef LONG(*VOS_msg_code_handler_ptr)(ULONG aulMsg[VOS_QUEUE_MSG_SIZE]); /** 用于模块间通信的code 和 handler的map */ typedef struct msg_code_handle_map_s { - LONG msg_code; ///< 消息码 + LONG msg_code; ///< 消息码 VOS_msg_code_handler_ptr handler; ///< 消息码的处理函数 }VOS_msg_code_handle_map_t;