First version of asfvolt16 device driver code

Change-Id: I806c2eaeebc7f8df7073c8264a7fdc6011b0d103
diff --git a/src/bal_access_terminal_hdlr.c b/src/bal_access_terminal_hdlr.c
new file mode 100755
index 0000000..c05e5cf
--- /dev/null
+++ b/src/bal_access_terminal_hdlr.c
@@ -0,0 +1,137 @@
+/*
+** Copyright 2017-present Open Networking Foundation
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** 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.
+*/
+
+#include <stdio.h>
+#include <bal_api.h>
+
+#undef _SYS_QUEUE_H_
+
+#include "asfvolt16_driver.h"
+#include "bal_access_terminal_hdlr.h"
+
+
+/********************************************************************\
+ * Function    : bal_access_terminal_cfg_set                        *
+ * Description : Configures the OLT device                          *
+ ********************************************************************/
+
+uint32_t bal_access_terminal_cfg_set(BalAccessTerminalCfg *access_term_cfg)
+{
+    bcmos_errno err = BCM_ERR_OK;
+    bcmbal_access_terminal_cfg acc_term_obj;         /**< declare main API struct */
+    bcmbal_access_terminal_key key = { };   /**< declare key */
+
+    key.access_term_id = access_term_cfg->key->access_term_id;
+
+    ASFVOLT_LOG(ASFVOLT_DEBUG, "Configuration of OLT starts\n");
+
+    /* init the API struct */
+    BCMBAL_CFG_INIT(&acc_term_obj, access_terminal, key);
+
+    /* decode API parameters from CLI */
+    ASFVOLT_CFG_PROP_SET(acc_term_obj, access_terminal, admin_state, BCMOS_TRUE, BCMBAL_STATE_UP);
+
+    err = bcmbal_cfg_set(DEFAULT_ATERM_ID, &(acc_term_obj.hdr));
+
+    if(BCM_ERR_OK != err)
+    {
+        ASFVOLT_LOG(ASFVOLT_ERROR, "Failed to configure the access-terminal(OLT) to ADMIN-UP\n");
+        return BAL_ERRNO__BAL_ERR_INTERNAL;
+    }
+
+    ASFVOLT_LOG(ASFVOLT_INFO, "Access Terminal UP configuration sent to OLT\n");
+    return BAL_ERRNO__BAL_ERR_OK;
+}
+
+
+/********************************************************************\
+ * Function    : bal_access_term_indication_cb                      *
+ * Description : Call back function registered with BAL to handle   *
+ *               event related to access terminal                   *
+ ********************************************************************/
+bcmos_errno bal_access_term_indication_cb(bcmbal_obj *obj)
+{
+    /*bcmos_errno result = BCM_ERR_OK;*/
+    ASFVOLT_LOG(ASFVOLT_INFO, "Processing API \'%s\' IND callback (status is %s)\n",
+		    bcmbal_objtype_str(obj->obj_type),
+		    bcmos_strerror(obj->status));
+    
+    return BAL_ERRNO__BAL_ERR_OK;
+}
+
+
+/********************************************************************\
+ * Function    : bal_access_terminal_cfg_clear                      *
+ * Description : Handles the clear/Delete of access terminal        *
+ ********************************************************************/
+uint32_t bal_access_terminal_cfg_clear(BalAccessTerminalKey *access_term_key)
+{
+    bcmos_errno err = BCM_ERR_OK;
+    bcmbal_access_terminal_cfg cfg_clear;         /**< declare main API struct */
+    bcmbal_access_terminal_key key = { };   /**< declare key */
+
+    ASFVOLT_LOG(ASFVOLT_INFO, "processing the clear request on access terminal\n");
+
+    key.access_term_id = access_term_key->access_term_id;
+
+    /* init the API struct */
+    BCMBAL_CFG_INIT(&cfg_clear, access_terminal, key);
+
+
+    /* call API */
+    err = bcmbal_cfg_clear(DEFAULT_ATERM_ID, &cfg_clear.hdr);
+
+    if( err != BCM_ERR_OK)
+    {
+       ASFVOLT_LOG(ASFVOLT_INFO, "Failed to clear the access terminal\n");
+       return BAL_ERRNO__BAL_ERR_INTERNAL;
+    }
+
+    ASFVOLT_LOG(ASFVOLT_INFO, "Successfully cleared the access terminal\n");
+    return BAL_ERRNO__BAL_ERR_OK;
+}
+
+
+/********************************************************************\
+ * Function    : bal_access_terminal_cfg_get                        *
+ * Description : Handles the clear/Delete of access terminal        *
+ ********************************************************************/
+uint32_t bal_access_terminal_cfg_get (BalAccessTerminalKey *access_term_key,
+                                      BalAccessTerminalCfg *access_term_cfg)
+{
+    bcmos_errno err = BCM_ERR_OK;
+    bcmbal_access_terminal_cfg cfg;         /**< declare main API struct */
+    bcmbal_access_terminal_key key = { };   /**< declare key */
+
+    ASFVOLT_LOG(ASFVOLT_INFO, "processing the get request on access terminal\n");
+    /* init the API struct */
+    BCMBAL_CFG_INIT(&cfg, access_terminal, key);
+
+    BCMBAL_CFG_PROP_GET(&cfg, access_terminal, all_properties);
+
+    /* call API */
+    err = bcmbal_cfg_get(DEFAULT_ATERM_ID, &cfg.hdr);
+    if (err != BCM_ERR_OK)
+    {
+       ASFVOLT_LOG(ASFVOLT_ERROR, "Failed to get access terminal configuration\n");
+       return BAL_ERRNO__BAL_ERR_INTERNAL;
+    }
+
+    ASFVOLT_LOG(ASFVOLT_INFO, 
+                  "To-Do. Send access terminal details to Adapter\n");
+   
+    return BAL_ERRNO__BAL_ERR_OK;
+}