and now it should be possible to enter and leave bind mode

This commit is contained in:
Pawel Spychalski
2018-05-23 14:38:59 +02:00
parent bb2317b06a
commit 831c97b219
8 changed files with 27 additions and 23 deletions

View File

@@ -429,7 +429,7 @@ void loop(void)
&rxDeviceState,
radioNode.rssi,
radioNode.snr,
platformNode.platformState
(platformNode.platformState == DEVICE_STATE_FAILSAFE)
);
break;
}

View File

@@ -23,16 +23,16 @@ void PlatformNode::setRcChannel(uint8_t channel, int value, int offset) {
void PlatformNode::enterBindMode(void) {
isBindMode = true;
// radioNode.set(
// 0, // Minimum power
// 125000, // 125kHz bandwidth
// 6, // low spreading factor, we do not need high RX sensitivity
// 5, // same for coding rate
// 868000000 //Fixed frequency while binding
// );
radioNode.set(
0, // Minimum power
125000, // 125kHz bandwidth
6, // low spreading factor, we do not need high RX sensitivity
5, // same for coding rate
868000000 //Fixed frequency while binding
);
}
void PlatformNode::leaveBindMode(void) {
isBindMode = false;
radioNode.reset();
}

View File

@@ -1,6 +1,7 @@
#pragma once
#include "Arduino.h"
#include "radio_node.h"
#ifndef PLATFORM_NODE_H
#define PLATFORM_NODE_H
@@ -9,6 +10,8 @@
#define PLATFORM_CHANNEL_COUNT 10
#define PLATFORM_DEFAULT_CHANNEL_VALUE 1000
extern RadioNode radioNode;
enum deviceStates {
DEVICE_STATE_OK,
DEVICE_STATE_FAILSAFE,

View File

@@ -41,7 +41,7 @@ void qspComputeCrc(QspConfiguration_t *qsp, uint8_t dataByte)
qsp->crc = crc8_dvb_s2(qsp->crc, dataByte);
}
void encodeRxHealthPayload(QspConfiguration_t *qsp, RxDeviceState_t *rxDeviceState, uint8_t rssi, uint8_t snr, uint8_t platformState) {
void encodeRxHealthPayload(QspConfiguration_t *qsp, RxDeviceState_t *rxDeviceState, uint8_t rssi, uint8_t snr, bool isFailsafe) {
qsp->payload[0] = rssi;
qsp->payload[1] = snr;
qsp->payload[2] = rxDeviceState->rxVoltage;
@@ -50,7 +50,7 @@ void encodeRxHealthPayload(QspConfiguration_t *qsp, RxDeviceState_t *rxDeviceSta
uint8_t flags = 0;
if (platformState == DEVICE_STATE_FAILSAFE) {
if (isFailsafe) {
flags |= 0x01 << 0;
}

View File

@@ -1,6 +1,5 @@
#include "Arduino.h"
#include "variables.h"
#include "radio_node.h"
void qspDecodeRcDataFrame(QspConfiguration_t *qsp, RxDeviceState_t *rxDeviceSate);
void decodeRxHealthPayload(QspConfiguration_t *qsp, RxDeviceState_t *rxDeviceState);
@@ -8,7 +7,7 @@ void decodeRxHealthPayload(QspConfiguration_t *qsp, RxDeviceState_t *rxDeviceSta
uint8_t get10bitHighShift(uint8_t channel);
uint8_t get10bitLowShift(uint8_t channel);
void qspComputeCrc(QspConfiguration_t *qsp, uint8_t dataByte);
void encodeRxHealthPayload(QspConfiguration_t *qsp, RxDeviceState_t *rxDeviceState, uint8_t rssi, uint8_t snr, uint8_t platformState);
void encodeRxHealthPayload(QspConfiguration_t *qsp, RxDeviceState_t *rxDeviceState, uint8_t rssi, uint8_t snr, bool isFailsafe);
void encodeRcDataPayload(QspConfiguration_t *qsp, uint8_t noOfChannels);
void qspDecodeIncomingFrame(
QspConfiguration_t *qsp,

View File

@@ -17,6 +17,16 @@ RadioNode::RadioNode(void) {
}
void RadioNode::reset(void) {
set(
loraTxPower,
loraBandwidth,
loraSpreadingFactor,
loraCodingRate,
getFrequencyForChannel(getChannel())
);
}
void RadioNode::init(uint8_t ss, uint8_t rst, uint8_t di0, void(*callback)(int)) {
/*
* Setup hardware
@@ -31,14 +41,7 @@ void RadioNode::init(uint8_t ss, uint8_t rst, uint8_t di0, void(*callback)(int))
while (true);
}
set(
loraTxPower,
loraBandwidth,
loraSpreadingFactor,
loraCodingRate,
getFrequencyForChannel(getChannel())
);
reset();
LoRa.enableCrc();
//Setup ISR callback and start receiving

View File

@@ -39,6 +39,7 @@ class RadioNode {
uint8_t codingRate,
long frequency
);
void reset(void);
volatile int8_t bytesToRead = -1;
volatile uint8_t radioState = RADIO_STATE_RX;
uint8_t rssi = 0;

View File

@@ -1,6 +1,4 @@
#include "Arduino.h"
#include "radio_node.h"
#include "platform_node.h"
#pragma once