STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
actuator_c.cpp File Reference
#include <Arduino.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
#include <SPI.h>
#include <SPIFFS.h>
#include <daq-protocol.h>
#include <esp_mac.h>
#include <cstring>
#include <vector>
#include "actuator_board_pins.h"
#include "actuator_config.h"
Include dependency graph for actuator_c.cpp:

Go to the source code of this file.

Classes

struct  StoredConfig

Enumerations

enum class  ActuatorControllerState {
  WaitingForServer , Active , StandardAbort , NoConnectionAbort ,
  PTAbort , NoPTAbort , AbortFinished , ConnectionLossDetected ,
  StandaloneAbort , WaitingForServer , Active , StandardAbort ,
  NoConnectionAbort , AbortFinished , ConnectionLossDetected , WaitingForServer = 1 ,
  Active = 2 , ConnectionLossDetected = 3 , NoConnectionAbort = 4 , NoConnAbortFollower = 5 ,
  PTAbort = 6 , NoPTAbort = 7 , AbortFinished = 8 , WaitingForServer = 1 ,
  Active = 2 , ConnectionLossDetected = 3 , NoConnectionAbort = 4 , NoConnAbortFollower = 5 ,
  PTAbort = 6 , NoPTAbort = 7 , AbortFinished = 8
}
enum class  LedPhase {
  Idle , On , Off , Idle ,
  On , Off , Idle , On ,
  Off
}
enum class  IncomingPacketKind {
  None , ServerHeartbeat , Config , Abort ,
  AbortDone , ClearAbort , SensorData , None ,
  ServerHeartbeat , Config , Abort , AbortDone ,
  ClearAbort , None , ServerHeartbeat , Config ,
  Abort , AbortDone , ClearAbort , SensorData ,
  NoConnAbort , None , ServerHeartbeat , Config ,
  Abort , AbortDone , ClearAbort , SensorData ,
  NoConnAbort , None , ServerHeartbeat , SensorConfig ,
  ClearAbort , NoConnAbort
}

Functions

static uint8_t getStateNumber (ActuatorControllerState s)
static void updateLedNonBlocking ()
static daq::BoardState getBoardStateForHeartbeat ()
static void sendBoardHeartbeat ()
static bool readPacketHeader (const uint8_t *buffer, size_t buffer_size, daq::PacketHeader &header_out)
static IncomingPacketKind processIncomingPacket (const uint8_t *buffer, size_t len)
static void processActuatorCommands (const std::vector< daq::ActuatorCommand > &commands)
static void readCurrentSensePinsAndSend ()
static bool heartbeatTimedOut ()
static void streamSensorDataIfDue ()
static void run_WaitingForServer ()
static void run_Active ()
static void run_StandardAbort ()
static void run_NoConnectionAbort ()
static void run_AbortFinished ()
static void run_ConnectionLossDetected ()
static void applyPacketTransition (IncomingPacketKind kind)
static void initializeActuators ()
static void initializeCurrentSensePins ()
void setup ()
void loop ()

Variables

static uint8_t board_id = BOARD_ID_DEFAULT
byte mac [6]
IPAddress staticIP (192, 168, 2, BOARD_ID_DEFAULT)
IPAddress gateway (0, 0, 0, 0)
IPAddress subnet (255, 255, 255, 0)
IPAddress dns (192, 168, 2, 1)
IPAddress serverIP (192, 168, 2, 20)
const int udpListenPort = 5005
const int serverPort = 5006
EthernetUDP udp
static ActuatorControllerState state
static unsigned long last_server_heartbeat_ms = 0
static unsigned long state_enter_ms = 0
static StoredConfig stored_config = {false, {0}, 0}
const uint8_t NUM_SENSORS = NUM_ACTUATORS
static unsigned long last_adc_read_ms = 0
static uint8_t actuator_states [NUM_ACTUATORS]
static unsigned long lastHeartbeatMillis = 0
static LedPhase led_phase = LedPhase::Idle
static unsigned long led_cycle_start_ms = 0
static uint8_t led_blink_index = 0
static unsigned long led_phase_start_ms = 0
static ActuatorControllerState last_led_state

