mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-12-01 09:24:10 +01:00
Fixed RSSI reporting on PipX.
This commit is contained in:
parent
e9d0909a68
commit
861bcc46fe
@ -59,8 +59,6 @@ typedef struct {
|
|||||||
uint8_t data_size;
|
uint8_t data_size;
|
||||||
uint8_t tx_seq;
|
uint8_t tx_seq;
|
||||||
uint8_t rx_seq;
|
uint8_t rx_seq;
|
||||||
int8_t rssi;
|
|
||||||
int8_t afc;
|
|
||||||
} PHPacketHeader;
|
} PHPacketHeader;
|
||||||
|
|
||||||
#define PH_MAX_DATA (PIOS_PH_MAX_PACKET - sizeof(PHPacketHeader) - RS_ECC_NPARITY)
|
#define PH_MAX_DATA (PIOS_PH_MAX_PACKET - sizeof(PHPacketHeader) - RS_ECC_NPARITY)
|
||||||
@ -94,8 +92,8 @@ typedef struct {
|
|||||||
} PacketHandlerConfig;
|
} PacketHandlerConfig;
|
||||||
|
|
||||||
typedef int32_t (*PHOutputStream)(PHPacketHandle packet);
|
typedef int32_t (*PHOutputStream)(PHPacketHandle packet);
|
||||||
typedef void (*PHDataHandler)(uint8_t *data, uint8_t len);
|
typedef void (*PHDataHandler)(uint8_t *data, uint8_t len, int8_t rssi, int8_t afc);
|
||||||
typedef void (*PHStatusHandler)(PHStatusPacketHandle s);
|
typedef void (*PHStatusHandler)(PHStatusPacketHandle s, int8_t rssi, int8_t afc);
|
||||||
typedef void (*PHPPMHandler)(uint16_t *channels);
|
typedef void (*PHPPMHandler)(uint16_t *channels);
|
||||||
|
|
||||||
typedef uint32_t PHInstHandle;
|
typedef uint32_t PHInstHandle;
|
||||||
|
@ -343,9 +343,9 @@ uint8_t PHReceivePacket(PHInstHandle h, PHPacketHandle p, bool rx_error)
|
|||||||
PHPacketDataHandle data = (PHPacketDataHandle)h;
|
PHPacketDataHandle data = (PHPacketDataHandle)h;
|
||||||
uint16_t len = PHPacketSizeECC(p);
|
uint16_t len = PHPacketSizeECC(p);
|
||||||
|
|
||||||
// Add the RSSI and AFC to the packet.
|
// Extract the RSSI and AFC.
|
||||||
p->header.rssi = *(((int8_t*)p) + len);
|
int8_t rssi = *(((int8_t*)p) + len);
|
||||||
p->header.afc = *(((int8_t*)p) + len + 1);
|
int8_t afc = *(((int8_t*)p) + len + 1);
|
||||||
|
|
||||||
switch (p->header.type) {
|
switch (p->header.type) {
|
||||||
|
|
||||||
@ -355,7 +355,7 @@ uint8_t PHReceivePacket(PHInstHandle h, PHPacketHandle p, bool rx_error)
|
|||||||
|
|
||||||
// Pass on the channels to the status handler.
|
// Pass on the channels to the status handler.
|
||||||
if(data->status_handler)
|
if(data->status_handler)
|
||||||
data->status_handler((PHStatusPacketHandle)p);
|
data->status_handler((PHStatusPacketHandle)p, rssi, afc);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -374,7 +374,7 @@ uint8_t PHReceivePacket(PHInstHandle h, PHPacketHandle p, bool rx_error)
|
|||||||
|
|
||||||
// Pass on the data.
|
// Pass on the data.
|
||||||
if(data->data_handler)
|
if(data->data_handler)
|
||||||
data->data_handler(p->data, p->header.data_size);
|
data->data_handler(p->data, p->header.data_size, rssi, afc);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -424,7 +424,7 @@ uint8_t PHReceivePacket(PHInstHandle h, PHPacketHandle p, bool rx_error)
|
|||||||
|
|
||||||
// Pass on the data to the data handler.
|
// Pass on the data to the data handler.
|
||||||
if(data->data_handler)
|
if(data->data_handler)
|
||||||
data->data_handler(p->data, p->header.data_size);
|
data->data_handler(p->data, p->header.data_size, rssi, afc);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -144,8 +144,8 @@ static void radioStatusTask(void *parameters);
|
|||||||
static void ppmInputTask(void *parameters);
|
static void ppmInputTask(void *parameters);
|
||||||
static int32_t transmitData(uint8_t * data, int32_t length);
|
static int32_t transmitData(uint8_t * data, int32_t length);
|
||||||
static int32_t transmitPacket(PHPacketHandle packet);
|
static int32_t transmitPacket(PHPacketHandle packet);
|
||||||
static void receiveData(uint8_t *buf, uint8_t len);
|
static void receiveData(uint8_t *buf, uint8_t len, int8_t rssi, int8_t afc);
|
||||||
static void StatusHandler(PHStatusPacketHandle p);
|
static void StatusHandler(PHStatusPacketHandle p, int8_t rssi, int8_t afc);
|
||||||
static void PPMHandler(uint16_t *channels);
|
static void PPMHandler(uint16_t *channels);
|
||||||
static BufferedReadHandle BufferedReadInit(uint32_t com_port, uint16_t buffer_length);
|
static BufferedReadHandle BufferedReadInit(uint32_t com_port, uint16_t buffer_length);
|
||||||
static bool BufferedRead(BufferedReadHandle h, uint8_t *value, uint32_t timeout_ms);
|
static bool BufferedRead(BufferedReadHandle h, uint8_t *value, uint32_t timeout_ms);
|
||||||
@ -227,6 +227,7 @@ static int32_t RadioComBridgeInitialize(void)
|
|||||||
data->comRxErrors = 0;
|
data->comRxErrors = 0;
|
||||||
data->UAVTalkErrors = 0;
|
data->UAVTalkErrors = 0;
|
||||||
data->packetErrors = 0;
|
data->packetErrors = 0;
|
||||||
|
data->RSSI = -127;
|
||||||
|
|
||||||
// Register the callbacks with the packet handler
|
// Register the callbacks with the packet handler
|
||||||
PHRegisterOutputStream(pios_packet_handler, transmitPacket);
|
PHRegisterOutputStream(pios_packet_handler, transmitPacket);
|
||||||
@ -508,7 +509,6 @@ static void radioReceiveTask(void *parameters)
|
|||||||
|
|
||||||
// Verify that the packet is valid and pass it on.
|
// Verify that the packet is valid and pass it on.
|
||||||
if(PHVerifyPacket(pios_packet_handler, p, rx_bytes) > 0) {
|
if(PHVerifyPacket(pios_packet_handler, p, rx_bytes) > 0) {
|
||||||
data->RSSI = p->header.rssi;
|
|
||||||
UAVObjEvent ev;
|
UAVObjEvent ev;
|
||||||
ev.obj = (UAVObjHandle)p;
|
ev.obj = (UAVObjHandle)p;
|
||||||
ev.event = EV_PACKET_RECEIVED;
|
ev.event = EV_PACKET_RECEIVED;
|
||||||
@ -713,6 +713,7 @@ static void radioStatusTask(void *parameters)
|
|||||||
pipxStatus.RXRate = (uint16_t)((float)(data->rxBytes * 1000) / STATS_UPDATE_PERIOD_MS);
|
pipxStatus.RXRate = (uint16_t)((float)(data->rxBytes * 1000) / STATS_UPDATE_PERIOD_MS);
|
||||||
data->rxBytes = 0;
|
data->rxBytes = 0;
|
||||||
pipxStatus.LinkState = PIPXSTATUS_LINKSTATE_DISCONNECTED;
|
pipxStatus.LinkState = PIPXSTATUS_LINKSTATE_DISCONNECTED;
|
||||||
|
pipxStatus.RSSI = data->RSSI;
|
||||||
LINK_LED_OFF;
|
LINK_LED_OFF;
|
||||||
|
|
||||||
// Update the potential pairing contacts
|
// Update the potential pairing contacts
|
||||||
@ -760,7 +761,6 @@ static void radioStatusTask(void *parameters)
|
|||||||
status_packet.header.type = PACKET_TYPE_STATUS;
|
status_packet.header.type = PACKET_TYPE_STATUS;
|
||||||
status_packet.header.data_size = PH_STATUS_DATA_SIZE(&status_packet);
|
status_packet.header.data_size = PH_STATUS_DATA_SIZE(&status_packet);
|
||||||
status_packet.header.source_id = pipxStatus.DeviceID;
|
status_packet.header.source_id = pipxStatus.DeviceID;
|
||||||
status_packet.header.rssi = data->RSSI;
|
|
||||||
status_packet.retries = data->comTxRetries;
|
status_packet.retries = data->comTxRetries;
|
||||||
status_packet.errors = data->packetErrors;
|
status_packet.errors = data->packetErrors;
|
||||||
status_packet.uavtalk_errors = data->UAVTalkErrors;
|
status_packet.uavtalk_errors = data->UAVTalkErrors;
|
||||||
@ -847,8 +847,10 @@ static int32_t transmitPacket(PHPacketHandle p)
|
|||||||
* \param[in] buf The received data buffer
|
* \param[in] buf The received data buffer
|
||||||
* \param[in] length Length of buffer
|
* \param[in] length Length of buffer
|
||||||
*/
|
*/
|
||||||
static void receiveData(uint8_t *buf, uint8_t len)
|
static void receiveData(uint8_t *buf, uint8_t len, int8_t rssi, int8_t afc)
|
||||||
{
|
{
|
||||||
|
data->RSSI = rssi;
|
||||||
|
|
||||||
// Packet data should go to transparent com if it's configured,
|
// Packet data should go to transparent com if it's configured,
|
||||||
// USB HID if it's connected, otherwise, UAVTalk com if it's configured.
|
// USB HID if it's connected, otherwise, UAVTalk com if it's configured.
|
||||||
uint32_t outputPort = PIOS_COM_TRANS_COM;
|
uint32_t outputPort = PIOS_COM_TRANS_COM;
|
||||||
@ -874,7 +876,7 @@ static void receiveData(uint8_t *buf, uint8_t len)
|
|||||||
* Receive a status packet
|
* Receive a status packet
|
||||||
* \param[in] status The status structure
|
* \param[in] status The status structure
|
||||||
*/
|
*/
|
||||||
static void StatusHandler(PHStatusPacketHandle status)
|
static void StatusHandler(PHStatusPacketHandle status, int8_t rssi, int8_t afc)
|
||||||
{
|
{
|
||||||
uint32_t id = status->header.source_id;
|
uint32_t id = status->header.source_id;
|
||||||
bool found = false;
|
bool found = false;
|
||||||
@ -890,7 +892,7 @@ static void StatusHandler(PHStatusPacketHandle status)
|
|||||||
// If we have seen it, update the RSSI and reset the last contact couter
|
// If we have seen it, update the RSSI and reset the last contact couter
|
||||||
if(found)
|
if(found)
|
||||||
{
|
{
|
||||||
data->pairStats[id_idx].rssi = status->header.rssi;
|
data->pairStats[id_idx].rssi = rssi;
|
||||||
data->pairStats[id_idx].retries = status->retries;
|
data->pairStats[id_idx].retries = status->retries;
|
||||||
data->pairStats[id_idx].errors = status->errors;
|
data->pairStats[id_idx].errors = status->errors;
|
||||||
data->pairStats[id_idx].uavtalk_errors = status->uavtalk_errors;
|
data->pairStats[id_idx].uavtalk_errors = status->uavtalk_errors;
|
||||||
@ -919,7 +921,7 @@ static void StatusHandler(PHStatusPacketHandle status)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
data->pairStats[min_idx].pairID = id;
|
data->pairStats[min_idx].pairID = id;
|
||||||
data->pairStats[min_idx].rssi = status->header.rssi;
|
data->pairStats[min_idx].rssi = rssi;
|
||||||
data->pairStats[min_idx].retries = status->retries;
|
data->pairStats[min_idx].retries = status->retries;
|
||||||
data->pairStats[min_idx].errors = status->errors;
|
data->pairStats[min_idx].errors = status->errors;
|
||||||
data->pairStats[min_idx].uavtalk_errors = status->uavtalk_errors;
|
data->pairStats[min_idx].uavtalk_errors = status->uavtalk_errors;
|
||||||
|
@ -343,8 +343,8 @@ volatile uint8_t prev_int_status1; // " "
|
|||||||
volatile uint8_t prev_int_status2; // " "
|
volatile uint8_t prev_int_status2; // " "
|
||||||
volatile uint8_t prev_ezmac_status; // " "
|
volatile uint8_t prev_ezmac_status; // " "
|
||||||
|
|
||||||
const char *debug_msg = NULL;
|
const char *debug_msg = "";
|
||||||
const char *error_msg = NULL;
|
const char *error_msg = "";
|
||||||
static uint32_t debug_val = 0;
|
static uint32_t debug_val = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user