public void SendLoRaPackageToResponsiblePage(byte[] data, UInt16 length)
        {
            RadioMessageType       messageIdTemp         = (RadioMessageType)((data[5] & 0xF8) >> 3);
            RadioRoutingHeaderType routingHeaderTypeTemp = (RadioRoutingHeaderType)(data[5] & 0x03);
            byte  sourceUnit          = 0;
            byte  routingHeaderLength = 0;
            Int16 signalRssiValue     = 0;

            signalRssiValue = (Int16)((data[length - 5] << 8) | (data[length - 4]));
            //kaanbak burada generic parsing yapilmali... sonra interface'e param olarak verilmeli
            if (routingHeaderTypeTemp == RadioRoutingHeaderType.UNICAST_DIRECT_HEADER)
            {
                sourceUnit          = data[6];
                routingHeaderLength = 3;  /* 1 byte main + 2 byte routing header */
            }
            else if (routingHeaderTypeTemp == RadioRoutingHeaderType.UNICAST_ROUTED_HEADER)
            {
                sourceUnit          = data[6];
                routingHeaderLength = 6; /* 1 byte main + 5 byte routing header */
            }
            else
            {
                // not implemented yet...
                return;
            }
            byte[] loraMessageData = new byte[length - 5 - routingHeaderLength];
            Array.Copy(data, (5 + routingHeaderLength), loraMessageData, 0, length - 5 - routingHeaderLength);
            switch (messageIdTemp)
            {
            case RadioMessageType.DATA_CHANNEL_REQUEST:
                break;

            case RadioMessageType.DATA_CHANNEL_RESPONSE:
                veriKanaliOkumaPageInterface.SendLoRaMessageToPage(sourceUnit, messageIdTemp, loraMessageData, signalRssiValue);
                break;

            case RadioMessageType.DEVICE_INFORMATION_REQUEST:
                break;

            case RadioMessageType.DEVICE_INFORMATION_RESPONSE:
                break;

            case RadioMessageType.DISCOVER_NEIGHBOUR_REQUEST:
                break;

            case RadioMessageType.DISCOVER_NEIGHBOUR_RESPONSE:
                cihazTaramaPageInterface.SendLoRaMessageToPage(sourceUnit, messageIdTemp, loraMessageData, signalRssiValue);
                break;

            case RadioMessageType.ECHO_MESSAGE_REQUEST:
                break;

            case RadioMessageType.ECHO_MESSAGE_RESPONSE:
                break;

            case RadioMessageType.OPERATIONAL_REQUEST:
                break;

            case RadioMessageType.OPERATIONAL_RESPONSE:
                cihazConfigPageInterface.SendLoRaMessageToPage(sourceUnit, messageIdTemp, loraMessageData, signalRssiValue);
                break;

            case RadioMessageType.PING_MESSAGE:
                break;

            case RadioMessageType.PONG_MESSAGE:
                break;

            case RadioMessageType.UNCATEGORIZED_REL_MSG_REQUEST:
                break;

            case RadioMessageType.UNCATEGORIZED_REL_MSG_RESPONSE:
                break;

            case RadioMessageType.FILE_OPERATIONS_REQUEST:
                break;

            case RadioMessageType.FILE_OPERATIONS_RESPONSE:
                dosyaIslemleriPageInterface.SendLoRaMessageToPage(sourceUnit, messageIdTemp, loraMessageData, signalRssiValue);
                break;
            }
        }
예제 #2
0
        public void SendLoRaPackageToResponsiblePage(byte[] data, UInt16 length)
        {
            RadioMessageType       messageIdTemp         = (RadioMessageType)((data[5] & 0xF8) >> 3);
            RadioRoutingHeaderType routingHeaderTypeTemp = (RadioRoutingHeaderType)(data[5] & 0x03);
            byte  routingHeaderLength = 0;
            Int16 signalRssiValue     = 0;

            signalRssiValue = (Int16)((data[length - 5] << 8) | (data[length - 4]));
            if (routingHeaderTypeTemp == RadioRoutingHeaderType.UNICAST_DIRECT_HEADER)
            {
                routingHeaderLength = 3;  /* 1 byte main + 2 byte routing header */
            }
            else if (routingHeaderTypeTemp == RadioRoutingHeaderType.UNICAST_ROUTED_HEADER)
            {
                routingHeaderLength = 6; /* 1 byte main + 5 byte routing header */
            }
            else
            {
                // not implemented yet...
                return;
            }
            byte[] loraMessageData = new byte[length - 5 - routingHeaderLength];
            Array.Copy(data, (5 + routingHeaderLength), loraMessageData, 0, length - 5 - routingHeaderLength);
            switch (messageIdTemp)
            {
            case RadioMessageType.DATA_CHANNEL_REQUEST:
                break;

            case RadioMessageType.DATA_CHANNEL_RESPONSE:
                //veriKanaliOkumaPageInterface.SendLoRaMessageToPage(messageIdTemp, loraMessageData, signalRssiValue);
                break;

            case RadioMessageType.DEVICE_INFORMATION_REQUEST:
                break;

            case RadioMessageType.DEVICE_INFORMATION_RESPONSE:
                break;

            case RadioMessageType.DISCOVER_NEIGHBOUR_REQUEST:
                break;

            case RadioMessageType.DISCOVER_NEIGHBOUR_RESPONSE:
                break;

            case RadioMessageType.ECHO_MESSAGE_REQUEST:
                break;

            case RadioMessageType.ECHO_MESSAGE_RESPONSE:
                break;

            case RadioMessageType.OPERATIONAL_REQUEST:
                break;

            case RadioMessageType.OPERATIONAL_RESPONSE:
                break;

            case RadioMessageType.PING_MESSAGE:
                break;

            case RadioMessageType.PONG_MESSAGE:
                break;

            case RadioMessageType.UNCATEGORIZED_REL_MSG_REQUEST:
                break;

            case RadioMessageType.UNCATEGORIZED_REL_MSG_RESPONSE:
                break;
            }
        }