Enumeration Type Documentation

◆ ActuatorControllerState

enum class ActuatorControllerState
strong
Enumerator
WaitingForServer 
Active 
StandardAbort 
NoConnectionAbort 
PTAbort 
NoPTAbort 
AbortFinished 
ConnectionLossDetected 
StandaloneAbort 
WaitingForServer 
Active 
StandardAbort 
NoConnectionAbort 
AbortFinished 
ConnectionLossDetected 
WaitingForServer 
Active 
ConnectionLossDetected 
NoConnectionAbort 
NoConnAbortFollower 
PTAbort 
NoPTAbort 
AbortFinished 
WaitingForServer 
Active 
ConnectionLossDetected 
NoConnectionAbort 
NoConnAbortFollower 
PTAbort 
NoPTAbort 
AbortFinished 

Definition at line 42 of file actuator_c.cpp.

◆ IncomingPacketKind

enum class IncomingPacketKind
strong
Enumerator
None 
ServerHeartbeat 
Config 
Abort 
AbortDone 
ClearAbort 
SensorData 
None 
ServerHeartbeat 
Config 
Abort 
AbortDone 
ClearAbort 
None 
ServerHeartbeat 
Config 
Abort 
AbortDone 
ClearAbort 
SensorData 
NoConnAbort 
None 
ServerHeartbeat 
Config 
Abort 
AbortDone 
ClearAbort 
SensorData 
NoConnAbort 
None 
ServerHeartbeat 
SensorConfig 
ClearAbort 
NoConnAbort 

Definition at line 209 of file actuator_c.cpp.

◆ LedPhase

enum class LedPhase
strong
Enumerator
Idle 
On 
Off 
Idle 
On 
Off 
Idle 
On 
Off 

Definition at line 79 of file actuator_c.cpp.

Function Documentation

◆ applyPacketTransition()

◆ getBoardStateForHeartbeat()

◆ getStateNumber()

uint8_t getStateNumber ( ActuatorControllerState s)
static

◆ heartbeatTimedOut()

bool heartbeatTimedOut ( )
static

Definition at line 321 of file actuator_c.cpp.

References HEARTBEAT_TIMEOUT_MS, last_server_heartbeat_ms, and millis().

Referenced by run_Active(), and run_StandardAbort().

◆ initializeActuators()

void initializeActuators ( )
static

◆ initializeCurrentSensePins()

void initializeCurrentSensePins ( )
static

Definition at line 454 of file actuator_c.cpp.

References actuator_board_pins::getCurrentSensePin(), INPUT, NUM_SENSORS, pinMode(), and Serial.

Referenced by setup().

◆ loop()

◆ processActuatorCommands()

void processActuatorCommands ( const std::vector< daq::ActuatorCommand > & commands)
static

◆ processIncomingPacket()

◆ readCurrentSensePinsAndSend()

◆ readPacketHeader()

bool readPacketHeader ( const uint8_t * buffer,
size_t buffer_size,
daq::PacketHeader & header_out )
static

Definition at line 197 of file actuator_c.cpp.

Referenced by processIncomingPacket().

◆ run_AbortFinished()

void run_AbortFinished ( )
static

Definition at line 375 of file actuator_c.cpp.

Referenced by loop().

◆ run_Active()

void run_Active ( )
static

◆ run_ConnectionLossDetected()

void run_ConnectionLossDetected ( )
static

Definition at line 381 of file actuator_c.cpp.

References CONNECTION_LOSS_GRACE_MS, millis(), NoConnectionAbort, state, and state_enter_ms.

Referenced by loop().

◆ run_NoConnectionAbort()

void run_NoConnectionAbort ( )
static

