VOL-2502: Update README.md for openolt agent after BAL3.2.3.2 migration
VOL-2503: Provides test target for openolt-agent for Jenkins CI Integration
VOL-2504: Reorganize openolt-agent core.cc file

Change-Id: Id22fb881fcb9cc19d1f2ba044716731157d3a64e
diff --git a/agent/src/core_utils.h b/agent/src/core_utils.h
new file mode 100644
index 0000000..5a7c6bd
--- /dev/null
+++ b/agent/src/core_utils.h
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2018-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.
+ */
+#ifndef OPENOLT_CORE_UTILS_H_
+#define OPENOLT_CORE_UTILS_H_
+#include <string>
+#include <unistd.h>
+
+#include "core.h"
+#include "core_data.h"
+#include "error_format.h"
+
+extern "C"
+{
+#include <bcmolt_api.h>
+#include <bcmolt_host_api.h>
+#include <bcmolt_api_model_supporting_enums.h>
+#include <bcmolt_api_model_supporting_structs.h>
+
+#include <bcmolt_api_conn_mgr.h>
+//CLI header files
+#include <bcmcli_session.h>
+#include <bcmcli.h>
+#include <bcm_api_cli.h>
+
+#include <bcmos_common.h>
+#include <bcm_config.h>
+// FIXME : dependency problem
+// #include <bcm_common_gpon.h>
+// #include <bcm_dev_log_task.h>
+}
+
+
+std::string serial_number_to_str(bcmolt_serial_number* serial_number);
+std::string vendor_specific_to_str(const char* const serial_number);
+uint16_t get_dev_id(void);
+int get_default_tm_sched_id(int intf_id, std::string direction);
+uint32_t get_tm_sched_id(int pon_intf_id, int onu_id, int uni_id, std::string direction);
+void free_tm_sched_id(int pon_intf_id, int onu_id, int uni_id, std::string direction);
+bool is_tm_sched_id_present(int pon_intf_id, int onu_id, int uni_id, std::string direction);
+bool check_tm_qmp_equality(std::vector<uint32_t> tmq_map_profileA, std::vector<uint32_t> tmq_map_profileB);
+std::string* get_valid_queues_pbit_map(std::string *queues_pbit_map, uint32_t size);
+std::vector<uint32_t> get_tmq_map_profile(std::string *queues_pbit_map, uint32_t *queues_priority_q, uint32_t size);
+int get_tm_qmp_id(std::vector<uint32_t> tmq_map_profile);
+void update_sched_qmp_id_map(uint32_t sched_id,uint32_t pon_intf_id, uint32_t onu_id,
+                             uint32_t uni_id, int tm_qmp_id);
+int get_tm_qmp_id(uint32_t sched_id,uint32_t pon_intf_id, uint32_t onu_id, uint32_t uni_id);
+int get_tm_qmp_id(uint32_t sched_id,uint32_t pon_intf_id, uint32_t onu_id, uint32_t uni_id,
+                  std::vector<uint32_t> tmq_map_profile);
+bool free_tm_qmp_id(uint32_t sched_id,uint32_t pon_intf_id, uint32_t onu_id,
+                    uint32_t uni_id, int tm_qmp_id);
+int get_acl_id();
+void free_acl_id (int acl_id);
+std::string get_qos_type_as_string(bcmolt_egress_qos_type qos_type);
+bcmolt_egress_qos_type get_qos_type(uint32_t pon_intf_id, uint32_t onu_id, uint32_t uni_id, uint32_t queue_size=0);
+void clear_qos_type(uint32_t pon_intf_id, uint32_t onu_id, uint32_t uni_id);
+std::string GetDirection(int direction);
+bcmos_errno wait_for_alloc_action(uint32_t intf_id, uint32_t alloc_id, AllocCfgAction action);
+char* openolt_read_sysinfo(const char* field_name, char* field_val);
+Status pushOltOperInd(uint32_t intf_id, const char *type, const char *state);
+void openolt_cli_get_prompt_cb(bcmcli_session *session, char *buf, uint32_t max_len);
+int _bal_apiend_cli_thread_handler(long data);
+bcmos_errno bcm_openolt_api_cli_init(bcmcli_entry *parent_dir, bcmcli_session *session);
+bcmos_errno bcm_cli_quit(bcmcli_session *session, const bcmcli_cmd_parm parm[], uint16_t n_parms);
+int get_status_bcm_cli_quit(void);
+bcmos_errno bcmolt_apiend_cli_init();
+bcmos_errno get_pon_interface_status(bcmolt_interface pon_ni, bcmolt_interface_state *state);
+bcmos_errno bcmolt_cfg_get_mult_retry(bcmolt_oltid olt, bcmolt_cfg *cfg);
+unsigned NumNniIf_();
+unsigned NumPonIf_();
+bcmos_errno get_nni_interface_status(bcmolt_interface id, bcmolt_interface_state *state);
+Status install_gem_port(int32_t intf_id, int32_t onu_id, int32_t gemport_id);
+Status remove_gem_port(int32_t intf_id, int32_t gemport_id);
+Status update_acl_interface(int32_t intf_id, bcmolt_interface_type intf_type, uint32_t access_control_id,
+                bcmolt_members_update_command acl_cmd);
+Status install_acl(const acl_classifier_key acl_key);
+Status remove_acl(int acl_id);
+void formulate_acl_classifier_key(acl_classifier_key *key, const ::openolt::Classifier& classifier);
+Status handle_acl_rule_install(int32_t onu_id, uint32_t flow_id,
+                               const std::string flow_type, int32_t access_intf_id,
+                               int32_t network_intf_id, int32_t gemport_id,
+                               const ::openolt::Classifier& classifier);
+void clear_gem_port(int gemport_id, int access_intf_id);
+Status handle_acl_rule_cleanup(int16_t acl_id, int32_t gemport_id, int32_t intf_id, const std::string flow_type);
+Status check_bal_ready();
+Status check_connection();
+#endif // OPENOLT_CORE_UTILS_H_
+
+