Firmware  0.5.1
Loading...
Searching...
No Matches

#include <service.hpp>

Inheritance diagram for mw::dcc::Service:
Collaboration diagram for mw::dcc::Service:

Classes

struct  CvRequest

Public Member Functions

 Service ()
void z21 (std::shared_ptr< z21::server::intf::System > z21_system_service, std::shared_ptr< z21::server::intf::Dcc > z21_dcc_service)
intf::http::Response getRequest (intf::http::Request const &req)
intf::http::Response postRequest (intf::http::Request const &req)
intf::http::Response locosGetRequest (intf::http::Request const &req)
intf::http::Response locosDeleteRequest (intf::http::Request const &req)
intf::http::Response locosPutRequest (intf::http::Request const &req)
intf::http::Response turnoutsGetRequest (intf::http::Request const &req)
intf::http::Response turnoutsDeleteRequest (intf::http::Request const &req)
intf::http::Response turnoutsPutRequest (intf::http::Request const &req)

Private Member Functions

void taskFunction (void *)
void operationsLoop ()
void operationsLocos ()
 Currently fills message buffer between 25 and 50%.
void operationsTurnouts ()
void operationsBiDi ()
void serviceLoop ()
std::optional< uint8_t > serviceRead (uint16_t cv_addr)
std::optional< uint8_t > serviceWrite (uint16_t cv_addr, uint8_t byte)
std::optional< bool > serviceReceiveBit ()
std::optional< uint8_t > serviceReceiveByte ()
void sendToFront (Packet const &packet, size_t n=1uz)
void sendToBack (Packet const &packet, size_t n=1uz)
z21::LocoInfo locoInfo (uint16_t loco_addr) final
void locoDrive (uint16_t loco_addr, z21::LocoInfo::SpeedSteps speed_steps, uint8_t rvvvvvvv) final
void locoFunction (uint16_t loco_addr, uint32_t mask, uint32_t state) final
z21::LocoInfo::Mode locoMode (uint16_t loco_addr) final
void locoMode (uint16_t, z21::LocoInfo::Mode mode) final
void broadcastLocoInfo (uint16_t loco_addr) final
z21::TurnoutInfo turnoutInfo (uint16_t accy_addr) final
z21::AccessoryInfo accessoryInfo (uint16_t accy_addr) final
void turnout (uint16_t accy_addr, bool p, bool a, bool q) final
void accessory (uint16_t accy_addr, uint8_t dddddddd) final
z21::TurnoutInfo::Mode turnoutMode (uint16_t accy_addr) final
void turnoutMode (uint16_t accy_addr, z21::TurnoutInfo::Mode mode) final
void broadcastTurnoutInfo (uint16_t accy_addr) final
void broadcastExtAccessoryInfo (uint16_t accy_addr) final
bool cvRead (uint16_t cv_addr) final
bool cvWrite (uint16_t cv_addr, uint8_t byte) final
void cvPomRead (uint16_t loco_addr, uint16_t cv_addr) final
void cvPomWrite (uint16_t loco_addr, uint16_t cv_addr, uint8_t byte) final
void cvPomAccessoryRead (uint16_t accy_addr, uint16_t cv_addr, bool) final
void cvPomAccessoryWrite (uint16_t accy_addr, uint16_t cv_addr, uint8_t byte, bool) final
void cvNackShortCircuit () final
void cvNack () final
void cvAck (uint16_t cv_addr, uint8_t byte) final
z21::RailComData railComData (uint16_t loco_addr) final
void broadcastRailComData (uint16_t loco_addr) final
void resume ()
void suspend ()
LocogetOrInsertLoco (uint16_t loco_addr)
TurnoutgetOrInsertTurnout (uint16_t accy_addr)
Address basicOrExtendedLocoAddress (Address::value_type addr) const
bool maybeInvertR (bool p) const

Private Attributes