Definition at line 367 of file actuator_c.cpp.

References AbortFinished, millis(), NO_CONNECTION_ABORT_DONE_MS, state, and state_enter_ms.

Referenced by loop().

◆ run_StandardAbort()

void run_StandardAbort ( )
static

Definition at line 358 of file actuator_c.cpp.

References heartbeatTimedOut(), millis(), NoConnectionAbort, state, and state_enter_ms.

Referenced by loop().

◆ run_WaitingForServer()

void run_WaitingForServer ( )
static

Definition at line 341 of file actuator_c.cpp.

Referenced by loop().

◆ sendBoardHeartbeat()

void sendBoardHeartbeat ( )
static

◆ setup()

◆ streamSensorDataIfDue()

void streamSensorDataIfDue ( )
static

Definition at line 327 of file actuator_c.cpp.

References ADC_READ_INTERVAL_MS, last_adc_read_ms, millis(), and readCurrentSensePinsAndSend().

Referenced by run_Active().

◆ updateLedNonBlocking()

Variable Documentation

◆ actuator_states

uint8_t actuator_states[NUM_ACTUATORS]
static

Definition at line 70 of file actuator_c.cpp.

◆ board_id

uint8_t board_id = BOARD_ID_DEFAULT
static

Definition at line 28 of file actuator_c.cpp.

◆ dns

IPAddress dns(192, 168, 2, 1) ( 192 ,
168 ,
2 ,
1  )

◆ gateway

IPAddress gateway(0, 0, 0, 0) ( 0 ,
0 ,
0 ,
0  )

◆ last_adc_read_ms

unsigned long last_adc_read_ms = 0
static

Definition at line 67 of file actuator_c.cpp.

◆ last_led_state

ActuatorControllerState last_led_state
static
Initial value:

Definition at line 84 of file actuator_c.cpp.

◆ last_server_heartbeat_ms

unsigned long last_server_heartbeat_ms = 0
static

Definition at line 53 of file actuator_c.cpp.

◆ lastHeartbeatMillis

unsigned long lastHeartbeatMillis = 0
static

Definition at line 73 of file actuator_c.cpp.

◆ led_blink_index

uint8_t led_blink_index = 0
static

Definition at line 82 of file actuator_c.cpp.

◆ led_cycle_start_ms

unsigned long led_cycle_start_ms = 0
static

Definition at line 81 of file actuator_c.cpp.

◆ led_phase

LedPhase led_phase = LedPhase::Idle
static

Definition at line 80 of file actuator_c.cpp.

◆ led_phase_start_ms

unsigned long led_phase_start_ms = 0
static

Definition at line 83 of file actuator_c.cpp.

◆ mac

byte mac[6]

Definition at line 29 of file actuator_c.cpp.

◆ NUM_SENSORS

const uint8_t NUM_SENSORS = NUM_ACTUATORS

Definition at line 66 of file actuator_c.cpp.

◆ serverIP

IPAddress serverIP(192, 168, 2, 20) ( 192 ,
168 ,
2 ,
20  )

◆ serverPort

const int serverPort = 5006

Definition at line 36 of file actuator_c.cpp.

◆ state

Initial value:

Definition at line 51 of file actuator_c.cpp.

◆ state_enter_ms

unsigned long state_enter_ms = 0
static

Definition at line 54 of file actuator_c.cpp.

◆ staticIP

IPAddress staticIP(192, 168, 2, BOARD_ID_DEFAULT) ( 192 ,
168 ,
2 ,
BOARD_ID_DEFAULT  )

◆ stored_config

◆ subnet

IPAddress subnet(255, 255, 255, 0) ( 255 ,
255 ,
255 ,
0  )

◆ udp

EthernetUDP udp

Definition at line 37 of file actuator_c.cpp.

◆ udpListenPort

const int udpListenPort = 5005

Definition at line 35 of file actuator_c.cpp.