Modify licenses
[scp/ocu/5gnr.git] / Include / sys_main_api.h
1 /******************************************************************************
2 *
3 *   Copyright (c) 2020 ICT/CAS.
4 *
5 *   Licensed under the O-RAN Software License, Version 1.0 (the "Software License");
6 *   you may not use this file except in compliance with the License.
7 *   You may obtain a copy of the License at
8 *
9 *       https://www.o-ran.org/software
10 *
11 *   Unless required by applicable law or agreed to in writing, software
12 *   distributed under the License is distributed on an "AS IS" BASIS,
13 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *   See the License for the specific language governing permissions and
15 *   limitations under the License.
16 *
17 *******************************************************************************/
18
19
20
21 #ifndef __SYS_MAIN_API_H__
22 #define __SYS_MAIN_API_H__
23
24
25 #ifdef __cplusplus
26 extern "C"
27 {
28 #endif
29
30 /******************************   Begin of File Body  **********************/
31 #include "vos_common.h"
32 #ifdef PLAT_MODULE_DEVSM
33
34 extern LONG sys_slot_is_master_slot( ULONG slotno );
35 extern LONG devsm_module_workmode_is_master(ULONG slotno);
36 extern LONG devsm_module_workmode_is_slave(ULONG slotno);
37 extern LONG devsm_module_workmode_is_master_active(ULONG slotno);
38 extern LONG devsm_module_workmode_is_master_standby(ULONG slotno);
39 extern LONG sys_product_name_get(CHAR *str, ULONG max_len);
40 extern USHORT sys_chassis_max_slotnum_get();
41 extern USHORT sys_chassis_master_slotnum_get();
42 extern ULONG sys_master_active_slotno_get();
43 extern ULONG sys_local_module_slotno_get();
44 extern ULONG sys_module_running_state_get(ULONG slotno);
45 extern ULONG sys_module_is_have_cpu(ULONG slotno);
46 extern ULONG sys_module_is_running(ULONG slotno);
47 extern ULONG sys_module_is_ready(ULONG slotno);
48 extern ULONG sys_module_is_inserted(ULONG slotno);
49 extern LONG devsm_hot_get_module_type( LONG slotno );
50 extern ULONG sys_module_type_get(ULONG slotno);
51 extern LONG sys_module_have_pp(ULONG module_type);
52 extern LONG sys_module_have_fpgapp(ULONG module_type);
53 extern LONG sys_module_port_type_num(ULONG slotno, ULONG port_type);
54
55 extern ULONG g_ulProductDevIndex;
56
57 /** JT_SRAN设备索引 */
58 #define JT_SRAN_DEV_ID  (g_ulProductDevIndex)
59
60 /** TRAP 类型,Dev 必须为1 */
61 #define TRAP_TYPE_DEV     1
62
63 /** TRAP 类型,board 必须为2 */
64 #define TRAP_TYPE_BOARD   2
65
66 /** TRAP 程序启动成功,AlarmID 为1*/
67 #define ProgramStartSuccessAlarmID 1
68
69 /** TRAP 板卡热插入事件,AlarmID 为11*/
70 #define BoardHotInsertAlarmID 11
71
72 /** TRAP 板卡热拔出事件,AlarmID 为12*/
73 #define BoardHotPullAlarmID 12
74
75 /** TRAP 板卡重启事件,AlarmID 为13*/
76 #define BoardHotRebootAlarmID 13
77
78 /** 设备管理模块名*/
79 #define MOD_DEVSM_NAME  "DEVSM_MODULE"
80
81 /** 设备机框最大槽位个数 */
82 #define PRODUCT_MAX_TOTAL_SLOTNUM 21
83
84 /** 设备管理使用通知链发送的信息 */
85 typedef struct _devsm_notify_info_s
86 {
87         ULONG slotno;                   ///< 槽位号
88         ULONG module_type;              ///< 板卡类型
89 }devsm_notify_info_t;
90
91 /** 设备管理通知链板卡RUNNING事件 */
92 #define DEVSN_NOTIFY_MOD_RUNNING_EVENT  0X01
93
94 #define CPI_HOOK_CALL(hookfunc) (NULL == (hookfunc))?(VOS_ERROR):(*hookfunc)
95
96 /**************************        产品相关           ***************************/
97 #define SYS_PRODUCT_NAME_GET(str, maxlen)       (sys_product_name_get(str, maxlen))             /*产品名称*/
98
99 /**************************       全局机框槽位相关           **************************/
100 #define SYS_MASTER_ACTIVE_SLOTNO_UNKNOW                 (0x00)                                                                                  /*主用主控槽位号未知*/
101 #define SYS_CHASSIS_SLOTNUM_GET                                 (sys_chassis_max_slotnum_get())                                 /*产品机框的最大槽位个数*/
102 #define SYS_CHASSIS_MASTER_SLOTNUM_GET                  (sys_chassis_master_slotnum_get())                              /*产品的主控槽位个数*/
103 #define SYS_MASTER_ACTIVE_SLOTNO_GET                    (sys_master_active_slotno_get())                                /*主用主控槽位号*/
104 #define SYS_CHASSIS_SLAVE_SLOTNUM                               (SYS_CHASSIS_SLOTNUM_GET-SYS_CHASSIS_MASTER_SLOTNUM_GET)/*产品机框的从板槽位个数*/
105 #define SYS_CHASSIS_SLOTNO_ISMASTERSLOTNO(slotno) (VOS_YES == sys_slot_is_master_slot(slotno))  /*判断槽位是否为主控*/
106 #define SYS_CHASSIS_SLOTNO_ISSLAVESLOTNO(slotno) (VOS_NO == sys_slot_is_master_slot(slotno))    /*判断槽位是否为从板*/
107
108
109 /**************************       槽位号判断相关            **************************/
110 #define SYS_SLOTNO_IS_ILLEGAL(slotno) (((slotno) > (SYS_CHASSIS_SLOTNUM_GET))||((slotno) < 1))          /*槽位不合法*/
111 #define SYS_SLOT_IS_LEGAL(slot) ((slot>0) && (slot<=SYS_CHASSIS_SLOTNUM_GET))                                           /*槽位合法*/
112
113 #define SYS_SLOT_LOOP_BEGIN(slot)      for (slot = 1; slot <= SYS_CHASSIS_SLOTNUM_GET; ++slot) {
114 #define SYS_SLOT_LOOP_END(slot)        }
115
116 #ifdef PLAT_MODULE_IFM
117 #define SYS_MODULE_PORT_NUM(slotno, port_type)   (sys_module_port_type_num(slotno, port_type))
118 #define SYS_SLOT_PORT_IS_LEGAL(slot, port_type, port) (SYS_SLOT_IS_LEGAL(slot) && ((port>0) && (port<=SYS_MODULE_PORT_NUM(slot, port_type))))
119 #endif
120
121 /**************************  板卡工作模式、主备状态相关                     *****************/
122 #define SYS_MODULE_WORKMODE_ISMASTER(slotno)    (devsm_module_workmode_is_master(slotno))                       /*板卡工作模式是否为master*/
123 #define SYS_MODULE_WORKMODE_ISSLAVE(slotno)     (devsm_module_workmode_is_slave(slotno))                        /*板卡工作模式是否为slave*/
124 #define SYS_MODULE_ISMASTERACTIVE(slotno)               (devsm_module_workmode_is_master_active(slotno))        /*板卡是否是主用主控*/
125 #define SYS_MODULE_ISMASTERSTANDBY(slotno)              (devsm_module_workmode_is_master_standby(slotno))       /*板卡是否是备用主控*/
126
127
128 /*********************  local板卡工作模式、主备状态相关 ******             *****************/
129 #define SYS_LOCAL_MODULE_SLOTNO_GET                             (sys_local_module_slotno_get())                                                         /*本板槽位号*/
130 #define SYS_LOCAL_MODULE_WORKMODE_ISMASTER              SYS_MODULE_WORKMODE_ISMASTER(SYS_LOCAL_MODULE_SLOTNO_GET)       /*本板是否工作在master*/
131 #define SYS_LOCAL_MODULE_WORKMODE_ISSLAVE               SYS_MODULE_WORKMODE_ISSLAVE(SYS_LOCAL_MODULE_SLOTNO_GET)        /*本板是否工作在slave*/
132 #define SYS_LOCAL_MODULE_ISMASTERACTIVE                 SYS_MODULE_ISMASTERACTIVE(SYS_LOCAL_MODULE_SLOTNO_GET)          /*本板是否是主用主控*/
133 #define SYS_LOCAL_MODULE_ISMASTERSTANDBY                SYS_MODULE_ISMASTERSTANDBY(SYS_LOCAL_MODULE_SLOTNO_GET)         /*本板是否是备用主控*/
134
135
136 /**************************     板卡公共信息相关                ***************************/
137 #if 0   /*暂不对外开放,要用到再放开*/
138 #define SYS_MODULE_SW_VERSION(slotno)           _SYS_MODULE_SW_VERSION_(slotno)                         /*软件版本信息*/
139 #define SYS_MODULE_NAME(slotno)                         _SYS_MODULE_NAME_(slotno)                                       /*板卡名称*/
140 #define SYS_MODULE_HARDWARE_VERSION(slotno) _SYS_MODULE_HARDWARE_VERSION_(slotno)               /*硬件版本信息*/
141 #define SYS_MODULE_MANUFACTURE_DATE(slotno) _SYS_MODULE_MANUFACTURE_DATE_(slotno)               /*生产日期*/
142 #define SYS_MODULE_SERIALNO(slotno)             _SYS_MODULE_SERIALNO_(slotno)                           /*序列号*/
143 #endif
144
145 #define SYS_MODULE_TYPE(slotno)                         (devsm_hot_get_module_type(slotno))     /*include pulled module lastly*/
146
147 #define __SYS_MODULE_TYPE__GET(slotno)          (sys_module_type_get(slotno))   /*insert type*/
148
149 #define SYS_MODULE_SLOT_ISHAVECPU(slotno) (VOS_YES == sys_module_is_have_cpu(slotno))           /*板卡是否有CPU*/
150
151 #define SYS_MODULE_ISHAVEPP(type) (VOS_YES == sys_module_have_pp(type))
152 #define SYS_MODULE_SLOT_ISHAVEPP(slotno) (SYS_MODULE_ISHAVEPP(__SYS_MODULE_TYPE__GET(slotno)))
153 #define SYS_LOCAL_MODULE_ISHAVEPP()  SYS_MODULE_SLOT_ISHAVEPP(SYS_LOCAL_MODULE_SLOTNO)
154
155 #define SYS_MODULE_ISHAVEFPGAPP(type) (VOS_YES == sys_module_have_fpgapp(type))
156 #define SYS_MODULE_SLOT_ISHAVEFPGAPP(slotno) (SYS_MODULE_ISHAVEFPGAPP(SYS_MODULE_TYPE(slotno)))
157
158
159 /**************************     槽位运行状态相关                ***************************/
160 #define SYS_MODULE_RUNNINGSTATE_GET(slotno)             (sys_module_running_state_get(slotno))          /*槽位的运行状态*/
161 #define SYS_LOCAL_MODULE_RUNNINGSTATE           (SYS_MODULE_RUNNINGSTATE_GET(SYS_LOCAL_MODULE_SLOTNO_GET))      /*本板的运行状态*/
162 #define SYS_MODULE_IS_RUNNING(slotno)           (VOS_YES == sys_module_is_running(slotno))                      /*槽位是否是RUNNING状态*/
163 #define SYS_MODULE_IS_READY(slotno)             (VOS_YES == sys_module_is_ready(slotno))                        /*槽位是否是READY状态*/
164 #define SYS_MODULE_IS_INSERTED(slotno)  (VOS_YES == sys_module_is_inserted(slotno))     /*槽位是否在位*/
165
166 extern ULONG g_SysInstallMode;
167 #define SYS_MODULE_IS_INSTALL_MODE (g_SysInstallMode)                   /*板卡的安装模式,默认自动安装*/
168 /*******************************  End of File Body ***********************/
169 #endif
170
171 #ifdef __cplusplus
172 }
173 #endif
174
175 #endif