PX4 Firmware
PX4 Autopilot Software http://px4.io
st24.cpp File Reference
#include <stdbool.h>
#include <stdio.h>
#include "st24.h"
#include "common_rc.h"
Include dependency graph for st24.cpp:

Go to the source code of this file.

Macros

#define ST24_RANGE_MIN   500.0f
 
#define ST24_RANGE_MAX   3500.0f
 
#define ST24_TARGET_MIN   1000.0f
 
#define ST24_TARGET_MAX   2000.0f
 
#define ST24_SCALE_FACTOR   ((ST24_TARGET_MAX - ST24_TARGET_MIN) / (ST24_RANGE_MAX - ST24_RANGE_MIN))
 
#define ST24_SCALE_OFFSET   (int)(ST24_TARGET_MIN - (ST24_SCALE_FACTOR * ST24_RANGE_MIN + 0.5f))
 

Functions

uint8_t st24_common_crc8 (uint8_t *ptr, uint8_t len)
 CRC8 implementation for ST24 protocol. More...
 
int st24_decode (uint8_t byte, uint8_t *rssi, uint8_t *lost_count, uint16_t *channel_count, uint16_t *channels, uint16_t max_chan_count)
 Decoder for ST24 protocol. More...
 

Variables

const char * decode_states []
 
static enum ST24_DECODE_STATE _decode_state = ST24_DECODE_STATE_UNSYNCED
 
static uint8_t _rxlen
 
static ReceiverFcPacket_rxpacket = rc_decode_buf._strxpacket
 

Macro Definition Documentation

◆ ST24_RANGE_MAX

#define ST24_RANGE_MAX   3500.0f

Definition at line 57 of file st24.cpp.

◆ ST24_RANGE_MIN

#define ST24_RANGE_MIN   500.0f

Definition at line 56 of file st24.cpp.

◆ ST24_SCALE_FACTOR

#define ST24_SCALE_FACTOR   ((ST24_TARGET_MAX - ST24_TARGET_MIN) / (ST24_RANGE_MAX - ST24_RANGE_MIN))

Definition at line 63 of file st24.cpp.

Referenced by st24_decode().

◆ ST24_SCALE_OFFSET

#define ST24_SCALE_OFFSET   (int)(ST24_TARGET_MIN - (ST24_SCALE_FACTOR * ST24_RANGE_MIN + 0.5f))

Definition at line 64 of file st24.cpp.

Referenced by st24_decode().

◆ ST24_TARGET_MAX

#define ST24_TARGET_MAX   2000.0f

Definition at line 60 of file st24.cpp.

◆ ST24_TARGET_MIN

#define ST24_TARGET_MIN   1000.0f

Definition at line 59 of file st24.cpp.

Function Documentation

◆ st24_common_crc8()

uint8_t st24_common_crc8 ( uint8_t *  ptr,
uint8_t  len 
)

CRC8 implementation for ST24 protocol.

Parameters
prtPointer to the data to CRC
lennumber of bytes to accumulate in the checksum
Returns
the checksum of these bytes over len

Definition at line 71 of file st24.cpp.

Referenced by st24_decode().

Here is the caller graph for this function:

◆ st24_decode()

int st24_decode ( uint8_t  byte,
uint8_t *  rssi,
uint8_t *  lost_count,
uint16_t *  channel_count,
uint16_t *  channels,
uint16_t  max_chan_count 
)

Decoder for ST24 protocol.

Parameters
bytecurrent char to read
rssipointer to a byte where the RSSI value is written back to
lost_countpointer to a byte where the receive count of packets since last wireless frame is written back to ( > 0 if RC is lost)
channelspointer to a datastructure of size max_chan_count where channel values (12 bit) are written back to
max_chan_countmaximum channels to decode - if more channels are decoded, the last n are skipped and success (0) is returned
Returns
0 for success (a decoded packet), 1 for no packet yet (accumulating), 2 for unknown packet, 3 for out of sync, 4 for checksum error

Definition at line 98 of file st24.cpp.

References _decode_state, _rxlen, sbus_bit_pick::byte, ChannelData12::channel, ChannelData24::channel, ReceiverFcPacket::crc8, f(), ReceiverFcPacket::length, ChannelData12::lost_count, ChannelData24::lost_count, ChannelData12::rssi, ChannelData24::rssi, st24_common_crc8(), ReceiverFcPacket::st24_data, ST24_DECODE_STATE_GOT_DATA, ST24_DECODE_STATE_GOT_LEN, ST24_DECODE_STATE_GOT_STX1, ST24_DECODE_STATE_GOT_STX2, ST24_DECODE_STATE_GOT_TYPE, ST24_DECODE_STATE_UNSYNCED, ST24_PACKET_TYPE_CHANNELDATA12, ST24_PACKET_TYPE_CHANNELDATA24, ST24_PACKET_TYPE_TRANSMITTERGPSDATA, ST24_SCALE_FACTOR, ST24_SCALE_OFFSET, ST24_STX1, ST24_STX2, and ReceiverFcPacket::type.

Referenced by RCInput::cycle(), dsm_port_input(), and RCTest::st24Test().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ _decode_state

enum ST24_DECODE_STATE _decode_state = ST24_DECODE_STATE_UNSYNCED
static

Definition at line 66 of file st24.cpp.

Referenced by st24_decode().

◆ _rxlen

uint8_t _rxlen
static

Definition at line 67 of file st24.cpp.

Referenced by st24_decode().

◆ _rxpacket

ReceiverFcPacket& _rxpacket = rc_decode_buf._strxpacket
static

Definition at line 69 of file st24.cpp.

◆ decode_states

const char* decode_states[]
Initial value:
= {"UNSYNCED",
"GOT_STX1",
"GOT_STX2",
"GOT_LEN",
"GOT_TYPE",
"GOT_DATA"
}

Definition at line 47 of file st24.cpp.