Firmware  0.0.0
Loading...
Searching...
No Matches
dcc::Service Class Reference

#include <service.hpp>

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

Classes

struct  CvRequest
 

Public Member Functions

 Service (BaseType_t xCoreID)
 
 ~Service ()
 
void z21 (std::shared_ptr< z21::server::intf::System > z21_system_service, std::shared_ptr< z21::server::intf::Dcc > z21_dcc_service)
 
http::Response locosGetRequest (http::Request const &req)
 
http::Response locosDeleteRequest (http::Request const &req)
 
http::Response locosPutRequest (http::Request const &req)
 

Private Member Functions

void taskFunction (void *)
 
void operationsLoop ()
 
void operationsDcc ()
 Currently fills message buffer between 25 and 50%.
 
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 (bool bit_verify_to_1)
 
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
 
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) final
 
void cvPomAccessoryWrite (uint16_t accy_addr, uint16_t cv_addr, uint8_t byte) final
 
void cvNackShortCircuit () final
 
void cvNack () final
 
void cvAck (uint16_t cv_addr, uint8_t byte) final
 
void resume ()
 
void suspend ()
 
uint8_t programPacketCount () const
 

Private Attributes

Locos _locos
 
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}
 
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()

dcc::Service::Service ( BaseType_t xCoreID)
explicit
Todo
document

◆ ~Service()

dcc::Service::~Service ( )
Todo
document

Member Function Documentation

◆ broadcastLocoInfo()

void dcc::Service::broadcastLocoInfo ( uint16_t addr)
finalprivate
Todo
document

◆ cvAck()

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

◆ cvNack()

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

◆ cvNackShortCircuit()

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

◆ cvPomAccessoryRead()

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

◆ cvPomAccessoryWrite()

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

◆ cvPomRead()

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

◆ cvPomWrite()

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

◆ cvRead()

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

◆ cvWrite()

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

◆ locoDrive()

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

◆ locoFunction()

void dcc::Service::locoFunction ( uint16_t loco_addr,
uint32_t mask,
uint32_t state )
finalprivate
Todo
document

◆ locoInfo()

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

◆ locoMode() [1/2]

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

◆ locoMode() [2/2]

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

◆ locosDeleteRequest()

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

document

filters?

◆ locosGetRequest()

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

document

filters?

◆ locosPutRequest()

http::Response dcc::Service::locosPutRequest ( http::Request const & req)
Todo
document
Todo
CHANGE ADDRESS OF EXISTING LOCO HERE!!!

◆ operationsBiDi()

void dcc::Service::operationsBiDi ( )
private
Todo
document
Todo
remove that later, not caring for acks is just temporarily!

◆ operationsDcc()

void dcc::Service::operationsDcc ( )
private
Todo
necessary?

◆ operationsLoop()

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

◆ programPacketCount()

uint8_t dcc::Service::programPacketCount ( ) const
private
Todo
document

◆ resume()

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

◆ sendToBack()

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

◆ sendToFront()

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

◆ serviceLoop()

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

◆ serviceRead()

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

◆ serviceReceiveBit()

std::optional< bool > 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 > dcc::Service::serviceReceiveByte ( bool bit_verify_to_1)
private
Todo
document

◆ serviceWrite()

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

◆ suspend()

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

◆ taskFunction()

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

◆ z21()

void 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> dcc::Service::_cv_pom_request_deque {}
private

◆ _cv_request_deque

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

◆ _internal_mutex

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

◆ _locos

Locos dcc::Service::_locos
private

◆ _priority_count

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

◆ _z21_dcc_service

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

◆ _z21_system_service

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

The documentation for this class was generated from the following files: