blob: 05eb7ddfe22d3452aaa4b4b118e42fb38015a8b8 [file] [log] [blame]
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +05301/*
2** Copyright 2017-present Open Networking Foundation
3**
4** Licensed under the Apache License, Version 2.0 (the "License");
5** you may not use this file except in compliance with the License.
6** You may obtain a copy of the License at
7**
8** http://www.apache.org/licenses/LICENSE-2.0
9**
10** Unless required by applicable law or agreed to in writing, software
11** distributed under the License is distributed on an "AS IS" BASIS,
12** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13** See the License for the specific language governing permissions and
14** limitations under the License.
15*/
16
17#include <stdio.h>
18#include <bal_api.h>
19
20#undef _SYS_QUEUE_H_
21
22#include "asfvolt16_driver.h"
23#include "bal_access_terminal_hdlr.h"
24
25
26/********************************************************************\
27 * Function : bal_access_terminal_cfg_set *
28 * Description : Configures the OLT device *
29 ********************************************************************/
30
31uint32_t bal_access_terminal_cfg_set(BalAccessTerminalCfg *access_term_cfg)
32{
33 bcmos_errno err = BCM_ERR_OK;
34 bcmbal_access_terminal_cfg acc_term_obj; /**< declare main API struct */
35 bcmbal_access_terminal_key key = { }; /**< declare key */
36
37 key.access_term_id = access_term_cfg->key->access_term_id;
38
Kim Kempfafa1ab42017-11-13 09:31:47 -080039 ASFVOLT_LOG(ASFVOLT_DEBUG, "Configuration of OLT starts");
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +053040
41 /* init the API struct */
42 BCMBAL_CFG_INIT(&acc_term_obj, access_terminal, key);
43
44 /* decode API parameters from CLI */
Suhas Gururaj07da86a2018-05-11 14:37:03 +053045 ASFVOLT_CFG_PROP_SET(acc_term_obj, access_terminal, admin_state, BCMOS_TRUE,
46 access_term_cfg->data->admin_state);
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +053047
48 err = bcmbal_cfg_set(DEFAULT_ATERM_ID, &(acc_term_obj.hdr));
49
50 if(BCM_ERR_OK != err)
51 {
Kim Kempfafa1ab42017-11-13 09:31:47 -080052 ASFVOLT_LOG(ASFVOLT_ERROR, "Failed to configure the access-terminal(OLT) to ADMIN-UP");
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +053053 return BAL_ERRNO__BAL_ERR_INTERNAL;
54 }
55
Suhas Gururaj07da86a2018-05-11 14:37:03 +053056 ASFVOLT_LOG(ASFVOLT_INFO, "Access Terminal %d sent to OLT", access_term_cfg->data->admin_state);
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +053057 return BAL_ERRNO__BAL_ERR_OK;
58}
59
60
61/********************************************************************\
62 * Function : bal_access_term_indication_cb *
63 * Description : Call back function registered with BAL to handle *
64 * event related to access terminal *
65 ********************************************************************/
66bcmos_errno bal_access_term_indication_cb(bcmbal_obj *obj)
67{
68 /*bcmos_errno result = BCM_ERR_OK;*/
Kim Kempfafa1ab42017-11-13 09:31:47 -080069 ASFVOLT_LOG(ASFVOLT_INFO, "Processing API \'%s\' IND callback (status is %s)",
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +053070 bcmbal_objtype_str(obj->obj_type),
71 bcmos_strerror(obj->status));
Kim Kempfafa1ab42017-11-13 09:31:47 -080072
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +053073 return BAL_ERRNO__BAL_ERR_OK;
74}
75
76
77/********************************************************************\
78 * Function : bal_access_terminal_cfg_clear *
79 * Description : Handles the clear/Delete of access terminal *
80 ********************************************************************/
81uint32_t bal_access_terminal_cfg_clear(BalAccessTerminalKey *access_term_key)
82{
83 bcmos_errno err = BCM_ERR_OK;
84 bcmbal_access_terminal_cfg cfg_clear; /**< declare main API struct */
85 bcmbal_access_terminal_key key = { }; /**< declare key */
86
Kim Kempfafa1ab42017-11-13 09:31:47 -080087 ASFVOLT_LOG(ASFVOLT_INFO, "processing the clear request on access terminal");
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +053088
89 key.access_term_id = access_term_key->access_term_id;
90
91 /* init the API struct */
92 BCMBAL_CFG_INIT(&cfg_clear, access_terminal, key);
93
94
95 /* call API */
96 err = bcmbal_cfg_clear(DEFAULT_ATERM_ID, &cfg_clear.hdr);
97
98 if( err != BCM_ERR_OK)
99 {
Kim Kempfafa1ab42017-11-13 09:31:47 -0800100 ASFVOLT_LOG(ASFVOLT_INFO, "Failed to clear the access terminal");
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +0530101 return BAL_ERRNO__BAL_ERR_INTERNAL;
102 }
103
Kim Kempfafa1ab42017-11-13 09:31:47 -0800104 ASFVOLT_LOG(ASFVOLT_INFO, "Successfully cleared the access terminal");
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +0530105 return BAL_ERRNO__BAL_ERR_OK;
106}
107
108
109/********************************************************************\
110 * Function : bal_access_terminal_cfg_get *
111 * Description : Handles the clear/Delete of access terminal *
112 ********************************************************************/
Girish Gowdru9ebd8b22018-09-26 03:21:03 -0700113uint32_t bal_access_terminal_cfg_get (BalAccessTerminalCfg *access_term_cfg)
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +0530114{
115 bcmos_errno err = BCM_ERR_OK;
116 bcmbal_access_terminal_cfg cfg; /**< declare main API struct */
117 bcmbal_access_terminal_key key = { }; /**< declare key */
118
Kim Kempfafa1ab42017-11-13 09:31:47 -0800119 ASFVOLT_LOG(ASFVOLT_INFO, "processing the get request on access terminal");
Girish Gowdru9ebd8b22018-09-26 03:21:03 -0700120
121 key.access_term_id = access_term_cfg->key->access_term_id;
122
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +0530123 /* init the API struct */
124 BCMBAL_CFG_INIT(&cfg, access_terminal, key);
125
126 BCMBAL_CFG_PROP_GET(&cfg, access_terminal, all_properties);
127
128 /* call API */
129 err = bcmbal_cfg_get(DEFAULT_ATERM_ID, &cfg.hdr);
130 if (err != BCM_ERR_OK)
131 {
Kim Kempfafa1ab42017-11-13 09:31:47 -0800132 ASFVOLT_LOG(ASFVOLT_ERROR, "Failed to get access terminal configuration");
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +0530133 return BAL_ERRNO__BAL_ERR_INTERNAL;
134 }
135
Girish Gowdru9ebd8b22018-09-26 03:21:03 -0700136 access_term_cfg->key->has_access_term_id = BAL_ELEMENT_PRES;
137 access_term_cfg->key->access_term_id = cfg.key.access_term_id;
Kim Kempfafa1ab42017-11-13 09:31:47 -0800138
Girish Gowdru9ebd8b22018-09-26 03:21:03 -0700139 access_term_cfg->data->has_admin_state = BAL_ELEMENT_PRES;
140 access_term_cfg->data->admin_state = cfg.data.admin_state;
141
142 access_term_cfg->data->has_oper_status = BAL_ELEMENT_PRES;
143 access_term_cfg->data->oper_status = cfg.data.oper_status;
144
145 access_term_cfg->data->has_iwf_mode = BAL_ELEMENT_PRES;
146 access_term_cfg->data->iwf_mode = cfg.data.iwf_mode;
147
148 access_term_cfg->data->topology->has_num_of_nni_ports = BAL_ELEMENT_PRES;
149 access_term_cfg->data->topology->num_of_nni_ports = cfg.data.topology.num_of_nni_ports;
150
151 access_term_cfg->data->topology->has_num_of_pon_ports = BAL_ELEMENT_PRES;
152 access_term_cfg->data->topology->num_of_pon_ports = cfg.data.topology.num_of_pon_ports;
153
154 access_term_cfg->data->topology->has_num_of_mac_devs = BAL_ELEMENT_PRES;
155 access_term_cfg->data->topology->num_of_mac_devs = cfg.data.topology.num_of_mac_devs;
156
157 access_term_cfg->data->topology->has_num_of_pons_per_mac_dev = BAL_ELEMENT_PRES;
158 access_term_cfg->data->topology->num_of_pons_per_mac_dev = cfg.data.topology.num_of_pons_per_mac_dev;
159
160 access_term_cfg->data->topology->has_pon_family = BAL_ELEMENT_PRES;
161 access_term_cfg->data->topology->pon_family = cfg.data.topology.pon_family;
162
163 access_term_cfg->data->topology->has_pon_sub_family = BAL_ELEMENT_PRES;
164 access_term_cfg->data->topology->pon_sub_family = cfg.data.topology.pon_sub_family;
165
166 access_term_cfg->data->sw_version->has_version_type = BAL_ELEMENT_PRES;
167 access_term_cfg->data->sw_version->version_type = cfg.data.sw_version.version_type;
168
169 access_term_cfg->data->sw_version->has_major_rev = BAL_ELEMENT_PRES;
170 access_term_cfg->data->sw_version->major_rev = cfg.data.sw_version.major_rev;
171
172 access_term_cfg->data->sw_version->has_minor_rev = BAL_ELEMENT_PRES;
173 access_term_cfg->data->sw_version->minor_rev = cfg.data.sw_version.minor_rev;
174
175 access_term_cfg->data->sw_version->has_release_rev = BAL_ELEMENT_PRES;
176 access_term_cfg->data->sw_version->release_rev = cfg.data.sw_version.release_rev;
177
178 access_term_cfg->data->sw_version->has_om_version = BAL_ELEMENT_PRES;
179 access_term_cfg->data->sw_version->om_version = cfg.data.sw_version.om_version;
180
181 access_term_cfg->data->sw_version->has_dev_point = BAL_ELEMENT_PRES;
182 access_term_cfg->data->sw_version->dev_point = cfg.data.sw_version.dev_point;
183
184 access_term_cfg->data->has_conn_id = BAL_ELEMENT_PRES;
185 access_term_cfg->data->conn_id = cfg.data.conn_id;
186
187 return BAL_ERRNO__BAL_ERR_OK;
Rajeswara Raof6b4e6c2017-08-31 17:26:27 +0530188}