blob: 49d11759e6b73f50c32a6baef56939743757ad60 [file] [log] [blame]
Shad Ansari01b0e652018-04-05 21:02:53 +00001/*
Girish Gowdraa707e7c2019-11-07 11:36:13 +05302 * Copyright 2018-present Open Networking Foundation
Shad Ansari01b0e652018-04-05 21:02:53 +00003
Girish Gowdraa707e7c2019-11-07 11:36:13 +05304 * 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
Shad Ansari01b0e652018-04-05 21:02:53 +00007
Girish Gowdraa707e7c2019-11-07 11:36:13 +05308 * http://www.apache.org/licenses/LICENSE-2.0
Shad Ansari01b0e652018-04-05 21:02:53 +00009
Girish Gowdraa707e7c2019-11-07 11:36:13 +053010 * 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
Shad Ansari01b0e652018-04-05 21:02:53 +000017#include <iostream>
Craig Lutgen88a22ad2018-10-04 12:30:46 -050018#include <unistd.h>
Shad Ansari01b0e652018-04-05 21:02:53 +000019
Shad Ansari01b0e652018-04-05 21:02:53 +000020#include "server.h"
Shad Ansarib7b0ced2018-05-11 21:53:32 +000021#include "core.h"
Shad Ansari01b0e652018-04-05 21:02:53 +000022
Humera Kouser5ac56612019-07-25 20:23:01 -040023using namespace std;
24
25/*
26* This function displays openolt version, BAL version, openolt build date
27* and other VCS params like VCS url, VCS ref, commit date and exits.
28*
29* @param argc : number of arguments
30* @param argv : vector of arguments
31*/
32void display_version_info(int argc, char *argv[]) {
33
34 string version = "";
35 string bal_version = "";
36 string label_vcs_url = "";
37 string label_vcs_ref = "";
38 string label_build_date = "";
39 string label_commit_date = "";
40
41 #ifdef VERSION
42 version = VERSION;
43 #endif
44
45 #ifdef BAL_VER
46 bal_version = BAL_VER;
47 #endif
48
49 #ifdef LABEL_VCS_URL
50 label_vcs_url = LABEL_VCS_URL;
51 #endif
52
53 #ifdef LABEL_VCS_REF
54 label_vcs_ref = LABEL_VCS_REF;
55 #endif
56
57 #ifdef LABEL_BUILD_DATE
58 label_build_date = LABEL_BUILD_DATE;
59 #endif
60
61 #ifdef LABEL_COMMIT_DATE
62 label_commit_date = LABEL_COMMIT_DATE;
63 #endif
64
65 for (int i = 1; i < argc; ++i) {
66 if(strcmp(argv[i], "--version") == 0 || (strcmp(argv[i], "-v") == 0)) {
67 std::cout << "OpenOLT agent: " << version << "\n";
68 std::cout << "BAL version: " << bal_version << "\n";
69 std::cout << "Label VCS Url: " << label_vcs_url << "\n";
70 std::cout << "Label VCS Ref: " << label_vcs_ref << "\n";
71 std::cout << "Label build date: " << label_build_date << "\n";
72 std::cout << "Label commit date: " << label_commit_date << "\n";
73 exit(0);
74 }
75 }
76}
77
Shad Ansari01b0e652018-04-05 21:02:53 +000078int main(int argc, char** argv) {
79
Humera Kouser5ac56612019-07-25 20:23:01 -040080 display_version_info(argc, argv);
81
Shad Ansari627b5782018-08-13 22:49:32 +000082 Status status = Enable_(argc, argv);
Shad Ansari01b0e652018-04-05 21:02:53 +000083 if (!status.ok()) {
84 std::cout << "ERROR: Enable_ failed - "
85 << status.error_code() << ": " << status.error_message()
86 << std::endl;
87 return 1;
88 }
89
Craig Lutgen88a22ad2018-10-04 12:30:46 -050090 // Wait for successful activation before allowing VOLTHA to connect.
91 // This is necessary to allow the device topology to be dynamically
92 // queried from driver after initialization and activation is complete.
93 int maxTrials = 300;
94 while (!state.is_activated()) {
95 sleep(1);
96 if (--maxTrials == 0) {
97 std::cout << "ERROR: OLT/PON Activation failed" << std::endl;
98 return 1;
99 }
100 }
101
Amit Ghoshfcad4d32019-11-13 10:24:55 +0000102 status = ProbeDeviceCapabilities_();
103 if (!status.ok()) {
104 std::cout << "ERROR: Could not find the OLT Device capabilities" << std::endl;
105 return 1;
106 }
107
Thiyagarajan Subramani89fffc02019-05-13 21:33:20 +0000108 sleep(2);
109 // Enable all PON interfaces.
110 for (int i = 0; i < NumPonIf_(); i++) {
111 status = EnablePonIf_(i);
112 if (!status.ok()) {
113 // raise alarm to report error in enabling PON
114 pushOltOperInd(i, "pon", "down");
115 }
116 else
117 pushOltOperInd(i, "pon", "up");
118 }
119 sleep(2);
120 // Enable all NNI interfaces.
121#if 0
122 for (int i = 0; i < NumNniIf_(); i++) {
123 status = EnableUplinkIf_(i);
124 if (!status.ok()) {
125 // raise alarm to report error in enabling PON
126 pushOltOperInd(i, "nni", "down");
127 }
128 else
129 pushOltOperInd(i, "nni", "up");
130 }
131#endif
132 //only for nni-65536 mapping to intf_id 0
133 status = SetStateUplinkIf_(0, true);
134 if (!status.ok()) {
135 // raise alarm to report error in enabling NNI
136 pushOltOperInd(0, "nni", "down");
137 }
138 else
139 pushOltOperInd(0, "nni", "up");
Shad Ansari01b0e652018-04-05 21:02:53 +0000140 RunServer();
141
Shad Ansari627b5782018-08-13 22:49:32 +0000142 return 0;
Shad Ansari01b0e652018-04-05 21:02:53 +0000143}