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; } }
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; } }