Add ONU Ind-related features
Change-Id: Ib6dd74efc0893b2d56275ecf5a1c56c5958fddbd
VOL-1118
diff --git a/grpc_service.go b/grpc_service.go
new file mode 100644
index 0000000..2a2df92
--- /dev/null
+++ b/grpc_service.go
@@ -0,0 +1,112 @@
+/*
+ * 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.
+ */
+
+package main
+
+import (
+ "log"
+ "golang.org/x/net/context"
+ "./openolt"
+ "time"
+)
+
+// gRPC Service
+func (s *server) DisableOlt(c context.Context, empty *openolt.Empty) (*openolt.Empty, error){
+ log.Printf("OLT receives DisableOLT()\n")
+ return new(openolt.Empty), nil
+}
+
+func (s *server) ReenableOlt(c context.Context, empty *openolt.Empty)(*openolt.Empty, error){
+ log.Printf("OLT receives Reenable()\n")
+ return new(openolt.Empty), nil
+}
+
+func (s *server) ActivateOnu(c context.Context, onu *openolt.Onu) (*openolt.Empty, error){
+ log.Printf("OLT receives ActivateONU()\n")
+ result := validateONU(*onu, s.onus)
+ if result == true {
+ log.Printf("ONU %d activated succesufully.\n", onu.OnuId)
+ s.onus[onu.IntfId][onu.OnuId].internalState = ONU_ACTIVATED
+ //log.Printf("ActivateOnu(): %v", s.onus)
+ }
+ return new(openolt.Empty), nil
+}
+
+func (s *server) DeactivateOnu(c context.Context, onu *openolt.Onu) (*openolt.Empty, error){
+ log.Printf("OLT receives DeactivateONU()\n")
+ return new(openolt.Empty), nil
+}
+
+func (s *server) DeleteOnu(c context.Context, onu *openolt.Onu) (*openolt.Empty, error){
+ log.Printf("OLT receives DeleteONU()\n")
+ return new(openolt.Empty), nil
+}
+
+func (s *server)OmciMsgOut(c context.Context, msg *openolt.OmciMsg)(*openolt.Empty, error){
+ //log.Printf("OLT %d receives OmciMsgOut to IF %v (ONU-ID: %v): %v.\n", s.olt.ID, msg.IntfId, msg.OnuId, msg.Pkt)
+ log.Printf("OLT %d receives OmciMsgOut to IF %v (ONU-ID: %v).\n", s.olt.ID, msg.IntfId, msg.OnuId)
+ return new(openolt.Empty), nil
+}
+
+func (s *server) OnuPacketOut(c context.Context, packet *openolt.OnuPacket)(*openolt.Empty, error){
+ log.Printf("OLT %d receives OnuPacketOut ().\n", s.olt.ID)
+ return new(openolt.Empty), nil
+}
+
+func (s *server) UplinkPacketOut(c context.Context, packet *openolt.UplinkPacket)(*openolt.Empty, error){
+ log.Printf("OLT %d receives UplinkPacketOut().\n", s.olt.ID)
+ return new(openolt.Empty), nil
+}
+
+func (s *server) FlowAdd(c context.Context, flow *openolt.Flow)(*openolt.Empty, error){
+ log.Printf("OLT %d receives FlowAdd().\n", s.olt.ID)
+ return new(openolt.Empty), nil
+}
+
+func (s *server) HeartbeatCheck(c context.Context, empty *openolt.Empty) (*openolt.Heartbeat, error){
+ log.Printf("OLT %d receives HeartbeatCheck().\n", s.olt.ID)
+ signature := new(openolt.Heartbeat)
+ signature.HeartbeatSignature = s.olt.HeartbeatSignature
+ return signature, nil
+}
+
+func (s *server) EnablePonIf(c context.Context, intf *openolt.Interface) (*openolt.Empty, error){
+ log.Printf("OLT %d receives EnablePonIf().\n", s.olt.ID)
+ return new(openolt.Empty), nil
+}
+
+func (s *server) DisablePonIf(c context.Context, intf *openolt.Interface) (*openolt.Empty, error){
+ log.Printf("OLT %d receives DisablePonIf().\n", s.olt.ID)
+ return new(openolt.Empty), nil
+}
+
+func (s *server) Reboot(c context.Context, empty *openolt.Empty,) (*openolt.Empty, error){
+ log.Printf("OLT %d receives Reboot ().\n", s.olt.ID)
+ return new(openolt.Empty), nil
+}
+
+func (s *server) EnableIndication(empty *openolt.Empty, stream openolt.Openolt_EnableIndicationServer) error {
+ log.Printf("OLT receives EnableInd.\n")
+ if err := activateOLT(s, stream); err != nil {
+ log.Printf("Failed to activate OLT: %v\n", err)
+ return err
+ }
+ // Infinite loop TODO: This should be a queue processing.
+ for {
+ time.Sleep(1 * time.Second)
+ }
+ return nil
+}
\ No newline at end of file