Paparazzi UAS  v5.18.0_stable
Paparazzi is a free software Unmanned Aircraft System.
ppm.c File Reference
+ Include dependency graph for ppm.c:

Go to the source code of this file.

Macros

#define RssiValid()   TRUE
 RssiValid test macro. More...
 

Functions

static void send_ppm (struct transport_tx *trans, struct link_device *dev)
 
void radio_control_impl_init (void)
 
void radio_control_impl_event (void(*_received_frame_handler)(void))
 RC event function with handler callback. More...
 
void ppm_decode_frame (uint32_t ppm_time)
 Decode a PPM frame from global timer value. More...
 
void ppm_decode_frame_width (uint32_t ppm_width)
 Decode a PPM frame from last width. More...
 

Variables

uint16_t ppm_pulses [RADIO_CTL_NB]
 
volatile bool ppm_frame_available
 
static uint8_t ppm_cur_pulse
 
static uint32_t ppm_last_pulse_time
 
static bool ppm_data_valid
 

Detailed Description

Architecture independent functions for PPM radio control.

Definition in file ppm.c.

Macro Definition Documentation

◆ RssiValid

#define RssiValid ( )    TRUE

RssiValid test macro.

This macro has to be defined to test the validity of ppm frame from an other source (ex: GPIO). By default, always true.

Definition at line 48 of file ppm.c.

Function Documentation

◆ ppm_decode_frame()

void ppm_decode_frame ( uint32_t  ppm_time)

Decode a PPM frame from global timer value.

A valid ppm frame:

  • synchro blank
  • correct number of channels
  • synchro blank

Definition at line 99 of file ppm.c.

References ppm_decode_frame_width(), and ppm_last_pulse_time.

+ Here is the call graph for this function:

◆ ppm_decode_frame_width()

void ppm_decode_frame_width ( uint32_t  ppm_width)

Decode a PPM frame from last width.

A valid ppm frame:

  • synchro blank
  • correct number of channels
  • synchro blank

Definition at line 114 of file ppm.c.

References ppm_cur_pulse, ppm_data_valid, ppm_frame_available, ppm_pulses, RC_PPM_TICKS_OF_USEC, and RssiValid.

Referenced by icuperiodcb(), and ppm_decode_frame().

+ Here is the caller graph for this function:

◆ radio_control_impl_event()

void radio_control_impl_event ( void(*)(void)  _received_frame_handler)

RC event function with handler callback.

PPM frames are normalized using the IIR filter.

Definition at line 80 of file ppm.c.

References RadioControl::frame_cpt, ppm_frame_available, ppm_pulses, radio_control, RadioControl::radio_ok_cpt, RC_OK, RadioControl::status, and RadioControl::time_since_last_frame.

◆ radio_control_impl_init()

void radio_control_impl_init ( void  )

Definition at line 66 of file ppm.c.

References DefaultPeriodic, ppm_arch_init(), ppm_cur_pulse, ppm_data_valid, ppm_frame_available, ppm_last_pulse_time, register_periodic_telemetry(), and send_ppm().

+ Here is the call graph for this function:

◆ send_ppm()

static void send_ppm ( struct transport_tx *  trans,
struct link_device *  dev 
)
static

Definition at line 55 of file ppm.c.

References dev, RadioControl::frame_rate, ppm_pulses, radio_control, and USEC_OF_RC_PPM_TICKS.

Referenced by radio_control_impl_init().

+ Here is the caller graph for this function:

Variable Documentation

◆ ppm_cur_pulse

uint8_t ppm_cur_pulse
static

Definition at line 37 of file ppm.c.

Referenced by ppm_decode_frame_width(), and radio_control_impl_init().

◆ ppm_data_valid

bool ppm_data_valid
static

Definition at line 39 of file ppm.c.

Referenced by ppm_decode_frame_width(), and radio_control_impl_init().

◆ ppm_frame_available

volatile bool ppm_frame_available

◆ ppm_last_pulse_time

uint32_t ppm_last_pulse_time
static

Definition at line 38 of file ppm.c.

Referenced by ppm_decode_frame(), and radio_control_impl_init().

◆ ppm_pulses

uint16_t ppm_pulses[RADIO_CTL_NB]