rcbench
Servo and ESC test bench: panel, IOmcu and shared C
Loading...
Searching...
No Matches
panel_services.c File Reference

The link modules' services, one page of the IOmcu each: the current monitors (SENSE and SERVO_SENSE), the phase tap (TONE), the programmer for KST and Chaservo servos (KST) and the programming ports (PROG). Each runs from the poll (panel_poll.c), on the control task. More...

#include <stdatomic.h>
#include <stdio.h>
#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/queue.h"
#include "arming.h"
#include "kst_link.h"
#include "kst_prog.h"
#include "link_host.h"
#include "link_pages.h"
#include "outputs.h"
#include "panel.h"
#include "prog_link.h"
#include "sense_link.h"
#include "sense_page.h"
#include "servo_link.h"
#include "servo_screen.h"
#include "servo_source.h"
#include "servo_test_io.h"
#include "storage.h"
#include "tone_link.h"
#include "ui_text.h"

Functions

void kst_port_look (void)
static void prog_hold_look (void)
static void alert_drop (uint32_t *setup_gen, uint32_t *alert_gen)
void sense_link_alerts (void)
static void enc_queue (void)
static void servo_source_alerts (void)
void hitec_rx_service (void)
void sense_link_service (bool idle, bench_state_t *bench)
void tone_link_alerts (void)
void tone_link_service (void)
void kst_commands (void)
void kst_link_service (void)
static void prog_page_read (void)
void prog_link_service (void)
void kst_publish (kst_prog_feed_t *f)

Variables

sense_link_t s_sense_link
servo_source_t s_servo_source
tone_link_t s_tone_link
kst_link_t s_kst_link
prog_link_t s_prog_link
atomic_uint s_prog_want_target
atomic_bool s_prog_want_pwm
atomic_uint s_prog_pin = PROG_LINK_NO_PIN
atomic_uint s_prog_ports = PROG_PORTS_NONE
atomic_uint s_drive
static uint32_t s_kst_answer_id
static kst_link_start_t s_kst_answer
static uint32_t s_kst_outcomes
static kst_link_outcome_t s_kst_outcome
static uint32_t s_kst_stops
bool s_prog_taken
 Whether a servo programmer, KST or Hitec, has a port or an operation under way: the bench takes no arm then (kst_prog.h, hitec_prog.h), and the supply's set points are the port's.
kst_prog_gate_t s_kst_gate
static const char *const k_sense_part [2] = { "INA228", "INA3221" }
static uint32_t s_sense_alert_gen
static uint32_t s_sense_alert_ev
static uint32_t s_sense_setup_gen
static uint32_t s_sense_setup_ev
static uint32_t s_source_alert_gen
static uint32_t s_source_alert_ev
atomic_uint s_sense_unheld
atomic_uint s_tone_unheld
hitec_rx_link_t s_hitec_rx_link
atomic_uint s_hitec_rx_want
atomic_uint s_hitec_rx_mark
static uint32_t s_tone_alert_gen
static uint16_t s_tone_alert_ev
static uint32_t s_tone_setup_gen
static uint16_t s_tone_setup_ev

Detailed Description

The link modules' services, one page of the IOmcu each: the current monitors (SENSE and SERVO_SENSE), the phase tap (TONE), the programmer for KST and Chaservo servos (KST) and the programming ports (PROG). Each runs from the poll (panel_poll.c), on the control task.

SPDX-License-Identifier: MIT

Variable Documentation

◆ s_drive

atomic_uint s_drive
Initial value:
=

◆ s_prog_taken

bool s_prog_taken

Whether a servo programmer, KST or Hitec, has a port or an operation under way: the bench takes no arm then (kst_prog.h, hitec_prog.h), and the supply's set points are the port's.

Whether a servo programmer, KST or Hitec, has a port or an operation under way: the bench takes no arm and no supply change then. Control task only; kst_port_look().

Control task only. Read once a pass by kst_port_look(), before the arms of the pass are served: no command of a programmer is taken between the two. A HITEC port another writer holds counts: the bench console's, or one held over a panel restart, until RELEASE PORT closes it.

Whether a servo programmer, KST or Hitec, has a port or an operation under way: the bench takes no arm then (kst_prog.h, hitec_prog.h), and the supply's set points are the port's.