pmcs message sequence completed

Change-Id: Iacf4a6f1371ec0f237e36d54e0630ac46b4f59be
diff --git a/voltha/adapters/microsemi_olt/microsemi_olt.py b/voltha/adapters/microsemi_olt/microsemi_olt.py
index 532915d..098140c 100644
--- a/voltha/adapters/microsemi_olt/microsemi_olt.py
+++ b/voltha/adapters/microsemi_olt/microsemi_olt.py
@@ -132,12 +132,19 @@
                   flows=flows, groups=groups)
 
     def send_proxied_message(self, proxy_address, msg):
-        log.info('send-proxied-message', proxy_address=proxy_address, msg=msg)
-        # TODO make this more efficient
-        omci_proxy = OMCIProxy(proxy_address=proxy_address,
-                               msg=msg)
-        omci_proxy.run()
-        del omci_proxy
+        if msg.opcode == "0x302a":
+            log.info('send-omci-proxied-message', proxy_address=proxy_address, msg=msg)
+            # TODO make this more efficient
+            omci_proxy = OMCIProxy(proxy_address=proxy_address,
+                                   msg=msg)
+            omci_proxy.run()
+            del omci_proxy
+
+        else:
+            log.info('send-proxied-message', proxy_address=proxy_address, msg=msg)
+            api_proxy = APIProxy(device.proxy_address,msg)
+            api_proxy.run()
+            del api_proxy 
 
     def receive_proxied_message(self, proxy_address, msg):
         raise NotImplementedError()
diff --git a/voltha/adapters/pmcs_onu/pmcs_onu.py b/voltha/adapters/pmcs_onu/pmcs_onu.py
index f4e11e0..c9812e0 100644
--- a/voltha/adapters/pmcs_onu/pmcs_onu.py
+++ b/voltha/adapters/pmcs_onu/pmcs_onu.py
@@ -36,7 +36,11 @@
 
 from voltha.extensions.omci.omci_entities import CircuitPack
 from voltha.extensions.omci.omci_frame import OmciFrame
+<<<<<<< HEAD
 from voltha.extensions.omci.omci_messages import OmciGet, OmciGetResponse
+=======
+from voltha.extensions.omci.omci_messages import OmciGet, OmciGetResponse, OmciCreate
+>>>>>>> pmcs message sequence completed
 
 _ = third_party
 log = structlog.get_logger()
@@ -213,6 +217,7 @@
     def _initialize_onu(self, device):
         # DO things to the ONU
 
+
         # |###[ OmciFrame ]### 
         #     |  transaction_id= 1
         #     |  message_type= 79
@@ -223,33 +228,12 @@
         #     |   |  entity_id = 0
         #     |  omci_trailer= 40
 
-        msg = OmciMibReset(entity_class=2, entity_id=0)
-        response = yield send_proxied_message(message, device.proxy_address)
+        # OmciMibReset
+        msg = OmciMibReset(entity_class = 2, entity_id = 0)
+        response = yield self.adapter_agent.send_proxied_message(device.proxy_address, msg)
 
-        if OmciMibResetResponse in response ...
-
-        # ###[ PAS5211EventFrameReceived ]### 
-        #            length    = 48
-        #            port_type = 0
-        #            port_id   = 0
-        #            management_frame= 1
-        #            classification_entity= 21
-        #            l3_offset = 32
-        #            l4_offset = 19
-        #            ignored   = 24576
-        #            \frame     \
-        #             |###[ OmciFrame ]### 
-        #             |  transaction_id= 1
-        #             |  message_type= 47
-        #             |  omci      = 10
-        #             |  \omci_message\
-        #             |   |###[ OmciMibResetResponse ]### 
-        #             |   |  entity_class= 2
-        #             |   |  entity_id = 0
-        #             |   |  success_code= 0
-        #             |  omci_trailer= 40
-        #             |###[ Raw ]### 
-        #             |     load      = "nz\x9d'"
+        if not OmciMibResetResponse in response:
+            pass
 
         # ###[ PAS5211Dot3 ]### 
         #   dst       = 00:0c:d5:00:01:00
@@ -273,7 +257,14 @@
         #               load      = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
 
 
