public void Start() { Console.WriteLine("Starting Gateway..."); _unmanagedGateway = GatewayWrapper.CreateGateway(CE_Pin.RPI_P1_22, SPI_Port.SPI_0, SPI_Speed.SPI_Speed_8MHZ, 1); GatewayWrapper.CallBegin(_unmanagedGateway, PA_Level.RF24_PA_MAX, 76, RF24_DataRate.RF24_250KBPS, OnReceiveMessage); _isRunning = true; _processRadioMessageTimer.Change(0, C_PROCESS_RADIO_MESSSAGE_INTERVALE); }
private void OnProcessRadioMessage(object state) { try { if (_isRunning && _unmanagedGateway != IntPtr.Zero) { GatewayWrapper.CallProcessRadioMessage(_unmanagedGateway); } } catch (Exception ex) { Console.WriteLine("Error during CallProcessRadioMessage: {0}\n{1}", ex.Message, ex.StackTrace); } }
public void SendSetMessage(byte destNodeId, byte sensorId, string payload) { try { var strMessage = BaseMessage.BuildMessageString(destNodeId, sensorId, MessageType.SET, 1, (byte)SensorDataType.V_LIGHT, payload); if (!string.IsNullOrEmpty(strMessage)) { GatewayWrapper.CallParseAndSend(_unmanagedGateway, strMessage); } } catch (Exception ex) { Console.WriteLine("Error sending message to {0} Type {1} SubType {2}", destNodeId, MessageType.SET, SensorDataType.V_LIGHT); } }
public void Stop() { if (_unmanagedGateway == IntPtr.Zero) { return; } Console.WriteLine("Stop Gateway..."); try { _processRadioMessageTimer.Change(Timeout.Infinite, C_PROCESS_RADIO_MESSSAGE_INTERVALE); _isRunning = false; GatewayWrapper.DisposeGateway(_unmanagedGateway); } finally { _unmanagedGateway = IntPtr.Zero; } }
private void OnReceiveMessage(string messageFromGateway) { Task.Factory.StartNew(() => { var parsedMessage = MessageFactory.ConstructMessageFromRaw(messageFromGateway); Console.WriteLine("Receive Message from {0} Type {1} SubType {2}", parsedMessage.NodeId == 0 ? "Gateway" : parsedMessage.NodeId.ToString(), parsedMessage.GetType().Name, parsedMessage.SubType); var messageProcessor = MessageProcessorFactory.CreateMessageProcessor(parsedMessage); if (messageProcessor != null) { string responseMessageString = null; var raiseEvent = messageProcessor.ProcessIncomingMessage(parsedMessage, out responseMessageString); if (!string.IsNullOrEmpty(responseMessageString)) { GatewayWrapper.CallParseAndSend(_unmanagedGateway, responseMessageString); } if (raiseEvent && OnReceiveMessageFromSensors != null) { OnReceiveMessageFromSensors(parsedMessage); } } }); }