blob: 0454337d70b708696470fd5d505fd45d0ba29a8a [file] [log] [blame]
Shad Ansari01b0e652018-04-05 21:02:53 +00001/*
2 Copyright (C) 2018 Open Networking Foundation
3
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 3 of the License, or
7 (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17#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
Shad Ansari01b0e652018-04-05 21:02:53 +000023int main(int argc, char** argv) {
24
Shad Ansari627b5782018-08-13 22:49:32 +000025 Status status = Enable_(argc, argv);
Shad Ansari01b0e652018-04-05 21:02:53 +000026 if (!status.ok()) {
27 std::cout << "ERROR: Enable_ failed - "
28 << status.error_code() << ": " << status.error_message()
29 << std::endl;
30 return 1;
31 }
32
Craig Lutgen88a22ad2018-10-04 12:30:46 -050033 // Wait for successful activation before allowing VOLTHA to connect.
34 // This is necessary to allow the device topology to be dynamically
35 // queried from driver after initialization and activation is complete.
36 int maxTrials = 300;
37 while (!state.is_activated()) {
38 sleep(1);
39 if (--maxTrials == 0) {
40 std::cout << "ERROR: OLT/PON Activation failed" << std::endl;
41 return 1;
42 }
43 }
44
Jason Huangb1fad572019-05-28 19:02:30 +080045 ProbeDeviceCapabilities_();
46 sleep(2);
47 ProbePonIfTechnology_();
48 sleep(2);
49 // Enable all PON interfaces.
50 for (int i = 0; i < NumPonIf_(); i++) {
51 status = EnablePonIf_(i);
52 if (!status.ok()) {
53 // FIXME - raise alarm to report error in enabling PON
54 }
55 }
56 sleep(2);
57 // Enable all NNI interfaces.
58 for (int i = 0; i < NumNniIf_(); i++) {
59 status = EnableUplinkIf_(i);
60 if (!status.ok()) {
61 // FIXME - raise alarm to report error in enabling PON
62 }
63 }
64
Shad Ansari01b0e652018-04-05 21:02:53 +000065 RunServer();
66
Shad Ansari627b5782018-08-13 22:49:32 +000067 return 0;
Shad Ansari01b0e652018-04-05 21:02:53 +000068}