-        # ###[ PAS5211Dot3 ]### 
+        
+        msg = PAS5211GetOnuAllocs()
+        response = yield self.adapter_agent.send_proxied_message(device.proxy_address, msg)
+
+        if not PAS5211GetOnuAllocsResponse in response:
+            pass
+
+        #  ###[ PAS5211Dot3 ]### 
         #   dst       = 00:0c:d5:00:01:00
         #   src       = 90:e2:ba:82:f9:77
         #   len       = 30
@@ -294,6 +285,13 @@
         # ###[ Raw ]### 
         #               load      = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
 
+
+        msg = PAS5211GetSnInfo(serial_number=device.serial_number)
+        response = yield self.adapter_agent.send_proxied_message(device.proxy_address, msg)   
+
+        if not PAS5211GetSnInfoResponse in response:
+            pass
+
         # ###[ PAS5211Dot3 ]### 
         #   dst       = 00:0c:d5:00:01:00
         #   src       = 90:e2:ba:82:f9:77
@@ -314,22 +312,226 @@
         #            nothing   = 0
         # ###[ Raw ]### 
         #               load      = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+        
+        msg = PAS5211GetOnusRange()
+        response = yield self.adapter_agent.send_proxied_message(device.proxy_address, msg)  
 
-        # ###[ PAS5211MsgSendFrame ]### 
-        #            length    = 44
-        #            port_type = 0
-        #            port_id   = 0
-        #            management_frame= 1
-        #            \frame     \
-        #             |###[ OmciFrame ]### 
-        #             |  transaction_id= 2
-        #             |  message_type= 72
-        #             |  omci      = 10
-        #             |  \omci_message\
-        #             |   |###[ OmciSet ]### 
-        #             |   |  entity_class= 262
-        #             |   |  entity_id = 32769
-        #             |   |  attributes_mask= 32768
-        #             |   |  data      = {'alloc_id': 1000}
-        #             |  omci_trailer= 40
+        if not PAS5211GetOnusRangeResponse in response:
+            pass       
+       
+        #  |  ###[ OmciFrame ]###
+        # | transaction_id = 2
+        # | message_type = 72
+        # | omci = 10
+        # |   \omci_message \
+        #      | |  ###[ OmciSet ]###
+        # | | entity_class = 262
+        # | | entity_id = 32769
+        # | | attributes_mask = 32768
+        # | | data = {'alloc_id': 1000}
+        # | omci_trailer = 40
+
+        # OmciSet
+        # TODO: maskdata
+        msg = OmciSet(entity_class = 262, entity_id = 32769, attributes_mask = 32768,
+                      data=dict(
+                        alloc_id = 1000
+                    ))
+        response = yield self.adapter_agent.send_proxied_message(device.proxy_address, msg)
+
+        if not OmciSetResponse in response:
+            pass
+
+
+        #   ###[ PAS5211MsgSendFrame ]###
+        # length = 44
+        # port_type = 0
+        # port_id = 0
+        # management_frame = 1
+        # \frame \
+        #  |  ###[ OmciFrame ]###
+        # | transaction_id = 3
+        # | message_type = 68
+        # | omci = 10
+        # |   \omci_message \
+        #      | |  ###[ OmciCreate ]###
+        # | | entity_class = 45
+        # | | entity_id = 1
+        # | | data = {'max_age': 5120, 'hello_time': 512, 'priority': 32768, 'port_bridging_ind': 0,
+        #             'spanning_tree_ind': 0, 'unknown_mac_address_discard': 0, 'mac_learning_depth': 128,
+        #             'learning_ind': 0, 'forward_delay': 3840}
+        # | |  ###[ Raw ]###
+        # | | load = '\x00\x00\x00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
+        # | omci_trailer = 40
+
+
+        # OmciCreate
+        msg = OmciCreate(entity_class=45, entity_id=1,
+                         data=dict(
+                             max_age = 5120, hello_time = 512, priority = 32768,
+                             port_bridging_ind = 0, spanning_tree_ind= 0, unknown_mac_address_discard= 0, mac_learning_depth=128
+                             learning_ind= 0, forward_delay= 3840
+                         ))
+        response = yield self.adapter_agent.send_proxied_message(device.proxy_address, msg)
+
+        if not OmciCreateResponse in response:
+            pass
+
+
+        # |###[ OmciFrame ]### 
+        #     |  transaction_id= 4
+        #     |  message_type= 68
+        #     |  omci      = 10
+        #     |  \omci_message\
+        #     |   |###[ OmciCreate ]### 
+        #     |   |  entity_class= 47
+        #     |   |  entity_id = 0
+        #     |   |  data      = {'tp_pointer': 257, 'encapsulation_methods': 1, 'port_num': 0, 'port_priority': 10, 'tp_type': 1, 'port_path_cost': 100, 'port_spanning_tree_in': 0, 'lan_fcs_ind': 0, 'bridge_id_pointer': 1}
+        #     |  omci_trailer= 40
+
+        # OmciCreate
+        msg = OmciCreate(entity_class=47, entity_id=0,
+                         data=dict(
+                                tp_pointer= 257, encapsulation_methods =  1,
+                                port_num = 0, port_priority = 10, tp_type = 1,
+                                port_path_cost = 100, port_spanning_tree_in = 0,
+                                lan_fcs_ind = 0, bridge_id_pointer = 1
+                         ))
+        response = yield self.adapter_agent.send_proxied_message(device.proxy_address, msg)
+        
+        if not OmciCreateResponse in response:
+            pass
+
+        # |###[ OmciFrame ]### 
+        # |  transaction_id= 5
+        # |  message_type= 68
+        # |  omci      = 10
+        # |  \omci_message\
+        # |   |###[ OmciCreate ]### 
+        # |   |  entity_class= 171
+        # |   |  entity_id = 0
+        # |   |  data      = {'association_type': 2, 'associated_me_pointer': 257}
+        # |  omci_trailer= 40
+
+        msg = OmciCreate(entity_class=171, entity_id=0,
+                         data=dict(
+                                association_type= 2, associated_me_pointer= 257
+                         ))
+        response = yield self.adapter_agent.send_proxied_message(device.proxy_address, msg)
+
+        if not OmciCreateResponse in response:
+            pass
+
+        # |###[ OmciFrame ]### 
+        # |  transaction_id= 6
+        # |  message_type= 72
+        # |  omci      = 10
+        # |  \omci_message\
+        # |   |###[ OmciSet ]### 
+        # |   |  entity_class= 171
+        # |   |  entity_id = 0
+        # |   |  attributes_mask= 47616
+        # |   |  data      = {'association_type': 2, 'input_tpid': 33024, 'associated_me_pointer': 257, 'downstream_mode': 0, 'output_tpid': 33024}
+        # |  omci_trailer= 40
+
+        msg = OmciSet(entity_class = 171, entity_id = 0, attributes_mask = 47616,
+                      data=dict(
+                        association_type = 2, input_tpid = 33024, associated_me_pointer= 257,
+                    downstream_mode= 0, output_tpid= 33024
+                    ))
+
+        response = yield self.adapter_agent.send_proxied_message(device.proxy_address, msg)
+
+        if not OmciSetResponse in response:
+            pass
+
+        # |###[ OmciFrame ]### 
+        # |  transaction_id= 7
+        # |  message_type= 68
+        # |  omci      = 10
+        # |  \omci_message\
+        # |   |###[ OmciCreate ]### 
+        # |   |  entity_class= 130
+        # |   |  entity_id = 1
+        # |   |  data      = {'tp_pointer': 65535, 'unmarked_frame_option': 1, 'interwork_tp_pointer_for_p_bit_priority_6': 65535, 'interwork_tp_pointer_for_p_bit_priority_7': 65535, 'interwork_tp_pointer_for_p_bit_priority_4': 65535, 'interwork_tp_pointer_for_p_bit_priority_5': 65535, 'interwork_tp_pointer_for_p_bit_priority_2': 65535, 'interwork_tp_pointer_for_p_bit_priority_3': 65535, 'interwork_tp_pointer_for_p_bit_priority_0': 65535, 'interwork_tp_pointer_for_p_bit_priority_1': 65535, 'tp_type': 0, 'default_p_bit_marking': 0}
+        # |  omci_trailer= 40
+
+        msg = OmciCreate(entity_class=130, entity_id=1,
+                         data=dict(
+                                tp_pointer= 65535, unmarked_frame_option= 1, interwork_tp_pointer_for_p_bit_priority_6= 65535, 
+                                interwork_tp_pointer_for_p_bit_priority_7= 65535, interwork_tp_pointer_for_p_bit_priority_4= 65535, 
+                                interwork_tp_pointer_for_p_bit_priority_5= 65535, interwork_tp_pointer_for_p_bit_priority_2= 65535, 
+                                interwork_tp_pointer_for_p_bit_priority_3= 65535, interwork_tp_pointer_for_p_bit_priority_0: 65535, 
+                                interwork_tp_pointer_for_p_bit_priority_1= 65535, tp_type= 0, default_p_bit_marking= 0}
+                         ))
+        response = yield self.adapter_agent.send_proxied_message(device.proxy_address, msg)
+
+        if not OmciCreateResponse in response:
+            pass
+
+        # |###[ OmciFrame ]### 
+        # |  transaction_id= 8
+        # |  message_type= 68
+        # |  omci      = 10
+        # |  \omci_message\
+        # |   |###[ OmciCreate ]### 
+        # |   |  entity_class= 130
+        # |   |  entity_id = 1
+        # |   |  data      = {'tp_pointer': 1, 'encapsulation_methods': 1, 'port_num': 1, 'port_priority': 3, 'tp_type': 5, 'port_path_cost': 32, 'port_spanning_tree_in': 1, 'lan_fcs_ind': 0, 'bridge_id_pointer': 1}
+        # |  omci_trailer= 40
+
+        msg = OmciCreate(entity_class=130, entity_id=1,
+                         data=dict(
+                                tp_pointer= 1, encapsulation_methods= 1, port_num= 1, port_priority= 3, tp_type= 5, 
+                                port_path_cost= 32, port_spanning_tree_in= 1, lan_fcs_ind= 0, bridge_id_pointer= 1
+                         ))
+        response = yield self.adapter_agent.send_proxied_message(self, device.proxy_address, msg)
+
+        if not OmciCreateResponse in response:
+            pass
+
+        # |###[ OmciFrame ]### 
+        # |  transaction_id= 9
+        # |  message_type= 68
+        # |  omci      = 10
+        # |  \omci_message\
+        # |   |###[ OmciCreate ]### 
+        # |   |  entity_class= 268
+        # |   |  entity_id = 1
+        # |   |  data      = {'priority_queue_pointer_downstream': 0, 'direction': 3, 'tcont_pointer': 32769, 'traffic_descriptor_profile_pointer': 0, 'traffic_management_pointer_upstream': 4, 'port_id': 1000}
+        # |  omci_trailer= 40
+
+        msg = OmciCreate(entity_class=268, entity_id=1,
+                         data=dict(
+                                priority_queue_pointer_downstream= 0, direction= 3, tcont_pointer= 32769, 
+                                traffic_descriptor_profile_pointer= 0, traffic_management_pointer_upstream= 4, 
+                                port_id= 1000
+                         ))
+        response = yield self.adapter_agent.send_proxied_message(device.proxy_address, msg)
+
+        if not OmciCreateResponse in response:
+            pass
+
+        # |###[ OmciFrame ]### 
+        # |  transaction_id= 10
+        # |  message_type= 68
+        # |  omci      = 10
+        # |  \omci_message\
+        # |   |###[ OmciCreate ]### 
+        # |   |  entity_class= 266
+        # |   |  entity_id = 1
+        # |   |  data      = {'gem_port_network_ctp_pointer': 1, 'gal_profile_pointer': 0, 'service_profile_pointer': 1, 'interworking_option': 5, 'interworking_tp_pointer': 0}
+        # |  omci_trailer= 40
+
+        msg = OmciCreate(entity_class=266, entity_id=1,
+                         data=dict(
+                                gem_port_network_ctp_pointer= 1, gal_profile_pointer= 0, 
+                                service_profile_pointer= 1, interworking_option= 5, 
+                                interworking_tp_pointer= 0
+                         ))
+        response = yield self.adapter_agent.send_proxied_message(device.proxy_address, msg)
+
+        if not OmciCreateResponse in response:
+            pass
+
         pass
\ No newline at end of file