Locos _locos
Turnouts _turnouts
std::mutex _internal_mutex
std::shared_ptr< z21::server::intf::System > _z21_system_service
std::shared_ptr< z21::server::intf::Dcc > _z21_dcc_service
uint8_t _priority_count {Loco::min_priority}
struct { 
   uint8_t   programming_type {} 
   uint8_t   program_packet_count {} 
   bool   bit_verify_to_1 {} 
   uint8_t   loco_flags {} 
   uint8_t   accy_flags {} 
   uint8_t   accy_switch_time {} 
   uint8_t   accy_packet_count {} 
_nvs
ztl::inplace_deque< CvRequest, Z21_SERVER_MAX_LOCO_ADDRESSES_PER_CLIENT > _cv_request_deque {}
ztl::inplace_deque< CvRequest, Z21_SERVER_MAX_LOCO_ADDRESSES_PER_CLIENT > _cv_pom_request_deque {}

Detailed Description

Todo
document

Constructor & Destructor Documentation

◆ Service()

mw::dcc::Service::Service ( )
Todo
document

Member Function Documentation

◆ accessory()

void mw::dcc::Service::accessory ( uint16_t accy_addr,
uint8_t dddddddd )
finalprivate
Todo
document

◆ accessoryInfo()

z21::AccessoryInfo mw::dcc::Service::accessoryInfo ( uint16_t accy_addr)
nodiscardfinalprivate
Todo
document

◆ basicOrExtendedLocoAddress()

Address mw::dcc::Service::basicOrExtendedLocoAddress ( Address::value_type addr) const
private
Todo
document

◆ broadcastExtAccessoryInfo()

void mw::dcc::Service::broadcastExtAccessoryInfo ( uint16_t accy_addr)
finalprivate
Todo
document

◆ broadcastLocoInfo()

void mw::dcc::Service::broadcastLocoInfo ( uint16_t loco_addr)
finalprivate
Todo
document

◆ broadcastRailComData()

void mw::dcc::Service::broadcastRailComData ( uint16_t loco_addr)
finalprivate
Todo
document

◆ broadcastTurnoutInfo()

void mw::dcc::Service::broadcastTurnoutInfo ( uint16_t accy_addr)
finalprivate
Todo
document

◆ cvAck()

void mw::dcc::Service::cvAck ( uint16_t cv_addr,
uint8_t byte )
finalprivate
Todo
document

◆ cvNack()

void mw::dcc::Service::cvNack ( )
finalprivate
Todo
document

◆ cvNackShortCircuit()

void mw::dcc::Service::cvNackShortCircuit ( )
finalprivate
Todo
document

◆ cvPomAccessoryRead()

void mw::dcc::Service::cvPomAccessoryRead ( uint16_t accy_addr,
uint16_t cv_addr,
bool  )
finalprivate
Todo
document

◆ cvPomAccessoryWrite()

void mw::dcc::Service::cvPomAccessoryWrite ( uint16_t accy_addr,
uint16_t cv_addr,
uint8_t byte,
bool  )
finalprivate
Todo
document

◆ cvPomRead()

void mw::dcc::Service::cvPomRead ( uint16_t loco_addr,
uint16_t cv_addr )
finalprivate
Todo
document
Todo
reset loco prio here

◆ cvPomWrite()

void mw::dcc::Service::cvPomWrite ( uint16_t loco_addr,
uint16_t cv_addr,
uint8_t byte )
finalprivate
Todo
document

◆ cvRead()

bool mw::dcc::Service::cvRead ( uint16_t cv_addr)
nodiscardfinalprivate
Todo
document

◆ cvWrite()

bool mw::dcc::Service::cvWrite ( uint16_t cv_addr,
uint8_t byte )
nodiscardfinalprivate
Todo
document

◆ getOrInsertLoco()

Loco & mw::dcc::Service::getOrInsertLoco ( uint16_t loco_addr)
private
Todo
document

◆ getOrInsertTurnout()

Turnout & mw::dcc::Service::getOrInsertTurnout ( uint16_t accy_addr)
private
Todo
document

◆ getRequest()

intf::http::Response mw::dcc::Service::getRequest ( intf::http::Request const & req)
Todo
document

◆ locoDrive()

void mw::dcc::Service::locoDrive ( uint16_t loco_addr,
z21::LocoInfo::SpeedSteps speed_steps,
uint8_t rvvvvvvv )
finalprivate
Todo
document

◆ locoFunction()

void mw::dcc::Service::locoFunction ( uint16_t loco_addr,
uint32_t mask,
uint32_t state )
finalprivate
Todo
document
Todo
are broadcast functions a thing?

◆ locoInfo()

z21::LocoInfo mw::dcc::Service::locoInfo ( uint16_t loco_addr)
finalprivate
Todo
document

◆ locoMode() [1/2]

z21::LocoInfo::Mode mw::dcc::Service::locoMode ( uint16_t loco_addr)
finalprivate
Todo
document

◆ locoMode() [2/2]

void mw::dcc::Service::locoMode ( uint16_t ,
z21::LocoInfo::Mode mode )
finalprivate
Todo
document

◆ locosDeleteRequest()

intf::http::Response mw::dcc::Service::locosDeleteRequest ( intf::http::Request const & req)
Todo

document

filters?

◆ locosGetRequest()

intf::http::Response mw::dcc::Service::locosGetRequest ( intf::http::Request const & req)
Todo

document

filters?

◆ locosPutRequest()

intf::http::Response mw::dcc::Service::locosPutRequest ( intf::http::Request const & req)
Todo
document

◆ maybeInvertR()

bool mw::dcc::Service::maybeInvertR ( bool p) const
private
Todo
document

◆ operationsBiDi()

void mw::dcc::Service::operationsBiDi ( )
private
Todo
document

◆ operationsLocos()

void mw::dcc::Service::operationsLocos ( )
private

◆ operationsLoop()

void mw::dcc::Service::operationsLoop ( )
private
Todo
document

◆ operationsTurnouts()

void mw::dcc::Service::operationsTurnouts ( )
private
Todo
document

◆ postRequest()

intf::http::Response mw::dcc::Service::postRequest ( intf::http::Request const & req)
Todo
document

◆ railComData()

z21::RailComData mw::dcc::Service::railComData ( uint16_t loco_addr)
nodiscardfinalprivate
Todo
document

◆ resume()

void mw::dcc::Service::resume ( )
private
Todo
document

◆ sendToBack()

void mw::dcc::Service::sendToBack ( Packet const & packet,
size_t n = 1uz )
private
Todo
document

◆ sendToFront()

void mw::dcc::Service::sendToFront ( Packet const & packet,
size_t n = 1uz )
private
Todo
document

◆ serviceLoop()

void mw::dcc::Service::serviceLoop ( )
private
Todo
document
Todo
oh god please make this safer... it changes from opmode to serv...

◆ serviceRead()

std::optional< uint8_t > mw::dcc::Service::serviceRead ( uint16_t cv_addr)
private
Todo
document

◆ serviceReceiveBit()

std::optional< bool > mw::dcc::Service::serviceReceiveBit ( )
private
Todo
document Depending on the DCC settings we might need to wait a long ass time...

◆ serviceReceiveByte()

std::optional< uint8_t > mw::dcc::Service::serviceReceiveByte ( )
private
Todo
document

◆ serviceWrite()

std::optional< uint8_t > mw::dcc::Service::serviceWrite ( uint16_t cv_addr,
uint8_t byte )
private
Todo
document

◆ suspend()

void mw::dcc::Service::suspend ( )
private
Todo
document

◆ taskFunction()

void mw::dcc::Service::taskFunction ( void * )
private
Todo
document

◆ turnout()

void mw::dcc::Service::turnout ( uint16_t accy_addr,
bool p,
bool a,
bool q )
finalprivate
Todo
document

◆ turnoutInfo()

z21::TurnoutInfo mw::dcc::Service::turnoutInfo ( uint16_t accy_addr)
nodiscardfinalprivate
Todo
document

◆ turnoutMode() [1/2]

z21::TurnoutInfo::Mode mw::dcc::Service::turnoutMode ( uint16_t accy_addr)
nodiscardfinalprivate
Todo
document

◆ turnoutMode() [2/2]

void mw::dcc::Service::turnoutMode ( uint16_t accy_addr,
z21::TurnoutInfo::Mode mode )
finalprivate
Todo
document

◆ turnoutsDeleteRequest()

intf::http::Response mw::dcc::Service::turnoutsDeleteRequest ( intf::http::Request const & req)
Todo
document

◆ turnoutsGetRequest()

intf::http::Response mw::dcc::Service::turnoutsGetRequest ( intf::http::Request const & req)
Todo
document

◆ turnoutsPutRequest()

intf::http::Response mw::dcc::Service::turnoutsPutRequest ( intf::http::Request const & req)
Todo
document

◆ z21()

void mw::dcc::Service::z21 ( std::shared_ptr< z21::server::intf::System > z21_system_service,
std::shared_ptr< z21::server::intf::Dcc > z21_dcc_service )
Todo
document

Member Data Documentation

◆ _cv_pom_request_deque

ztl::inplace_deque<CvRequest, Z21_SERVER_MAX_LOCO_ADDRESSES_PER_CLIENT> mw::dcc::Service::_cv_pom_request_deque {}
private

◆ _cv_request_deque

ztl::inplace_deque<CvRequest, Z21_SERVER_MAX_LOCO_ADDRESSES_PER_CLIENT> mw::dcc::Service::_cv_request_deque {}
private

◆ _internal_mutex

std::mutex mw::dcc::Service::_internal_mutex
private

◆ _locos

Locos mw::dcc::Service::_locos
private

◆ [struct]

struct { ... } mw::dcc::Service::_nvs

◆ _priority_count

uint8_t mw::dcc::Service::_priority_count {Loco::min_priority}
private

◆ _turnouts

Turnouts mw::dcc::Service::_turnouts
private

◆ _z21_dcc_service

std::shared_ptr<z21::server::intf::Dcc> mw::dcc::Service::_z21_dcc_service
private

◆ _z21_system_service

std::shared_ptr<z21::server::intf::System> mw::dcc::Service::_z21_system_service
private

◆ accy_flags

uint8_t mw::dcc::Service::accy_flags {}

◆ accy_packet_count

uint8_t mw::dcc::Service::accy_packet_count {}

◆ accy_switch_time

uint8_t mw::dcc::Service::accy_switch_time {}

◆ bit_verify_to_1

bool mw::dcc::Service::bit_verify_to_1 {}

◆ loco_flags

uint8_t mw::dcc::Service::loco_flags {}

◆ program_packet_count

uint8_t mw::dcc::Service::program_packet_count {}

◆ programming_type

uint8_t mw::dcc::Service::programming_type {}

The documentation for this class was generated from the following files:
  • /home/runner/work/Firmware/Firmware/src/mw/dcc/service.hpp
  • /home/runner/work/Firmware/Firmware/src/mw/dcc/service.cpp